diff --git a/networks/CNO_extras/Make.package b/networks/CNO_extras/Make.package index 35413fdcf..e66796431 100644 --- a/networks/CNO_extras/Make.package +++ b/networks/CNO_extras/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/CNO_extras/actual_network.H b/networks/CNO_extras/actual_network.H index 6869d66e0..29fc2035d 100644 --- a/networks/CNO_extras/actual_network.H +++ b/networks/CNO_extras/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -222,47 +222,47 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_N13_to_C13_reaclib = 1, - k_O14_to_N14_reaclib = 2, - k_O15_to_N15_reaclib = 3, - k_p_C12_to_N13_reaclib = 4, - k_He4_C12_to_O16_reaclib = 5, - k_p_C13_to_N14_reaclib = 6, - k_p_N13_to_O14_reaclib = 7, - k_p_N14_to_O15_reaclib = 8, - k_He4_N14_to_F18_reaclib = 9, - k_p_N15_to_O16_reaclib = 10, - k_He4_N15_to_F19_reaclib = 11, - k_He4_O14_to_Ne18_reaclib = 12, - k_He4_O15_to_Ne19_reaclib = 13, - k_p_O16_to_F17_reaclib = 14, - k_He4_O16_to_Ne20_reaclib = 15, - k_p_O17_to_F18_reaclib = 16, - k_p_O18_to_F19_reaclib = 17, - k_p_F17_to_Ne18_reaclib = 18, - k_p_F18_to_Ne19_reaclib = 19, - k_p_F19_to_Ne20_reaclib = 20, - k_He4_Ne18_to_Mg22_reaclib = 21, - k_He4_Ne20_to_Mg24_reaclib = 22, + k_N13_to_C13_beta_pos_reaclib = 1, + k_O14_to_N14_beta_pos_reaclib = 2, + k_O15_to_N15_beta_pos_reaclib = 3, + k_C12_p_to_N13_reaclib = 4, + k_C12_He4_to_O16_reaclib = 5, + k_C13_p_to_N14_reaclib = 6, + k_N13_p_to_O14_reaclib = 7, + k_N14_p_to_O15_reaclib = 8, + k_N14_He4_to_F18_reaclib = 9, + k_N15_p_to_O16_reaclib = 10, + k_N15_He4_to_F19_reaclib = 11, + k_O14_He4_to_Ne18_reaclib = 12, + k_O15_He4_to_Ne19_reaclib = 13, + k_O16_p_to_F17_reaclib = 14, + k_O16_He4_to_Ne20_reaclib = 15, + k_O17_p_to_F18_reaclib = 16, + k_O18_p_to_F19_reaclib = 17, + k_F17_p_to_Ne18_reaclib = 18, + k_F18_p_to_Ne19_reaclib = 19, + k_F19_p_to_Ne20_reaclib = 20, + k_Ne18_He4_to_Mg22_reaclib = 21, + k_Ne20_He4_to_Mg24_reaclib = 22, k_C12_C12_to_He4_Ne20_reaclib = 23, - k_He4_N13_to_p_O16_reaclib = 24, - k_p_N15_to_He4_C12_reaclib = 25, - k_He4_O14_to_p_F17_reaclib = 26, - k_C12_O16_to_He4_Mg24_reaclib = 27, - k_p_O17_to_He4_N14_reaclib = 28, - k_p_O18_to_He4_N15_reaclib = 29, - k_p_F18_to_He4_O15_reaclib = 30, - k_p_F19_to_He4_O16_reaclib = 31, - k_p_Ne20_to_He4_F17_reaclib = 32, + k_N13_He4_to_p_O16_reaclib = 24, + k_N15_p_to_He4_C12_reaclib = 25, + k_O14_He4_to_p_F17_reaclib = 26, + k_O16_C12_to_He4_Mg24_reaclib = 27, + k_O17_p_to_He4_N14_reaclib = 28, + k_O18_p_to_He4_N15_reaclib = 29, + k_F18_p_to_He4_O15_reaclib = 30, + k_F19_p_to_He4_O16_reaclib = 31, + k_Ne20_p_to_He4_F17_reaclib = 32, k_He4_He4_He4_to_C12_reaclib = 33, - k_F17_to_O17_weaktab = 34, - k_O17_to_F17_weaktab = 35, - k_F18_to_Ne18_weaktab = 36, - k_F18_to_O18_weaktab = 37, - k_Ne18_to_F18_weaktab = 38, - k_O18_to_F18_weaktab = 39, - k_F19_to_Ne19_weaktab = 40, - k_Ne19_to_F19_weaktab = 41, + k_F17_to_O17_electron_capture_weaktab = 34, + k_O17_to_F17_beta_neg_weaktab = 35, + k_F18_to_Ne18_beta_neg_weaktab = 36, + k_F18_to_O18_electron_capture_weaktab = 37, + k_Ne18_to_F18_electron_capture_weaktab = 38, + k_O18_to_F18_beta_neg_weaktab = 39, + k_F19_to_Ne19_beta_neg_weaktab = 40, + k_Ne19_to_F19_electron_capture_weaktab = 41, k_N13_to_p_C12_derived = 42, k_N14_to_p_C13_derived = 43, k_O14_to_p_N13_derived = 44, @@ -282,18 +282,18 @@ namespace Rates k_Ne20_to_He4_O16_derived = 58, k_Mg22_to_He4_Ne18_derived = 59, k_Mg24_to_He4_Ne20_derived = 60, - k_C12_to_He4_He4_He4_derived = 61, - k_He4_C12_to_p_N15_derived = 62, - k_He4_N14_to_p_O17_derived = 63, - k_He4_N15_to_p_O18_derived = 64, - k_He4_O15_to_p_F18_derived = 65, - k_p_O16_to_He4_N13_derived = 66, - k_He4_O16_to_p_F19_derived = 67, - k_p_F17_to_He4_O14_derived = 68, - k_He4_F17_to_p_Ne20_derived = 69, - k_He4_Ne20_to_C12_C12_derived = 70, - k_He4_Mg24_to_C12_O16_derived = 71, - NumRates = k_He4_Mg24_to_C12_O16_derived + k_C12_to_3He4_derived = 61, + k_C12_He4_to_p_N15_derived = 62, + k_N14_He4_to_p_O17_derived = 63, + k_N15_He4_to_p_O18_derived = 64, + k_O15_He4_to_p_F18_derived = 65, + k_O16_p_to_He4_N13_derived = 66, + k_O16_He4_to_p_F19_derived = 67, + k_F17_p_to_He4_O14_derived = 68, + k_F17_He4_to_p_Ne20_derived = 69, + k_Ne20_He4_to_C12_C12_derived = 70, + k_Mg24_He4_to_C12_O16_derived = 71, + NumRates = k_Mg24_He4_to_C12_O16_derived }; enum ScreenPairs : @@ -335,47 +335,47 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "N13_to_C13_reaclib", // 1, - "O14_to_N14_reaclib", // 2, - "O15_to_N15_reaclib", // 3, - "p_C12_to_N13_reaclib", // 4, - "He4_C12_to_O16_reaclib", // 5, - "p_C13_to_N14_reaclib", // 6, - "p_N13_to_O14_reaclib", // 7, - "p_N14_to_O15_reaclib", // 8, - "He4_N14_to_F18_reaclib", // 9, - "p_N15_to_O16_reaclib", // 10, - "He4_N15_to_F19_reaclib", // 11, - "He4_O14_to_Ne18_reaclib", // 12, - "He4_O15_to_Ne19_reaclib", // 13, - "p_O16_to_F17_reaclib", // 14, - "He4_O16_to_Ne20_reaclib", // 15, - "p_O17_to_F18_reaclib", // 16, - "p_O18_to_F19_reaclib", // 17, - "p_F17_to_Ne18_reaclib", // 18, - "p_F18_to_Ne19_reaclib", // 19, - "p_F19_to_Ne20_reaclib", // 20, - "He4_Ne18_to_Mg22_reaclib", // 21, - "He4_Ne20_to_Mg24_reaclib", // 22, + "N13_to_C13_beta_pos_reaclib", // 1, + "O14_to_N14_beta_pos_reaclib", // 2, + "O15_to_N15_beta_pos_reaclib", // 3, + "C12_p_to_N13_reaclib", // 4, + "C12_He4_to_O16_reaclib", // 5, + "C13_p_to_N14_reaclib", // 6, + "N13_p_to_O14_reaclib", // 7, + "N14_p_to_O15_reaclib", // 8, + "N14_He4_to_F18_reaclib", // 9, + "N15_p_to_O16_reaclib", // 10, + "N15_He4_to_F19_reaclib", // 11, + "O14_He4_to_Ne18_reaclib", // 12, + "O15_He4_to_Ne19_reaclib", // 13, + "O16_p_to_F17_reaclib", // 14, + "O16_He4_to_Ne20_reaclib", // 15, + "O17_p_to_F18_reaclib", // 16, + "O18_p_to_F19_reaclib", // 17, + "F17_p_to_Ne18_reaclib", // 18, + "F18_p_to_Ne19_reaclib", // 19, + "F19_p_to_Ne20_reaclib", // 20, + "Ne18_He4_to_Mg22_reaclib", // 21, + "Ne20_He4_to_Mg24_reaclib", // 22, "C12_C12_to_He4_Ne20_reaclib", // 23, - "He4_N13_to_p_O16_reaclib", // 24, - "p_N15_to_He4_C12_reaclib", // 25, - "He4_O14_to_p_F17_reaclib", // 26, - "C12_O16_to_He4_Mg24_reaclib", // 27, - "p_O17_to_He4_N14_reaclib", // 28, - "p_O18_to_He4_N15_reaclib", // 29, - "p_F18_to_He4_O15_reaclib", // 30, - "p_F19_to_He4_O16_reaclib", // 31, - "p_Ne20_to_He4_F17_reaclib", // 32, + "N13_He4_to_p_O16_reaclib", // 24, + "N15_p_to_He4_C12_reaclib", // 25, + "O14_He4_to_p_F17_reaclib", // 26, + "O16_C12_to_He4_Mg24_reaclib", // 27, + "O17_p_to_He4_N14_reaclib", // 28, + "O18_p_to_He4_N15_reaclib", // 29, + "F18_p_to_He4_O15_reaclib", // 30, + "F19_p_to_He4_O16_reaclib", // 31, + "Ne20_p_to_He4_F17_reaclib", // 32, "He4_He4_He4_to_C12_reaclib", // 33, - "F17_to_O17_weaktab", // 34, - "O17_to_F17_weaktab", // 35, - "F18_to_Ne18_weaktab", // 36, - "F18_to_O18_weaktab", // 37, - "Ne18_to_F18_weaktab", // 38, - "O18_to_F18_weaktab", // 39, - "F19_to_Ne19_weaktab", // 40, - "Ne19_to_F19_weaktab", // 41, + "F17_to_O17_electron_capture_weaktab", // 34, + "O17_to_F17_beta_neg_weaktab", // 35, + "F18_to_Ne18_beta_neg_weaktab", // 36, + "F18_to_O18_electron_capture_weaktab", // 37, + "Ne18_to_F18_electron_capture_weaktab", // 38, + "O18_to_F18_beta_neg_weaktab", // 39, + "F19_to_Ne19_beta_neg_weaktab", // 40, + "Ne19_to_F19_electron_capture_weaktab", // 41, "N13_to_p_C12_derived", // 42, "N14_to_p_C13_derived", // 43, "O14_to_p_N13_derived", // 44, @@ -395,17 +395,17 @@ namespace Rates "Ne20_to_He4_O16_derived", // 58, "Mg22_to_He4_Ne18_derived", // 59, "Mg24_to_He4_Ne20_derived", // 60, - "C12_to_He4_He4_He4_derived", // 61, - "He4_C12_to_p_N15_derived", // 62, - "He4_N14_to_p_O17_derived", // 63, - "He4_N15_to_p_O18_derived", // 64, - "He4_O15_to_p_F18_derived", // 65, - "p_O16_to_He4_N13_derived", // 66, - "He4_O16_to_p_F19_derived", // 67, - "p_F17_to_He4_O14_derived", // 68, - "He4_F17_to_p_Ne20_derived", // 69, - "He4_Ne20_to_C12_C12_derived", // 70, - "He4_Mg24_to_C12_O16_derived" // 71, + "C12_to_3He4_derived", // 61, + "C12_He4_to_p_N15_derived", // 62, + "N14_He4_to_p_O17_derived", // 63, + "N15_He4_to_p_O18_derived", // 64, + "O15_He4_to_p_F18_derived", // 65, + "O16_p_to_He4_N13_derived", // 66, + "O16_He4_to_p_F19_derived", // 67, + "F17_p_to_He4_O14_derived", // 68, + "F17_He4_to_p_Ne20_derived", // 69, + "Ne20_He4_to_C12_C12_derived", // 70, + "Mg24_He4_to_C12_O16_derived" // 71, }; template @@ -438,34 +438,34 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 28; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - H1, C13, -1, N14, -1, -1, C13, N14, k_p_C13_to_N14_reaclib, k_N14_to_p_C13_derived, - H1, N13, -1, O14, -1, -1, N13, O14, k_p_N13_to_O14_reaclib, k_O14_to_p_N13_derived, - H1, N14, -1, O15, -1, -1, N14, O15, k_p_N14_to_O15_reaclib, k_O15_to_p_N14_derived, - He4, N14, -1, F18, -1, -1, N14, F18, k_He4_N14_to_F18_reaclib, k_F18_to_He4_N14_derived, - H1, N15, -1, O16, -1, -1, N15, O16, k_p_N15_to_O16_reaclib, k_O16_to_p_N15_derived, - He4, N15, -1, F19, -1, -1, N15, F19, k_He4_N15_to_F19_reaclib, k_F19_to_He4_N15_derived, - He4, O14, -1, Ne18, -1, -1, O14, Ne18, k_He4_O14_to_Ne18_reaclib, k_Ne18_to_He4_O14_derived, - He4, O15, -1, Ne19, -1, -1, O15, Ne19, k_He4_O15_to_Ne19_reaclib, k_Ne19_to_He4_O15_derived, - H1, O16, -1, F17, -1, -1, O16, F17, k_p_O16_to_F17_reaclib, k_F17_to_p_O16_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - H1, O17, -1, F18, -1, -1, O17, F18, k_p_O17_to_F18_reaclib, k_F18_to_p_O17_derived, - H1, O18, -1, F19, -1, -1, O18, F19, k_p_O18_to_F19_reaclib, k_F19_to_p_O18_derived, - H1, F17, -1, Ne18, -1, -1, F17, Ne18, k_p_F17_to_Ne18_reaclib, k_Ne18_to_p_F17_derived, - H1, F18, -1, Ne19, -1, -1, F18, Ne19, k_p_F18_to_Ne19_reaclib, k_Ne19_to_p_F18_derived, - H1, F19, -1, Ne20, -1, -1, F19, Ne20, k_p_F19_to_Ne20_reaclib, k_Ne20_to_p_F19_derived, - He4, Ne18, -1, Mg22, -1, -1, Ne18, Mg22, k_He4_Ne18_to_Mg22_reaclib, k_Mg22_to_He4_Ne18_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, N15, -1, He4, C12, -1, N15, C12, k_p_N15_to_He4_C12_reaclib, k_He4_C12_to_p_N15_derived, - He4, O14, -1, H1, F17, -1, O14, F17, k_He4_O14_to_p_F17_reaclib, k_p_F17_to_He4_O14_derived, - H1, O17, -1, He4, N14, -1, O17, N14, k_p_O17_to_He4_N14_reaclib, k_He4_N14_to_p_O17_derived, - H1, O18, -1, He4, N15, -1, O18, N15, k_p_O18_to_He4_N15_reaclib, k_He4_N15_to_p_O18_derived, - H1, F18, -1, He4, O15, -1, F18, O15, k_p_F18_to_He4_O15_reaclib, k_He4_O15_to_p_F18_derived, - H1, F19, -1, He4, O16, -1, F19, O16, k_p_F19_to_He4_O16_reaclib, k_He4_O16_to_p_F19_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, - He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_He4_F17_to_p_Ne20_derived, k_p_Ne20_to_He4_F17_reaclib + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + H1, C13, -1, N14, -1, -1, C13, N14, k_C13_p_to_N14_reaclib, k_N14_to_p_C13_derived, + H1, N13, -1, O14, -1, -1, N13, O14, k_N13_p_to_O14_reaclib, k_O14_to_p_N13_derived, + H1, N14, -1, O15, -1, -1, N14, O15, k_N14_p_to_O15_reaclib, k_O15_to_p_N14_derived, + He4, N14, -1, F18, -1, -1, N14, F18, k_N14_He4_to_F18_reaclib, k_F18_to_He4_N14_derived, + H1, N15, -1, O16, -1, -1, N15, O16, k_N15_p_to_O16_reaclib, k_O16_to_p_N15_derived, + He4, N15, -1, F19, -1, -1, N15, F19, k_N15_He4_to_F19_reaclib, k_F19_to_He4_N15_derived, + He4, O14, -1, Ne18, -1, -1, O14, Ne18, k_O14_He4_to_Ne18_reaclib, k_Ne18_to_He4_O14_derived, + He4, O15, -1, Ne19, -1, -1, O15, Ne19, k_O15_He4_to_Ne19_reaclib, k_Ne19_to_He4_O15_derived, + H1, O16, -1, F17, -1, -1, O16, F17, k_O16_p_to_F17_reaclib, k_F17_to_p_O16_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + H1, O17, -1, F18, -1, -1, O17, F18, k_O17_p_to_F18_reaclib, k_F18_to_p_O17_derived, + H1, O18, -1, F19, -1, -1, O18, F19, k_O18_p_to_F19_reaclib, k_F19_to_p_O18_derived, + H1, F17, -1, Ne18, -1, -1, F17, Ne18, k_F17_p_to_Ne18_reaclib, k_Ne18_to_p_F17_derived, + H1, F18, -1, Ne19, -1, -1, F18, Ne19, k_F18_p_to_Ne19_reaclib, k_Ne19_to_p_F18_derived, + H1, F19, -1, Ne20, -1, -1, F19, Ne20, k_F19_p_to_Ne20_reaclib, k_Ne20_to_p_F19_derived, + He4, Ne18, -1, Mg22, -1, -1, Ne18, Mg22, k_Ne18_He4_to_Mg22_reaclib, k_Mg22_to_He4_Ne18_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, N15, -1, He4, C12, -1, N15, C12, k_N15_p_to_He4_C12_reaclib, k_C12_He4_to_p_N15_derived, + He4, O14, -1, H1, F17, -1, O14, F17, k_O14_He4_to_p_F17_reaclib, k_F17_p_to_He4_O14_derived, + H1, O17, -1, He4, N14, -1, O17, N14, k_O17_p_to_He4_N14_reaclib, k_N14_He4_to_p_O17_derived, + H1, O18, -1, He4, N15, -1, O18, N15, k_O18_p_to_He4_N15_reaclib, k_N15_He4_to_p_O18_derived, + H1, F18, -1, He4, O15, -1, F18, O15, k_F18_p_to_He4_O15_reaclib, k_O15_He4_to_p_F18_derived, + H1, F19, -1, He4, O16, -1, F19, O16, k_F19_p_to_He4_O16_reaclib, k_O16_He4_to_p_F19_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, + He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_F17_He4_to_p_Ne20_derived, k_Ne20_p_to_He4_F17_reaclib }; } #endif diff --git a/networks/CNO_extras/actual_rhs.H b/networks/CNO_extras/actual_rhs.H index b0f96a6c3..ffc1f2213 100644 --- a/networks/CNO_extras/actual_rhs.H +++ b/networks/CNO_extras/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -352,9 +349,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -366,7 +365,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -374,91 +375,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F17_to_O17_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_O17_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O17_to_F17_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O17_to_F17_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_Ne18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_Ne18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_O18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_O18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne18_to_F18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_F18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O18_to_F18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O18_to_F18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F19_to_Ne19_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_Ne19_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne19_to_F19_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_F19_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -513,75 +443,33 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // N13_to_C13_reaclib + // N13_to_C13_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; + reaclib_rates::rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; } { - // O14_to_N14_reaclib + // O14_to_N14_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; + reaclib_rates::rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; } { - // O15_to_N15_reaclib + // O15_to_N15_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; + reaclib_rates::rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; } - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F17_to_O17_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O17_to_F17_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_Ne18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_O18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne18_to_F18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O18_to_F18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F19_to_Ne19_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne19_to_F19_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; @@ -592,46 +480,46 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(C12) = 0.0_rt; ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14); + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O16) = 0.0_rt; ydot_nuc(O17) = - (screened_rates(k_F17_to_O17_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(O18) = - (screened_rates(k_F18_to_O18_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_weaktab)*Y(O18)); + (screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)); ydot_nuc(F17) = - (-screened_rates(k_F17_to_O17_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (-screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(F18) = - (-screened_rates(k_F18_to_O18_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_weaktab)*Y(O18)) + - (screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (-screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)) + + (screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(F19) = - (screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne18) = - (-screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (-screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(Ne19) = - (-screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (-screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne20) = 0.0_rt; @@ -650,161 +538,161 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + - (-screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (-screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - (-screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (-screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + + (-screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + (-screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (-screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (-screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (-screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (-screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (-screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (-screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (-screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (-screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (-screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + (-screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)); + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)); ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - (-screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + (-screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - (screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + - (-screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho); + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + (screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + + (-screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - (-screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (-screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + (-screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (-screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - (screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (-screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + (screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (-screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - (screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + (screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho); + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho); ydot_nuc(O17) = - (-screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (screened_rates(k_F17_to_O17_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (-screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(O18) = - (-screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_F18_to_O18_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_weaktab)*Y(O18)); + (-screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)); ydot_nuc(F17) = - (screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - (-screened_rates(k_F17_to_O17_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_weaktab)*Y(O17)) + - (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + (screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + (-screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)) + + (-screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(F18) = - (screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_F18_to_O18_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_weaktab)*Y(O18)) + - (screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)) + + (screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(F19) = - (screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (-screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne18) = - (screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (-screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + - (-screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + + (-screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(Ne19) = - (screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(Mg22) = - (screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)); + (screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho); + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Fe56) = 0.0_rt; @@ -862,54 +750,56 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho + screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho; jac.set(H1, He4, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(H1, C12, scratch); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, C13, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived) - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho + screened_rates(k_N14_to_p_C13_derived) - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived); jac.set(H1, N14, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(H1, N15, scratch); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_derived); + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_derived); jac.set(H1, O14, scratch); - scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14_derived); + scratch = screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14_derived); jac.set(H1, O15, scratch); - scratch = screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho + screened_rates(k_O16_to_p_N15_derived) - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived); jac.set(H1, O16, scratch); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, O17, scratch); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(H1, O18, scratch); - scratch = screened_rates(k_F17_to_p_O16_derived) + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived); jac.set(H1, F17, scratch); - scratch = screened_rates(k_F18_to_p_O17_derived) - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived); jac.set(H1, F18, scratch); - scratch = screened_rates(k_F19_to_p_O18_derived) - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived); jac.set(H1, F19, scratch); scratch = screened_rates(k_Ne18_to_p_F17_derived); @@ -918,7 +808,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ne19_to_p_F18_derived); jac.set(H1, Ne19, scratch); - scratch = screened_rates(k_Ne20_to_p_F19_derived) - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived); jac.set(H1, Ne20, scratch); jac.set(H1, Mg22, 0.0); @@ -927,74 +817,74 @@ void jac_nuc(const burn_t& state, jac.set(H1, Fe56, 0.0); - scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(Ne18)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); jac.set(He4, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(He4, N15, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(He4, O14, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho; jac.set(He4, O15, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(He4, O17, scratch); - scratch = screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(He4, O18, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(He4, F17, scratch); - scratch = screened_rates(k_F18_to_He4_N14_derived) + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_He4_N14_derived); jac.set(He4, F18, scratch); - scratch = screened_rates(k_F19_to_He4_N15_derived) + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_He4_N15_derived); jac.set(He4, F19, scratch); - scratch = -screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived); + scratch = -screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived); jac.set(He4, Ne18, scratch); scratch = screened_rates(k_Ne19_to_He4_O15_derived); jac.set(He4, Ne19, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived) + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); scratch = screened_rates(k_Mg22_to_He4_Ne18_derived); jac.set(He4, Mg22, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); jac.set(He4, Fe56, 0.0); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho; jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); jac.set(C12, C13, 0.0); @@ -1004,14 +894,14 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, N15, scratch); jac.set(C12, O14, 0.0); jac.set(C12, O15, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); jac.set(C12, O17, 0.0); @@ -1028,27 +918,27 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ne19, 0.0); - scratch = 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho; + scratch = 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho; jac.set(C12, Ne20, scratch); jac.set(C12, Mg22, 0.0); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho; jac.set(C12, Mg24, scratch); jac.set(C12, Fe56, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho; jac.set(C13, H1, scratch); jac.set(C13, He4, 0.0); jac.set(C13, C12, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(C13, C13, scratch); - scratch = screened_rates(k_N13_to_C13_reaclib); + scratch = screened_rates(k_N13_to_C13_beta_pos_reaclib); jac.set(C13, N13, scratch); scratch = screened_rates(k_N14_to_p_C13_derived); @@ -1084,18 +974,18 @@ void jac_nuc(const burn_t& state, jac.set(C13, Fe56, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); jac.set(N13, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_reaclib) - screened_rates(k_N13_to_p_C12_derived) - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_N13_to_C13_beta_pos_reaclib) - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); @@ -1107,7 +997,7 @@ void jac_nuc(const burn_t& state, jac.set(N13, O15, 0.0); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, O17, 0.0); @@ -1132,25 +1022,25 @@ void jac_nuc(const burn_t& state, jac.set(N13, Fe56, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(N14, H1, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, C12, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, C13, scratch); jac.set(N14, N13, 0.0); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_to_p_C13_derived) - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_N14_to_p_C13_derived); jac.set(N14, N14, scratch); jac.set(N14, N15, 0.0); - scratch = screened_rates(k_O14_to_N14_reaclib); + scratch = screened_rates(k_O14_to_N14_beta_pos_reaclib); jac.set(N14, O14, scratch); scratch = screened_rates(k_O15_to_p_N14_derived); @@ -1158,7 +1048,7 @@ void jac_nuc(const burn_t& state, jac.set(N14, O16, 0.0); - scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, O17, scratch); jac.set(N14, O18, 0.0); @@ -1182,13 +1072,13 @@ void jac_nuc(const burn_t& state, jac.set(N14, Fe56, 0.0); - scratch = -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(N15, H1, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho; jac.set(N15, He4, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho; jac.set(N15, C12, scratch); jac.set(N15, C13, 0.0); @@ -1197,12 +1087,12 @@ void jac_nuc(const burn_t& state, jac.set(N15, N14, 0.0); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(N15, N15, scratch); jac.set(N15, O14, 0.0); - scratch = screened_rates(k_O15_to_N15_reaclib); + scratch = screened_rates(k_O15_to_N15_beta_pos_reaclib); jac.set(N15, O15, scratch); scratch = screened_rates(k_O16_to_p_N15_derived); @@ -1210,7 +1100,7 @@ void jac_nuc(const burn_t& state, jac.set(N15, O17, 0.0); - scratch = screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(N15, O18, scratch); jac.set(N15, F17, 0.0); @@ -1232,24 +1122,24 @@ void jac_nuc(const burn_t& state, jac.set(N15, Fe56, 0.0); - scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho; jac.set(O14, H1, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(O14, He4, scratch); jac.set(O14, C12, 0.0); jac.set(O14, C13, 0.0); - scratch = screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho; jac.set(O14, N13, scratch); jac.set(O14, N14, 0.0); jac.set(O14, N15, 0.0); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_reaclib) - screened_rates(k_O14_to_p_N13_derived); + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_beta_pos_reaclib) - screened_rates(k_O14_to_p_N13_derived); jac.set(O14, O14, scratch); jac.set(O14, O15, 0.0); @@ -1260,7 +1150,7 @@ void jac_nuc(const burn_t& state, jac.set(O14, O18, 0.0); - scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(O14, F17, scratch); jac.set(O14, F18, 0.0); @@ -1280,10 +1170,10 @@ void jac_nuc(const burn_t& state, jac.set(O14, Fe56, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho; jac.set(O15, H1, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho; jac.set(O15, He4, scratch); jac.set(O15, C12, 0.0); @@ -1292,14 +1182,14 @@ void jac_nuc(const burn_t& state, jac.set(O15, N13, 0.0); - scratch = screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, N14, scratch); jac.set(O15, N15, 0.0); jac.set(O15, O14, 0.0); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_reaclib) - screened_rates(k_O15_to_p_N14_derived); + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_beta_pos_reaclib) - screened_rates(k_O15_to_p_N14_derived); jac.set(O15, O15, scratch); jac.set(O15, O16, 0.0); @@ -1310,7 +1200,7 @@ void jac_nuc(const burn_t& state, jac.set(O15, F17, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, F18, scratch); jac.set(O15, F19, 0.0); @@ -1328,30 +1218,30 @@ void jac_nuc(const burn_t& state, jac.set(O15, Fe56, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); jac.set(O16, C13, 0.0); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, N15, scratch); jac.set(O16, O14, 0.0); jac.set(O16, O15, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_O16_to_p_N15_derived) - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_O16_to_p_N15_derived); jac.set(O16, O16, scratch); jac.set(O16, O17, 0.0); @@ -1363,7 +1253,7 @@ void jac_nuc(const burn_t& state, jac.set(O16, F18, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, F19, scratch); jac.set(O16, Ne18, 0.0); @@ -1375,15 +1265,15 @@ void jac_nuc(const burn_t& state, jac.set(O16, Mg22, 0.0); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho; jac.set(O16, Mg24, scratch); jac.set(O16, Fe56, 0.0); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(O17, H1, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho; jac.set(O17, He4, scratch); jac.set(O17, C12, 0.0); @@ -1392,7 +1282,7 @@ void jac_nuc(const burn_t& state, jac.set(O17, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho; jac.set(O17, N14, scratch); jac.set(O17, N15, 0.0); @@ -1403,12 +1293,12 @@ void jac_nuc(const burn_t& state, jac.set(O17, O16, 0.0); - scratch = -screened_rates(k_O17_to_F17_weaktab) - screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_to_F17_beta_neg_weaktab); jac.set(O17, O17, scratch); jac.set(O17, O18, 0.0); - scratch = screened_rates(k_F17_to_O17_weaktab); + scratch = screened_rates(k_F17_to_O17_electron_capture_weaktab); jac.set(O17, F17, scratch); scratch = screened_rates(k_F18_to_p_O17_derived); @@ -1428,10 +1318,10 @@ void jac_nuc(const burn_t& state, jac.set(O17, Fe56, 0.0); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(O18, H1, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho; jac.set(O18, He4, scratch); jac.set(O18, C12, 0.0); @@ -1442,7 +1332,7 @@ void jac_nuc(const burn_t& state, jac.set(O18, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho; jac.set(O18, N15, scratch); jac.set(O18, O14, 0.0); @@ -1453,12 +1343,12 @@ void jac_nuc(const burn_t& state, jac.set(O18, O17, 0.0); - scratch = -screened_rates(k_O18_to_F18_weaktab) - screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_to_F18_beta_neg_weaktab); jac.set(O18, O18, scratch); jac.set(O18, F17, 0.0); - scratch = screened_rates(k_F18_to_O18_weaktab); + scratch = screened_rates(k_F18_to_O18_electron_capture_weaktab); jac.set(O18, F18, scratch); scratch = screened_rates(k_F19_to_p_O18_derived); @@ -1476,10 +1366,10 @@ void jac_nuc(const burn_t& state, jac.set(O18, Fe56, 0.0); - scratch = -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho; jac.set(F17, H1, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(F17, He4, scratch); jac.set(F17, C12, 0.0); @@ -1492,20 +1382,20 @@ void jac_nuc(const burn_t& state, jac.set(F17, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(F17, O14, scratch); jac.set(F17, O15, 0.0); - scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, O16, scratch); - scratch = screened_rates(k_O17_to_F17_weaktab); + scratch = screened_rates(k_O17_to_F17_beta_neg_weaktab); jac.set(F17, O17, scratch); jac.set(F17, O18, 0.0); - scratch = -screened_rates(k_F17_to_O17_weaktab) - screened_rates(k_F17_to_p_O16_derived) - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho - screened_rates(k_F17_to_O17_electron_capture_weaktab) - screened_rates(k_F17_to_p_O16_derived); jac.set(F17, F17, scratch); jac.set(F17, F18, 0.0); @@ -1517,7 +1407,7 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ne19, 0.0); - scratch = screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, Ne20, scratch); jac.set(F17, Mg22, 0.0); @@ -1526,10 +1416,10 @@ void jac_nuc(const burn_t& state, jac.set(F17, Fe56, 0.0); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho; jac.set(F18, H1, scratch); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; + scratch = screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho; jac.set(F18, He4, scratch); jac.set(F18, C12, 0.0); @@ -1538,32 +1428,32 @@ void jac_nuc(const burn_t& state, jac.set(F18, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho; jac.set(F18, N14, scratch); jac.set(F18, N15, 0.0); jac.set(F18, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho; jac.set(F18, O15, scratch); jac.set(F18, O16, 0.0); - scratch = screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho; jac.set(F18, O17, scratch); - scratch = screened_rates(k_O18_to_F18_weaktab); + scratch = screened_rates(k_O18_to_F18_beta_neg_weaktab); jac.set(F18, O18, scratch); jac.set(F18, F17, 0.0); - scratch = -screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_F18_to_Ne18_weaktab) - screened_rates(k_F18_to_O18_weaktab) - screened_rates(k_F18_to_p_O17_derived) - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_F18_to_Ne18_beta_neg_weaktab) - screened_rates(k_F18_to_O18_electron_capture_weaktab) - screened_rates(k_F18_to_p_O17_derived); jac.set(F18, F18, scratch); jac.set(F18, F19, 0.0); - scratch = screened_rates(k_Ne18_to_F18_weaktab); + scratch = screened_rates(k_Ne18_to_F18_electron_capture_weaktab); jac.set(F18, Ne18, scratch); scratch = screened_rates(k_Ne19_to_p_F18_derived); @@ -1577,10 +1467,10 @@ void jac_nuc(const burn_t& state, jac.set(F18, Fe56, 0.0); - scratch = -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho; jac.set(F19, H1, scratch); - scratch = screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho; jac.set(F19, He4, scratch); jac.set(F19, C12, 0.0); @@ -1591,31 +1481,31 @@ void jac_nuc(const burn_t& state, jac.set(F19, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho; jac.set(F19, N15, scratch); jac.set(F19, O14, 0.0); jac.set(F19, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho; jac.set(F19, O16, scratch); jac.set(F19, O17, 0.0); - scratch = screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho; jac.set(F19, O18, scratch); jac.set(F19, F17, 0.0); jac.set(F19, F18, 0.0); - scratch = -screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_F19_to_Ne19_weaktab) - screened_rates(k_F19_to_p_O18_derived) - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_F19_to_Ne19_beta_neg_weaktab) - screened_rates(k_F19_to_p_O18_derived); jac.set(F19, F19, scratch); jac.set(F19, Ne18, 0.0); - scratch = screened_rates(k_Ne19_to_F19_weaktab); + scratch = screened_rates(k_Ne19_to_F19_electron_capture_weaktab); jac.set(F19, Ne19, scratch); scratch = screened_rates(k_Ne20_to_p_F19_derived); @@ -1627,10 +1517,10 @@ void jac_nuc(const burn_t& state, jac.set(F19, Fe56, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho; jac.set(Ne18, H1, scratch); - scratch = -screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(Ne18)*state.rho + screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(Ne18)*state.rho + screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho; jac.set(Ne18, He4, scratch); jac.set(Ne18, C12, 0.0); @@ -1643,7 +1533,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho; jac.set(Ne18, O14, scratch); jac.set(Ne18, O15, 0.0); @@ -1654,15 +1544,15 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, O18, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho; jac.set(Ne18, F17, scratch); - scratch = screened_rates(k_F18_to_Ne18_weaktab); + scratch = screened_rates(k_F18_to_Ne18_beta_neg_weaktab); jac.set(Ne18, F18, scratch); jac.set(Ne18, F19, 0.0); - scratch = -screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_weaktab) - screened_rates(k_Ne18_to_He4_O14_derived) - screened_rates(k_Ne18_to_p_F17_derived); + scratch = -screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_electron_capture_weaktab) - screened_rates(k_Ne18_to_He4_O14_derived) - screened_rates(k_Ne18_to_p_F17_derived); jac.set(Ne18, Ne18, scratch); jac.set(Ne18, Ne19, 0.0); @@ -1676,10 +1566,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, Fe56, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho; jac.set(Ne19, H1, scratch); - scratch = screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho; + scratch = screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho; jac.set(Ne19, He4, scratch); jac.set(Ne19, C12, 0.0); @@ -1694,7 +1584,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho; jac.set(Ne19, O15, scratch); jac.set(Ne19, O16, 0.0); @@ -1705,15 +1595,15 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, F17, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho; jac.set(Ne19, F18, scratch); - scratch = screened_rates(k_F19_to_Ne19_weaktab); + scratch = screened_rates(k_F19_to_Ne19_beta_neg_weaktab); jac.set(Ne19, F19, scratch); jac.set(Ne19, Ne18, 0.0); - scratch = -screened_rates(k_Ne19_to_F19_weaktab) - screened_rates(k_Ne19_to_He4_O15_derived) - screened_rates(k_Ne19_to_p_F18_derived); + scratch = -screened_rates(k_Ne19_to_F19_electron_capture_weaktab) - screened_rates(k_Ne19_to_He4_O15_derived) - screened_rates(k_Ne19_to_p_F18_derived); jac.set(Ne19, Ne19, scratch); jac.set(Ne19, Ne20, 0.0); @@ -1724,10 +1614,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, Fe56, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho; jac.set(Ne20, H1, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -1745,26 +1635,26 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); jac.set(Ne20, O17, 0.0); jac.set(Ne20, O18, 0.0); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho; jac.set(Ne20, F17, scratch); jac.set(Ne20, F18, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, F19, scratch); jac.set(Ne20, Ne18, 0.0); jac.set(Ne20, Ne19, 0.0); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived) - screened_rates(k_Ne20_to_p_F19_derived) - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived) - screened_rates(k_Ne20_to_p_F19_derived); jac.set(Ne20, Ne20, scratch); jac.set(Ne20, Mg22, 0.0); @@ -1776,7 +1666,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg22, H1, 0.0); - scratch = screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(Ne18)*state.rho; + scratch = screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(Ne18)*state.rho; jac.set(Mg22, He4, scratch); jac.set(Mg22, C12, 0.0); @@ -1805,7 +1695,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg22, F19, 0.0); - scratch = screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*state.rho; jac.set(Mg22, Ne18, scratch); jac.set(Mg22, Ne19, 0.0); @@ -1821,10 +1711,10 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, H1, 0.0); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, C13, 0.0); @@ -1839,7 +1729,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); jac.set(Mg24, O17, 0.0); @@ -1856,12 +1746,12 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ne19, 0.0); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); jac.set(Mg24, Mg22, 0.0); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(Mg24, Mg24, scratch); jac.set(Mg24, Fe56, 0.0); diff --git a/networks/CNO_extras/approximate_rates.H b/networks/CNO_extras/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/CNO_extras/approximate_rates.H +++ b/networks/CNO_extras/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/CNO_extras/branched_rates.H b/networks/CNO_extras/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/CNO_extras/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/CNO_extras/cno_extras.png b/networks/CNO_extras/cno_extras.png index c87507a74..9278fb331 100644 Binary files a/networks/CNO_extras/cno_extras.png and b/networks/CNO_extras/cno_extras.png differ diff --git a/networks/CNO_extras/derived_rates.H b/networks/CNO_extras/derived_rates.H index da2e13d07..dedb635b0 100644 --- a/networks/CNO_extras/derived_rates.H +++ b/networks/CNO_extras/derived_rates.H @@ -7,3384 +7,3386 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_to_p_C13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N14_to_p_C13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N14 --> p + C13 - // N14 --> p + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real C13_log_pf, dC13_log_pf_dT9; - amrex::Real C13_log_pf, dC13_log_pf_dT9; + // setting C13 log(partition function) to 0.0 by default, independent of T + C13_log_pf = 0.0_rt; + dC13_log_pf_dT9 = 0.0_rt; - // setting C13 log(partition function) to 0.0 by default, independent of T - C13_log_pf = 0.0_rt; - dC13_log_pf_dT9 = 0.0_rt; + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + C13_log_pf - N14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC13_log_pf_dT9 - dN14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C13_log_pf - N14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC13_log_pf_dT9 - dN14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrn + ln_set_rate = 41.72421240281699 + -87.62065170634826 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 41.72421240281699 + -87.62065170634826 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.62065170634826 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 87.62065170634826 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 37.17241240281699 + -93.40212170634825 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 37.17241240281699 + -93.40212170634825 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.40212170634825 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.40212170634825 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 38.39121240281698 + -101.17495170634825 * tfactors.T9i; - // ReacLib set derived from nacrr - ln_set_rate = 38.39121240281698 + -101.17495170634825 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.17495170634825 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.17495170634825 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_p_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_p_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O14 --> p + N13 - // O14 --> p + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N13_log_pf - O14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN13_log_pf_dT9 - dO14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N13_log_pf - O14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN13_log_pf_dT9 - dO14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lg06r + ln_set_rate = 35.3038971632548 + -59.81629660012578 * tfactors.T9i + 1.57122 * tfactors.T913i; - // ReacLib set derived from lg06r - ln_set_rate = 35.3038971632548 + -59.81629660012578 * tfactors.T9i + 1.57122 * tfactors.T913i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.81629660012578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.81629660012578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lg06n + ln_set_rate = 42.44239716325481 + -53.690276600125785 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from lg06n - ln_set_rate = 42.44239716325481 + -53.690276600125785 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.690276600125785 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.690276600125785 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_p_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_p_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O15 --> p + N14 - // O15 --> p + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N14_log_pf - O15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN14_log_pf_dT9 - dO15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N14_log_pf - O15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN14_log_pf_dT9 - dO15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from im05r + ln_set_rate = 30.76303704754867 + -89.56670699689953 * tfactors.T9i + + 1.5682 * tfactors.lnT9; - // ReacLib set derived from im05r - ln_set_rate = 30.76303704754867 + -89.56670699689953 * tfactors.T9i - + 1.5682 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.56670699689953 * tfactors.T9i * tfactors.T9i + + 1.5682 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.56670699689953 * tfactors.T9i * tfactors.T9i - + 1.5682 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05r + ln_set_rate = 31.68169704754867 + -87.67370699689953 * tfactors.T9i; - // ReacLib set derived from im05r - ln_set_rate = 31.68169704754867 + -87.67370699689953 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.67370699689953 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 87.67370699689953 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05n + ln_set_rate = 44.144157047548674 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.833333 * tfactors.lnT9; - // ReacLib set derived from im05n - ln_set_rate = 44.144157047548674 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05n + ln_set_rate = 41.03725704754867 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from im05n - ln_set_rate = 41.03725704754867 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> p + N15 - // O16 --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + N15_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N15_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from li10r + ln_set_rate = 38.86679552635226 + -150.96226378057287 * tfactors.T9i + + 0.0459037 * tfactors.T9; - // ReacLib set derived from li10r - ln_set_rate = 38.86679552635226 + -150.96226378057287 * tfactors.T9i - + 0.0459037 * tfactors.T9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 150.96226378057287 * tfactors.T9i * tfactors.T9i + + 0.0459037; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 150.96226378057287 * tfactors.T9i * tfactors.T9i - + 0.0459037; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from li10r + ln_set_rate = 30.912955526352267 + -143.65591378057286 * tfactors.T9i; - // ReacLib set derived from li10r - ln_set_rate = 30.912955526352267 + -143.65591378057286 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 143.65591378057286 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 143.65591378057286 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from li10n + ln_set_rate = 44.33999552635227 + -140.73276378057287 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from li10n - ln_set_rate = 44.33999552635227 + -140.73276378057287 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 140.73276378057287 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 140.73276378057287 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_to_p_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F17_to_p_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 --> p + O16 - // F17 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O16_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO16_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O16_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO16_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ia08n + ln_set_rate = 40.93184403787935 + -6.965832070525503 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ia08n - ln_set_rate = 40.93184403787935 + -6.965832070525503 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.965832070525503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.965832070525503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F18 --> p + O17 - // F18 --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real O17_log_pf, dO17_log_pf_dT9; - amrex::Real O17_log_pf, dO17_log_pf_dT9; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); - // interpolating O17 partition function - get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O17_log_pf - F18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dF18_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O17_log_pf - F18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dF18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 33.72287495567065 + -71.29605321275191 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 33.72287495567065 + -71.29605321275191 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.29605321275191 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.29605321275191 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 11.255394955670651 + -65.81406921275192 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 11.255394955670651 + -65.81406921275192 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.81406921275192 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.81406921275192 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 40.22529495567065 + -65.06777321275192 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 40.22529495567065 + -65.06777321275192 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.06777321275192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.06777321275192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_He4_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_He4_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F18 --> He4 + N14 - // F18 --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N14_log_pf - F18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN14_log_pf_dT9 - dF18_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N14_log_pf - F18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN14_log_pf_dT9 - dF18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 38.61662473666887 + -62.20224752987261 * tfactors.T9i + -5.6227 * tfactors.T913i; - // ReacLib set derived from il10r - ln_set_rate = 38.61662473666887 + -62.20224752987261 * tfactors.T9i + -5.6227 * tfactors.T913i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 62.20224752987261 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 62.20224752987261 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 24.91396273666887 + -56.396987529872604 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 24.91396273666887 + -56.396987529872604 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 56.396987529872604 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 56.396987529872604 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.25102473666887 + -51.236647529872606 * tfactors.T9i + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.25102473666887 + -51.236647529872606 * tfactors.T9i + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 51.236647529872606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 51.236647529872606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F19 --> p + O18 - // F19 --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O18_log_pf, dO18_log_pf_dT9; - amrex::Real O18_log_pf, dO18_log_pf_dT9; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); - // interpolating O18 partition function - get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O18_log_pf - F19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dF19_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O18_log_pf - F19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dF19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10n + ln_set_rate = 42.868088644181995 + -92.7618744782197 * tfactors.T9i + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 42.868088644181995 + -92.7618744782197 * tfactors.T9i + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.7618744782197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.7618744782197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 30.219848644181997 + -99.4871744782197 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 30.219848644181997 + -99.4871744782197 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.4871744782197 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.4871744782197 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 28.027568644181997 + -94.41868447821969 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 28.027568644181997 + -94.41868447821969 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.41868447821969 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.41868447821969 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -12.056811355818002 + -93.0066174782197 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -12.056811355818002 + -93.0066174782197 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.0066174782197 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.0066174782197 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_He4_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_He4_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F19 --> He4 + N15 - // F19 --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + N15_log_pf - F19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN15_log_pf_dT9 - dF19_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N15_log_pf - F19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN15_log_pf_dT9 - dF19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -4.0595772096034 + -50.77806404408662 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = -4.0595772096034 + -50.77806404408662 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.77806404408662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.77806404408662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 28.273522790396598 + -53.56282404408662 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 28.273522790396598 + -53.56282404408662 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.56282404408662 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.56282404408662 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 15.3204027903966 + -50.75615404408662 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 15.3204027903966 + -50.75615404408662 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.75615404408662 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.75615404408662 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 50.130922790396596 + -46.57820404408662 * tfactors.T9i + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 50.130922790396596 + -46.57820404408662 * tfactors.T9i + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.57820404408662 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.57820404408662 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_p_F17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_p_F17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne18 --> p + F17 - // Ne18 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F17_log_pf - Ne18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF17_log_pf_dT9 - dNe18_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F17_log_pf - Ne18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF17_log_pf_dT9 - dNe18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cb09 + ln_set_rate = 17.58370046698957 + -45.55769965436449 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.6337600000000001 * tfactors.lnT9; - // ReacLib set derived from cb09 - ln_set_rate = 17.58370046698957 + -45.55769965436449 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.6337600000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 45.55769965436449 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.6337600000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 45.55769965436449 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.6337600000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from cb09 + ln_set_rate = 53.00858046698957 + -50.485039254364494 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; - // ReacLib set derived from cb09 - ln_set_rate = 53.00858046698957 + -50.485039254364494 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.485039254364494 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.485039254364494 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne18 --> He4 + O14 - // Ne18 --> He4 + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O14_log_pf - Ne18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dNe18_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O14_log_pf - Ne18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dNe18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from wh87n + ln_set_rate = 51.160347955038674 + -59.35823432141371 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from wh87n - ln_set_rate = 51.160347955038674 + -59.35823432141371 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.35823432141371 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.35823432141371 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 20.01796795503867 + -71.51723432141371 * tfactors.T9i + + 6.5 * tfactors.lnT9; - // ReacLib set derived from wh87r - ln_set_rate = 20.01796795503867 + -71.51723432141371 * tfactors.T9i - + 6.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.51723432141371 * tfactors.T9i * tfactors.T9i + + 6.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.51723432141371 * tfactors.T9i * tfactors.T9i - + 6.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 28.243807955038672 + -81.96823432141372 * tfactors.T9i; - // ReacLib set derived from wh87r - ln_set_rate = 28.243807955038672 + -81.96823432141372 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.96823432141372 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.96823432141372 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 22.56327795503867 + -71.08823432141371 * tfactors.T9i; - // ReacLib set derived from wh87r - ln_set_rate = 22.56327795503867 + -71.08823432141371 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.08823432141371 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.08823432141371 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne19 --> p + F18 - // Ne19 --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; - amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); - // interpolating Ne19 partition function - get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F18_log_pf - Ne19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dNe19_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F18_log_pf - Ne19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dNe19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 18.192220240787112 + -77.27667559674641 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 18.192220240787112 + -77.27667559674641 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.27667559674641 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.27667559674641 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -5.39950975921289 + -74.78415559674642 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = -5.39950975921289 + -74.78415559674642 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.78415559674642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.78415559674642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 81.45789024078711 + -74.38520559674642 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 81.45789024078711 + -74.38520559674642 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.38520559674642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.38520559674642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_He4_O15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_He4_O15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne19 --> He4 + O15 - // Ne19 --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; - amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); - // interpolating Ne19 partition function - get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O15_log_pf - Ne19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO15_log_pf_dT9 - dNe19_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O15_log_pf - Ne19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO15_log_pf_dT9 - dNe19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from dc11r + ln_set_rate = -7.510242070092687 + -45.15053612970033 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; - // ReacLib set derived from dc11r - ln_set_rate = -7.510242070092687 + -45.15053612970033 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 45.15053612970033 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 45.15053612970033 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from dc11r + ln_set_rate = 24.694111429907313 + -46.83053612970032 * tfactors.T9i; - // ReacLib set derived from dc11r - ln_set_rate = 24.694111429907313 + -46.83053612970032 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.83053612970032 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.83053612970032 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from dc11n + ln_set_rate = 51.03075792990731 + -40.946146129700324 * tfactors.T9i + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from dc11n - ln_set_rate = 51.03075792990731 + -40.946146129700324 * tfactors.T9i + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.946146129700324 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.946146129700324 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> p + F19 - // Ne20 --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F19_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F19_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrr + ln_set_rate = 18.711255537457795 + -156.78628300750532 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 18.711255537457795 + -156.78628300750532 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 156.78628300750532 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 156.78628300750532 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 36.72378553745779 + -150.75597300750533 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 36.72378553745779 + -150.75597300750533 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 150.75597300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 150.75597300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrn + ln_set_rate = 42.62288553745779 + -149.04214300750533 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 42.62288553745779 + -149.04214300750533 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 149.04214300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 149.04214300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg22_to_He4_Ne18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg22_to_He4_Ne18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg22 --> He4 + Ne18 - // Mg22 --> He4 + Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mg22_log_pf, dMg22_log_pf_dT9; - amrex::Real Mg22_log_pf, dMg22_log_pf_dT9; + // interpolating Mg22 partition function + get_partition_function_cached(Mg22, tfactors.T9, pf_cache, Mg22_log_pf, dMg22_log_pf_dT9); - // interpolating Mg22 partition function - get_partition_function_cached(Mg22, tfactors.T9, pf_cache, Mg22_log_pf, dMg22_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne18_log_pf - Mg22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe18_log_pf_dT9 - dMg22_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne18_log_pf - Mg22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe18_log_pf_dT9 - dMg22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 57.680013188545345 + -94.4898569232192 * tfactors.T9i + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 + + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 57.680013188545345 + -94.4898569232192 * tfactors.T9i + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 - + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.4898569232192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i + + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.4898569232192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i - + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 + He4 --> p + N15 - // C12 + He4 --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N15_log_pf - He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N15_log_pf - He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrn + ln_set_rate = 27.135846229234243 + -57.62215691264642 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 27.135846229234243 + -57.62215691264642 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 57.62215691264642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 57.62215691264642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = -6.915773770765759 + -58.78595691264642 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = -6.915773770765759 + -58.78595691264642 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 58.78595691264642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 58.78595691264642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 20.556646229234243 + -65.02815691264642 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = 20.556646229234243 + -65.02815691264642 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.02815691264642 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.02815691264642 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = -5.21402377076576 + -59.643326912646415 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = -5.21402377076576 + -59.643326912646415 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.643326912646415 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.643326912646415 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N14 + He4 --> p + O17 - // N14 + He4 --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O17_log_pf, dO17_log_pf_dT9; - amrex::Real O17_log_pf, dO17_log_pf_dT9; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); - // interpolating O17 partition function - get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + O17_log_pf - He4_log_pf - N14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dHe4_log_pf_dT9 - dN14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O17_log_pf - He4_log_pf - N14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dHe4_log_pf_dT9 - dN14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -7.592359780998223 + -14.584520682879308 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -7.592359780998223 + -14.584520682879308 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.584520682879308 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.584520682879308 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.194270219001776 + -13.831125682879309 * tfactors.T9i + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.194270219001776 + -13.831125682879309 * tfactors.T9i + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 13.831125682879309 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 13.831125682879309 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 9.789270219001777 + -18.78977568287931 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 9.789270219001777 + -18.78977568287931 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.78977568287931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.78977568287931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 5.148870219001777 + -15.945895682879309 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 5.148870219001777 + -15.945895682879309 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 15.945895682879309 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 15.945895682879309 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N15 + He4 --> p + O18 - // N15 + He4 --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O18_log_pf, dO18_log_pf_dT9; - amrex::Real O18_log_pf, dO18_log_pf_dT9; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); - // interpolating O18 partition function - get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + O18_log_pf - He4_log_pf - N15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dHe4_log_pf_dT9 - dN15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O18_log_pf - He4_log_pf - N15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dHe4_log_pf_dT9 - dN15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -29.6926341462146 + -46.42955443414268 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -29.6926341462146 + -46.42955443414268 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.42955443414268 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.42955443414268 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 25.178865853785396 + -46.183670434142684 * tfactors.T9i + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 25.178865853785396 + -46.183670434142684 * tfactors.T9i + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.183670434142684 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.183670434142684 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 7.155285853785398 + -51.50702043414268 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 7.155285853785398 + -51.50702043414268 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 51.50702043414268 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 51.50702043414268 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 8.4842658537854 + -47.84667043414268 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 8.4842658537854 + -47.84667043414268 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 47.84667043414268 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 47.84667043414268 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O15 + He4 --> p + F18 - // O15 + He4 --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + F18_log_pf - He4_log_pf - O15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dHe4_log_pf_dT9 - dO15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F18_log_pf - He4_log_pf - O15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dHe4_log_pf_dT9 - dO15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 1.0671723108797964 + -36.45580946704611 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 1.0671723108797964 + -36.45580946704611 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.45580946704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.45580946704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -32.4286676891202 + -33.81549146704611 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -32.4286676891202 + -33.81549146704611 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.81549146704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.81549146704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 61.315932310879795 + -33.43905946704611 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 61.315932310879795 + -33.43905946704611 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.43905946704611 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.43905946704611 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + He4 --> p + F19 - // O16 + He4 --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + F19_log_pf - He4_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dHe4_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F19_log_pf - He4_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dHe4_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacr + ln_set_rate = -53.121227264044336 + -94.28220973651266 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = -53.121227264044336 + -94.28220973651266 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.28220973651266 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.28220973651266 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 25.874672735955667 + -94.15455973651265 * tfactors.T9i + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 25.874672735955667 + -94.15455973651265 * tfactors.T9i + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.15455973651265 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.15455973651265 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 13.941672735955667 + -97.44055973651265 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = 13.941672735955667 + -97.44055973651265 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 97.44055973651265 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 97.44055973651265 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 14.778572735955667 + -97.90640973651266 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 14.778572735955667 + -97.90640973651266 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 97.90640973651266 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 97.90640973651266 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 7.822072735955667 + -96.62283973651265 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 7.822072735955667 + -96.62283973651265 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 96.62283973651265 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 96.62283973651265 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 + p --> He4 + O14 - // F17 + p --> He4 + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O14_log_pf - p_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dp_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O14_log_pf - p_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dp_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from Ha96r + ln_set_rate = 11.415567488049104 + -25.85518506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 11.415567488049104 + -25.85518506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.85518506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.85518506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 17.938467488049106 + -39.83288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 17.938467488049106 + -39.83288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 39.83288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 39.83288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96n + ln_set_rate = 40.122467488049104 + -13.83288506704921 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from Ha96n - ln_set_rate = 40.122467488049104 + -13.83288506704921 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 13.83288506704921 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 13.83288506704921 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 15.595367488049106 + -36.34288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 15.595367488049106 + -36.34288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.34288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.34288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 10.405067488049104 + -27.43288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 10.405067488049104 + -27.43288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.43288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.43288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = -106.80433251195089 + -14.285921067049209 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = -106.80433251195089 + -14.285921067049209 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.285921067049209 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.285921067049209 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_He4_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F17_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 + He4 --> p + Ne20 - // F17 + He4 --> p + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - He4_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dHe4_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - He4_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dHe4_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacr + ln_set_rate = 38.645331236377224 + -0.004848799532844339 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 38.645331236377224 + -0.004848799532844339 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 0.004848799532844339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 0.004848799532844339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> C12 + C12 - // Ne20 + He4 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> C12 + O16 - // Mg24 + He4 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - part_fun::pf_cache_t pf_cache{}; + part_fun::pf_cache_t pf_cache{}; - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - { - // N13_to_p_C12_derived + { + // N13_to_p_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // N14_to_p_C13_derived + { + // N14_to_p_C13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N14_to_p_C13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N14_to_p_C13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_to_p_C13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N14_to_p_C13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived) = drate_dT; + } } - } - { - // O14_to_p_N13_derived + { + // O14_to_p_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_p_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O14_to_p_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_p_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O14_to_p_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived) = drate_dT; + } } - } - { - // O15_to_p_N14_derived + { + // O15_to_p_N14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_p_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O15_to_p_N14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_p_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O15_to_p_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived) = drate_dT; + } } - } - { - // O16_to_p_N15_derived + { + // O16_to_p_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_p_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_p_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // F17_to_p_O16_derived + { + // F17_to_p_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_p_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F17_to_p_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_to_p_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_to_p_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived) = drate_dT; + } } - } - { - // F18_to_p_O17_derived + { + // F18_to_p_O17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F18_to_p_O17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F18_to_p_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived) = drate_dT; + } } - } - { - // F18_to_He4_N14_derived + { + // F18_to_He4_N14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_He4_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F18_to_He4_N14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_He4_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F18_to_He4_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = drate_dT; + } } - } - { - // F19_to_p_O18_derived + { + // F19_to_p_O18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F19_to_p_O18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F19_to_p_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived) = drate_dT; + } } - } - { - // F19_to_He4_N15_derived + { + // F19_to_He4_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_He4_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F19_to_He4_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_He4_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F19_to_He4_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived) = drate_dT; + } } - } - { - // Ne18_to_p_F17_derived + { + // Ne18_to_p_F17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_p_F17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne18_to_p_F17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_p_F17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne18_to_p_F17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived) = drate_dT; + } } - } - { - // Ne18_to_He4_O14_derived + { + // Ne18_to_He4_O14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne18_to_He4_O14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne18_to_He4_O14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived) = drate_dT; + } } - } - { - // Ne19_to_p_F18_derived + { + // Ne19_to_p_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne19_to_p_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne19_to_p_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived) = drate_dT; + } } - } - { - // Ne19_to_He4_O15_derived + { + // Ne19_to_He4_O15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_He4_O15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne19_to_He4_O15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_He4_O15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne19_to_He4_O15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived) = drate_dT; + } } - } - { - // Ne20_to_p_F19_derived + { + // Ne20_to_p_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_p_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_p_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Mg22_to_He4_Ne18_derived + { + // Mg22_to_He4_Ne18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg22_to_He4_Ne18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg22_to_He4_Ne18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg22_to_He4_Ne18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg22_to_He4_Ne18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // He4_C12_to_p_N15_derived + { + // C12_He4_to_p_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_C12_to_p_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_derived) = drate_dT; + rate_C12_He4_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_He4_to_p_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_p_N15_derived) = drate_dT; + } } - } - { - // He4_N14_to_p_O17_derived + { + // N14_He4_to_p_O17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_N14_to_p_O17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_derived) = drate_dT; + rate_N14_He4_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N14_He4_to_p_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_p_O17_derived) = drate_dT; + } } - } - { - // He4_N15_to_p_O18_derived + { + // N15_He4_to_p_O18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_N15_to_p_O18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18_derived) = drate_dT; + rate_N15_He4_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N15_He4_to_p_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_p_O18_derived) = drate_dT; + } } - } - { - // He4_O15_to_p_F18_derived + { + // O15_He4_to_p_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_O15_to_p_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_derived) = drate_dT; + rate_O15_He4_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O15_He4_to_p_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_p_F18_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_O16_to_p_F19_derived + { + // O16_He4_to_p_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_O16_to_p_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19_derived) = drate_dT; + rate_O16_He4_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_He4_to_p_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_p_F19_derived) = drate_dT; + } } - } - { - // p_F17_to_He4_O14_derived + { + // F17_p_to_He4_O14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_F17_to_He4_O14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_derived) = drate_dT; + rate_F17_p_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_p_to_He4_O14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_He4_O14_derived) = drate_dT; + } } - } - { - // He4_F17_to_p_Ne20_derived + { + // F17_He4_to_p_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); - } + log_scor = rate_eval.log_screen(k_He4_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); + } #endif - rate_He4_F17_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived) = drate_dT; + rate_F17_He4_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_He4_to_p_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_He4_to_p_Ne20_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_C12_C12_derived + { + // Ne20_He4_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived) = drate_dT; + rate_Ne20_He4_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_C12_C12_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_C12_O16_derived + { + // Mg24_He4_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived) = drate_dT; + rate_Mg24_He4_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_C12_O16_derived) = drate_dT; + } } - } + } + } #endif diff --git a/networks/CNO_extras/modified_rates.H b/networks/CNO_extras/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/CNO_extras/modified_rates.H +++ b/networks/CNO_extras/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/CNO_extras/pynucastro-info.txt b/networks/CNO_extras/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/CNO_extras/pynucastro-info.txt +++ b/networks/CNO_extras/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/CNO_extras/reaclib_rates.H b/networks/CNO_extras/reaclib_rates.H index 0bdbe489c..921722f71 100644 --- a/networks/CNO_extras/reaclib_rates.H +++ b/networks/CNO_extras/reaclib_rates.H @@ -8,2979 +8,2982 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // N13 --> C13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_C13_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // N13 --> C13 - // wc12w - ln_set_rate = -6.7601; - amrex::ignore_unused(tfactors); + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + // wc12w + ln_set_rate = -6.7601; + amrex::ignore_unused(tfactors); - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_N14_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 --> N14 - // O14 --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -4.62354; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -4.62354; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_N15_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 --> N15 - // O15 --> N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -5.17053; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -5.17053; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + p --> N13 - // C12 + p --> N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_p_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C13_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + p --> N14 - // C13 + p --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_p_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N13_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + p --> O14 - // N13 + p --> O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lg06r + ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // lg06r - ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lg06n + ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lg06n - ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_p_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N14_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + p --> O15 - // N14 + p --> O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // im05r + ln_set_rate = 6.73578 + -4.891 * tfactors.T9i + + 0.0682 * tfactors.lnT9; - // im05r - ln_set_rate = 6.73578 + -4.891 * tfactors.T9i - + 0.0682 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i + + 0.0682 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i - + 0.0682 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05r + ln_set_rate = 7.65444 + -2.998 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // im05r - ln_set_rate = 7.65444 + -2.998 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // im05n - ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // im05n - ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> O16 - // N15 + p --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li10r + ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i + + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i - + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i + + 0.0459037 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i - + 0.0459037 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10r + ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10n + ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // li10n - ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + He4 --> F19 - // N15 + He4 --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> Ne18 - // O14 + He4 --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wh87n + ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // wh87n - ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -4.69948 + -12.159 * tfactors.T9i + + 5.0 * tfactors.lnT9; - // wh87r - ln_set_rate = -4.69948 + -12.159 * tfactors.T9i - + 5.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i + + 5.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i - + 5.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = 3.52636 + -22.61 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = 3.52636 + -22.61 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -2.15417 + -11.73 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = -2.15417 + -11.73 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + He4 --> Ne19 - // O15 + He4 --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // dc11r + ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11r + ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11n + ln_set_rate = 26.2914 + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // dc11n - ln_set_rate = 26.2914 + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> F18 - // O17 + p --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -13.077 + -0.746296 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.077 + -0.746296 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> F19 - // O18 + p --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 19.917 + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.917 + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + p --> Ne18 - // F17 + p --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cb09 + ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; - // cb09 - ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cb09 + ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; - // cb09 - ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> Ne19 - // F18 + p --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> Ne20 - // F19 + p --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_He4_to_Mg22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne18_to_Mg22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 + He4 --> Mg22 - // Ne18 + He4 --> Mg22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 32.8865 + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 + + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 32.8865 + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 - + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i + + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i - + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> He4 + C12 - // N15 + p --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 20.8972 + -7.406 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 20.8972 + -7.406 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> p + F17 - // O14 + He4 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Ha96r + ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 18.6518 + -26.0 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 18.6518 + -26.0 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96n + ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // Ha96n - ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 16.3087 + -22.51 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 16.3087 + -22.51 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 11.1184 + -13.6 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 11.1184 + -13.6 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = -106.091 + -0.453036 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = -106.091 + -0.453036 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> He4 + N14 - // O17 + p --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.579 + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.579 + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> He4 + N15 - // O18 + p --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.2725 + -1.663 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.2725 + -1.663 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> He4 + O15 - // F18 + p --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> He4 + O16 - // F19 + p --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 26.2916 + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 26.2916 + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 14.3586 + -3.286 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // nacrr - ln_set_rate = 14.3586 + -3.286 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 8.239 + -2.46828 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 8.239 + -2.46828 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_p_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne20_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + p --> He4 + F17 - // Ne20 + p --> He4 + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // N13_to_C13_reaclib + { + // N13_to_C13_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_C13_beta_pos_reaclib) = drate_dT; + } } - } - { - // O14_to_N14_reaclib + { + // O14_to_N14_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_N14_beta_pos_reaclib) = drate_dT; + } } - } - { - // O15_to_N15_reaclib + { + // O15_to_N15_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_N15_beta_pos_reaclib) = drate_dT; + } } - } - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // p_C13_to_N14_reaclib + { + // C13_p_to_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); - } + log_scor = rate_eval.log_screen(k_p_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); + } #endif - rate_p_C13_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_N14_reaclib) = drate_dT; + rate_C13_p_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_p_to_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_p_to_N14_reaclib) = drate_dT; + } } - } - { - // p_N13_to_O14_reaclib + { + // N13_p_to_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); - } + log_scor = rate_eval.log_screen(k_p_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); + } #endif - rate_p_N13_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N13_to_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N13_to_O14_reaclib) = drate_dT; + rate_N13_p_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_p_to_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_p_to_O14_reaclib) = drate_dT; + } } - } - { - // p_N14_to_O15_reaclib + { + // N14_p_to_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); - } + log_scor = rate_eval.log_screen(k_p_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); + } #endif - rate_p_N14_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N14_to_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N14_to_O15_reaclib) = drate_dT; + rate_N14_p_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_p_to_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_p_to_O15_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_N15_to_O16_reaclib + { + // N15_p_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_O16_reaclib) = drate_dT; + rate_N15_p_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_N15_to_F19_reaclib + { + // N15_He4_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N15_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_F19_reaclib) = drate_dT; + rate_N15_He4_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_He4_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_F19_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_Ne18_reaclib + { + // O14_He4_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18_reaclib) = drate_dT; + rate_O14_He4_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_Ne18_reaclib) = drate_dT; + } } - } - { - // He4_O15_to_Ne19_reaclib + { + // O15_He4_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O15_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19_reaclib) = drate_dT; + rate_O15_He4_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_He4_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_Ne19_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // p_O17_to_F18_reaclib + { + // O17_p_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_F18_reaclib) = drate_dT; + rate_O17_p_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_F18_reaclib) = drate_dT; + } } - } - { - // p_O18_to_F19_reaclib + { + // O18_p_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_F19_reaclib) = drate_dT; + rate_O18_p_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_F19_reaclib) = drate_dT; + } } - } - { - // p_F17_to_Ne18_reaclib + { + // F17_p_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F17_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18_reaclib) = drate_dT; + rate_F17_p_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_p_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_Ne18_reaclib) = drate_dT; + } } - } - { - // p_F18_to_Ne19_reaclib + { + // F18_p_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19_reaclib) = drate_dT; + rate_F18_p_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_Ne19_reaclib) = drate_dT; + } } - } - { - // p_F19_to_Ne20_reaclib + { + // F19_p_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20_reaclib) = drate_dT; + rate_F19_p_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne18_to_Mg22_reaclib + { + // Ne18_He4_to_Mg22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne18); - } + log_scor = rate_eval.log_screen(k_He4_Ne18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne18); + } #endif - rate_He4_Ne18_to_Mg22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne18_to_Mg22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne18_to_Mg22_reaclib) = drate_dT; + rate_Ne18_He4_to_Mg22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_He4_to_Mg22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_He4_to_Mg22_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // p_N15_to_He4_C12_reaclib + { + // N15_p_to_He4_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_He4_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12_reaclib) = drate_dT; + rate_N15_p_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_He4_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_He4_C12_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_p_F17_reaclib + { + // O14_He4_to_p_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_p_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17_reaclib) = drate_dT; + rate_O14_He4_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_p_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_p_F17_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_O17_to_He4_N14_reaclib + { + // O17_p_to_He4_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_He4_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14_reaclib) = drate_dT; + rate_O17_p_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_He4_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_He4_N14_reaclib) = drate_dT; + } } - } - { - // p_O18_to_He4_N15_reaclib + { + // O18_p_to_He4_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_He4_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15_reaclib) = drate_dT; + rate_O18_p_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_He4_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_He4_N15_reaclib) = drate_dT; + } } - } - { - // p_F18_to_He4_O15_reaclib + { + // F18_p_to_He4_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_He4_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15_reaclib) = drate_dT; + rate_F18_p_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_He4_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_He4_O15_reaclib) = drate_dT; + } } - } - { - // p_F19_to_He4_O16_reaclib + { + // F19_p_to_He4_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_He4_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16_reaclib) = drate_dT; + rate_F19_p_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_He4_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_He4_O16_reaclib) = drate_dT; + } } - } - { - // p_Ne20_to_He4_F17_reaclib + { + // Ne20_p_to_He4_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); - } + log_scor = rate_eval.log_screen(k_p_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); + } #endif - rate_p_Ne20_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne20_to_He4_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17_reaclib) = drate_dT; + rate_Ne20_p_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_p_to_He4_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_p_to_He4_F17_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/CNO_extras/tabular_weak_rates.H b/networks/CNO_extras/tabular_weak_rates.H new file mode 100644 index 000000000..f5828f9de --- /dev/null +++ b/networks/CNO_extras/tabular_weak_rates.H @@ -0,0 +1,100 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F17_to_O17_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_O17_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); + + tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_O17_to_F17_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_to_F17_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F18_to_Ne18_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_Ne18_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F18_to_O18_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_O18_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne18_to_F18_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_F18_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_O18_to_F18_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_to_F18_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F19_to_Ne19_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_Ne19_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne19_to_F19_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_F19_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/CNO_extras/temperature_table_rates.H b/networks/CNO_extras/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/CNO_extras/temperature_table_rates.H +++ b/networks/CNO_extras/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/ECSN/Make.package b/networks/ECSN/Make.package index 35413fdcf..e66796431 100644 --- a/networks/ECSN/Make.package +++ b/networks/ECSN/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/ECSN/actual_network.H b/networks/ECSN/actual_network.H index 241d10500..bd990da87 100644 --- a/networks/ECSN/actual_network.H +++ b/networks/ECSN/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -163,24 +163,24 @@ namespace Rates std::uint8_t { k_Ne20_to_He4_O16_reaclib = 1, - k_He4_O16_to_Ne20_reaclib = 2, - k_He4_Ne20_to_Mg24_reaclib = 3, - k_He4_Mg24_to_Si28_reaclib = 4, - k_p_Al27_to_Si28_reaclib = 5, - k_He4_Al27_to_P31_reaclib = 6, - k_He4_Si28_to_S32_reaclib = 7, - k_p_P31_to_S32_reaclib = 8, + k_O16_He4_to_Ne20_reaclib = 2, + k_Ne20_He4_to_Mg24_reaclib = 3, + k_Mg24_He4_to_Si28_reaclib = 4, + k_Al27_p_to_Si28_reaclib = 5, + k_Al27_He4_to_P31_reaclib = 6, + k_Si28_He4_to_S32_reaclib = 7, + k_P31_p_to_S32_reaclib = 8, k_O16_O16_to_p_P31_reaclib = 9, k_O16_O16_to_He4_Si28_reaclib = 10, - k_He4_Mg24_to_p_Al27_reaclib = 11, - k_p_Al27_to_He4_Mg24_reaclib = 12, - k_He4_Si28_to_p_P31_reaclib = 13, - k_p_P31_to_He4_Si28_reaclib = 14, - k_F20_to_Ne20_weaktab = 15, - k_F20_to_O20_weaktab = 16, - k_Ne20_to_F20_weaktab = 17, - k_O20_to_F20_weaktab = 18, - NumRates = k_O20_to_F20_weaktab + k_Mg24_He4_to_p_Al27_reaclib = 11, + k_Al27_p_to_He4_Mg24_reaclib = 12, + k_Si28_He4_to_p_P31_reaclib = 13, + k_P31_p_to_He4_Si28_reaclib = 14, + k_F20_to_Ne20_beta_neg_weaktab = 15, + k_F20_to_O20_electron_capture_weaktab = 16, + k_Ne20_to_F20_electron_capture_weaktab = 17, + k_O20_to_F20_beta_neg_weaktab = 18, + NumRates = k_O20_to_F20_beta_neg_weaktab }; enum ScreenPairs : @@ -204,23 +204,23 @@ namespace Rates static const std::vector rate_names = { "", // 0 "Ne20_to_He4_O16_reaclib", // 1, - "He4_O16_to_Ne20_reaclib", // 2, - "He4_Ne20_to_Mg24_reaclib", // 3, - "He4_Mg24_to_Si28_reaclib", // 4, - "p_Al27_to_Si28_reaclib", // 5, - "He4_Al27_to_P31_reaclib", // 6, - "He4_Si28_to_S32_reaclib", // 7, - "p_P31_to_S32_reaclib", // 8, + "O16_He4_to_Ne20_reaclib", // 2, + "Ne20_He4_to_Mg24_reaclib", // 3, + "Mg24_He4_to_Si28_reaclib", // 4, + "Al27_p_to_Si28_reaclib", // 5, + "Al27_He4_to_P31_reaclib", // 6, + "Si28_He4_to_S32_reaclib", // 7, + "P31_p_to_S32_reaclib", // 8, "O16_O16_to_p_P31_reaclib", // 9, "O16_O16_to_He4_Si28_reaclib", // 10, - "He4_Mg24_to_p_Al27_reaclib", // 11, - "p_Al27_to_He4_Mg24_reaclib", // 12, - "He4_Si28_to_p_P31_reaclib", // 13, - "p_P31_to_He4_Si28_reaclib", // 14, - "F20_to_Ne20_weaktab", // 15, - "F20_to_O20_weaktab", // 16, - "Ne20_to_F20_weaktab", // 17, - "O20_to_F20_weaktab" // 18, + "Mg24_He4_to_p_Al27_reaclib", // 11, + "Al27_p_to_He4_Mg24_reaclib", // 12, + "Si28_He4_to_p_P31_reaclib", // 13, + "P31_p_to_He4_Si28_reaclib", // 14, + "F20_to_Ne20_beta_neg_weaktab", // 15, + "F20_to_O20_electron_capture_weaktab", // 16, + "Ne20_to_F20_electron_capture_weaktab", // 17, + "O20_to_F20_beta_neg_weaktab" // 18, }; template @@ -253,9 +253,9 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 3; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_reaclib, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_reaclib, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_reaclib + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_reaclib, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_reaclib, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_reaclib }; } #endif diff --git a/networks/ECSN/actual_rhs.H b/networks/ECSN/actual_rhs.H index 3b7257f9a..42eb37814 100644 --- a/networks/ECSN/actual_rhs.H +++ b/networks/ECSN/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -162,9 +159,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -176,7 +175,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -184,59 +185,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F20_Ne20_meta, j_F20_Ne20_rhoy, j_F20_Ne20_temp, j_F20_Ne20_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F20_to_Ne20_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F20_to_Ne20_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F20) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F20_O20_meta, j_F20_O20_rhoy, j_F20_O20_temp, j_F20_O20_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F20_to_O20_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F20_to_O20_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F20) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne20_F20_meta, j_Ne20_F20_rhoy, j_Ne20_F20_temp, j_Ne20_F20_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne20_to_F20_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_F20_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne20) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O20_F20_meta, j_O20_F20_rhoy, j_O20_F20_temp, j_O20_F20_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O20_to_F20_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O20_to_F20_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(O20) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -288,29 +250,7 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F20_Ne20_meta, j_F20_Ne20_rhoy, j_F20_Ne20_temp, j_F20_Ne20_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F20_to_Ne20_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F20) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F20_O20_meta, j_F20_O20_rhoy, j_F20_O20_temp, j_F20_O20_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F20_to_O20_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F20) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne20_F20_meta, j_Ne20_F20_rhoy, j_Ne20_F20_temp, j_Ne20_F20_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne20_to_F20_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne20) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O20_F20_meta, j_O20_F20_rhoy, j_O20_F20_temp, j_O20_F20_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O20_to_F20_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(O20) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; @@ -321,14 +261,14 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(O16) = 0.0_rt; ydot_nuc(O20) = - (-screened_rates(k_O20_to_F20_weaktab)*Y(O20) + screened_rates(k_F20_to_O20_weaktab)*Y(F20)); + (-screened_rates(k_O20_to_F20_beta_neg_weaktab)*Y(O20) + screened_rates(k_F20_to_O20_electron_capture_weaktab)*Y(F20)); ydot_nuc(F20) = - (-screened_rates(k_F20_to_Ne20_weaktab)*Y(F20) + screened_rates(k_Ne20_to_F20_weaktab)*Y(Ne20)) + - (screened_rates(k_O20_to_F20_weaktab)*Y(O20) + -screened_rates(k_F20_to_O20_weaktab)*Y(F20)); + (-screened_rates(k_F20_to_Ne20_beta_neg_weaktab)*Y(F20) + screened_rates(k_Ne20_to_F20_electron_capture_weaktab)*Y(Ne20)) + + (screened_rates(k_O20_to_F20_beta_neg_weaktab)*Y(O20) + -screened_rates(k_F20_to_O20_electron_capture_weaktab)*Y(F20)); ydot_nuc(Ne20) = - (screened_rates(k_F20_to_Ne20_weaktab)*Y(F20) + -screened_rates(k_Ne20_to_F20_weaktab)*Y(Ne20)); + (screened_rates(k_F20_to_Ne20_beta_neg_weaktab)*Y(F20) + -screened_rates(k_Ne20_to_F20_electron_capture_weaktab)*Y(Ne20)); ydot_nuc(Mg24) = 0.0_rt; @@ -349,70 +289,70 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - -screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + - -screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + + -screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + + -screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(He4) = - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + - -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + - -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + - -screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + - -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + + -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + + -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + + -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + + -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(O16) = - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + -screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho; ydot_nuc(O20) = - (-screened_rates(k_O20_to_F20_weaktab)*Y(O20) + screened_rates(k_F20_to_O20_weaktab)*Y(F20)); + (-screened_rates(k_O20_to_F20_beta_neg_weaktab)*Y(O20) + screened_rates(k_F20_to_O20_electron_capture_weaktab)*Y(F20)); ydot_nuc(F20) = - (-screened_rates(k_F20_to_Ne20_weaktab)*Y(F20) + screened_rates(k_Ne20_to_F20_weaktab)*Y(Ne20)) + - (screened_rates(k_O20_to_F20_weaktab)*Y(O20) + -screened_rates(k_F20_to_O20_weaktab)*Y(F20)); + (-screened_rates(k_F20_to_Ne20_beta_neg_weaktab)*Y(F20) + screened_rates(k_Ne20_to_F20_electron_capture_weaktab)*Y(Ne20)) + + (screened_rates(k_O20_to_F20_beta_neg_weaktab)*Y(O20) + -screened_rates(k_F20_to_O20_electron_capture_weaktab)*Y(F20)); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + - -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + - (screened_rates(k_F20_to_Ne20_weaktab)*Y(F20) + -screened_rates(k_Ne20_to_F20_weaktab)*Y(Ne20)); + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + + -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + + (screened_rates(k_F20_to_Ne20_beta_neg_weaktab)*Y(F20) + -screened_rates(k_Ne20_to_F20_electron_capture_weaktab)*Y(Ne20)); ydot_nuc(Mg24) = - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + - -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho); + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + + -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Al27) = - -screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + - -screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho); + -screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + + -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + - -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + + screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + + screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + + -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(P31) = - screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + - -screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + + screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + + -screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho; + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + + screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho; } @@ -468,15 +408,17 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); scratch = 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho; @@ -488,56 +430,56 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ne20, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*state.rho; jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*state.rho; jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); jac.set(H1, S32, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(Si28)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(Si28)*state.rho; jac.set(He4, He4, scratch); - scratch = -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(He4, O16, scratch); jac.set(He4, O20, 0.0); jac.set(He4, F20, 0.0); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib); + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib); jac.set(He4, Ne20, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*state.rho; jac.set(He4, Mg24, scratch); - scratch = -screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho + screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*state.rho; jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); jac.set(He4, S32, 0.0); jac.set(O16, H1, 0.0); - scratch = -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho; jac.set(O16, O16, scratch); jac.set(O16, O20, 0.0); @@ -563,10 +505,10 @@ void jac_nuc(const burn_t& state, jac.set(O20, O16, 0.0); - scratch = -screened_rates(k_O20_to_F20_weaktab); + scratch = -screened_rates(k_O20_to_F20_beta_neg_weaktab); jac.set(O20, O20, scratch); - scratch = screened_rates(k_F20_to_O20_weaktab); + scratch = screened_rates(k_F20_to_O20_electron_capture_weaktab); jac.set(O20, F20, scratch); jac.set(O20, Ne20, 0.0); @@ -587,13 +529,13 @@ void jac_nuc(const burn_t& state, jac.set(F20, O16, 0.0); - scratch = screened_rates(k_O20_to_F20_weaktab); + scratch = screened_rates(k_O20_to_F20_beta_neg_weaktab); jac.set(F20, O20, scratch); - scratch = -screened_rates(k_F20_to_Ne20_weaktab) - screened_rates(k_F20_to_O20_weaktab); + scratch = -screened_rates(k_F20_to_Ne20_beta_neg_weaktab) - screened_rates(k_F20_to_O20_electron_capture_weaktab); jac.set(F20, F20, scratch); - scratch = screened_rates(k_Ne20_to_F20_weaktab); + scratch = screened_rates(k_Ne20_to_F20_electron_capture_weaktab); jac.set(F20, Ne20, scratch); jac.set(F20, Mg24, 0.0); @@ -608,18 +550,18 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, H1, 0.0); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); jac.set(Ne20, O20, 0.0); - scratch = screened_rates(k_F20_to_Ne20_weaktab); + scratch = screened_rates(k_F20_to_Ne20_beta_neg_weaktab); jac.set(Ne20, F20, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_to_F20_weaktab) - screened_rates(k_Ne20_to_He4_O16_reaclib); + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_to_F20_electron_capture_weaktab) - screened_rates(k_Ne20_to_He4_O16_reaclib); jac.set(Ne20, Ne20, scratch); jac.set(Ne20, Mg24, 0.0); @@ -632,10 +574,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, S32, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); jac.set(Mg24, O16, 0.0); @@ -644,13 +586,13 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, F20, 0.0); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); jac.set(Mg24, Si28, 0.0); @@ -659,10 +601,10 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, S32, 0.0); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = -screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(Mg24)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); jac.set(Al27, O16, 0.0); @@ -673,10 +615,10 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Ne20, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); jac.set(Al27, Si28, 0.0); @@ -685,10 +627,10 @@ void jac_nuc(const burn_t& state, jac.set(Al27, S32, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); scratch = 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; @@ -700,24 +642,24 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Ne20, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*state.rho; jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); jac.set(Si28, S32, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho + screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho + screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); scratch = 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho; @@ -731,21 +673,21 @@ void jac_nuc(const burn_t& state, jac.set(P31, Mg24, 0.0); - scratch = screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho; jac.set(P31, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); jac.set(P31, S32, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, O16, 0.0); @@ -760,10 +702,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); jac.set(S32, S32, 0.0); diff --git a/networks/ECSN/approximate_rates.H b/networks/ECSN/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/ECSN/approximate_rates.H +++ b/networks/ECSN/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/ECSN/branched_rates.H b/networks/ECSN/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/ECSN/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/ECSN/derived_rates.H b/networks/ECSN/derived_rates.H index 579d7dd3d..2d8da657a 100644 --- a/networks/ECSN/derived_rates.H +++ b/networks/ECSN/derived_rates.H @@ -7,21 +7,23 @@ #include #include -using namespace Rates; +namespace derived_rates { + using namespace Rates; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + } + } #endif diff --git a/networks/ECSN/modified_rates.H b/networks/ECSN/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/ECSN/modified_rates.H +++ b/networks/ECSN/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/ECSN/pynucastro-info.txt b/networks/ECSN/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/ECSN/pynucastro-info.txt +++ b/networks/ECSN/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/ECSN/reaclib_rates.H b/networks/ECSN/reaclib_rates.H index b582631e3..b820cb77d 100644 --- a/networks/ECSN/reaclib_rates.H +++ b/networks/ECSN/reaclib_rates.H @@ -8,1189 +8,1192 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // Ne20 --> He4 + O16 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Ne20 --> He4 + O16 - // co10r - ln_set_rate = 28.6431 + -65.246 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.246 * tfactors.T9i * tfactors.T9i; + // co10r + ln_set_rate = 28.6431 + -65.246 * tfactors.T9i; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.246 * tfactors.T9i * tfactors.T9i; - // co10n - ln_set_rate = 48.6604 + -54.8875 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - ln_set_rate += log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 54.8875 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + // co10n + ln_set_rate = 48.6604 + -54.8875 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 54.8875 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - // co10r - ln_set_rate = 34.2658 + -67.6518 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - ln_set_rate += log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.6518 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + // co10r + ln_set_rate = 34.2658 + -67.6518 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 67.6518 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_He4_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al27_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + He4 --> P31 - // Al27 + He4 --> P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.2333 + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 + + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.2333 + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 - + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i + + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i - + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -26.2862 + -19.5422 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.2862 + -19.5422 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.5422 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.5422 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -6.44575 + -22.8216 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.44575 + -22.8216 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.8216 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.8216 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 30.0397 + -18.5791 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 30.0397 + -18.5791 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.5791 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.5791 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.4595 + -24.112 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.4595 + -24.112 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.112 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.112 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -11.4335 + -25.6606 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -11.4335 + -25.6606 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.6606 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.6606 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.3424 + -22.2348 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.3424 + -22.2348 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.2348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.2348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // Ne20_to_He4_O16_reaclib + { + // Ne20_to_He4_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne20_to_He4_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_to_He4_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Al27_to_P31_reaclib + { + // Al27_He4_to_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); - } + log_scor = rate_eval.log_screen(k_He4_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); + } #endif - rate_He4_Al27_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al27_to_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al27_to_P31_reaclib) = drate_dT; + rate_Al27_He4_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_He4_to_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_He4_to_P31_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_reaclib + { + // Mg24_He4_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_reaclib) = drate_dT; + rate_Mg24_He4_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_reaclib + { + // Si28_He4_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_reaclib) = drate_dT; + rate_Si28_He4_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/ECSN/tabular_weak_rates.H b/networks/ECSN/tabular_weak_rates.H new file mode 100644 index 000000000..f2d866fe8 --- /dev/null +++ b/networks/ECSN/tabular_weak_rates.H @@ -0,0 +1,68 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_F20_Ne20_meta, j_F20_Ne20_rhoy, j_F20_Ne20_temp, j_F20_Ne20_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F20_to_Ne20_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F20_to_Ne20_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F20) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F20_O20_meta, j_F20_O20_rhoy, j_F20_O20_temp, j_F20_O20_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F20_to_O20_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F20_to_O20_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F20) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne20_F20_meta, j_Ne20_F20_rhoy, j_Ne20_F20_temp, j_Ne20_F20_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne20_to_F20_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_F20_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne20) * (edot_nu + edot_gamma); + + tabular_evaluate(j_O20_F20_meta, j_O20_F20_rhoy, j_O20_F20_temp, j_O20_F20_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_O20_to_F20_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O20_to_F20_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(O20) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/ECSN/temperature_table_rates.H b/networks/ECSN/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/ECSN/temperature_table_rates.H +++ b/networks/ECSN/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/ase-iron-starlib/Make.package b/networks/he-burn/ase-iron-starlib/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/ase-iron-starlib/Make.package +++ b/networks/he-burn/ase-iron-starlib/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/ase-iron-starlib/actual_network.H b/networks/he-burn/ase-iron-starlib/actual_network.H index b0ceb8c85..3bcc6082a 100644 --- a/networks/he-burn/ase-iron-starlib/actual_network.H +++ b/networks/he-burn/ase-iron-starlib/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -285,77 +285,77 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_Co56_to_Fe56_weaktab = 1, - k_Co56_to_Ni56_weaktab = 2, - k_Fe56_to_Co56_weaktab = 3, - k_Ni56_to_Co56_weaktab = 4, - k_n_to_p_weaktab = 5, - k_p_to_n_weaktab = 6, + k_Co56_to_Fe56_electron_capture_weaktab = 1, + k_Co56_to_Ni56_beta_neg_weaktab = 2, + k_Fe56_to_Co56_beta_neg_weaktab = 3, + k_Ni56_to_Co56_electron_capture_weaktab = 4, + k_n_to_p_beta_neg_weaktab = 5, + k_p_to_n_electron_capture_weaktab = 6, k_C12_C12_to_p_Na23_starlib = 7, k_C12_C12_to_He4_Ne20_starlib = 8, - k_C12_O16_to_p_Al27_starlib = 9, - k_C12_O16_to_He4_Mg24_starlib = 10, + k_O16_C12_to_p_Al27_starlib = 9, + k_O16_C12_to_He4_Mg24_starlib = 10, k_O16_O16_to_p_P31_starlib = 11, k_O16_O16_to_He4_Si28_starlib = 12, k_He4_He4_He4_to_C12_starlib = 13, - k_p_C12_to_N13_starlib = 14, - k_He4_C12_to_O16_starlib = 15, - k_He4_N13_to_p_O16_starlib = 16, - k_He4_O16_to_Ne20_starlib = 17, - k_He4_Ne20_to_Mg24_starlib = 18, - k_p_Na23_to_He4_Ne20_starlib = 19, - k_p_Na23_to_Mg24_starlib = 20, - k_He4_Mg24_to_Si28_starlib = 21, - k_p_Al27_to_He4_Mg24_starlib = 22, - k_p_Al27_to_Si28_starlib = 23, - k_He4_Si28_to_S32_starlib = 24, - k_p_P31_to_He4_Si28_starlib = 25, - k_p_P31_to_S32_starlib = 26, - k_He4_Cr48_to_p_Mn51_starlib = 27, - k_He4_Cr48_to_Fe52_starlib = 28, - k_p_Mn51_to_Fe52_starlib = 29, - k_He4_Mn51_to_Co55_starlib = 30, - k_He4_Fe52_to_p_Co55_starlib = 31, - k_He4_Fe52_to_Ni56_starlib = 32, - k_p_Co55_to_Ni56_starlib = 33, - k_He4_Co55_to_Cu59_starlib = 34, - k_He4_Ni56_to_Zn60_starlib = 35, - k_p_Cu59_to_He4_Ni56_starlib = 36, - k_p_Cu59_to_Zn60_starlib = 37, + k_C12_p_to_N13_starlib = 14, + k_C12_He4_to_O16_starlib = 15, + k_N13_He4_to_p_O16_starlib = 16, + k_O16_He4_to_Ne20_starlib = 17, + k_Ne20_He4_to_Mg24_starlib = 18, + k_Na23_p_to_He4_Ne20_starlib = 19, + k_Na23_p_to_Mg24_starlib = 20, + k_Mg24_He4_to_Si28_starlib = 21, + k_Al27_p_to_He4_Mg24_starlib = 22, + k_Al27_p_to_Si28_starlib = 23, + k_Si28_He4_to_S32_starlib = 24, + k_P31_p_to_He4_Si28_starlib = 25, + k_P31_p_to_S32_starlib = 26, + k_Cr48_He4_to_p_Mn51_starlib = 27, + k_Cr48_He4_to_Fe52_starlib = 28, + k_Mn51_p_to_Fe52_starlib = 29, + k_Mn51_He4_to_Co55_starlib = 30, + k_Fe52_He4_to_p_Co55_starlib = 31, + k_Fe52_He4_to_Ni56_starlib = 32, + k_Co55_p_to_Ni56_starlib = 33, + k_Co55_He4_to_Cu59_starlib = 34, + k_Ni56_He4_to_Zn60_starlib = 35, + k_Cu59_p_to_He4_Ni56_starlib = 36, + k_Cu59_p_to_Zn60_starlib = 37, k_C12_C12_to_n_Mg23_starlib = 38, k_O16_O16_to_n_S31_starlib = 39, - k_C12_O16_to_n_Si27_starlib = 40, - k_He4_Mn51_to_p_Fe54_starlib = 41, - k_p_Fe54_to_Co55_starlib = 42, - k_p_Fe56_to_Co57_starlib = 43, - k_He4_Fe54_to_Ni58_starlib = 44, - k_n_Co55_to_Co56_starlib = 45, - k_n_Co56_to_p_Fe56_starlib = 46, - k_n_Co56_to_Co57_starlib = 47, - k_p_Co57_to_He4_Fe54_starlib = 48, - k_p_Co57_to_Ni58_starlib = 49, - k_He4_Co55_to_p_Ni58_starlib = 50, - k_n_Ni56_to_p_Co56_starlib = 51, - k_p_Ni58_to_Cu59_starlib = 52, - k_n_Cu59_to_He4_Co56_starlib = 53, - k_He4_S32_to_Ar36_starlib = 54, - k_p_Cl35_to_Ar36_starlib = 55, - k_p_Cl35_to_He4_S32_starlib = 56, - k_He4_Ar36_to_Ca40_starlib = 57, - k_p_K39_to_Ca40_starlib = 58, - k_p_K39_to_He4_Ar36_starlib = 59, - k_He4_Ca40_to_Ti44_starlib = 60, - k_p_Sc43_to_Ti44_starlib = 61, - k_p_Sc43_to_He4_Ca40_starlib = 62, - k_He4_Ti44_to_Cr48_starlib = 63, - k_p_V47_to_Cr48_starlib = 64, - k_p_V47_to_He4_Ti44_starlib = 65, - k_n_Fe52_to_Fe53_starlib = 66, - k_n_Fe53_to_Fe54_starlib = 67, - k_n_Fe54_to_Fe55_starlib = 68, - k_n_Fe55_to_Fe56_starlib = 69, - k_n_Ni56_to_Ni57_starlib = 70, - k_n_Ni57_to_Ni58_starlib = 71, + k_O16_C12_to_n_Si27_starlib = 40, + k_Mn51_He4_to_p_Fe54_starlib = 41, + k_Fe54_p_to_Co55_starlib = 42, + k_Fe56_p_to_Co57_starlib = 43, + k_Fe54_He4_to_Ni58_starlib = 44, + k_Co55_n_to_Co56_starlib = 45, + k_Co56_n_to_p_Fe56_starlib = 46, + k_Co56_n_to_Co57_starlib = 47, + k_Co57_p_to_He4_Fe54_starlib = 48, + k_Co57_p_to_Ni58_starlib = 49, + k_Co55_He4_to_p_Ni58_starlib = 50, + k_Ni56_n_to_p_Co56_starlib = 51, + k_Ni58_p_to_Cu59_starlib = 52, + k_Cu59_n_to_He4_Co56_starlib = 53, + k_S32_He4_to_Ar36_starlib = 54, + k_Cl35_p_to_He4_S32_starlib = 55, + k_Cl35_p_to_Ar36_starlib = 56, + k_Ar36_He4_to_Ca40_starlib = 57, + k_K39_p_to_He4_Ar36_starlib = 58, + k_K39_p_to_Ca40_starlib = 59, + k_Ca40_He4_to_Ti44_starlib = 60, + k_Sc43_p_to_He4_Ca40_starlib = 61, + k_Sc43_p_to_Ti44_starlib = 62, + k_Ti44_He4_to_Cr48_starlib = 63, + k_V47_p_to_He4_Ti44_starlib = 64, + k_V47_p_to_Cr48_starlib = 65, + k_Fe52_n_to_Fe53_starlib = 66, + k_Fe53_n_to_Fe54_starlib = 67, + k_Fe54_n_to_Fe55_starlib = 68, + k_Fe55_n_to_Fe56_starlib = 69, + k_Ni56_n_to_Ni57_starlib = 70, + k_Ni57_n_to_Ni58_starlib = 71, k_S32_He4_to_Ar36_approx = 72, k_Ar36_to_S32_He4_approx = 73, k_Ar36_He4_to_Ca40_approx = 74, @@ -372,73 +372,73 @@ namespace Rates k_Ni58_to_Ni56_n_n_approx = 85, k_C12_C12_to_Mg24_modified = 86, k_O16_O16_to_S32_modified = 87, - k_C12_O16_to_Si28_modified = 88, - k_C12_to_He4_He4_He4_derived = 89, - k_He4_Ne20_to_C12_C12_derived = 90, - k_p_Na23_to_C12_C12_derived = 91, - k_He4_Mg24_to_C12_O16_derived = 92, - k_p_Al27_to_C12_O16_derived = 93, - k_He4_Si28_to_O16_O16_derived = 94, - k_p_P31_to_O16_O16_derived = 95, - k_p_O16_to_He4_N13_derived = 96, + k_O16_C12_to_Si28_modified = 88, + k_C12_to_3He4_derived = 89, + k_Ne20_He4_to_C12_C12_derived = 90, + k_Na23_p_to_C12_C12_derived = 91, + k_Mg24_He4_to_C12_O16_derived = 92, + k_Al27_p_to_C12_O16_derived = 93, + k_Si28_He4_to_O16_O16_derived = 94, + k_P31_p_to_O16_O16_derived = 95, + k_O16_p_to_He4_N13_derived = 96, k_N13_to_p_C12_derived = 97, k_O16_to_He4_C12_derived = 98, k_Ne20_to_He4_O16_derived = 99, - k_He4_Ne20_to_p_Na23_derived = 100, + k_Ne20_He4_to_p_Na23_derived = 100, k_Mg24_to_p_Na23_derived = 101, k_Mg24_to_He4_Ne20_derived = 102, - k_He4_Mg24_to_p_Al27_derived = 103, + k_Mg24_He4_to_p_Al27_derived = 103, k_Si28_to_p_Al27_derived = 104, k_Si28_to_He4_Mg24_derived = 105, - k_He4_Si28_to_p_P31_derived = 106, + k_Si28_He4_to_p_P31_derived = 106, k_S32_to_p_P31_derived = 107, k_S32_to_He4_Si28_derived = 108, - k_p_Mn51_to_He4_Cr48_derived = 109, - k_p_Co55_to_He4_Fe52_derived = 110, + k_Mn51_p_to_He4_Cr48_derived = 109, + k_Co55_p_to_He4_Fe52_derived = 110, k_Fe52_to_p_Mn51_derived = 111, k_Fe52_to_He4_Cr48_derived = 112, k_Co55_to_He4_Mn51_derived = 113, k_Ni56_to_p_Co55_derived = 114, k_Ni56_to_He4_Fe52_derived = 115, - k_He4_Ni56_to_p_Cu59_derived = 116, + k_Ni56_He4_to_p_Cu59_derived = 116, k_Cu59_to_He4_Co55_derived = 117, k_Zn60_to_p_Cu59_derived = 118, k_Zn60_to_He4_Ni56_derived = 119, k_Mg24_to_C12_C12_derived = 120, k_S32_to_O16_O16_derived = 121, k_Si28_to_C12_O16_derived = 122, - k_p_Fe54_to_He4_Mn51_derived = 123, - k_p_Fe56_to_n_Co56_derived = 124, - k_He4_Fe54_to_p_Co57_derived = 125, - k_p_Ni58_to_He4_Co55_derived = 126, + k_Fe54_p_to_He4_Mn51_derived = 123, + k_Fe56_p_to_n_Co56_derived = 124, + k_Fe54_He4_to_p_Co57_derived = 125, + k_Ni58_p_to_He4_Co55_derived = 126, k_Co55_to_p_Fe54_derived = 127, k_Co56_to_n_Co55_derived = 128, k_Co57_to_n_Co56_derived = 129, k_Co57_to_p_Fe56_derived = 130, - k_p_Co56_to_n_Ni56_derived = 131, + k_Co56_p_to_n_Ni56_derived = 131, k_Ni58_to_p_Co57_derived = 132, k_Ni58_to_He4_Fe54_derived = 133, - k_He4_Co56_to_n_Cu59_derived = 134, + k_Co56_He4_to_n_Cu59_derived = 134, k_Cu59_to_p_Ni58_derived = 135, - k_He4_S32_to_p_Cl35_derived = 136, + k_S32_He4_to_p_Cl35_derived = 136, k_Ar36_to_He4_S32_derived = 137, k_Ar36_to_p_Cl35_derived = 138, - k_He4_Ar36_to_p_K39_derived = 139, + k_Ar36_He4_to_p_K39_derived = 139, k_Ca40_to_He4_Ar36_derived = 140, k_Ca40_to_p_K39_derived = 141, - k_He4_Ca40_to_p_Sc43_derived = 142, + k_Ca40_He4_to_p_Sc43_derived = 142, k_Ti44_to_He4_Ca40_derived = 143, k_Ti44_to_p_Sc43_derived = 144, - k_He4_Ti44_to_p_V47_derived = 145, + k_Ti44_He4_to_p_V47_derived = 145, k_Cr48_to_He4_Ti44_derived = 146, k_Cr48_to_p_V47_derived = 147, - k_Fe54_to_n_Fe53_derived = 148, - k_Fe53_to_n_Fe52_derived = 149, - k_Fe56_to_n_Fe55_derived = 150, - k_Fe55_to_n_Fe54_derived = 151, - k_Ni58_to_n_Ni57_derived = 152, - k_Ni57_to_n_Ni56_derived = 153, - NumRates = k_Ni57_to_n_Ni56_derived + k_Fe53_to_n_Fe52_derived = 148, + k_Fe54_to_n_Fe53_derived = 149, + k_Fe55_to_n_Fe54_derived = 150, + k_Fe56_to_n_Fe55_derived = 151, + k_Ni57_to_n_Ni56_derived = 152, + k_Ni58_to_n_Ni57_derived = 153, + NumRates = k_Ni58_to_n_Ni57_derived }; enum ScreenPairs : @@ -492,77 +492,77 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "Co56_to_Fe56_weaktab", // 1, - "Co56_to_Ni56_weaktab", // 2, - "Fe56_to_Co56_weaktab", // 3, - "Ni56_to_Co56_weaktab", // 4, - "n_to_p_weaktab", // 5, - "p_to_n_weaktab", // 6, + "Co56_to_Fe56_electron_capture_weaktab", // 1, + "Co56_to_Ni56_beta_neg_weaktab", // 2, + "Fe56_to_Co56_beta_neg_weaktab", // 3, + "Ni56_to_Co56_electron_capture_weaktab", // 4, + "n_to_p_beta_neg_weaktab", // 5, + "p_to_n_electron_capture_weaktab", // 6, "C12_C12_to_p_Na23_starlib", // 7, "C12_C12_to_He4_Ne20_starlib", // 8, - "C12_O16_to_p_Al27_starlib", // 9, - "C12_O16_to_He4_Mg24_starlib", // 10, + "O16_C12_to_p_Al27_starlib", // 9, + "O16_C12_to_He4_Mg24_starlib", // 10, "O16_O16_to_p_P31_starlib", // 11, "O16_O16_to_He4_Si28_starlib", // 12, "He4_He4_He4_to_C12_starlib", // 13, - "p_C12_to_N13_starlib", // 14, - "He4_C12_to_O16_starlib", // 15, - "He4_N13_to_p_O16_starlib", // 16, - "He4_O16_to_Ne20_starlib", // 17, - "He4_Ne20_to_Mg24_starlib", // 18, - "p_Na23_to_He4_Ne20_starlib", // 19, - "p_Na23_to_Mg24_starlib", // 20, - "He4_Mg24_to_Si28_starlib", // 21, - "p_Al27_to_He4_Mg24_starlib", // 22, - "p_Al27_to_Si28_starlib", // 23, - "He4_Si28_to_S32_starlib", // 24, - "p_P31_to_He4_Si28_starlib", // 25, - "p_P31_to_S32_starlib", // 26, - "He4_Cr48_to_p_Mn51_starlib", // 27, - "He4_Cr48_to_Fe52_starlib", // 28, - "p_Mn51_to_Fe52_starlib", // 29, - "He4_Mn51_to_Co55_starlib", // 30, - "He4_Fe52_to_p_Co55_starlib", // 31, - "He4_Fe52_to_Ni56_starlib", // 32, - "p_Co55_to_Ni56_starlib", // 33, - "He4_Co55_to_Cu59_starlib", // 34, - "He4_Ni56_to_Zn60_starlib", // 35, - "p_Cu59_to_He4_Ni56_starlib", // 36, - "p_Cu59_to_Zn60_starlib", // 37, + "C12_p_to_N13_starlib", // 14, + "C12_He4_to_O16_starlib", // 15, + "N13_He4_to_p_O16_starlib", // 16, + "O16_He4_to_Ne20_starlib", // 17, + "Ne20_He4_to_Mg24_starlib", // 18, + "Na23_p_to_He4_Ne20_starlib", // 19, + "Na23_p_to_Mg24_starlib", // 20, + "Mg24_He4_to_Si28_starlib", // 21, + "Al27_p_to_He4_Mg24_starlib", // 22, + "Al27_p_to_Si28_starlib", // 23, + "Si28_He4_to_S32_starlib", // 24, + "P31_p_to_He4_Si28_starlib", // 25, + "P31_p_to_S32_starlib", // 26, + "Cr48_He4_to_p_Mn51_starlib", // 27, + "Cr48_He4_to_Fe52_starlib", // 28, + "Mn51_p_to_Fe52_starlib", // 29, + "Mn51_He4_to_Co55_starlib", // 30, + "Fe52_He4_to_p_Co55_starlib", // 31, + "Fe52_He4_to_Ni56_starlib", // 32, + "Co55_p_to_Ni56_starlib", // 33, + "Co55_He4_to_Cu59_starlib", // 34, + "Ni56_He4_to_Zn60_starlib", // 35, + "Cu59_p_to_He4_Ni56_starlib", // 36, + "Cu59_p_to_Zn60_starlib", // 37, "C12_C12_to_n_Mg23_starlib", // 38, "O16_O16_to_n_S31_starlib", // 39, - "C12_O16_to_n_Si27_starlib", // 40, - "He4_Mn51_to_p_Fe54_starlib", // 41, - "p_Fe54_to_Co55_starlib", // 42, - "p_Fe56_to_Co57_starlib", // 43, - "He4_Fe54_to_Ni58_starlib", // 44, - "n_Co55_to_Co56_starlib", // 45, - "n_Co56_to_p_Fe56_starlib", // 46, - "n_Co56_to_Co57_starlib", // 47, - "p_Co57_to_He4_Fe54_starlib", // 48, - "p_Co57_to_Ni58_starlib", // 49, - "He4_Co55_to_p_Ni58_starlib", // 50, - "n_Ni56_to_p_Co56_starlib", // 51, - "p_Ni58_to_Cu59_starlib", // 52, - "n_Cu59_to_He4_Co56_starlib", // 53, - "He4_S32_to_Ar36_starlib", // 54, - "p_Cl35_to_Ar36_starlib", // 55, - "p_Cl35_to_He4_S32_starlib", // 56, - "He4_Ar36_to_Ca40_starlib", // 57, - "p_K39_to_Ca40_starlib", // 58, - "p_K39_to_He4_Ar36_starlib", // 59, - "He4_Ca40_to_Ti44_starlib", // 60, - "p_Sc43_to_Ti44_starlib", // 61, - "p_Sc43_to_He4_Ca40_starlib", // 62, - "He4_Ti44_to_Cr48_starlib", // 63, - "p_V47_to_Cr48_starlib", // 64, - "p_V47_to_He4_Ti44_starlib", // 65, - "n_Fe52_to_Fe53_starlib", // 66, - "n_Fe53_to_Fe54_starlib", // 67, - "n_Fe54_to_Fe55_starlib", // 68, - "n_Fe55_to_Fe56_starlib", // 69, - "n_Ni56_to_Ni57_starlib", // 70, - "n_Ni57_to_Ni58_starlib", // 71, + "O16_C12_to_n_Si27_starlib", // 40, + "Mn51_He4_to_p_Fe54_starlib", // 41, + "Fe54_p_to_Co55_starlib", // 42, + "Fe56_p_to_Co57_starlib", // 43, + "Fe54_He4_to_Ni58_starlib", // 44, + "Co55_n_to_Co56_starlib", // 45, + "Co56_n_to_p_Fe56_starlib", // 46, + "Co56_n_to_Co57_starlib", // 47, + "Co57_p_to_He4_Fe54_starlib", // 48, + "Co57_p_to_Ni58_starlib", // 49, + "Co55_He4_to_p_Ni58_starlib", // 50, + "Ni56_n_to_p_Co56_starlib", // 51, + "Ni58_p_to_Cu59_starlib", // 52, + "Cu59_n_to_He4_Co56_starlib", // 53, + "S32_He4_to_Ar36_starlib", // 54, + "Cl35_p_to_He4_S32_starlib", // 55, + "Cl35_p_to_Ar36_starlib", // 56, + "Ar36_He4_to_Ca40_starlib", // 57, + "K39_p_to_He4_Ar36_starlib", // 58, + "K39_p_to_Ca40_starlib", // 59, + "Ca40_He4_to_Ti44_starlib", // 60, + "Sc43_p_to_He4_Ca40_starlib", // 61, + "Sc43_p_to_Ti44_starlib", // 62, + "Ti44_He4_to_Cr48_starlib", // 63, + "V47_p_to_He4_Ti44_starlib", // 64, + "V47_p_to_Cr48_starlib", // 65, + "Fe52_n_to_Fe53_starlib", // 66, + "Fe53_n_to_Fe54_starlib", // 67, + "Fe54_n_to_Fe55_starlib", // 68, + "Fe55_n_to_Fe56_starlib", // 69, + "Ni56_n_to_Ni57_starlib", // 70, + "Ni57_n_to_Ni58_starlib", // 71, "S32_He4_to_Ar36_approx", // 72, "Ar36_to_S32_He4_approx", // 73, "Ar36_He4_to_Ca40_approx", // 74, @@ -579,72 +579,72 @@ namespace Rates "Ni58_to_Ni56_n_n_approx", // 85, "C12_C12_to_Mg24_modified", // 86, "O16_O16_to_S32_modified", // 87, - "C12_O16_to_Si28_modified", // 88, - "C12_to_He4_He4_He4_derived", // 89, - "He4_Ne20_to_C12_C12_derived", // 90, - "p_Na23_to_C12_C12_derived", // 91, - "He4_Mg24_to_C12_O16_derived", // 92, - "p_Al27_to_C12_O16_derived", // 93, - "He4_Si28_to_O16_O16_derived", // 94, - "p_P31_to_O16_O16_derived", // 95, - "p_O16_to_He4_N13_derived", // 96, + "O16_C12_to_Si28_modified", // 88, + "C12_to_3He4_derived", // 89, + "Ne20_He4_to_C12_C12_derived", // 90, + "Na23_p_to_C12_C12_derived", // 91, + "Mg24_He4_to_C12_O16_derived", // 92, + "Al27_p_to_C12_O16_derived", // 93, + "Si28_He4_to_O16_O16_derived", // 94, + "P31_p_to_O16_O16_derived", // 95, + "O16_p_to_He4_N13_derived", // 96, "N13_to_p_C12_derived", // 97, "O16_to_He4_C12_derived", // 98, "Ne20_to_He4_O16_derived", // 99, - "He4_Ne20_to_p_Na23_derived", // 100, + "Ne20_He4_to_p_Na23_derived", // 100, "Mg24_to_p_Na23_derived", // 101, "Mg24_to_He4_Ne20_derived", // 102, - "He4_Mg24_to_p_Al27_derived", // 103, + "Mg24_He4_to_p_Al27_derived", // 103, "Si28_to_p_Al27_derived", // 104, "Si28_to_He4_Mg24_derived", // 105, - "He4_Si28_to_p_P31_derived", // 106, + "Si28_He4_to_p_P31_derived", // 106, "S32_to_p_P31_derived", // 107, "S32_to_He4_Si28_derived", // 108, - "p_Mn51_to_He4_Cr48_derived", // 109, - "p_Co55_to_He4_Fe52_derived", // 110, + "Mn51_p_to_He4_Cr48_derived", // 109, + "Co55_p_to_He4_Fe52_derived", // 110, "Fe52_to_p_Mn51_derived", // 111, "Fe52_to_He4_Cr48_derived", // 112, "Co55_to_He4_Mn51_derived", // 113, "Ni56_to_p_Co55_derived", // 114, "Ni56_to_He4_Fe52_derived", // 115, - "He4_Ni56_to_p_Cu59_derived", // 116, + "Ni56_He4_to_p_Cu59_derived", // 116, "Cu59_to_He4_Co55_derived", // 117, "Zn60_to_p_Cu59_derived", // 118, "Zn60_to_He4_Ni56_derived", // 119, "Mg24_to_C12_C12_derived", // 120, "S32_to_O16_O16_derived", // 121, "Si28_to_C12_O16_derived", // 122, - "p_Fe54_to_He4_Mn51_derived", // 123, - "p_Fe56_to_n_Co56_derived", // 124, - "He4_Fe54_to_p_Co57_derived", // 125, - "p_Ni58_to_He4_Co55_derived", // 126, + "Fe54_p_to_He4_Mn51_derived", // 123, + "Fe56_p_to_n_Co56_derived", // 124, + "Fe54_He4_to_p_Co57_derived", // 125, + "Ni58_p_to_He4_Co55_derived", // 126, "Co55_to_p_Fe54_derived", // 127, "Co56_to_n_Co55_derived", // 128, "Co57_to_n_Co56_derived", // 129, "Co57_to_p_Fe56_derived", // 130, - "p_Co56_to_n_Ni56_derived", // 131, + "Co56_p_to_n_Ni56_derived", // 131, "Ni58_to_p_Co57_derived", // 132, "Ni58_to_He4_Fe54_derived", // 133, - "He4_Co56_to_n_Cu59_derived", // 134, + "Co56_He4_to_n_Cu59_derived", // 134, "Cu59_to_p_Ni58_derived", // 135, - "He4_S32_to_p_Cl35_derived", // 136, + "S32_He4_to_p_Cl35_derived", // 136, "Ar36_to_He4_S32_derived", // 137, "Ar36_to_p_Cl35_derived", // 138, - "He4_Ar36_to_p_K39_derived", // 139, + "Ar36_He4_to_p_K39_derived", // 139, "Ca40_to_He4_Ar36_derived", // 140, "Ca40_to_p_K39_derived", // 141, - "He4_Ca40_to_p_Sc43_derived", // 142, + "Ca40_He4_to_p_Sc43_derived", // 142, "Ti44_to_He4_Ca40_derived", // 143, "Ti44_to_p_Sc43_derived", // 144, - "He4_Ti44_to_p_V47_derived", // 145, + "Ti44_He4_to_p_V47_derived", // 145, "Cr48_to_He4_Ti44_derived", // 146, "Cr48_to_p_V47_derived", // 147, - "Fe54_to_n_Fe53_derived", // 148, - "Fe53_to_n_Fe52_derived", // 149, - "Fe56_to_n_Fe55_derived", // 150, - "Fe55_to_n_Fe54_derived", // 151, - "Ni58_to_n_Ni57_derived", // 152, - "Ni57_to_n_Ni56_derived" // 153, + "Fe53_to_n_Fe52_derived", // 148, + "Fe54_to_n_Fe53_derived", // 149, + "Fe55_to_n_Fe54_derived", // 150, + "Fe56_to_n_Fe55_derived", // 151, + "Ni57_to_n_Ni56_derived", // 152, + "Ni58_to_n_Ni57_derived" // 153, }; template @@ -658,11 +658,11 @@ namespace Rates return starlib::prand(2); } - if constexpr (rate == k_C12_O16_to_p_Al27_starlib) { + if constexpr (rate == k_O16_C12_to_p_Al27_starlib) { return starlib::prand(3); } - if constexpr (rate == k_C12_O16_to_He4_Mg24_starlib) { + if constexpr (rate == k_O16_C12_to_He4_Mg24_starlib) { return starlib::prand(4); } @@ -678,99 +678,99 @@ namespace Rates return starlib::prand(7); } - if constexpr (rate == k_p_C12_to_N13_starlib) { + if constexpr (rate == k_C12_p_to_N13_starlib) { return starlib::prand(8); } - if constexpr (rate == k_He4_C12_to_O16_starlib) { + if constexpr (rate == k_C12_He4_to_O16_starlib) { return starlib::prand(9); } - if constexpr (rate == k_He4_N13_to_p_O16_starlib) { + if constexpr (rate == k_N13_He4_to_p_O16_starlib) { return starlib::prand(10); } - if constexpr (rate == k_He4_O16_to_Ne20_starlib) { + if constexpr (rate == k_O16_He4_to_Ne20_starlib) { return starlib::prand(11); } - if constexpr (rate == k_He4_Ne20_to_Mg24_starlib) { + if constexpr (rate == k_Ne20_He4_to_Mg24_starlib) { return starlib::prand(12); } - if constexpr (rate == k_p_Na23_to_He4_Ne20_starlib) { + if constexpr (rate == k_Na23_p_to_He4_Ne20_starlib) { return starlib::prand(13); } - if constexpr (rate == k_p_Na23_to_Mg24_starlib) { + if constexpr (rate == k_Na23_p_to_Mg24_starlib) { return starlib::prand(14); } - if constexpr (rate == k_He4_Mg24_to_Si28_starlib) { + if constexpr (rate == k_Mg24_He4_to_Si28_starlib) { return starlib::prand(15); } - if constexpr (rate == k_p_Al27_to_He4_Mg24_starlib) { + if constexpr (rate == k_Al27_p_to_He4_Mg24_starlib) { return starlib::prand(16); } - if constexpr (rate == k_p_Al27_to_Si28_starlib) { + if constexpr (rate == k_Al27_p_to_Si28_starlib) { return starlib::prand(17); } - if constexpr (rate == k_He4_Si28_to_S32_starlib) { + if constexpr (rate == k_Si28_He4_to_S32_starlib) { return starlib::prand(18); } - if constexpr (rate == k_p_P31_to_He4_Si28_starlib) { + if constexpr (rate == k_P31_p_to_He4_Si28_starlib) { return starlib::prand(19); } - if constexpr (rate == k_p_P31_to_S32_starlib) { + if constexpr (rate == k_P31_p_to_S32_starlib) { return starlib::prand(20); } - if constexpr (rate == k_He4_Cr48_to_p_Mn51_starlib) { + if constexpr (rate == k_Cr48_He4_to_p_Mn51_starlib) { return starlib::prand(21); } - if constexpr (rate == k_He4_Cr48_to_Fe52_starlib) { + if constexpr (rate == k_Cr48_He4_to_Fe52_starlib) { return starlib::prand(22); } - if constexpr (rate == k_p_Mn51_to_Fe52_starlib) { + if constexpr (rate == k_Mn51_p_to_Fe52_starlib) { return starlib::prand(23); } - if constexpr (rate == k_He4_Mn51_to_Co55_starlib) { + if constexpr (rate == k_Mn51_He4_to_Co55_starlib) { return starlib::prand(24); } - if constexpr (rate == k_He4_Fe52_to_p_Co55_starlib) { + if constexpr (rate == k_Fe52_He4_to_p_Co55_starlib) { return starlib::prand(25); } - if constexpr (rate == k_He4_Fe52_to_Ni56_starlib) { + if constexpr (rate == k_Fe52_He4_to_Ni56_starlib) { return starlib::prand(26); } - if constexpr (rate == k_p_Co55_to_Ni56_starlib) { + if constexpr (rate == k_Co55_p_to_Ni56_starlib) { return starlib::prand(27); } - if constexpr (rate == k_He4_Co55_to_Cu59_starlib) { + if constexpr (rate == k_Co55_He4_to_Cu59_starlib) { return starlib::prand(28); } - if constexpr (rate == k_He4_Ni56_to_Zn60_starlib) { + if constexpr (rate == k_Ni56_He4_to_Zn60_starlib) { return starlib::prand(29); } - if constexpr (rate == k_p_Cu59_to_He4_Ni56_starlib) { + if constexpr (rate == k_Cu59_p_to_He4_Ni56_starlib) { return starlib::prand(30); } - if constexpr (rate == k_p_Cu59_to_Zn60_starlib) { + if constexpr (rate == k_Cu59_p_to_Zn60_starlib) { return starlib::prand(31); } @@ -782,131 +782,131 @@ namespace Rates return starlib::prand(33); } - if constexpr (rate == k_C12_O16_to_n_Si27_starlib) { + if constexpr (rate == k_O16_C12_to_n_Si27_starlib) { return starlib::prand(34); } - if constexpr (rate == k_He4_Mn51_to_p_Fe54_starlib) { + if constexpr (rate == k_Mn51_He4_to_p_Fe54_starlib) { return starlib::prand(35); } - if constexpr (rate == k_p_Fe54_to_Co55_starlib) { + if constexpr (rate == k_Fe54_p_to_Co55_starlib) { return starlib::prand(36); } - if constexpr (rate == k_p_Fe56_to_Co57_starlib) { + if constexpr (rate == k_Fe56_p_to_Co57_starlib) { return starlib::prand(37); } - if constexpr (rate == k_He4_Fe54_to_Ni58_starlib) { + if constexpr (rate == k_Fe54_He4_to_Ni58_starlib) { return starlib::prand(38); } - if constexpr (rate == k_n_Co55_to_Co56_starlib) { + if constexpr (rate == k_Co55_n_to_Co56_starlib) { return starlib::prand(39); } - if constexpr (rate == k_n_Co56_to_p_Fe56_starlib) { + if constexpr (rate == k_Co56_n_to_p_Fe56_starlib) { return starlib::prand(40); } - if constexpr (rate == k_n_Co56_to_Co57_starlib) { + if constexpr (rate == k_Co56_n_to_Co57_starlib) { return starlib::prand(41); } - if constexpr (rate == k_p_Co57_to_He4_Fe54_starlib) { + if constexpr (rate == k_Co57_p_to_He4_Fe54_starlib) { return starlib::prand(42); } - if constexpr (rate == k_p_Co57_to_Ni58_starlib) { + if constexpr (rate == k_Co57_p_to_Ni58_starlib) { return starlib::prand(43); } - if constexpr (rate == k_He4_Co55_to_p_Ni58_starlib) { + if constexpr (rate == k_Co55_He4_to_p_Ni58_starlib) { return starlib::prand(44); } - if constexpr (rate == k_n_Ni56_to_p_Co56_starlib) { + if constexpr (rate == k_Ni56_n_to_p_Co56_starlib) { return starlib::prand(45); } - if constexpr (rate == k_p_Ni58_to_Cu59_starlib) { + if constexpr (rate == k_Ni58_p_to_Cu59_starlib) { return starlib::prand(46); } - if constexpr (rate == k_n_Cu59_to_He4_Co56_starlib) { + if constexpr (rate == k_Cu59_n_to_He4_Co56_starlib) { return starlib::prand(47); } - if constexpr (rate == k_He4_S32_to_Ar36_starlib) { + if constexpr (rate == k_S32_He4_to_Ar36_starlib) { return starlib::prand(48); } - if constexpr (rate == k_p_Cl35_to_Ar36_starlib) { + if constexpr (rate == k_Cl35_p_to_He4_S32_starlib) { return starlib::prand(49); } - if constexpr (rate == k_p_Cl35_to_He4_S32_starlib) { + if constexpr (rate == k_Cl35_p_to_Ar36_starlib) { return starlib::prand(50); } - if constexpr (rate == k_He4_Ar36_to_Ca40_starlib) { + if constexpr (rate == k_Ar36_He4_to_Ca40_starlib) { return starlib::prand(51); } - if constexpr (rate == k_p_K39_to_Ca40_starlib) { + if constexpr (rate == k_K39_p_to_He4_Ar36_starlib) { return starlib::prand(52); } - if constexpr (rate == k_p_K39_to_He4_Ar36_starlib) { + if constexpr (rate == k_K39_p_to_Ca40_starlib) { return starlib::prand(53); } - if constexpr (rate == k_He4_Ca40_to_Ti44_starlib) { + if constexpr (rate == k_Ca40_He4_to_Ti44_starlib) { return starlib::prand(54); } - if constexpr (rate == k_p_Sc43_to_Ti44_starlib) { + if constexpr (rate == k_Sc43_p_to_He4_Ca40_starlib) { return starlib::prand(55); } - if constexpr (rate == k_p_Sc43_to_He4_Ca40_starlib) { + if constexpr (rate == k_Sc43_p_to_Ti44_starlib) { return starlib::prand(56); } - if constexpr (rate == k_He4_Ti44_to_Cr48_starlib) { + if constexpr (rate == k_Ti44_He4_to_Cr48_starlib) { return starlib::prand(57); } - if constexpr (rate == k_p_V47_to_Cr48_starlib) { + if constexpr (rate == k_V47_p_to_He4_Ti44_starlib) { return starlib::prand(58); } - if constexpr (rate == k_p_V47_to_He4_Ti44_starlib) { + if constexpr (rate == k_V47_p_to_Cr48_starlib) { return starlib::prand(59); } - if constexpr (rate == k_n_Fe52_to_Fe53_starlib) { + if constexpr (rate == k_Fe52_n_to_Fe53_starlib) { return starlib::prand(60); } - if constexpr (rate == k_n_Fe53_to_Fe54_starlib) { + if constexpr (rate == k_Fe53_n_to_Fe54_starlib) { return starlib::prand(61); } - if constexpr (rate == k_n_Fe54_to_Fe55_starlib) { + if constexpr (rate == k_Fe54_n_to_Fe55_starlib) { return starlib::prand(62); } - if constexpr (rate == k_n_Fe55_to_Fe56_starlib) { + if constexpr (rate == k_Fe55_n_to_Fe56_starlib) { return starlib::prand(63); } - if constexpr (rate == k_n_Ni56_to_Ni57_starlib) { + if constexpr (rate == k_Ni56_n_to_Ni57_starlib) { return starlib::prand(64); } - if constexpr (rate == k_n_Ni57_to_Ni58_starlib) { + if constexpr (rate == k_Ni57_n_to_Ni58_starlib) { return starlib::prand(65); } @@ -937,44 +937,44 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 42; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_starlib, k_C12_to_He4_He4_He4_derived, - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_starlib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_starlib, k_O16_to_He4_C12_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_starlib, k_p_O16_to_He4_N13_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_starlib, k_Ne20_to_He4_O16_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_starlib, k_Mg24_to_He4_Ne20_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_starlib, k_He4_Ne20_to_p_Na23_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_starlib, k_Mg24_to_p_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_starlib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_starlib, k_He4_Mg24_to_p_Al27_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_starlib, k_Si28_to_p_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_starlib, k_S32_to_He4_Si28_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_starlib, k_He4_Si28_to_p_P31_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_starlib, k_S32_to_p_P31_derived, - He4, Cr48, -1, H1, Mn51, -1, Cr48, Mn51, k_He4_Cr48_to_p_Mn51_starlib, k_p_Mn51_to_He4_Cr48_derived, - He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_He4_Cr48_to_Fe52_starlib, k_Fe52_to_He4_Cr48_derived, - H1, Mn51, -1, Fe52, -1, -1, Mn51, Fe52, k_p_Mn51_to_Fe52_starlib, k_Fe52_to_p_Mn51_derived, - He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_He4_Mn51_to_Co55_starlib, k_Co55_to_He4_Mn51_derived, - He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_He4_Fe52_to_p_Co55_starlib, k_p_Co55_to_He4_Fe52_derived, - He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_He4_Fe52_to_Ni56_starlib, k_Ni56_to_He4_Fe52_derived, - H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_p_Co55_to_Ni56_starlib, k_Ni56_to_p_Co55_derived, - He4, Co55, -1, Cu59, -1, -1, Co55, Cu59, k_He4_Co55_to_Cu59_starlib, k_Cu59_to_He4_Co55_derived, - He4, Ni56, -1, Zn60, -1, -1, Ni56, Zn60, k_He4_Ni56_to_Zn60_starlib, k_Zn60_to_He4_Ni56_derived, - H1, Cu59, -1, He4, Ni56, -1, Cu59, Ni56, k_p_Cu59_to_He4_Ni56_starlib, k_He4_Ni56_to_p_Cu59_derived, - H1, Cu59, -1, Zn60, -1, -1, Cu59, Zn60, k_p_Cu59_to_Zn60_starlib, k_Zn60_to_p_Cu59_derived, - He4, Mn51, -1, H1, Fe54, -1, Mn51, Fe54, k_He4_Mn51_to_p_Fe54_starlib, k_p_Fe54_to_He4_Mn51_derived, - H1, Fe54, -1, Co55, -1, -1, Fe54, Co55, k_p_Fe54_to_Co55_starlib, k_Co55_to_p_Fe54_derived, - H1, Fe56, -1, Co57, -1, -1, Fe56, Co57, k_p_Fe56_to_Co57_starlib, k_Co57_to_p_Fe56_derived, - He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_He4_Fe54_to_Ni58_starlib, k_Ni58_to_He4_Fe54_derived, - N, Co55, -1, Co56, -1, -1, Co55, Co56, k_n_Co55_to_Co56_starlib, k_Co56_to_n_Co55_derived, - N, Co56, -1, H1, Fe56, -1, Co56, Fe56, k_n_Co56_to_p_Fe56_starlib, k_p_Fe56_to_n_Co56_derived, - N, Co56, -1, Co57, -1, -1, Co56, Co57, k_n_Co56_to_Co57_starlib, k_Co57_to_n_Co56_derived, - H1, Co57, -1, He4, Fe54, -1, Co57, Fe54, k_p_Co57_to_He4_Fe54_starlib, k_He4_Fe54_to_p_Co57_derived, - H1, Co57, -1, Ni58, -1, -1, Co57, Ni58, k_p_Co57_to_Ni58_starlib, k_Ni58_to_p_Co57_derived, - He4, Co55, -1, H1, Ni58, -1, Co55, Ni58, k_He4_Co55_to_p_Ni58_starlib, k_p_Ni58_to_He4_Co55_derived, - N, Ni56, -1, H1, Co56, -1, Ni56, Co56, k_n_Ni56_to_p_Co56_starlib, k_p_Co56_to_n_Ni56_derived, - H1, Ni58, -1, Cu59, -1, -1, Ni58, Cu59, k_p_Ni58_to_Cu59_starlib, k_Cu59_to_p_Ni58_derived, - N, Cu59, -1, He4, Co56, -1, Cu59, Co56, k_n_Cu59_to_He4_Co56_starlib, k_He4_Co56_to_n_Cu59_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_starlib, k_C12_to_3He4_derived, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_starlib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_starlib, k_O16_to_He4_C12_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_starlib, k_O16_p_to_He4_N13_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_starlib, k_Ne20_to_He4_O16_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_starlib, k_Mg24_to_He4_Ne20_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_starlib, k_Ne20_He4_to_p_Na23_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_starlib, k_Mg24_to_p_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_starlib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_starlib, k_Mg24_He4_to_p_Al27_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_starlib, k_Si28_to_p_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_starlib, k_S32_to_He4_Si28_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_starlib, k_Si28_He4_to_p_P31_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_starlib, k_S32_to_p_P31_derived, + He4, Cr48, -1, H1, Mn51, -1, Cr48, Mn51, k_Cr48_He4_to_p_Mn51_starlib, k_Mn51_p_to_He4_Cr48_derived, + He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_Cr48_He4_to_Fe52_starlib, k_Fe52_to_He4_Cr48_derived, + H1, Mn51, -1, Fe52, -1, -1, Mn51, Fe52, k_Mn51_p_to_Fe52_starlib, k_Fe52_to_p_Mn51_derived, + He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_Mn51_He4_to_Co55_starlib, k_Co55_to_He4_Mn51_derived, + He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_Fe52_He4_to_p_Co55_starlib, k_Co55_p_to_He4_Fe52_derived, + He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_Fe52_He4_to_Ni56_starlib, k_Ni56_to_He4_Fe52_derived, + H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_Co55_p_to_Ni56_starlib, k_Ni56_to_p_Co55_derived, + He4, Co55, -1, Cu59, -1, -1, Co55, Cu59, k_Co55_He4_to_Cu59_starlib, k_Cu59_to_He4_Co55_derived, + He4, Ni56, -1, Zn60, -1, -1, Ni56, Zn60, k_Ni56_He4_to_Zn60_starlib, k_Zn60_to_He4_Ni56_derived, + H1, Cu59, -1, He4, Ni56, -1, Cu59, Ni56, k_Cu59_p_to_He4_Ni56_starlib, k_Ni56_He4_to_p_Cu59_derived, + H1, Cu59, -1, Zn60, -1, -1, Cu59, Zn60, k_Cu59_p_to_Zn60_starlib, k_Zn60_to_p_Cu59_derived, + He4, Mn51, -1, H1, Fe54, -1, Mn51, Fe54, k_Mn51_He4_to_p_Fe54_starlib, k_Fe54_p_to_He4_Mn51_derived, + H1, Fe54, -1, Co55, -1, -1, Fe54, Co55, k_Fe54_p_to_Co55_starlib, k_Co55_to_p_Fe54_derived, + H1, Fe56, -1, Co57, -1, -1, Fe56, Co57, k_Fe56_p_to_Co57_starlib, k_Co57_to_p_Fe56_derived, + He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_Fe54_He4_to_Ni58_starlib, k_Ni58_to_He4_Fe54_derived, + N, Co55, -1, Co56, -1, -1, Co55, Co56, k_Co55_n_to_Co56_starlib, k_Co56_to_n_Co55_derived, + N, Co56, -1, H1, Fe56, -1, Co56, Fe56, k_Co56_n_to_p_Fe56_starlib, k_Fe56_p_to_n_Co56_derived, + N, Co56, -1, Co57, -1, -1, Co56, Co57, k_Co56_n_to_Co57_starlib, k_Co57_to_n_Co56_derived, + H1, Co57, -1, He4, Fe54, -1, Co57, Fe54, k_Co57_p_to_He4_Fe54_starlib, k_Fe54_He4_to_p_Co57_derived, + H1, Co57, -1, Ni58, -1, -1, Co57, Ni58, k_Co57_p_to_Ni58_starlib, k_Ni58_to_p_Co57_derived, + He4, Co55, -1, H1, Ni58, -1, Co55, Ni58, k_Co55_He4_to_p_Ni58_starlib, k_Ni58_p_to_He4_Co55_derived, + N, Ni56, -1, H1, Co56, -1, Ni56, Co56, k_Ni56_n_to_p_Co56_starlib, k_Co56_p_to_n_Ni56_derived, + H1, Ni58, -1, Cu59, -1, -1, Ni58, Cu59, k_Ni58_p_to_Cu59_starlib, k_Cu59_to_p_Ni58_derived, + N, Cu59, -1, He4, Co56, -1, Cu59, Co56, k_Cu59_n_to_He4_Co56_starlib, k_Co56_He4_to_n_Cu59_derived, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, Ca40, He4, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_approx, k_Ti44_to_Ca40_He4_approx, diff --git a/networks/he-burn/ase-iron-starlib/actual_rhs.H b/networks/he-burn/ase-iron-starlib/actual_rhs.H index da6e2ee7b..f43023629 100644 --- a/networks/he-burn/ase-iron-starlib/actual_rhs.H +++ b/networks/he-burn/ase-iron-starlib/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -472,9 +469,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -486,7 +485,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -494,75 +495,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_to_p_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_to_n_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -614,47 +560,15 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(N) = - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = 0.0_rt; @@ -693,18 +607,18 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(Fe54) = 0.0_rt; ydot_nuc(Fe56) = - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Co55) = 0.0_rt; ydot_nuc(Co56) = - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = 0.0_rt; ydot_nuc(Ni56) = - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni58) = 0.0_rt; @@ -721,148 +635,148 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(N) = - (-screened_rates(k_n_Co55_to_Co56_starlib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co56_to_Co57_starlib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + - (-2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + - (-2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + - (-2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_Co55_n_to_Co56_starlib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Co56_n_to_Co57_starlib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + + (-screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + + (-screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - (0.5*screened_rates(k_C12_C12_to_p_Na23_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_p_P31_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_C12_to_N13_starlib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (screened_rates(k_He4_N13_to_p_O16_starlib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Na23_to_Mg24_starlib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_Al27_to_Si28_starlib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-screened_rates(k_p_P31_to_S32_starlib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + - (screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_p_Co55_to_Ni56_starlib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + - (screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (-screened_rates(k_p_Fe54_to_Co55_starlib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_p_Fe56_to_Co57_starlib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (-screened_rates(k_p_Co57_to_Ni58_starlib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + - (screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (0.5*screened_rates(k_C12_C12_to_p_Na23_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_p_P31_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_C12_p_to_N13_starlib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (screened_rates(k_N13_He4_to_p_O16_starlib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Na23_p_to_Mg24_starlib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_Al27_p_to_Si28_starlib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-screened_rates(k_P31_p_to_S32_starlib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_p_to_Ni56_starlib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + + (screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_Fe54_p_to_Co55_starlib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Fe56_p_to_Co57_starlib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (-screened_rates(k_Co57_p_to_Ni58_starlib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_starlib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - (-screened_rates(k_He4_C12_to_O16_starlib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_N13_to_p_O16_starlib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_He4_O16_to_Ne20_starlib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_He4_Si28_to_S32_starlib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (-screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (-screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + - (screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_starlib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + (-screened_rates(k_C12_He4_to_O16_starlib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_N13_He4_to_p_O16_starlib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_O16_He4_to_Ne20_starlib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_Si28_He4_to_S32_starlib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (-screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (-screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(C12) = - (-screened_rates(k_C12_C12_to_p_Na23_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_C12_C12_to_He4_Ne20_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_starlib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - (-screened_rates(k_p_C12_to_N13_starlib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_starlib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_C12_to_p_Na23_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_C12_C12_to_He4_Ne20_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_starlib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + (-screened_rates(k_C12_p_to_N13_starlib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_starlib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + (-screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived)*Y(Mg24)) + - (-screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (-screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(N13) = - (screened_rates(k_p_C12_to_N13_starlib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_N13_to_p_O16_starlib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_C12_p_to_N13_starlib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_He4_to_p_O16_starlib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(O16) = - (-screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_O16_O16_to_p_P31_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_O16_O16_to_He4_Si28_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_C12_to_O16_starlib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (screened_rates(k_He4_N13_to_p_O16_starlib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_He4_O16_to_Ne20_starlib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_O16_O16_to_p_P31_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_O16_O16_to_He4_Si28_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_C12_He4_to_O16_starlib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (screened_rates(k_N13_He4_to_p_O16_starlib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_O16_He4_to_Ne20_starlib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + (-screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_S32_to_O16_O16_derived)*Y(S32)) + - (-screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (-screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(Ne20) = - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_He4_O16_to_Ne20_starlib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_O16_He4_to_Ne20_starlib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Na23) = - (0.5*screened_rates(k_C12_C12_to_p_Na23_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Na23_to_Mg24_starlib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)); + (0.5*screened_rates(k_C12_C12_to_p_Na23_starlib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Na23_p_to_Mg24_starlib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)); ydot_nuc(Mg24) = - (screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_starlib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_starlib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + (0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Mg24_to_C12_C12_derived)*Y(Mg24)); ydot_nuc(Al27) = - (screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_Al27_to_Si28_starlib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)); + (screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_Al27_p_to_Si28_starlib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)); ydot_nuc(Si28) = - (0.5*screened_rates(k_O16_O16_to_He4_Si28_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_starlib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_starlib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (0.5*screened_rates(k_O16_O16_to_He4_Si28_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_starlib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_starlib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(P31) = - (0.5*screened_rates(k_O16_O16_to_p_P31_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-screened_rates(k_p_P31_to_S32_starlib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)); + (0.5*screened_rates(k_O16_O16_to_p_P31_starlib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-screened_rates(k_P31_p_to_S32_starlib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_starlib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_starlib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_starlib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_starlib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + (0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_S32_to_O16_O16_derived)*Y(S32)) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -879,87 +793,87 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(Cr48) = - (-screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + (screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + -screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(Mn51) = - (screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (-screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho); + (screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho); ydot_nuc(Fe52) = - (screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)); + (screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)); ydot_nuc(Fe54) = - (screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (-screened_rates(k_p_Fe54_to_Co55_starlib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + - (-screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)); + (screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_Fe54_p_to_Co55_starlib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + + (-0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)); ydot_nuc(Fe56) = - (-screened_rates(k_p_Fe56_to_Co57_starlib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (-screened_rates(k_Fe56_p_to_Co57_starlib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Co55) = - (screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_p_Co55_to_Ni56_starlib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (screened_rates(k_p_Fe54_to_Co55_starlib)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_n_Co55_to_Co56_starlib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho); + (screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_p_to_Ni56_starlib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (screened_rates(k_Fe54_p_to_Co55_starlib)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Co55_n_to_Co56_starlib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho); ydot_nuc(Co56) = - (screened_rates(k_n_Co55_to_Co56_starlib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co56_to_Co57_starlib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Co55_n_to_Co56_starlib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Co56_n_to_Co57_starlib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = - (screened_rates(k_p_Fe56_to_Co57_starlib)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_Co57_starlib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (-screened_rates(k_p_Co57_to_Ni58_starlib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)); + (screened_rates(k_Fe56_p_to_Co57_starlib)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_Co57_starlib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (-screened_rates(k_Co57_p_to_Ni58_starlib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)); ydot_nuc(Ni56) = - (screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (screened_rates(k_p_Co55_to_Ni56_starlib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + - (screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (screened_rates(k_Co55_p_to_Ni56_starlib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni58) = - (screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_p_Co57_to_Ni58_starlib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + - (screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)); + (screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Co57_p_to_Ni58_starlib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (-screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)); ydot_nuc(Cu59) = - (screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (-screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + - (screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(Ni58)*Y(H1)*state.rho + -screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (-screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho); + (screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (-screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + + (screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(Ni58)*Y(H1)*state.rho + -screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (-screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho); ydot_nuc(Zn60) = - (screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(He4)*Y(Ni56)*state.rho + -screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + - (screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)); + (screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(He4)*Y(Ni56)*state.rho + -screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)); } @@ -1015,18 +929,20 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -4.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 4.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) - 4.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Co55_to_Co56_starlib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_starlib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(Co56)*state.rho - screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(Cu59)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(Ni56)*state.rho - screened_rates(k_n_to_p_weaktab); + scratch = -screened_rates(k_Co55_n_to_Co56_starlib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_starlib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(Co56)*state.rho - screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(Cu59)*state.rho - 2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(Ni56)*state.rho - screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(N, N, scratch); - scratch = screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_p_to_n_weaktab); + scratch = screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(N, H1, scratch); - scratch = screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho; jac.set(N, He4, scratch); jac.set(N, C12, 0.0); @@ -1059,69 +975,69 @@ void jac_nuc(const burn_t& state, jac.set(N, Mn51, 0.0); - scratch = -2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(N, Fe52, scratch); - scratch = -2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx); + scratch = -screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx); jac.set(N, Fe54, scratch); - scratch = 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx) + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx); jac.set(N, Fe56, scratch); - scratch = -screened_rates(k_n_Co55_to_Co56_starlib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co55_n_to_Co56_starlib)*Y(N)*state.rho; jac.set(N, Co55, scratch); - scratch = screened_rates(k_Co56_to_n_Co55_derived) + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_n_Co56_to_Co57_starlib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Co56_n_to_Co57_starlib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho + screened_rates(k_Co56_to_n_Co55_derived); jac.set(N, Co56, scratch); scratch = screened_rates(k_Co57_to_n_Co56_derived); jac.set(N, Co57, scratch); - scratch = -2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(N)*state.rho; jac.set(N, Ni56, scratch); scratch = 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx); jac.set(N, Ni58, scratch); - scratch = -screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(N)*state.rho; jac.set(N, Cu59, scratch); jac.set(N, Zn60, 0.0); - scratch = screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(Co56)*state.rho + screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(Ni56)*state.rho + screened_rates(k_n_to_p_weaktab); + scratch = screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(Co56)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(Ni56)*state.rho + screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(H1, N, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_starlib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_starlib)*Y(C12)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_starlib)*Y(Co55)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58_starlib)*Y(Co57)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(Cu59)*state.rho - screened_rates(k_p_Fe54_to_Co55_starlib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_Fe56_to_Co57_starlib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho - screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_starlib)*Y(Na23)*state.rho - screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_starlib)*Y(P31)*state.rho - screened_rates(k_p_to_n_weaktab); + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_starlib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_starlib)*Y(C12)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_starlib)*Y(Co55)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_Ni58_starlib)*Y(Co57)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(Cu59)*state.rho - screened_rates(k_Fe54_p_to_Co55_starlib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_Fe56_p_to_Co57_starlib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho - screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_starlib)*Y(Na23)*state.rho - screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_starlib)*Y(P31)*state.rho - screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(Co55)*state.rho + screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(Cr48)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(Fe52)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(Mn51)*state.rho + screened_rates(k_He4_N13_to_p_O16_starlib)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(Co55)*state.rho + screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(Cr48)*state.rho + screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(Fe52)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(Mn51)*state.rho + screened_rates(k_N13_He4_to_p_O16_starlib)*Y(N13)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_starlib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(O16)*state.rho - screened_rates(k_p_C12_to_N13_starlib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_starlib)*Y(C12)*state.rho - screened_rates(k_C12_p_to_N13_starlib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_starlib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); + scratch = screened_rates(k_N13_He4_to_p_O16_starlib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_starlib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_starlib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_starlib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_starlib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_starlib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1133,76 +1049,76 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(He4)*state.rho; jac.set(H1, Cr48, scratch); - scratch = screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(He4)*state.rho - screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(He4)*state.rho - screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(H1)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(H1, Mn51, scratch); - scratch = screened_rates(k_Fe52_to_p_Mn51_derived) + screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(He4)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived); jac.set(H1, Fe52, scratch); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_Fe54_to_Co55_starlib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_Fe54_p_to_Co55_starlib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(H1, Fe54, scratch); - scratch = -screened_rates(k_p_Fe56_to_Co57_starlib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_starlib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho; jac.set(H1, Fe56, scratch); - scratch = screened_rates(k_Co55_to_p_Fe54_derived) + screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(He4)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(He4)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_starlib)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived); jac.set(H1, Co55, scratch); - scratch = screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(N)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(N)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho; jac.set(H1, Co56, scratch); - scratch = screened_rates(k_Co57_to_p_Fe56_derived) - screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_Ni58_starlib)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived); jac.set(H1, Co57, scratch); - scratch = screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived) + screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(N)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived); jac.set(H1, Ni56, scratch); - scratch = screened_rates(k_Ni58_to_p_Co57_derived) - screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived); jac.set(H1, Ni58, scratch); - scratch = screened_rates(k_Cu59_to_p_Ni58_derived) - screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived); jac.set(H1, Cu59, scratch); scratch = screened_rates(k_Zn60_to_p_Cu59_derived); jac.set(H1, Zn60, scratch); - scratch = screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(Cu59)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(Cu59)*state.rho; jac.set(He4, N, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(Al27)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(Co57)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(Cu59)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(Na23)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(Al27)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(Co57)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(Cu59)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(Na23)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_He4_C12_to_O16_starlib)*Y(C12)*state.rho - screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(Co55)*state.rho - screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho - screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_starlib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(Mn51)*state.rho - screened_rates(k_He4_N13_to_p_O16_starlib)*Y(N13)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho - screened_rates(k_He4_O16_to_Ne20_starlib)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_starlib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_starlib)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(Co55)*state.rho - screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(Fe52)*state.rho - screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_starlib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(Mn51)*state.rho - screened_rates(k_N13_He4_to_p_O16_starlib)*Y(N13)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho - screened_rates(k_O16_He4_to_Ne20_starlib)*Y(O16)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_starlib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_starlib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_starlib)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_starlib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_starlib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_starlib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_starlib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_starlib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_starlib)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_starlib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -1217,36 +1133,36 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx); jac.set(He4, Ti44, scratch); - scratch = screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(He4)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx); jac.set(He4, Cr48, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(He4, Mn51, scratch); - scratch = screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived); jac.set(He4, Fe52, scratch); - scratch = -screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(He4, Fe54, scratch); jac.set(He4, Fe56, 0.0); - scratch = screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived); jac.set(He4, Co55, scratch); - scratch = -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho; jac.set(He4, Co56, scratch); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(H1)*state.rho; jac.set(He4, Co57, scratch); - scratch = -screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived); + scratch = -screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived); jac.set(He4, Ni56, scratch); - scratch = screened_rates(k_Ni58_to_He4_Fe54_derived) + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived); jac.set(He4, Ni58, scratch); - scratch = screened_rates(k_Cu59_to_He4_Co55_derived) + screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(N)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(N)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived); jac.set(He4, Cu59, scratch); scratch = screened_rates(k_Zn60_to_He4_Ni56_derived); @@ -1254,31 +1170,31 @@ void jac_nuc(const burn_t& state, jac.set(C12, N, 0.0); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_starlib)*Y(C12)*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_starlib)*Y(C12)*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_starlib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_starlib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_starlib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_starlib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho; jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_starlib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_starlib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_starlib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_starlib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_starlib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_starlib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); scratch = screened_rates(k_N13_to_p_C12_derived); jac.set(C12, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); - scratch = 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho; + scratch = 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho; jac.set(C12, Ne20, scratch); - scratch = 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho; jac.set(C12, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived); + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived); jac.set(C12, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho; jac.set(C12, Al27, scratch); scratch = screened_rates(k_Si28_to_C12_O16_derived); @@ -1320,19 +1236,19 @@ void jac_nuc(const burn_t& state, jac.set(N13, N, 0.0); - scratch = screened_rates(k_p_C12_to_N13_starlib)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_starlib)*Y(C12)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_starlib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_starlib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_starlib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_starlib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); + scratch = -screened_rates(k_N13_He4_to_p_O16_starlib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, Ne20, 0.0); @@ -1381,19 +1297,19 @@ void jac_nuc(const burn_t& state, jac.set(O16, N, 0.0); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_starlib)*Y(C12)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_starlib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_starlib)*Y(O16)*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_starlib)*Y(C12)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_starlib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_starlib)*Y(O16)*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_starlib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_starlib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_starlib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_starlib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_starlib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_starlib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_starlib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_starlib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived); jac.set(O16, O16, scratch); scratch = screened_rates(k_Ne20_to_He4_O16_derived); @@ -1401,16 +1317,16 @@ void jac_nuc(const burn_t& state, jac.set(O16, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho; jac.set(O16, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho; jac.set(O16, Al27, scratch); - scratch = 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_C12_O16_derived); + scratch = 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_C12_O16_derived); jac.set(O16, Si28, scratch); - scratch = 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho; jac.set(O16, P31, scratch); scratch = 2.0*screened_rates(k_S32_to_O16_O16_derived); @@ -1448,10 +1364,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(Na23)*state.rho; jac.set(Ne20, H1, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_starlib)*Y(O16)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_starlib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_starlib)*Y(C12)*state.rho; @@ -1459,13 +1375,13 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N13, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_starlib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); jac.set(Ne20, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); @@ -1511,10 +1427,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, N, 0.0); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_starlib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_starlib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_starlib)*Y(C12)*state.rho; @@ -1524,10 +1440,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, O16, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_starlib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_starlib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_starlib)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_derived); @@ -1573,30 +1489,30 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, N, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24_starlib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_Mg24_starlib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_starlib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_starlib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_Mg24_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_starlib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_Mg24_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_starlib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_C12_C12_derived) - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_C12_C12_derived) - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -1638,28 +1554,28 @@ void jac_nuc(const burn_t& state, jac.set(Al27, N, 0.0); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_starlib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_starlib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_starlib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_starlib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, Ne20, 0.0); jac.set(Al27, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_starlib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_starlib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_starlib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -1701,34 +1617,34 @@ void jac_nuc(const burn_t& state, jac.set(Si28, N, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_starlib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_starlib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_starlib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_starlib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_starlib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_starlib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, Ne20, 0.0); jac.set(Si28, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_starlib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_starlib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_C12_O16_derived) - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_starlib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_C12_O16_derived) - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -1766,10 +1682,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, N, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_starlib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_starlib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -1787,10 +1703,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_starlib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_starlib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_starlib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1828,10 +1744,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, N, 0.0); - scratch = screened_rates(k_p_P31_to_S32_starlib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_starlib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_starlib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_starlib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -1849,10 +1765,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_starlib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_starlib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_O16_O16_derived) - screened_rates(k_S32_to_p_P31_derived); @@ -2071,10 +1987,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, N, 0.0); - scratch = screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho; jac.set(Cr48, H1, scratch); - scratch = -screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(Cr48, He4, scratch); jac.set(Cr48, C12, 0.0); @@ -2104,10 +2020,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho; jac.set(Cr48, Ti44, scratch); - scratch = -screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(He4)*state.rho - screened_rates(k_Cr48_to_Ti44_He4_approx); jac.set(Cr48, Cr48, scratch); - scratch = screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(Cr48, Mn51, scratch); scratch = screened_rates(k_Fe52_to_He4_Cr48_derived); @@ -2133,10 +2049,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, N, 0.0); - scratch = screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho; jac.set(Mn51, H1, scratch); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(Cr48)*state.rho - screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(Cr48)*state.rho - screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(Mn51)*state.rho; jac.set(Mn51, He4, scratch); jac.set(Mn51, C12, 0.0); @@ -2165,16 +2081,16 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_starlib)*Y(He4)*state.rho; jac.set(Mn51, Cr48, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(He4)*state.rho - screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(He4)*state.rho - screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(H1)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(Mn51, Mn51, scratch); scratch = screened_rates(k_Fe52_to_p_Mn51_derived); jac.set(Mn51, Fe52, scratch); - scratch = screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(Mn51, Fe54, scratch); jac.set(Mn51, Fe56, 0.0); @@ -2194,13 +2110,13 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Zn60, 0.0); - scratch = -2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = -1.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe52, N, scratch); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(Mn51)*state.rho; jac.set(Fe52, H1, scratch); - scratch = screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(Fe52)*state.rho; jac.set(Fe52, He4, scratch); jac.set(Fe52, C12, 0.0); @@ -2229,13 +2145,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_Fe52_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_starlib)*Y(He4)*state.rho; jac.set(Fe52, Cr48, scratch); - scratch = screened_rates(k_p_Mn51_to_Fe52_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_p_to_Fe52_starlib)*Y(H1)*state.rho; jac.set(Fe52, Mn51, scratch); - scratch = -screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_Mn51_derived) - screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(He4)*state.rho - 0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_Mn51_derived); jac.set(Fe52, Fe52, scratch); scratch = screened_rates(k_Fe54_to_Fe52_n_n_approx); @@ -2243,7 +2159,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Fe56, 0.0); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho; jac.set(Fe52, Co55, scratch); jac.set(Fe52, Co56, 0.0); @@ -2259,13 +2175,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Zn60, 0.0); - scratch = 2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = 1.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe54, N, scratch); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(Co57)*state.rho - screened_rates(k_p_Fe54_to_Co55_starlib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(Co57)*state.rho - screened_rates(k_Fe54_p_to_Co55_starlib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho; jac.set(Fe54, H1, scratch); - scratch = -screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(Mn51)*state.rho; jac.set(Fe54, He4, scratch); jac.set(Fe54, C12, 0.0); @@ -2296,13 +2212,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Cr48, 0.0); - scratch = screened_rates(k_He4_Mn51_to_p_Fe54_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_Fe54_starlib)*Y(He4)*state.rho; jac.set(Fe54, Mn51, scratch); - scratch = screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Fe54, Fe52, scratch); - scratch = -screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe54_to_Fe52_n_n_approx) - screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_Fe54_to_Co55_starlib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho - 0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe54_p_to_Co55_starlib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho - screened_rates(k_Fe54_to_Fe52_n_n_approx); jac.set(Fe54, Fe54, scratch); scratch = screened_rates(k_Fe56_to_Fe54_n_n_approx); @@ -2313,7 +2229,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Co56, 0.0); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(H1)*state.rho; jac.set(Fe54, Co57, scratch); jac.set(Fe54, Ni56, 0.0); @@ -2325,10 +2241,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Zn60, 0.0); - scratch = 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(Co56)*state.rho + 1.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe56, N, scratch); - scratch = -screened_rates(k_p_Fe56_to_Co57_starlib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_starlib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho; jac.set(Fe56, H1, scratch); jac.set(Fe56, He4, 0.0); @@ -2365,15 +2281,15 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Fe52, 0.0); - scratch = screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Fe56, Fe54, scratch); - scratch = -screened_rates(k_Fe56_to_Co56_weaktab) - screened_rates(k_Fe56_to_Fe54_n_n_approx) - screened_rates(k_p_Fe56_to_Co57_starlib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_starlib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho - screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) - screened_rates(k_Fe56_to_Fe54_n_n_approx); jac.set(Fe56, Fe56, scratch); jac.set(Fe56, Co55, 0.0); - scratch = screened_rates(k_Co56_to_Fe56_weaktab) + screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(N)*state.rho + screened_rates(k_Co56_to_Fe56_electron_capture_weaktab); jac.set(Fe56, Co56, scratch); scratch = screened_rates(k_Co57_to_p_Fe56_derived); @@ -2387,13 +2303,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Zn60, 0.0); - scratch = -screened_rates(k_n_Co55_to_Co56_starlib)*Y(Co55)*state.rho; + scratch = -screened_rates(k_Co55_n_to_Co56_starlib)*Y(Co55)*state.rho; jac.set(Co55, N, scratch); - scratch = -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_starlib)*Y(Co55)*state.rho + screened_rates(k_p_Fe54_to_Co55_starlib)*Y(Fe54)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_starlib)*Y(Co55)*state.rho + screened_rates(k_Fe54_p_to_Co55_starlib)*Y(Fe54)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(Co55, H1, scratch); - scratch = -screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(Fe52)*state.rho + screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(Co55)*state.rho + screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(Fe52)*state.rho + screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(Mn51)*state.rho; jac.set(Co55, He4, scratch); jac.set(Co55, C12, 0.0); @@ -2424,18 +2340,18 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Cr48, 0.0); - scratch = screened_rates(k_He4_Mn51_to_Co55_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_Co55_starlib)*Y(He4)*state.rho; jac.set(Co55, Mn51, scratch); - scratch = screened_rates(k_He4_Fe52_to_p_Co55_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_starlib)*Y(He4)*state.rho; jac.set(Co55, Fe52, scratch); - scratch = screened_rates(k_p_Fe54_to_Co55_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_Co55_starlib)*Y(H1)*state.rho; jac.set(Co55, Fe54, scratch); jac.set(Co55, Fe56, 0.0); - scratch = -screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_Fe54_derived) - screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(He4)*state.rho - screened_rates(k_n_Co55_to_Co56_starlib)*Y(N)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(He4)*state.rho - screened_rates(k_Co55_n_to_Co56_starlib)*Y(N)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_starlib)*Y(H1)*state.rho - screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_Fe54_derived); jac.set(Co55, Co55, scratch); scratch = screened_rates(k_Co56_to_n_Co55_derived); @@ -2446,7 +2362,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni56_to_p_Co55_derived); jac.set(Co55, Ni56, scratch); - scratch = screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho; jac.set(Co55, Ni58, scratch); scratch = screened_rates(k_Cu59_to_He4_Co55_derived); @@ -2454,13 +2370,13 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Zn60, 0.0); - scratch = screened_rates(k_n_Co55_to_Co56_starlib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_starlib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(Co56)*state.rho + screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(Cu59)*state.rho + screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_starlib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_starlib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(Co56)*state.rho + screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(Cu59)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(Ni56)*state.rho; jac.set(Co56, N, scratch); - scratch = -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho; jac.set(Co56, H1, scratch); - scratch = -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho; jac.set(Co56, He4, scratch); jac.set(Co56, C12, 0.0); @@ -2497,35 +2413,35 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Fe54, 0.0); - scratch = screened_rates(k_Fe56_to_Co56_weaktab) + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab); jac.set(Co56, Fe56, scratch); - scratch = screened_rates(k_n_Co55_to_Co56_starlib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_starlib)*Y(N)*state.rho; jac.set(Co56, Co55, scratch); - scratch = -screened_rates(k_Co56_to_Fe56_weaktab) - screened_rates(k_Co56_to_Ni56_weaktab) - screened_rates(k_Co56_to_n_Co55_derived) - screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_n_Co56_to_Co57_starlib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_starlib)*Y(N)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Co56_n_to_Co57_starlib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_starlib)*Y(N)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho - screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) - screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) - screened_rates(k_Co56_to_n_Co55_derived); jac.set(Co56, Co56, scratch); scratch = screened_rates(k_Co57_to_n_Co56_derived); jac.set(Co56, Co57, scratch); - scratch = screened_rates(k_Ni56_to_Co56_weaktab) + screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(N)*state.rho + screened_rates(k_Ni56_to_Co56_electron_capture_weaktab); jac.set(Co56, Ni56, scratch); jac.set(Co56, Ni58, 0.0); - scratch = screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(N)*state.rho; jac.set(Co56, Cu59, scratch); jac.set(Co56, Zn60, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_starlib)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_starlib)*Y(Co56)*state.rho; jac.set(Co57, N, scratch); - scratch = -screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58_starlib)*Y(Co57)*state.rho + screened_rates(k_p_Fe56_to_Co57_starlib)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_Ni58_starlib)*Y(Co57)*state.rho + screened_rates(k_Fe56_p_to_Co57_starlib)*Y(Fe56)*state.rho; jac.set(Co57, H1, scratch); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho; jac.set(Co57, He4, scratch); jac.set(Co57, C12, 0.0); @@ -2560,18 +2476,18 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho; jac.set(Co57, Fe54, scratch); - scratch = screened_rates(k_p_Fe56_to_Co57_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_Co57_starlib)*Y(H1)*state.rho; jac.set(Co57, Fe56, scratch); jac.set(Co57, Co55, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_starlib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_starlib)*Y(N)*state.rho; jac.set(Co57, Co56, scratch); - scratch = -screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_Fe56_derived) - screened_rates(k_p_Co57_to_He4_Fe54_starlib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_starlib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_Ni58_starlib)*Y(H1)*state.rho - screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_Fe56_derived); jac.set(Co57, Co57, scratch); jac.set(Co57, Ni56, 0.0); @@ -2583,13 +2499,13 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Zn60, 0.0); - scratch = -2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(Ni56)*state.rho; + scratch = -1.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(Ni56)*state.rho; jac.set(Ni56, N, scratch); - scratch = screened_rates(k_p_Co55_to_Ni56_starlib)*Y(Co55)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(Cu59)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_starlib)*Y(Co55)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(Cu59)*state.rho; jac.set(Ni56, H1, scratch); - scratch = screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(Fe52)*state.rho - screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(Fe52)*state.rho - screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho; jac.set(Ni56, He4, scratch); jac.set(Ni56, C12, 0.0); @@ -2622,40 +2538,40 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Mn51, 0.0); - scratch = screened_rates(k_He4_Fe52_to_Ni56_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_starlib)*Y(He4)*state.rho; jac.set(Ni56, Fe52, scratch); jac.set(Ni56, Fe54, 0.0); jac.set(Ni56, Fe56, 0.0); - scratch = screened_rates(k_p_Co55_to_Ni56_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_starlib)*Y(H1)*state.rho; jac.set(Ni56, Co55, scratch); - scratch = screened_rates(k_Co56_to_Ni56_weaktab) + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab); jac.set(Ni56, Co56, scratch); jac.set(Ni56, Co57, 0.0); - scratch = -screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_to_Co56_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_Co55_derived) - screened_rates(k_n_Ni56_to_p_Co56_starlib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho - 0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_Co56_starlib)*Y(N)*state.rho - screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_Co55_derived); jac.set(Ni56, Ni56, scratch); scratch = screened_rates(k_Ni58_to_Ni56_n_n_approx); jac.set(Ni56, Ni58, scratch); - scratch = screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(H1)*state.rho; jac.set(Ni56, Cu59, scratch); scratch = screened_rates(k_Zn60_to_He4_Ni56_derived); jac.set(Ni56, Zn60, scratch); - scratch = 2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = 1.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Ni58, N, scratch); - scratch = screened_rates(k_p_Co57_to_Ni58_starlib)*Y(Co57)*state.rho - screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co57_p_to_Ni58_starlib)*Y(Co57)*state.rho - screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(Ni58, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(Co55)*state.rho + screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(Fe54)*state.rho; jac.set(Ni58, He4, scratch); jac.set(Ni58, C12, 0.0); @@ -2690,23 +2606,23 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe54_to_Ni58_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_Ni58_starlib)*Y(He4)*state.rho; jac.set(Ni58, Fe54, scratch); jac.set(Ni58, Fe56, 0.0); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_starlib)*Y(He4)*state.rho; jac.set(Ni58, Co55, scratch); jac.set(Ni58, Co56, 0.0); - scratch = screened_rates(k_p_Co57_to_Ni58_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_Ni58_starlib)*Y(H1)*state.rho; jac.set(Ni58, Co57, scratch); - scratch = screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Ni58, Ni56, scratch); - scratch = -screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_Ni56_n_n_approx) - screened_rates(k_Ni58_to_p_Co57_derived) - screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho - screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_Ni56_n_n_approx) - screened_rates(k_Ni58_to_p_Co57_derived); jac.set(Ni58, Ni58, scratch); scratch = screened_rates(k_Cu59_to_p_Ni58_derived); @@ -2714,13 +2630,13 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Zn60, 0.0); - scratch = -screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(Cu59)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(Cu59)*state.rho; jac.set(Cu59, N, scratch); - scratch = -screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(Cu59)*state.rho + screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(Cu59)*state.rho + screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(Ni58)*state.rho; jac.set(Cu59, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(Co55)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(Co55)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho; jac.set(Cu59, He4, scratch); jac.set(Cu59, C12, 0.0); @@ -2759,21 +2675,21 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Fe56, 0.0); - scratch = screened_rates(k_He4_Co55_to_Cu59_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_Cu59_starlib)*Y(He4)*state.rho; jac.set(Cu59, Co55, scratch); - scratch = screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho; jac.set(Cu59, Co56, scratch); jac.set(Cu59, Co57, 0.0); - scratch = screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho; jac.set(Cu59, Ni56, scratch); - scratch = screened_rates(k_p_Ni58_to_Cu59_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_Cu59_starlib)*Y(H1)*state.rho; jac.set(Cu59, Ni58, scratch); - scratch = -screened_rates(k_Cu59_to_He4_Co55_derived) - screened_rates(k_Cu59_to_p_Ni58_derived) - screened_rates(k_n_Cu59_to_He4_Co56_starlib)*Y(N)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_starlib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_starlib)*Y(N)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_starlib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(H1)*state.rho - screened_rates(k_Cu59_to_He4_Co55_derived) - screened_rates(k_Cu59_to_p_Ni58_derived); jac.set(Cu59, Cu59, scratch); scratch = screened_rates(k_Zn60_to_p_Cu59_derived); @@ -2781,10 +2697,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, N, 0.0); - scratch = screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(Cu59)*state.rho; + scratch = screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(Cu59)*state.rho; jac.set(Zn60, H1, scratch); - scratch = screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(Ni56)*state.rho; jac.set(Zn60, He4, scratch); jac.set(Zn60, C12, 0.0); @@ -2829,12 +2745,12 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, Co57, 0.0); - scratch = screened_rates(k_He4_Ni56_to_Zn60_starlib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_Zn60_starlib)*Y(He4)*state.rho; jac.set(Zn60, Ni56, scratch); jac.set(Zn60, Ni58, 0.0); - scratch = screened_rates(k_p_Cu59_to_Zn60_starlib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_Zn60_starlib)*Y(H1)*state.rho; jac.set(Zn60, Cu59, scratch); scratch = -screened_rates(k_Zn60_to_He4_Ni56_derived) - screened_rates(k_Zn60_to_p_Cu59_derived); diff --git a/networks/he-burn/ase-iron-starlib/approximate_rates.H b/networks/he-burn/ase-iron-starlib/approximate_rates.H index fd0626992..83a1b1c7c 100644 --- a/networks/he-burn/ase-iron-starlib/approximate_rates.H +++ b/networks/he-burn/ase-iron-starlib/approximate_rates.H @@ -8,384 +8,386 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_starlib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_starlib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_starlib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_starlib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_starlib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_starlib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_starlib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_starlib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_starlib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_starlib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_starlib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_starlib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_starlib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_starlib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_starlib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_starlib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_starlib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_starlib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_starlib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_starlib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_starlib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_starlib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_starlib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_starlib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_starlib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_starlib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_starlib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_starlib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_starlib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_starlib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_starlib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_starlib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_starlib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_starlib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_starlib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_starlib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_starlib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_starlib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_starlib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_starlib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_starlib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_starlib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_starlib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_starlib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_starlib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_starlib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_starlib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_starlib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_starlib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_starlib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_starlib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_starlib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_starlib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_starlib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_starlib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_starlib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_starlib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_starlib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_starlib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_starlib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_starlib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_starlib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_starlib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_starlib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_starlib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_starlib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_starlib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_starlib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_starlib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_starlib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_starlib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_starlib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_starlib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_starlib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_starlib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_starlib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_starlib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_starlib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_starlib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_starlib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_n_n_to_Fe54_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Fe52_to_Fe53_starlib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe53_to_Fe54_starlib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_starlib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_starlib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_n_to_Fe54_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Fe52_n_to_Fe53_starlib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe53_n_to_Fe54_starlib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Fe52_n_to_Fe53_starlib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_starlib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_Fe52_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe53_to_Fe54_starlib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_starlib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_Fe52_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe53_n_to_Fe54_starlib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_starlib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_n_n_to_Fe56_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Fe54_to_Fe55_starlib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe55_to_Fe56_starlib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_starlib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_starlib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_n_to_Fe56_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Fe54_n_to_Fe55_starlib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe55_n_to_Fe56_starlib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Fe54_n_to_Fe55_starlib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_starlib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_Fe54_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe55_to_Fe56_starlib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_starlib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_Fe54_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe55_n_to_Fe56_starlib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_starlib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_n_n_to_Ni58_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Ni56_to_Ni57_starlib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Ni57_to_Ni58_starlib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_starlib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_starlib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_n_to_Ni58_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Ni56_n_to_Ni57_starlib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Ni57_n_to_Ni58_starlib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Ni56_n_to_Ni57_starlib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_starlib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_Ni56_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Ni57_to_Ni58_starlib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_starlib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_Ni56_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Ni57_n_to_Ni58_starlib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_starlib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Fe52_n_n_to_Fe54_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_n_to_Fe54_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_n_to_Fe54_approx) = drate_dT; + } + + rate_Fe54_to_Fe52_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_to_Fe52_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_Fe52_n_n_approx) = drate_dT; + } + + rate_Fe54_n_n_to_Fe56_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_n_to_Fe56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_n_to_Fe56_approx) = drate_dT; + } + + rate_Fe56_to_Fe54_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_to_Fe54_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Fe54_n_n_approx) = drate_dT; + } + + rate_Ni56_n_n_to_Ni58_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_n_to_Ni58_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_n_to_Ni58_approx) = drate_dT; + } + + rate_Ni58_to_Ni56_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_to_Ni56_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_Ni56_n_n_approx) = drate_dT; + } - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - rate_Fe52_n_n_to_Fe54_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_n_n_to_Fe54_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_n_n_to_Fe54_approx) = drate_dT; - } - - rate_Fe54_to_Fe52_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_to_Fe52_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_Fe52_n_n_approx) = drate_dT; - } - - rate_Fe54_n_n_to_Fe56_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_n_n_to_Fe56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_n_n_to_Fe56_approx) = drate_dT; - } - - rate_Fe56_to_Fe54_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe56_to_Fe54_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_Fe54_n_n_approx) = drate_dT; - } - - rate_Ni56_n_n_to_Ni58_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_n_n_to_Ni58_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_n_n_to_Ni58_approx) = drate_dT; - } - - rate_Ni58_to_Ni56_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Ni58_to_Ni56_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_Ni56_n_n_approx) = drate_dT; - } - - } - #endif diff --git a/networks/he-burn/ase-iron-starlib/ase_iron_starlib.py b/networks/he-burn/ase-iron-starlib/ase_iron_starlib.py index f18e65446..e4cb10b41 100644 --- a/networks/he-burn/ase-iron-starlib/ase_iron_starlib.py +++ b/networks/he-burn/ase-iron-starlib/ase_iron_starlib.py @@ -27,7 +27,8 @@ def get_library(): for r, mp in other_rates: _r = reaclib_lib.get_rate_by_name(r) - forward_rate = pyna.ModifiedRate(_r, new_products=[mp]) + forward_rate = pyna.ModifiedRate(_r, new_products=[mp], + description=f"{r}(n,γ){mp}") derived_rate = pyna.DerivedRate(forward_rate, use_pf=True) subch += pyna.Library(rates=[forward_rate, derived_rate]) diff --git a/networks/he-burn/ase-iron-starlib/branched_rates.H b/networks/he-burn/ase-iron-starlib/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/ase-iron-starlib/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/ase-iron-starlib/derived_rates.H b/networks/he-burn/ase-iron-starlib/derived_rates.H index 8c2bc81a1..2c3ac2a65 100644 --- a/networks/he-burn/ase-iron-starlib/derived_rates.H +++ b/networks/he-burn/ase-iron-starlib/derived_rates.H @@ -7,5292 +7,5294 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // C12 --> 3 He4 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // C12 --> 3 He4 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_He4_He4_to_C12_starlib_data::log_t9, - He4_He4_He4_to_C12_starlib_data::log_rate); + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_He4_He4_to_C12_starlib_data::log_t9, - He4_He4_He4_to_C12_starlib_data::sigma_rate); + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + He4_He4_He4_to_C12_starlib_data::log_t9, + He4_He4_He4_to_C12_starlib_data::log_rate); - // Add rate uncertainty - _rate += p * _sigma; + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + He4_He4_He4_to_C12_starlib_data::log_t9, + He4_He4_He4_to_C12_starlib_data::sigma_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -7.274747609999003 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 46.74930397991297 + Q_kBT + net_log_pf + log_scor; - _rate += 3.0 * tfactors.lnT9; + // Add rate uncertainty + _rate += p * _sigma; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -7.274747609999003 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 46.74930397991297 + Q_kBT + net_log_pf + log_scor; + _rate += 3.0 * tfactors.lnT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); + + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; + + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 3.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 3.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> C12 + C12 - // Ne20 + He4 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_C12_to_He4_Ne20_starlib_data::log_t9, + C12_C12_to_He4_Ne20_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_C12_to_He4_Ne20_starlib_data::log_t9, - C12_C12_to_He4_Ne20_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_C12_to_He4_Ne20_starlib_data::log_t9, + C12_C12_to_He4_Ne20_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_C12_to_He4_Ne20_starlib_data::log_t9, - C12_C12_to_He4_Ne20_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -4.617016329998765 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.18785146891918028 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -4.617016329998765 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.18785146891918028 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na23 + p --> C12 + C12 - // Na23 + p --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - p_log_pf - Na23_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dp_log_pf_dT9 - dNa23_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - p_log_pf - Na23_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dp_log_pf_dT9 - dNa23_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_C12_to_p_Na23_starlib_data::log_t9, + C12_C12_to_p_Na23_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_C12_to_p_Na23_starlib_data::log_t9, - C12_C12_to_p_Na23_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_C12_to_p_Na23_starlib_data::log_t9, + C12_C12_to_p_Na23_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_C12_to_p_Na23_starlib_data::log_t9, - C12_C12_to_p_Na23_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -2.2408824359984667 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += -0.039484252594465044 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -2.2408824359984667 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += -0.039484252594465044 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> C12 + O16 - // Mg24 + He4 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_C12_to_He4_Mg24_starlib_data::log_t9, + O16_C12_to_He4_Mg24_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_O16_to_He4_Mg24_starlib_data::log_t9, - C12_O16_to_He4_Mg24_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_C12_to_He4_Mg24_starlib_data::log_t9, + O16_C12_to_He4_Mg24_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_O16_to_He4_Mg24_starlib_data::log_t9, - C12_O16_to_He4_Mg24_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -6.771660029999435 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 1.0388581923104747 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -6.771660029999435 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 1.0388581923104747 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Al27 + p --> C12 + O16 - // Al27 + p --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - p_log_pf - Al27_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dAl27_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - p_log_pf - Al27_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dAl27_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_C12_to_p_Al27_starlib_data::log_t9, + O16_C12_to_p_Al27_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_O16_to_p_Al27_starlib_data::log_t9, - C12_O16_to_p_Al27_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_C12_to_p_Al27_starlib_data::log_t9, + O16_C12_to_p_Al27_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_O16_to_p_Al27_starlib_data::log_t9, - C12_O16_to_p_Al27_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -5.170886835997453 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.43900994536895793 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -5.170886835997453 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.43900994536895793 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> O16 + O16 - // Si28 + He4 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_O16_to_He4_Si28_starlib_data::log_t9, + O16_O16_to_He4_Si28_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - O16_O16_to_He4_Si28_starlib_data::log_t9, - O16_O16_to_He4_Si28_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_O16_to_He4_Si28_starlib_data::log_t9, + O16_O16_to_He4_Si28_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - O16_O16_to_He4_Si28_starlib_data::log_t9, - O16_O16_to_He4_Si28_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -9.593877029998845 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.5457157206902232 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -9.593877029998845 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.5457157206902232 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // P31 + p --> O16 + O16 - // P31 + p --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - p_log_pf - P31_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dP31_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - p_log_pf - P31_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dP31_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_O16_to_p_P31_starlib_data::log_t9, + O16_O16_to_p_P31_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - O16_O16_to_p_P31_starlib_data::log_t9, - O16_O16_to_p_P31_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_O16_to_p_P31_starlib_data::log_t9, + O16_O16_to_p_P31_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - O16_O16_to_p_P31_starlib_data::log_t9, - O16_O16_to_p_P31_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -7.677569135998522 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 1.0683848103569353 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -7.677569135998522 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 1.0683848103569353 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + N13_He4_to_p_O16_starlib_data::log_t9, + N13_He4_to_p_O16_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_N13_to_p_O16_starlib_data::log_t9, - He4_N13_to_p_O16_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + N13_He4_to_p_O16_starlib_data::log_t9, + N13_He4_to_p_O16_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_N13_to_p_O16_starlib_data::log_t9, - He4_N13_to_p_O16_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -5.218426906001445 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 1.7520206134245597 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -5.218426906001445 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 1.7520206134245597 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N13 --> p + C12 - // N13 --> p + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_p_to_N13_starlib_data::log_t9, + C12_p_to_N13_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_C12_to_N13_starlib_data::log_t9, - p_C12_to_N13_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_p_to_N13_starlib_data::log_t9, + C12_p_to_N13_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_C12_to_N13_starlib_data::log_t9, - p_C12_to_N13_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -1.9434910639993015 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 22.910928683693466 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -1.9434910639993015 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 22.910928683693466 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_He4_to_O16_starlib_data::log_t9, + C12_He4_to_O16_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_C12_to_O16_starlib_data::log_t9, - He4_C12_to_O16_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_He4_to_O16_starlib_data::log_t9, + C12_He4_to_O16_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_C12_to_O16_starlib_data::log_t9, - He4_C12_to_O16_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -7.161917969999712 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.662949297118026 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -7.161917969999712 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.662949297118026 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_He4_to_Ne20_starlib_data::log_t9, + O16_He4_to_Ne20_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_O16_to_Ne20_starlib_data::log_t9, - He4_O16_to_Ne20_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_He4_to_Ne20_starlib_data::log_t9, + O16_He4_to_Ne20_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_O16_to_Ne20_starlib_data::log_t9, - He4_O16_to_Ne20_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -4.729845970000538 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.759112801502127 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -4.729845970000538 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.759112801502127 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Na23_p_to_He4_Ne20_starlib_data::log_t9, + Na23_p_to_He4_Ne20_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Na23_to_He4_Ne20_starlib_data::log_t9, - p_Na23_to_He4_Ne20_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Na23_p_to_He4_Ne20_starlib_data::log_t9, + Na23_p_to_He4_Ne20_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Na23_to_He4_Ne20_starlib_data::log_t9, - p_Na23_to_He4_Ne20_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -2.3761338939988508 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.22733572151364528 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -2.3761338939988508 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.22733572151364528 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Na23_p_to_Mg24_starlib_data::log_t9, + Na23_p_to_Mg24_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Na23_to_Mg24_starlib_data::log_t9, - p_Na23_to_Mg24_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Na23_p_to_Mg24_starlib_data::log_t9, + Na23_p_to_Mg24_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Na23_to_Mg24_starlib_data::log_t9, - p_Na23_to_Mg24_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -11.692695564000061 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.04814456146302 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -11.692695564000061 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.04814456146302 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ne20_He4_to_Mg24_starlib_data::log_t9, + Ne20_He4_to_Mg24_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ne20_to_Mg24_starlib_data::log_t9, - He4_Ne20_to_Mg24_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ne20_He4_to_Mg24_starlib_data::log_t9, + Ne20_He4_to_Mg24_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ne20_to_Mg24_starlib_data::log_t9, - He4_Ne20_to_Mg24_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -9.31656167000121 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.820808839949375 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -9.31656167000121 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.820808839949375 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Al27_p_to_He4_Mg24_starlib_data::log_t9, + Al27_p_to_He4_Mg24_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Al27_to_He4_Mg24_starlib_data::log_t9, - p_Al27_to_He4_Mg24_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Al27_p_to_He4_Mg24_starlib_data::log_t9, + Al27_p_to_He4_Mg24_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Al27_to_He4_Mg24_starlib_data::log_t9, - p_Al27_to_He4_Mg24_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -1.6007731940019818 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.5998482469415165 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -1.6007731940019818 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.5998482469415165 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Al27_p_to_Si28_starlib_data::log_t9, + Al27_p_to_Si28_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Al27_to_Si28_starlib_data::log_t9, - p_Al27_to_Si28_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Al27_p_to_Si28_starlib_data::log_t9, + Al27_p_to_Si28_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Al27_to_Si28_starlib_data::log_t9, - p_Al27_to_Si28_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -11.584908164001932 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.462802252999236 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -11.584908164001932 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.462802252999236 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Mg24_He4_to_Si28_starlib_data::log_t9, + Mg24_He4_to_Si28_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Mg24_to_Si28_starlib_data::log_t9, - He4_Mg24_to_Si28_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Mg24_He4_to_Si28_starlib_data::log_t9, + Mg24_He4_to_Si28_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Mg24_to_Si28_starlib_data::log_t9, - He4_Mg24_to_Si28_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -9.98413496999995 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.86295400605772 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -9.98413496999995 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.86295400605772 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + P31_p_to_He4_Si28_starlib_data::log_t9, + P31_p_to_He4_Si28_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_P31_to_He4_Si28_starlib_data::log_t9, - p_P31_to_He4_Si28_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + P31_p_to_He4_Si28_starlib_data::log_t9, + P31_p_to_He4_Si28_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_P31_to_He4_Si28_starlib_data::log_t9, - p_P31_to_He4_Si28_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -1.9163078940003233 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += -0.5226690896667122 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -1.9163078940003233 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += -0.5226690896667122 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + P31_p_to_S32_starlib_data::log_t9, + P31_p_to_S32_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_P31_to_S32_starlib_data::log_t9, - p_P31_to_S32_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + P31_p_to_S32_starlib_data::log_t9, + P31_p_to_S32_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_P31_to_S32_starlib_data::log_t9, - p_P31_to_S32_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -8.863963764002593 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.370833422303182 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -8.863963764002593 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.370833422303182 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Si28_He4_to_S32_starlib_data::log_t9, + Si28_He4_to_S32_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Si28_to_S32_starlib_data::log_t9, - He4_Si28_to_S32_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Si28_He4_to_S32_starlib_data::log_t9, + Si28_He4_to_S32_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Si28_to_S32_starlib_data::log_t9, - He4_Si28_to_S32_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -6.9476558700022695 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.893502511969896 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -6.9476558700022695 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.893502511969896 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mn51 + p --> He4 + Cr48 - // Mn51 + p --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cr48_He4_to_p_Mn51_starlib_data::log_t9, + Cr48_He4_to_p_Mn51_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Cr48_to_p_Mn51_starlib_data::log_t9, - He4_Cr48_to_p_Mn51_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cr48_He4_to_p_Mn51_starlib_data::log_t9, + Cr48_He4_to_p_Mn51_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Cr48_to_p_Mn51_starlib_data::log_t9, - He4_Cr48_to_p_Mn51_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -0.5581448060026141 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += -0.5141173297653887 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -0.5581448060026141 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += -0.5141173297653887 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 + p --> He4 + Fe52 - // Co55 + p --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe52_He4_to_p_Co55_starlib_data::log_t9, + Fe52_He4_to_p_Co55_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Fe52_to_p_Co55_starlib_data::log_t9, - He4_Fe52_to_p_Co55_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe52_He4_to_p_Co55_starlib_data::log_t9, + Fe52_He4_to_p_Co55_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Fe52_to_p_Co55_starlib_data::log_t9, - He4_Fe52_to_p_Co55_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -0.8338448059985103 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += -0.7949991911878357 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -0.8338448059985103 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += -0.7949991911878357 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> p + Mn51 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Mn51_p_to_Fe52_starlib_data::log_t9, + Mn51_p_to_Fe52_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Mn51_to_Fe52_starlib_data::log_t9, - p_Mn51_to_Fe52_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Mn51_p_to_Fe52_starlib_data::log_t9, + Mn51_p_to_Fe52_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Mn51_to_Fe52_starlib_data::log_t9, - p_Mn51_to_Fe52_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -7.377871064004735 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.487831322280396 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -7.377871064004735 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.487831322280396 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cr48_He4_to_Fe52_starlib_data::log_t9, + Cr48_He4_to_Fe52_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Cr48_to_Fe52_starlib_data::log_t9, - He4_Cr48_to_Fe52_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cr48_He4_to_Fe52_starlib_data::log_t9, + Cr48_He4_to_Fe52_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Cr48_to_Fe52_starlib_data::log_t9, - He4_Cr48_to_Fe52_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -7.9360158700054875 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.973713992515005 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -7.9360158700054875 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.973713992515005 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 --> He4 + Mn51 - // Co55 --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dCo55_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Mn51_He4_to_Co55_starlib_data::log_t9, + Mn51_He4_to_Co55_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Mn51_to_Co55_starlib_data::log_t9, - He4_Mn51_to_Co55_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Mn51_He4_to_Co55_starlib_data::log_t9, + Mn51_He4_to_Co55_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Mn51_to_Co55_starlib_data::log_t9, - He4_Mn51_to_Co55_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -8.211715870003866 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.692832131092562 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -8.211715870003866 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.692832131092562 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> p + Co55 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co55_p_to_Ni56_starlib_data::log_t9, + Co55_p_to_Ni56_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Co55_to_Ni56_starlib_data::log_t9, - p_Co55_to_Ni56_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co55_p_to_Ni56_starlib_data::log_t9, + Co55_p_to_Ni56_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Co55_to_Ni56_starlib_data::log_t9, - p_Co55_to_Ni56_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -7.166571063993911 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.777604041925606 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -7.166571063993911 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.777604041925606 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe52_He4_to_Ni56_starlib_data::log_t9, + Fe52_He4_to_Ni56_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Fe52_to_Ni56_starlib_data::log_t9, - He4_Fe52_to_Ni56_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe52_He4_to_Ni56_starlib_data::log_t9, + Fe52_He4_to_Ni56_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Fe52_to_Ni56_starlib_data::log_t9, - He4_Fe52_to_Ni56_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -8.000415869992421 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.98260485073777 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -8.000415869992421 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.98260485073777 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_He4_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni56_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 + He4 --> p + Cu59 - // Ni56 + He4 --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - He4_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - He4_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dNi56_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cu59_p_to_He4_Ni56_starlib_data::log_t9, + Cu59_p_to_He4_Ni56_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Cu59_to_He4_Ni56_starlib_data::log_t9, - p_Cu59_to_He4_Ni56_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cu59_p_to_He4_Ni56_starlib_data::log_t9, + Cu59_p_to_He4_Ni56_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Cu59_to_He4_Ni56_starlib_data::log_t9, - p_Cu59_to_He4_Ni56_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -2.4131551940024294 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.09615846250448774 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -2.4131551940024294 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.09615846250448774 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cu59 --> He4 + Co55 - // Cu59 --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - Cu59_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dCu59_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - Cu59_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dCu59_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co55_He4_to_Cu59_starlib_data::log_t9, + Co55_He4_to_Cu59_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Co55_to_Cu59_starlib_data::log_t9, - He4_Co55_to_Cu59_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co55_He4_to_Cu59_starlib_data::log_t9, + Co55_He4_to_Cu59_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Co55_to_Cu59_starlib_data::log_t9, - He4_Co55_to_Cu59_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -4.7534158699933435 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.68144557942112 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -4.7534158699933435 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.68144557942112 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Zn60 --> p + Cu59 - // Zn60 --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; - amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; + // interpolating Zn60 partition function + get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); - // interpolating Zn60 partition function - get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - Zn60_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dZn60_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - Zn60_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dZn60_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cu59_p_to_Zn60_starlib_data::log_t9, + Cu59_p_to_Zn60_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Cu59_to_Zn60_starlib_data::log_t9, - p_Cu59_to_Zn60_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cu59_p_to_Zn60_starlib_data::log_t9, + Cu59_p_to_Zn60_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Cu59_to_Zn60_starlib_data::log_t9, - p_Cu59_to_Zn60_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -5.104971064000085 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.08618638341413 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -5.104971064000085 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.08618638341413 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_He4_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_He4_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Zn60 --> He4 + Ni56 - // Zn60 --> He4 + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; - amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; + // interpolating Zn60 partition function + get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); - // interpolating Zn60 partition function - get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ni56_log_pf - Zn60_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNi56_log_pf_dT9 - dZn60_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ni56_log_pf - Zn60_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNi56_log_pf_dT9 - dZn60_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni56_He4_to_Zn60_starlib_data::log_t9, + Ni56_He4_to_Zn60_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ni56_to_Zn60_starlib_data::log_t9, - He4_Ni56_to_Zn60_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni56_He4_to_Zn60_starlib_data::log_t9, + Ni56_He4_to_Zn60_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ni56_to_Zn60_starlib_data::log_t9, - He4_Ni56_to_Zn60_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -2.6918158700001382 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.990027920909643 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -2.6918158700001382 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.990027920909643 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> C12 + C12 - // Mg24 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dMg24_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_C12_to_n_Mg23_starlib_data::log_t9, + C12_C12_to_n_Mg23_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_C12_to_n_Mg23_starlib_data::log_t9, - C12_C12_to_n_Mg23_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + C12_C12_to_n_Mg23_starlib_data::log_t9, + C12_C12_to_n_Mg23_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_C12_to_n_Mg23_starlib_data::log_t9, - C12_C12_to_n_Mg23_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -13.933577999999976 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.008660308868553 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -13.933577999999976 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.008660308868553 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> O16 + O16 - // S32 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dS32_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_O16_to_n_S31_starlib_data::log_t9, + O16_O16_to_n_S31_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - O16_O16_to_n_S31_starlib_data::log_t9, - O16_O16_to_n_S31_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_O16_to_n_S31_starlib_data::log_t9, + O16_O16_to_n_S31_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - O16_O16_to_n_S31_starlib_data::log_t9, - O16_O16_to_n_S31_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -16.541532900001116 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.439218232660117 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -16.541532900001116 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.439218232660117 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> C12 + O16 - // Si28 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dSi28_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_C12_to_n_Si27_starlib_data::log_t9, + O16_C12_to_n_Si27_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_O16_to_n_Si27_starlib_data::log_t9, - C12_O16_to_n_Si27_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_C12_to_n_Si27_starlib_data::log_t9, + O16_C12_to_n_Si27_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - C12_O16_to_n_Si27_starlib_data::log_t9, - C12_O16_to_n_Si27_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -16.755794999999384 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.901812198368194 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -16.755794999999384 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.901812198368194 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe54_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + p --> He4 + Mn51 - // Fe54 + p --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - p_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dp_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - p_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dp_log_pf_dT9 - dFe54_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Mn51_He4_to_p_Fe54_starlib_data::log_t9, + Mn51_He4_to_p_Fe54_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Mn51_to_p_Fe54_starlib_data::log_t9, - He4_Mn51_to_p_Fe54_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Mn51_He4_to_p_Fe54_starlib_data::log_t9, + Mn51_He4_to_p_Fe54_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Mn51_to_p_Fe54_starlib_data::log_t9, - He4_Mn51_to_p_Fe54_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -3.1473448060034297 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 3.074713682988042 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -3.1473448060034297 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 3.074713682988042 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe56_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 + p --> n + Co56 - // Fe56 + p --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co56_log_pf - p_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dp_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co56_log_pf - p_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dp_log_pf_dT9 - dFe56_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co56_n_to_p_Fe56_starlib_data::log_t9, + Co56_n_to_p_Fe56_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Co56_to_p_Fe56_starlib_data::log_t9, - n_Co56_to_p_Fe56_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co56_n_to_p_Fe56_starlib_data::log_t9, + Co56_n_to_p_Fe56_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Co56_to_p_Fe56_starlib_data::log_t9, - n_Co56_to_p_Fe56_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -5.349007036003482 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 2.1995262241642837 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -5.349007036003482 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 2.1995262241642837 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + He4 --> p + Co57 - // Fe54 + He4 --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co57_log_pf - He4_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co57_log_pf - He4_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co57_p_to_He4_Fe54_starlib_data::log_t9, + Co57_p_to_He4_Fe54_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Co57_to_He4_Fe54_starlib_data::log_t9, - p_Co57_to_He4_Fe54_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co57_p_to_He4_Fe54_starlib_data::log_t9, + Co57_p_to_He4_Fe54_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Co57_to_He4_Fe54_starlib_data::log_t9, - p_Co57_to_He4_Fe54_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -1.772955193998673 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.7921095556653313 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -1.772955193998673 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.7921095556653313 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni58_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 + p --> He4 + Co55 - // Ni58 + p --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - p_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - p_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dNi58_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co55_He4_to_p_Ni58_starlib_data::log_t9, + Co55_He4_to_p_Ni58_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Co55_to_p_Ni58_starlib_data::log_t9, - He4_Co55_to_p_Ni58_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co55_He4_to_p_Ni58_starlib_data::log_t9, + Co55_He4_to_p_Ni58_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Co55_to_p_Ni58_starlib_data::log_t9, - He4_Co55_to_p_Ni58_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -1.3348448059966436 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 3.3683618674820073 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -1.3348448059966436 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 3.3683618674820073 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_p_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_p_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 --> p + Fe54 - // Co55 --> p + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe54_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe54_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe54_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe54_log_pf_dT9 - dCo55_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe54_p_to_Co55_starlib_data::log_t9, + Fe54_p_to_Co55_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Fe54_to_Co55_starlib_data::log_t9, - p_Fe54_to_Co55_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe54_p_to_Co55_starlib_data::log_t9, + Fe54_p_to_Co55_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Fe54_to_Co55_starlib_data::log_t9, - p_Fe54_to_Co55_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -5.0643710640004365 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 21.618118448104518 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -5.0643710640004365 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 21.618118448104518 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 --> n + Co55 - // Co56 --> n + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co55_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co55_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dCo56_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co55_n_to_Co56_starlib_data::log_t9, + Co55_n_to_Co56_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Co55_to_Co56_starlib_data::log_t9, - n_Co55_to_Co56_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co55_n_to_Co56_starlib_data::log_t9, + Co55_n_to_Co56_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Co55_to_Co56_starlib_data::log_t9, - n_Co55_to_Co56_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -10.081818100002103 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 23.582564333711023 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -10.081818100002103 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 23.582564333711023 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 --> n + Co56 - // Co57 --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co56_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co56_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dCo57_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co56_n_to_Co57_starlib_data::log_t9, + Co56_n_to_Co57_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Co56_to_Co57_starlib_data::log_t9, - n_Co56_to_Co57_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co56_n_to_Co57_starlib_data::log_t9, + Co56_n_to_Co57_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Co56_to_Co57_starlib_data::log_t9, - n_Co56_to_Co57_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -11.376518100002114 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 23.81866809654295 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -11.376518100002114 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 23.81866809654295 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_p_Fe56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_p_Fe56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 --> p + Fe56 - // Co57 --> p + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe56_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe56_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe56_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe56_log_pf_dT9 - dCo57_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe56_p_to_Co57_starlib_data::log_t9, + Fe56_p_to_Co57_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Fe56_to_Co57_starlib_data::log_t9, - p_Fe56_to_Co57_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe56_p_to_Co57_starlib_data::log_t9, + Fe56_p_to_Co57_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Fe56_to_Co57_starlib_data::log_t9, - p_Fe56_to_Co57_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -6.027511063998631 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 21.619141872378666 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -6.027511063998631 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 21.619141872378666 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co56_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 + p --> n + Ni56 - // Co56 + p --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - p_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - p_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni56_n_to_p_Co56_starlib_data::log_t9, + Ni56_n_to_p_Co56_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Ni56_to_p_Co56_starlib_data::log_t9, - n_Ni56_to_p_Co56_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni56_n_to_p_Co56_starlib_data::log_t9, + Ni56_n_to_p_Co56_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Ni56_to_p_Co56_starlib_data::log_t9, - n_Ni56_to_p_Co56_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -2.915247036008191 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += -2.195039708214582 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -2.915247036008191 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += -2.195039708214582 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> p + Co57 - // Ni58 --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co57_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co57_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dNi58_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co57_p_to_Ni58_starlib_data::log_t9, + Co57_p_to_Ni58_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Co57_to_Ni58_starlib_data::log_t9, - p_Co57_to_Ni58_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Co57_p_to_Ni58_starlib_data::log_t9, + Co57_p_to_Ni58_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Co57_to_Ni58_starlib_data::log_t9, - p_Co57_to_Ni58_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -8.172171063995753 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.778589871251857 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -8.172171063995753 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.778589871251857 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> He4 + Fe54 - // Ni58 --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe54_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe54_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe54_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe54_log_pf_dT9 - dNi58_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe54_He4_to_Ni58_starlib_data::log_t9, + Fe54_He4_to_Ni58_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Fe54_to_Ni58_starlib_data::log_t9, - He4_Fe54_to_Ni58_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe54_He4_to_Ni58_starlib_data::log_t9, + Fe54_He4_to_Ni58_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Fe54_to_Ni58_starlib_data::log_t9, - He4_Fe54_to_Ni58_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -6.39921586999708 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.986480315586526 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -6.39921586999708 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.986480315586526 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_He4_to_n_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co56_to_n_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 + He4 --> n + Cu59 - // Co56 + He4 --> n + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Cu59_log_pf - He4_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Cu59_log_pf - He4_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dCo56_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cu59_n_to_He4_Co56_starlib_data::log_t9, + Cu59_n_to_He4_Co56_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Cu59_to_He4_Co56_starlib_data::log_t9, - n_Cu59_to_He4_Co56_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cu59_n_to_He4_Co56_starlib_data::log_t9, + Cu59_n_to_He4_Co56_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Cu59_to_He4_Co56_starlib_data::log_t9, - n_Cu59_to_He4_Co56_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -5.328402230008759 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += -2.098881245710094 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -5.328402230008759 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += -2.098881245710094 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_p_Ni58_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_p_Ni58_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cu59 --> p + Ni58 - // Cu59 --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ni58_log_pf - Cu59_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNi58_log_pf_dT9 - dCu59_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ni58_log_pf - Cu59_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNi58_log_pf_dT9 - dCu59_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni58_p_to_Cu59_starlib_data::log_t9, + Ni58_p_to_Cu59_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Ni58_to_Cu59_starlib_data::log_t9, - p_Ni58_to_Cu59_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni58_p_to_Cu59_starlib_data::log_t9, + Ni58_p_to_Cu59_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Ni58_to_Cu59_starlib_data::log_t9, - p_Ni58_to_Cu59_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -3.4185710639967 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 22.31308371193911 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -3.4185710639967 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 22.31308371193911 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cl35_p_to_He4_S32_starlib_data::log_t9, + Cl35_p_to_He4_S32_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Cl35_to_He4_S32_starlib_data::log_t9, - p_Cl35_to_He4_S32_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cl35_p_to_He4_S32_starlib_data::log_t9, + Cl35_p_to_He4_S32_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Cl35_to_He4_S32_starlib_data::log_t9, - p_Cl35_to_He4_S32_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -1.8660622939993667 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.15223526553037453 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -1.8660622939993667 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.15223526553037453 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + S32_He4_to_Ar36_starlib_data::log_t9, + S32_He4_to_Ar36_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_S32_to_Ar36_starlib_data::log_t9, - He4_S32_to_Ar36_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + S32_He4_to_Ar36_starlib_data::log_t9, + S32_He4_to_Ar36_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_S32_to_Ar36_starlib_data::log_t9, - He4_S32_to_Ar36_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -6.640920770003172 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.917075071591125 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -6.640920770003172 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.917075071591125 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cl35_p_to_Ar36_starlib_data::log_t9, + Cl35_p_to_Ar36_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Cl35_to_Ar36_starlib_data::log_t9, - p_Cl35_to_Ar36_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Cl35_p_to_Ar36_starlib_data::log_t9, + Cl35_p_to_Ar36_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Cl35_to_Ar36_starlib_data::log_t9, - p_Cl35_to_Ar36_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -8.506983063999229 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.0693103371215 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -8.506983063999229 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.0693103371215 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + K39_p_to_He4_Ar36_starlib_data::log_t9, + K39_p_to_He4_Ar36_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_K39_to_He4_Ar36_starlib_data::log_t9, - p_K39_to_He4_Ar36_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + K39_p_to_He4_Ar36_starlib_data::log_t9, + K39_p_to_He4_Ar36_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_K39_to_He4_Ar36_starlib_data::log_t9, - p_K39_to_He4_Ar36_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -1.288402194006114 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.13785123272943048 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -1.288402194006114 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.13785123272943048 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ar36_He4_to_Ca40_starlib_data::log_t9, + Ar36_He4_to_Ca40_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ar36_to_Ca40_starlib_data::log_t9, - He4_Ar36_to_Ca40_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ar36_He4_to_Ca40_starlib_data::log_t9, + Ar36_He4_to_Ca40_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ar36_to_Ca40_starlib_data::log_t9, - He4_Ar36_to_Ca40_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -7.039775869997547 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.935721252509254 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -7.039775869997547 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.935721252509254 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + K39_p_to_Ca40_starlib_data::log_t9, + K39_p_to_Ca40_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_K39_to_Ca40_starlib_data::log_t9, - p_K39_to_Ca40_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + K39_p_to_Ca40_starlib_data::log_t9, + K39_p_to_Ca40_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_K39_to_Ca40_starlib_data::log_t9, - p_K39_to_Ca40_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -8.32817806400366 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.07357248523868 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -8.32817806400366 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.07357248523868 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Sc43_p_to_He4_Ca40_starlib_data::log_t9, + Sc43_p_to_He4_Ca40_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Sc43_to_He4_Ca40_starlib_data::log_t9, - p_Sc43_to_He4_Ca40_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Sc43_p_to_He4_Ca40_starlib_data::log_t9, + Sc43_p_to_He4_Ca40_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Sc43_to_He4_Ca40_starlib_data::log_t9, - p_Sc43_to_He4_Ca40_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -3.522357194003101 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.819567557884143 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -3.522357194003101 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.819567557884143 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ca40_He4_to_Ti44_starlib_data::log_t9, + Ca40_He4_to_Ti44_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ca40_to_Ti44_starlib_data::log_t9, - He4_Ca40_to_Ti44_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ca40_He4_to_Ti44_starlib_data::log_t9, + Ca40_He4_to_Ti44_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ca40_to_Ti44_starlib_data::log_t9, - He4_Ca40_to_Ti44_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -5.127113869992141 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.950664648348603 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -5.127113869992141 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.950664648348603 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Sc43_p_to_Ti44_starlib_data::log_t9, + Sc43_p_to_Ti44_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Sc43_to_Ti44_starlib_data::log_t9, - p_Sc43_to_Ti44_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Sc43_p_to_Ti44_starlib_data::log_t9, + Sc43_p_to_Ti44_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_Sc43_to_Ti44_starlib_data::log_t9, - p_Sc43_to_Ti44_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -8.649471063995243 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.77023220623275 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -8.649471063995243 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.77023220623275 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + V47_log_pf - He4_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dHe4_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - He4_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dHe4_log_pf_dT9 - dTi44_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + V47_p_to_He4_Ti44_starlib_data::log_t9, + V47_p_to_He4_Ti44_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_V47_to_He4_Ti44_starlib_data::log_t9, - p_V47_to_He4_Ti44_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + V47_p_to_He4_Ti44_starlib_data::log_t9, + V47_p_to_He4_Ti44_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_V47_to_He4_Ti44_starlib_data::log_t9, - p_V47_to_He4_Ti44_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -0.4055851939957223 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 0.1166883815247219 + Q_kBT + net_log_pf + log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -0.4055851939957223 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 0.1166883815247219 + Q_kBT + net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 0.0 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cr48 --> He4 + Ti44 - // Cr48 --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ti44_He4_to_Cr48_starlib_data::log_t9, + Ti44_He4_to_Cr48_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ti44_to_Cr48_starlib_data::log_t9, - He4_Ti44_to_Cr48_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ti44_He4_to_Cr48_starlib_data::log_t9, + Ti44_He4_to_Cr48_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - He4_Ti44_to_Cr48_starlib_data::log_t9, - He4_Ti44_to_Cr48_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -7.6973158699968405 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 24.963264658324956 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -7.6973158699968405 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 24.963264658324956 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cr48 --> p + V47 - // Cr48 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + V47_p_to_Cr48_starlib_data::log_t9, + V47_p_to_Cr48_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_V47_to_Cr48_starlib_data::log_t9, - p_V47_to_Cr48_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + V47_p_to_Cr48_starlib_data::log_t9, + V47_p_to_Cr48_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - p_V47_to_Cr48_starlib_data::log_t9, - p_V47_to_Cr48_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -8.102901063992563 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.079953039849677 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -8.102901063992563 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.079953039849677 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_to_n_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_n_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe53 --> n + Fe52 - // Fe54 --> n + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe52_log_pf - Fe53_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe52_log_pf_dT9 - dFe53_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe53_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe53_log_pf_dT9 - dFe54_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe52_n_to_Fe53_starlib_data::log_t9, + Fe52_n_to_Fe53_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Fe53_to_Fe54_starlib_data::log_t9, - n_Fe53_to_Fe54_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe52_n_to_Fe53_starlib_data::log_t9, + Fe52_n_to_Fe53_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Fe53_to_Fe54_starlib_data::log_t9, - n_Fe53_to_Fe54_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -10.686718099998421 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 21.619397427096526 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -13.378418100002976 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.778945367634943 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_n_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe53_to_n_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 --> n + Fe53 - // Fe53 --> n + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe53_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe53_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe52_log_pf - Fe53_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe52_log_pf_dT9 - dFe53_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe53_n_to_Fe54_starlib_data::log_t9, + Fe53_n_to_Fe54_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Fe52_to_Fe53_starlib_data::log_t9, - n_Fe52_to_Fe53_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe53_n_to_Fe54_starlib_data::log_t9, + Fe53_n_to_Fe54_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Fe52_to_Fe53_starlib_data::log_t9, - n_Fe52_to_Fe53_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -13.378418100002976 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.778945367634943 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -10.686718099998421 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 21.619397427096526 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_to_n_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe55 --> n + Fe54 - // Fe56 --> n + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe54_log_pf - Fe55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe54_log_pf_dT9 - dFe55_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dFe56_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe54_n_to_Fe55_starlib_data::log_t9, + Fe54_n_to_Fe55_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Fe55_to_Fe56_starlib_data::log_t9, - n_Fe55_to_Fe56_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe54_n_to_Fe55_starlib_data::log_t9, + Fe54_n_to_Fe55_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Fe55_to_Fe56_starlib_data::log_t9, - n_Fe55_to_Fe56_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -9.298118100000266 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 22.31351677145662 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -11.197078100005754 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.086692234523206 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe55_to_n_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 --> n + Fe55 - // Fe55 --> n + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe54_log_pf - Fe55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe54_log_pf_dT9 - dFe55_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe55_n_to_Fe56_starlib_data::log_t9, + Fe55_n_to_Fe56_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Fe54_to_Fe55_starlib_data::log_t9, - n_Fe54_to_Fe55_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Fe55_n_to_Fe56_starlib_data::log_t9, + Fe55_n_to_Fe56_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Fe54_to_Fe55_starlib_data::log_t9, - n_Fe54_to_Fe55_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -11.197078100005754 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.086692234523206 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -9.298118100000266 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 22.31351677145662 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni57 --> n + Ni56 - // Ni58 --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - Ni57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dNi57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dNi58_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni56_n_to_Ni57_starlib_data::log_t9, + Ni56_n_to_Ni57_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Ni57_to_Ni58_starlib_data::log_t9, - n_Ni57_to_Ni58_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni56_n_to_Ni57_starlib_data::log_t9, + Ni56_n_to_Ni57_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Ni57_to_Ni58_starlib_data::log_t9, - n_Ni57_to_Ni58_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -10.247718100005844 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 22.314539283996996 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -12.216218100000214 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 25.087678975583227 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> n + Ni57 - // Ni57 --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - Ni57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dNi57_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni57_n_to_Ni58_starlib_data::log_t9, + Ni57_n_to_Ni58_starlib_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Ni56_to_Ni57_starlib_data::log_t9, - n_Ni56_to_Ni57_starlib_data::log_rate); + auto p = Rates::get_p_random(); + auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( + tfactors.lnT9, + Ni57_n_to_Ni58_starlib_data::log_t9, + Ni57_n_to_Ni58_starlib_data::sigma_rate); - auto p = Rates::get_p_random(); - auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( - tfactors.lnT9, - n_Ni56_to_Ni57_starlib_data::log_t9, - n_Ni56_to_Ni57_starlib_data::sigma_rate); + // Add rate uncertainty + _rate += p * _sigma; - // Add rate uncertainty - _rate += p * _sigma; + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -12.216218100000214 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 25.087678975583227 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -10.247718100005844 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 22.314539283996996 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Add rate uncertainty term + _drate_dT += p * _dsigma_dlogT9; - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Add rate uncertainty term - _drate_dT += p * _dsigma_dlogT9; + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - part_fun::pf_cache_t pf_cache{}; + part_fun::pf_cache_t pf_cache{}; - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_C12_C12_derived + { + // Ne20_He4_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived) = drate_dT; + rate_Ne20_He4_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_C12_C12_derived) = drate_dT; + } } - } - { - // p_Na23_to_C12_C12_derived + { + // Na23_p_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Na23_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_derived) = drate_dT; + rate_Na23_p_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na23_p_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_C12_C12_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_C12_O16_derived + { + // Mg24_He4_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived) = drate_dT; + rate_Mg24_He4_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_C12_O16_derived) = drate_dT; + } } - } - { - // p_Al27_to_C12_O16_derived + { + // Al27_p_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Al27_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_derived) = drate_dT; + rate_Al27_p_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Al27_p_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_C12_O16_derived) = drate_dT; + } } - } - { - // He4_Si28_to_O16_O16_derived + { + // Si28_He4_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_derived) = drate_dT; + rate_Si28_He4_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_O16_O16_derived) = drate_dT; + } } - } - { - // p_P31_to_O16_O16_derived + { + // P31_p_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_P31_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_derived) = drate_dT; + rate_P31_p_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_P31_p_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_O16_O16_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // N13_to_p_C12_derived + { + // N13_to_p_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_derived + { + // Mn51_p_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Mn51_p_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_derived + { + // Fe52_to_p_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Co55_to_He4_Mn51_derived + { + // Co55_to_He4_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // He4_Ni56_to_p_Cu59_derived + { + // Ni56_He4_to_p_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); - } + log_scor = rate_eval.log_screen(k_He4_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); + } #endif - rate_He4_Ni56_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ni56_to_p_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_p_Cu59_derived) = drate_dT; + rate_Ni56_He4_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_He4_to_p_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_p_Cu59_derived) = drate_dT; + } } - } - { - // Cu59_to_He4_Co55_derived + { + // Cu59_to_He4_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cu59_to_He4_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_He4_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cu59_to_He4_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_He4_Co55_derived) = drate_dT; + } } - } - { - // Zn60_to_p_Cu59_derived + { + // Zn60_to_p_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Zn60_to_p_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_p_Cu59_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Zn60_to_p_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_p_Cu59_derived) = drate_dT; + } } - } - { - // Zn60_to_He4_Ni56_derived + { + // Zn60_to_He4_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_He4_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Zn60_to_He4_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_He4_Ni56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_He4_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Zn60_to_He4_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_He4_Ni56_derived) = drate_dT; + } } - } - { - // Mg24_to_C12_C12_derived + { + // Mg24_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + } } - } - { - // S32_to_O16_O16_derived + { + // S32_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + } } - } - { - // Si28_to_C12_O16_derived + { + // Si28_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + } } - } - { - // p_Fe54_to_He4_Mn51_derived + { + // Fe54_p_to_He4_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); - } + log_scor = rate_eval.log_screen(k_p_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); + } #endif - rate_p_Fe54_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Fe54_to_He4_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_He4_Mn51_derived) = drate_dT; + rate_Fe54_p_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_p_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_to_He4_Mn51_derived) = drate_dT; + } } - } - { - // p_Fe56_to_n_Co56_derived + { + // Fe56_p_to_n_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); - } + log_scor = rate_eval.log_screen(k_p_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); + } #endif - rate_p_Fe56_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Fe56_to_n_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_n_Co56_derived) = drate_dT; + rate_Fe56_p_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_p_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_to_n_Co56_derived) = drate_dT; + } } - } - { - // He4_Fe54_to_p_Co57_derived + { + // Fe54_He4_to_p_Co57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Fe54_to_p_Co57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_p_Co57_derived) = drate_dT; + rate_Fe54_He4_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_He4_to_p_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_p_Co57_derived) = drate_dT; + } } - } - { - // p_Ni58_to_He4_Co55_derived + { + // Ni58_p_to_He4_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); - } + log_scor = rate_eval.log_screen(k_p_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); + } #endif - rate_p_Ni58_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Ni58_to_He4_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_He4_Co55_derived) = drate_dT; + rate_Ni58_p_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_p_to_He4_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_to_He4_Co55_derived) = drate_dT; + } } - } - { - // Co55_to_p_Fe54_derived + { + // Co55_to_p_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_p_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co55_to_p_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_p_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_to_p_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_derived) = drate_dT; + } } - } - { - // Co56_to_n_Co55_derived + { + // Co56_to_n_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co56_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + } } - } - { - // Co57_to_n_Co56_derived + { + // Co57_to_n_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + } } - } - { - // Co57_to_p_Fe56_derived + { + // Co57_to_p_Fe56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_p_Fe56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co57_to_p_Fe56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_p_Fe56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_to_p_Fe56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_derived) = drate_dT; + } } - } - { - // p_Co56_to_n_Ni56_derived + { + // Co56_p_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); - } + log_scor = rate_eval.log_screen(k_p_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); + } #endif - rate_p_Co56_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co56_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co56_to_n_Ni56_derived) = drate_dT; + rate_Co56_p_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_p_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_to_n_Ni56_derived) = drate_dT; + } } - } - { - // Ni58_to_p_Co57_derived + { + // Ni58_to_p_Co57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_p_Co57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_p_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_derived) = drate_dT; + } } - } - { - // Ni58_to_He4_Fe54_derived + { + // Ni58_to_He4_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_He4_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_He4_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + } } - } - { - // He4_Co56_to_n_Cu59_derived + { + // Co56_He4_to_n_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); - } + log_scor = rate_eval.log_screen(k_He4_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); + } #endif - rate_He4_Co56_to_n_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Co56_to_n_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co56_to_n_Cu59_derived) = drate_dT; + rate_Co56_He4_to_n_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_He4_to_n_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_He4_to_n_Cu59_derived) = drate_dT; + } } - } - { - // Cu59_to_p_Ni58_derived + { + // Cu59_to_p_Ni58_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_p_Ni58_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cu59_to_p_Ni58_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_p_Ni58_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_p_Ni58_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cu59_to_p_Ni58_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_p_Ni58_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_derived + { + // Ti44_He4_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_derived) = drate_dT; + rate_Ti44_He4_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } - } - { - // Fe54_to_n_Fe53_derived + { + // Fe53_to_n_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe54_to_n_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_to_n_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; + } } - } - { - // Fe53_to_n_Fe52_derived + { + // Fe54_to_n_Fe53_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe53_to_n_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_to_n_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; + } } - } - { - // Fe56_to_n_Fe55_derived + { + // Fe55_to_n_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe56_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_to_n_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; + } } - } - { - // Fe55_to_n_Fe54_derived + { + // Fe56_to_n_Fe55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe55_to_n_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; + } } - } - { - // Ni58_to_n_Ni57_derived + { + // Ni57_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; + } } - } - { - // Ni57_to_n_Ni56_derived + { + // Ni58_to_n_Ni57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived) = drate_dT; + } } - } + } + } #endif diff --git a/networks/he-burn/ase-iron-starlib/modified_rates.H b/networks/he-burn/ase-iron-starlib/modified_rates.H index 1c47fb8c7..5b68a0767 100644 --- a/networks/he-burn/ase-iron-starlib/modified_rates.H +++ b/networks/he-burn/ase-iron-starlib/modified_rates.H @@ -12,6 +12,9 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +22,7 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) + // represents the sequence: c12(c12,n)mg23(n,γ)mg24 rate_C12_C12_to_n_Mg23_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -28,22 +32,24 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) + // represents the sequence: o16(o16,n)s31(n,γ)s32 rate_O16_O16_to_n_S31_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) + // represents the sequence: o16(c12,n)si27(n,γ)si28 - rate_C12_O16_to_n_Si27_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -89,7 +95,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -99,10 +105,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } diff --git a/networks/he-burn/ase-iron-starlib/pynucastro-info.txt b/networks/he-burn/ase-iron-starlib/pynucastro-info.txt index 858109df5..29560334b 100644 --- a/networks/he-burn/ase-iron-starlib/pynucastro-info.txt +++ b/networks/he-burn/ase-iron-starlib/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0-18-g20abc8426 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/ase-iron-starlib/reaclib_rates.H b/networks/he-burn/ase-iron-starlib/reaclib_rates.H index 0ac33fd66..3c11065d7 100644 --- a/networks/he-burn/ase-iron-starlib/reaclib_rates.H +++ b/networks/he-burn/ase-iron-starlib/reaclib_rates.H @@ -8,21 +8,24 @@ #include #include -using namespace Rates; -using namespace Species; +namespace reaclib_rates { -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + using namespace Rates; + using namespace Species; - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; -} + } +} #endif diff --git a/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H b/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H new file mode 100644 index 000000000..774628385 --- /dev/null +++ b/networks/he-burn/ase-iron-starlib/tabular_weak_rates.H @@ -0,0 +1,84 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_to_n_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/he-burn/ase-iron-starlib/temperature_table_rates.H b/networks/he-burn/ase-iron-starlib/temperature_table_rates.H index c51e30aa1..5a650040f 100644 --- a/networks/he-burn/ase-iron-starlib/temperature_table_rates.H +++ b/networks/he-burn/ase-iron-starlib/temperature_table_rates.H @@ -9,8 +9,6 @@ using namespace amrex::literals; -using namespace Rates; - // temperature / rate tabulation for C12 + C12 --> p + Na23 namespace C12_C12_to_p_Na23_starlib_data { @@ -129,7 +127,7 @@ namespace C12_C12_to_He4_Ne20_starlib_data { // temperature / rate tabulation for O16 + C12 --> p + Al27 -namespace C12_O16_to_p_Al27_starlib_data { +namespace O16_C12_to_p_Al27_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.995732273553991 , -2.8134107167600364 , -2.659260036932778 , @@ -184,7 +182,7 @@ namespace C12_O16_to_p_Al27_starlib_data { // temperature / rate tabulation for O16 + C12 --> He4 + Mg24 -namespace C12_O16_to_He4_Mg24_starlib_data { +namespace O16_C12_to_He4_Mg24_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.995732273553991 , -2.8134107167600364 , -2.659260036932778 , @@ -410,7 +408,7 @@ namespace He4_He4_He4_to_C12_starlib_data { // temperature / rate tabulation for C12 + p --> N13 -namespace p_C12_to_N13_starlib_data { +namespace C12_p_to_N13_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -5.115995809754082 , -4.961845129926823 , -4.8283137373023015 , @@ -483,7 +481,7 @@ namespace p_C12_to_N13_starlib_data { // temperature / rate tabulation for C12 + He4 --> O16 -namespace He4_C12_to_O16_starlib_data { +namespace C12_He4_to_O16_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -3.2188758248682006 , -2.995732273553991 , -2.8134107167600364 , @@ -541,7 +539,7 @@ namespace He4_C12_to_O16_starlib_data { // temperature / rate tabulation for N13 + He4 --> p + O16 -namespace He4_N13_to_p_O16_starlib_data { +namespace N13_He4_to_p_O16_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -617,7 +615,7 @@ namespace He4_N13_to_p_O16_starlib_data { // temperature / rate tabulation for O16 + He4 --> Ne20 -namespace He4_O16_to_Ne20_starlib_data { +namespace O16_He4_to_Ne20_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -693,7 +691,7 @@ namespace He4_O16_to_Ne20_starlib_data { // temperature / rate tabulation for Ne20 + He4 --> Mg24 -namespace He4_Ne20_to_Mg24_starlib_data { +namespace Ne20_He4_to_Mg24_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -760,7 +758,7 @@ namespace He4_Ne20_to_Mg24_starlib_data { // temperature / rate tabulation for Na23 + p --> He4 + Ne20 -namespace p_Na23_to_He4_Ne20_starlib_data { +namespace Na23_p_to_He4_Ne20_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -827,7 +825,7 @@ namespace p_Na23_to_He4_Ne20_starlib_data { // temperature / rate tabulation for Na23 + p --> Mg24 -namespace p_Na23_to_Mg24_starlib_data { +namespace Na23_p_to_Mg24_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -894,7 +892,7 @@ namespace p_Na23_to_Mg24_starlib_data { // temperature / rate tabulation for Mg24 + He4 --> Si28 -namespace He4_Mg24_to_Si28_starlib_data { +namespace Mg24_He4_to_Si28_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -970,7 +968,7 @@ namespace He4_Mg24_to_Si28_starlib_data { // temperature / rate tabulation for Al27 + p --> He4 + Mg24 -namespace p_Al27_to_He4_Mg24_starlib_data { +namespace Al27_p_to_He4_Mg24_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -1037,7 +1035,7 @@ namespace p_Al27_to_He4_Mg24_starlib_data { // temperature / rate tabulation for Al27 + p --> Si28 -namespace p_Al27_to_Si28_starlib_data { +namespace Al27_p_to_Si28_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -1104,7 +1102,7 @@ namespace p_Al27_to_Si28_starlib_data { // temperature / rate tabulation for Si28 + He4 --> S32 -namespace He4_Si28_to_S32_starlib_data { +namespace Si28_He4_to_S32_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.8134107167600364 , -2.659260036932778 , -2.5257286443082556 , @@ -1159,7 +1157,7 @@ namespace He4_Si28_to_S32_starlib_data { // temperature / rate tabulation for P31 + p --> He4 + Si28 -namespace p_P31_to_He4_Si28_starlib_data { +namespace P31_p_to_He4_Si28_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -1226,7 +1224,7 @@ namespace p_P31_to_He4_Si28_starlib_data { // temperature / rate tabulation for P31 + p --> S32 -namespace p_P31_to_S32_starlib_data { +namespace P31_p_to_S32_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -1293,7 +1291,7 @@ namespace p_P31_to_S32_starlib_data { // temperature / rate tabulation for Cr48 + He4 --> p + Mn51 -namespace He4_Cr48_to_p_Mn51_starlib_data { +namespace Cr48_He4_to_p_Mn51_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.2072749131897207 , -2.120263536200091 , -2.0402208285265546 , @@ -1342,7 +1340,7 @@ namespace He4_Cr48_to_p_Mn51_starlib_data { // temperature / rate tabulation for Cr48 + He4 --> Fe52 -namespace He4_Cr48_to_Fe52_starlib_data { +namespace Cr48_He4_to_Fe52_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.2072749131897207 , -2.120263536200091 , -2.0402208285265546 , @@ -1391,7 +1389,7 @@ namespace He4_Cr48_to_Fe52_starlib_data { // temperature / rate tabulation for Mn51 + p --> Fe52 -namespace p_Mn51_to_Fe52_starlib_data { +namespace Mn51_p_to_Fe52_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -1466,7 +1464,7 @@ namespace p_Mn51_to_Fe52_starlib_data { // temperature / rate tabulation for Mn51 + He4 --> Co55 -namespace He4_Mn51_to_Co55_starlib_data { +namespace Mn51_He4_to_Co55_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -1.8325814637483102 , -1.7147984280919266 , -1.6094379124341003 , @@ -1512,7 +1510,7 @@ namespace He4_Mn51_to_Co55_starlib_data { // temperature / rate tabulation for Fe52 + He4 --> p + Co55 -namespace He4_Fe52_to_p_Co55_starlib_data { +namespace Fe52_He4_to_p_Co55_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -1.8325814637483102 , -1.7147984280919266 , -1.6094379124341003 , @@ -1562,7 +1560,7 @@ namespace He4_Fe52_to_p_Co55_starlib_data { // temperature / rate tabulation for Fe52 + He4 --> Ni56 -namespace He4_Fe52_to_Ni56_starlib_data { +namespace Fe52_He4_to_Ni56_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -1.8325814637483102 , -1.7147984280919266 , -1.6094379124341003 , @@ -1612,7 +1610,7 @@ namespace He4_Fe52_to_Ni56_starlib_data { // temperature / rate tabulation for Co55 + p --> Ni56 -namespace p_Co55_to_Ni56_starlib_data { +namespace Co55_p_to_Ni56_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -1687,7 +1685,7 @@ namespace p_Co55_to_Ni56_starlib_data { // temperature / rate tabulation for Co55 + He4 --> Cu59 -namespace He4_Co55_to_Cu59_starlib_data { +namespace Co55_He4_to_Cu59_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -1.8325814637483102 , -1.7147984280919266 , -1.6094379124341003 , @@ -1737,7 +1735,7 @@ namespace He4_Co55_to_Cu59_starlib_data { // temperature / rate tabulation for Ni56 + He4 --> Zn60 -namespace He4_Ni56_to_Zn60_starlib_data { +namespace Ni56_He4_to_Zn60_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -1.8325814637483102 , -1.7147984280919266 , -1.6094379124341003 , @@ -1787,7 +1785,7 @@ namespace He4_Ni56_to_Zn60_starlib_data { // temperature / rate tabulation for Cu59 + p --> He4 + Ni56 -namespace p_Cu59_to_He4_Ni56_starlib_data { +namespace Cu59_p_to_He4_Ni56_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -1862,7 +1860,7 @@ namespace p_Cu59_to_He4_Ni56_starlib_data { // temperature / rate tabulation for Cu59 + p --> Zn60 -namespace p_Cu59_to_Zn60_starlib_data { +namespace Cu59_p_to_Zn60_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -2027,7 +2025,7 @@ namespace O16_O16_to_n_S31_starlib_data { // temperature / rate tabulation for O16 + C12 --> n + Si27 -namespace C12_O16_to_n_Si27_starlib_data { +namespace O16_C12_to_n_Si27_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.659260036932778 , -2.5257286443082556 , -2.4079456086518722 , @@ -2082,7 +2080,7 @@ namespace C12_O16_to_n_Si27_starlib_data { // temperature / rate tabulation for Mn51 + He4 --> p + Fe54 -namespace He4_Mn51_to_p_Fe54_starlib_data { +namespace Mn51_He4_to_p_Fe54_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -1.8325814637483102 , -1.7147984280919266 , -1.6094379124341003 , @@ -2128,7 +2126,7 @@ namespace He4_Mn51_to_p_Fe54_starlib_data { // temperature / rate tabulation for Fe54 + p --> Co55 -namespace p_Fe54_to_Co55_starlib_data { +namespace Fe54_p_to_Co55_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -2195,7 +2193,7 @@ namespace p_Fe54_to_Co55_starlib_data { // temperature / rate tabulation for Fe56 + p --> Co57 -namespace p_Fe56_to_Co57_starlib_data { +namespace Fe56_p_to_Co57_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -2262,7 +2260,7 @@ namespace p_Fe56_to_Co57_starlib_data { // temperature / rate tabulation for Fe54 + He4 --> Ni58 -namespace He4_Fe54_to_Ni58_starlib_data { +namespace Fe54_He4_to_Ni58_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -1.8325814637483102 , -1.7147984280919266 , -1.6094379124341003 , @@ -2308,7 +2306,7 @@ namespace He4_Fe54_to_Ni58_starlib_data { // temperature / rate tabulation for Co55 + n --> Co56 -namespace n_Co55_to_Co56_starlib_data { +namespace Co55_n_to_Co56_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -2384,7 +2382,7 @@ namespace n_Co55_to_Co56_starlib_data { // temperature / rate tabulation for Co56 + n --> p + Fe56 -namespace n_Co56_to_p_Fe56_starlib_data { +namespace Co56_n_to_p_Fe56_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -2460,7 +2458,7 @@ namespace n_Co56_to_p_Fe56_starlib_data { // temperature / rate tabulation for Co56 + n --> Co57 -namespace n_Co56_to_Co57_starlib_data { +namespace Co56_n_to_Co57_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -2536,7 +2534,7 @@ namespace n_Co56_to_Co57_starlib_data { // temperature / rate tabulation for Co57 + p --> He4 + Fe54 -namespace p_Co57_to_He4_Fe54_starlib_data { +namespace Co57_p_to_He4_Fe54_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -2603,7 +2601,7 @@ namespace p_Co57_to_He4_Fe54_starlib_data { // temperature / rate tabulation for Co57 + p --> Ni58 -namespace p_Co57_to_Ni58_starlib_data { +namespace Co57_p_to_Ni58_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -2670,7 +2668,7 @@ namespace p_Co57_to_Ni58_starlib_data { // temperature / rate tabulation for Co55 + He4 --> p + Ni58 -namespace He4_Co55_to_p_Ni58_starlib_data { +namespace Co55_He4_to_p_Ni58_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -1.8325814637483102 , -1.7147984280919266 , -1.6094379124341003 , @@ -2716,7 +2714,7 @@ namespace He4_Co55_to_p_Ni58_starlib_data { // temperature / rate tabulation for Ni56 + n --> p + Co56 -namespace n_Ni56_to_p_Co56_starlib_data { +namespace Ni56_n_to_p_Co56_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -2792,7 +2790,7 @@ namespace n_Ni56_to_p_Co56_starlib_data { // temperature / rate tabulation for Ni58 + p --> Cu59 -namespace p_Ni58_to_Cu59_starlib_data { +namespace Ni58_p_to_Cu59_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -2859,7 +2857,7 @@ namespace p_Ni58_to_Cu59_starlib_data { // temperature / rate tabulation for Cu59 + n --> He4 + Co56 -namespace n_Cu59_to_He4_Co56_starlib_data { +namespace Cu59_n_to_He4_Co56_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -2935,7 +2933,7 @@ namespace n_Cu59_to_He4_Co56_starlib_data { // temperature / rate tabulation for S32 + He4 --> Ar36 -namespace He4_S32_to_Ar36_starlib_data { +namespace S32_He4_to_Ar36_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.8134107167600364 , -2.659260036932778 , -2.5257286443082556 , @@ -2988,76 +2986,9 @@ namespace He4_S32_to_Ar36_starlib_data { } -// temperature / rate tabulation for Cl35 + p --> Ar36 - -namespace p_Cl35_to_Ar36_starlib_data { - - inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { - -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , - -4.3428059215206005 , -4.268697949366879 , -4.199705077879927 , - -4.135166556742356 , -4.017383521085972 , -3.912023005428146 , - -3.6888794541139363 , -3.506557897319982 , -3.2188758248682006 , - -2.995732273553991 , -2.8134107167600364 , -2.659260036932778 , - -2.5257286443082556 , -2.4079456086518722 , -2.3025850929940455 , - -2.2072749131897207 , -2.120263536200091 , -2.0402208285265546 , - -1.9661128563728327 , -1.8971199848858813 , -1.8325814637483102 , - -1.7147984280919266 , -1.6094379124341003 , -1.3862943611198906 , - -1.2039728043259361 , -1.0498221244986778 , -0.916290731874155 , - -0.7985076962177716 , -0.6931471805599453 , -0.5108256237659907 , - -0.35667494393873245, -0.2231435513142097 , -0.10536051565782628, - 0. , 0.22314355131420976, 0.4054651081081644 , - 0.5596157879354227 , 0.6931471805599453 , 0.9162907318741551 , - 1.0986122886681098 , 1.252762968495368 , 1.3862943611198906 , - 1.6094379124341003 , 1.791759469228055 , 1.9459101490553132 , - 2.0794415416798357 , 2.1972245773362196 , 2.302585092994046 - }; - - inline AMREX_GPU_DEVICE amrex::Array1D log_rate = { - -91.9891825756718 , -87.01580738452944 , -82.88311301693247 , - -79.39837562303615 , -76.41793884498445 , -73.84359620139755 , - -71.5945694935276 , -67.86323369344129 , -64.88971788451192 , - -59.45245726282993 , -55.11276052914134 , -47.756549957119674 , - -42.55853319967995 , -37.50514405983477 , -33.322973838831174 , - -30.11273287482003 , -27.614163998862125 , -25.600769818439485 , - -23.912582859573067 , -22.43695377075431 , -21.098104751512814 , - -19.84032508475381 , -18.63424532048625 , -17.482237207437077 , - -15.374255356082857 , -13.513925580343502 , -9.723167998412846 , - -6.90785528398247 , -4.800455409173905 , -3.18495760666474 , - -1.9112189092653828, -0.8804410789804578, 0.6876319998718352, - 1.8394379045447966, 2.7343675094195836, 3.457892725338701 , - 4.059235385108533 , 5.200704537681037 , 6.003887067106539 , - 6.596736341165919 , 7.052721049232323 , 7.708859601047175 , - 8.166500319155052 , 8.507344855361422 , 8.772145439245099 , - 9.156834104453042 , 9.439068301584292 , 9.667132107249687 , - 9.85114107216392 , 10.009198006958242 , 10.163541457870435 - }; - - // sigma uncertainty - inline AMREX_GPU_DEVICE amrex::Array1D sigma_rate = { - 0.7902738912906682 , 0.7357276280950638 , 0.6916460544336782 , - 0.6549259677397475 , 0.6243328645595856 , 0.598836501088704 , - 0.5771750043075246 , 0.5417427264007123 , 0.5140205146625099 , - 0.4485245975686114 , 0.7714961469709216 , 1.5299617109323036 , - 0.9130856009252067 , 0.6376344706296865 , 0.6157260335913605 , - 0.5738004229273791 , 0.5312163134137248 , 0.49041881398832804, - 0.44916296337388373, 0.40746311077083736, 0.36741704047063445, - 0.33361100434018065, 0.30968815271439554, 0.29266961396282004, - 0.26390154378637753, 0.233489843368354 , 0.1839868361130158 , - 0.17898265552843995, 0.1764711431157791 , 0.16974277458709455, - 0.16041672140590466, 0.15100287353652742, 0.1319050708799386 , - 0.11511280710050467, 0.09984533496971612, 0.08709470685093373, - 0.0769610411361284 , 0.0620353909194527 , 0.05638033343610769, - 0.05354076692802976, 0.05164323315183839, 0.04879016416943204, - 0.04592893188839973, 0.04401688541677426, 0.04210117601863533, - 0.04018178963283176, 0.04018178963283176, 0.04018178963283176, - 0.04018178963283176, 0.04018178963283176, 0.04018178963283176 - }; - -} - // temperature / rate tabulation for Cl35 + p --> He4 + S32 -namespace p_Cl35_to_He4_S32_starlib_data { +namespace Cl35_p_to_He4_S32_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , @@ -3131,9 +3062,76 @@ namespace p_Cl35_to_He4_S32_starlib_data { } +// temperature / rate tabulation for Cl35 + p --> Ar36 + +namespace Cl35_p_to_Ar36_starlib_data { + + inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { + -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , + -4.3428059215206005 , -4.268697949366879 , -4.199705077879927 , + -4.135166556742356 , -4.017383521085972 , -3.912023005428146 , + -3.6888794541139363 , -3.506557897319982 , -3.2188758248682006 , + -2.995732273553991 , -2.8134107167600364 , -2.659260036932778 , + -2.5257286443082556 , -2.4079456086518722 , -2.3025850929940455 , + -2.2072749131897207 , -2.120263536200091 , -2.0402208285265546 , + -1.9661128563728327 , -1.8971199848858813 , -1.8325814637483102 , + -1.7147984280919266 , -1.6094379124341003 , -1.3862943611198906 , + -1.2039728043259361 , -1.0498221244986778 , -0.916290731874155 , + -0.7985076962177716 , -0.6931471805599453 , -0.5108256237659907 , + -0.35667494393873245, -0.2231435513142097 , -0.10536051565782628, + 0. , 0.22314355131420976, 0.4054651081081644 , + 0.5596157879354227 , 0.6931471805599453 , 0.9162907318741551 , + 1.0986122886681098 , 1.252762968495368 , 1.3862943611198906 , + 1.6094379124341003 , 1.791759469228055 , 1.9459101490553132 , + 2.0794415416798357 , 2.1972245773362196 , 2.302585092994046 + }; + + inline AMREX_GPU_DEVICE amrex::Array1D log_rate = { + -91.9891825756718 , -87.01580738452944 , -82.88311301693247 , + -79.39837562303615 , -76.41793884498445 , -73.84359620139755 , + -71.5945694935276 , -67.86323369344129 , -64.88971788451192 , + -59.45245726282993 , -55.11276052914134 , -47.756549957119674 , + -42.55853319967995 , -37.50514405983477 , -33.322973838831174 , + -30.11273287482003 , -27.614163998862125 , -25.600769818439485 , + -23.912582859573067 , -22.43695377075431 , -21.098104751512814 , + -19.84032508475381 , -18.63424532048625 , -17.482237207437077 , + -15.374255356082857 , -13.513925580343502 , -9.723167998412846 , + -6.90785528398247 , -4.800455409173905 , -3.18495760666474 , + -1.9112189092653828, -0.8804410789804578, 0.6876319998718352, + 1.8394379045447966, 2.7343675094195836, 3.457892725338701 , + 4.059235385108533 , 5.200704537681037 , 6.003887067106539 , + 6.596736341165919 , 7.052721049232323 , 7.708859601047175 , + 8.166500319155052 , 8.507344855361422 , 8.772145439245099 , + 9.156834104453042 , 9.439068301584292 , 9.667132107249687 , + 9.85114107216392 , 10.009198006958242 , 10.163541457870435 + }; + + // sigma uncertainty + inline AMREX_GPU_DEVICE amrex::Array1D sigma_rate = { + 0.7902738912906682 , 0.7357276280950638 , 0.6916460544336782 , + 0.6549259677397475 , 0.6243328645595856 , 0.598836501088704 , + 0.5771750043075246 , 0.5417427264007123 , 0.5140205146625099 , + 0.4485245975686114 , 0.7714961469709216 , 1.5299617109323036 , + 0.9130856009252067 , 0.6376344706296865 , 0.6157260335913605 , + 0.5738004229273791 , 0.5312163134137248 , 0.49041881398832804, + 0.44916296337388373, 0.40746311077083736, 0.36741704047063445, + 0.33361100434018065, 0.30968815271439554, 0.29266961396282004, + 0.26390154378637753, 0.233489843368354 , 0.1839868361130158 , + 0.17898265552843995, 0.1764711431157791 , 0.16974277458709455, + 0.16041672140590466, 0.15100287353652742, 0.1319050708799386 , + 0.11511280710050467, 0.09984533496971612, 0.08709470685093373, + 0.0769610411361284 , 0.0620353909194527 , 0.05638033343610769, + 0.05354076692802976, 0.05164323315183839, 0.04879016416943204, + 0.04592893188839973, 0.04401688541677426, 0.04210117601863533, + 0.04018178963283176, 0.04018178963283176, 0.04018178963283176, + 0.04018178963283176, 0.04018178963283176, 0.04018178963283176 + }; + +} + // temperature / rate tabulation for Ar36 + He4 --> Ca40 -namespace He4_Ar36_to_Ca40_starlib_data { +namespace Ar36_He4_to_Ca40_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.8134107167600364 , -2.659260036932778 , -2.5257286443082556 , @@ -3186,76 +3184,9 @@ namespace He4_Ar36_to_Ca40_starlib_data { } -// temperature / rate tabulation for K39 + p --> Ca40 - -namespace p_K39_to_Ca40_starlib_data { - - inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { - -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , - -4.3428059215206005 , -4.268697949366879 , -4.199705077879927 , - -4.135166556742356 , -4.017383521085972 , -3.912023005428146 , - -3.6888794541139363 , -3.506557897319982 , -3.2188758248682006 , - -2.995732273553991 , -2.8134107167600364 , -2.659260036932778 , - -2.5257286443082556 , -2.4079456086518722 , -2.3025850929940455 , - -2.2072749131897207 , -2.120263536200091 , -2.0402208285265546 , - -1.9661128563728327 , -1.8971199848858813 , -1.8325814637483102 , - -1.7147984280919266 , -1.6094379124341003 , -1.3862943611198906 , - -1.2039728043259361 , -1.0498221244986778 , -0.916290731874155 , - -0.7985076962177716 , -0.6931471805599453 , -0.5108256237659907 , - -0.35667494393873245, -0.2231435513142097 , -0.10536051565782628, - 0. , 0.22314355131420976, 0.4054651081081644 , - 0.5596157879354227 , 0.6931471805599453 , 0.9162907318741551 , - 1.0986122886681098 , 1.252762968495368 , 1.3862943611198906 , - 1.6094379124341003 , 1.791759469228055 , 1.9459101490553132 , - 2.0794415416798357 , 2.1972245773362196 , 2.302585092994046 - }; - - inline AMREX_GPU_DEVICE amrex::Array1D log_rate = { - -104.4762395831701 , -100.73041177718527 , -97.5148897844155 , - -94.80363457181191 , -92.42581527273471 , -90.35891057633486 , - -88.49953763997485 , -84.19354705249242 , -78.92277143423352 , - -68.42626981336012 , -61.24593551346876 , -52.29316741247299 , - -46.787547794973975 , -42.90927520717612 , -39.651942877654605 , - -36.13480462043487 , -32.97349937826235 , -30.33065681842974 , - -28.086096724590046 , -26.14194456016563 , -24.40298735327558 , - -22.79473920897707 , -21.30558746241747 , -19.945777507952716 , - -17.584732764760748 , -15.655620288133376 , -12.100812134872681 , - -9.673328666328013 , -7.824546135897974 , -6.292569639891903 , - -4.9557210632188635, -3.7792418941943278, -1.8407396514497736, - -0.3787744928551199, 0.7414610408384961, 1.6227489264937727, - 2.336986519711378 , 3.654288009344317 , 4.586904377181199 , - 5.295312857527738 , 5.857361562584502 , 6.700854103213792 , - 7.310550158534422 , 7.78155595923534 , 8.158516244806831 , - 8.726805608446096 , 9.117347505127018 , 9.383452989684827 , - 9.552510629712033 , 9.642122788401721 , 9.662052731249666 - }; - - // sigma uncertainty - inline AMREX_GPU_DEVICE amrex::Array1D sigma_rate = { - 3.971423348709594 , 3.9854593235013285 , 4.024815832903268 , - 4.0314047624482265 , 3.9417759635774936 , 3.6906279246480533 , - 3.251536607107749 , 2.0701484947682434 , 1.1869283697166775 , - 0.920681080175448 , 0.9218751101680556 , 0.9042181506398859 , - 1.1006102913307827 , 1.5857597850795233 , 1.989380063311179 , - 2.0751824847594524 , 1.9589673882119614 , 1.827448311636562 , - 1.7067460949010984 , 1.578153622394334 , 1.441255919193865 , - 1.3069805544001651 , 1.1850957485562468 , 1.0794294692513358 , - 0.9194856227706742 , 0.8193392057977047 , 0.7428892724547593 , - 0.7756484020716891 , 0.8051356825079926 , 0.7875478559814296 , - 0.7323678937132266 , 0.664233170395303 , 0.5458065926612362 , - 0.46561903092791146, 0.4134332777573413 , 0.37912113276856246, - 0.35346981298978397, 0.30821972366932904, 0.27155269052189734, - 0.23980399220731693, 0.21268909341035092, 0.17142911562753102, - 0.142367241286922 , 0.12133228516752496, 0.10705907229340778, - 0.09349034308733897, 0.09166718852582387, 0.0944006754214843 , - 0.0980337402713654 , 0.10165365372649982, 0.10526051065749294 - }; - -} - // temperature / rate tabulation for K39 + p --> He4 + Ar36 -namespace p_K39_to_He4_Ar36_starlib_data { +namespace K39_p_to_He4_Ar36_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3320,9 +3251,76 @@ namespace p_K39_to_He4_Ar36_starlib_data { } +// temperature / rate tabulation for K39 + p --> Ca40 + +namespace K39_p_to_Ca40_starlib_data { + + inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { + -4.605170185988091 , -4.509860006183766 , -4.422848629194137 , + -4.3428059215206005 , -4.268697949366879 , -4.199705077879927 , + -4.135166556742356 , -4.017383521085972 , -3.912023005428146 , + -3.6888794541139363 , -3.506557897319982 , -3.2188758248682006 , + -2.995732273553991 , -2.8134107167600364 , -2.659260036932778 , + -2.5257286443082556 , -2.4079456086518722 , -2.3025850929940455 , + -2.2072749131897207 , -2.120263536200091 , -2.0402208285265546 , + -1.9661128563728327 , -1.8971199848858813 , -1.8325814637483102 , + -1.7147984280919266 , -1.6094379124341003 , -1.3862943611198906 , + -1.2039728043259361 , -1.0498221244986778 , -0.916290731874155 , + -0.7985076962177716 , -0.6931471805599453 , -0.5108256237659907 , + -0.35667494393873245, -0.2231435513142097 , -0.10536051565782628, + 0. , 0.22314355131420976, 0.4054651081081644 , + 0.5596157879354227 , 0.6931471805599453 , 0.9162907318741551 , + 1.0986122886681098 , 1.252762968495368 , 1.3862943611198906 , + 1.6094379124341003 , 1.791759469228055 , 1.9459101490553132 , + 2.0794415416798357 , 2.1972245773362196 , 2.302585092994046 + }; + + inline AMREX_GPU_DEVICE amrex::Array1D log_rate = { + -104.4762395831701 , -100.73041177718527 , -97.5148897844155 , + -94.80363457181191 , -92.42581527273471 , -90.35891057633486 , + -88.49953763997485 , -84.19354705249242 , -78.92277143423352 , + -68.42626981336012 , -61.24593551346876 , -52.29316741247299 , + -46.787547794973975 , -42.90927520717612 , -39.651942877654605 , + -36.13480462043487 , -32.97349937826235 , -30.33065681842974 , + -28.086096724590046 , -26.14194456016563 , -24.40298735327558 , + -22.79473920897707 , -21.30558746241747 , -19.945777507952716 , + -17.584732764760748 , -15.655620288133376 , -12.100812134872681 , + -9.673328666328013 , -7.824546135897974 , -6.292569639891903 , + -4.9557210632188635, -3.7792418941943278, -1.8407396514497736, + -0.3787744928551199, 0.7414610408384961, 1.6227489264937727, + 2.336986519711378 , 3.654288009344317 , 4.586904377181199 , + 5.295312857527738 , 5.857361562584502 , 6.700854103213792 , + 7.310550158534422 , 7.78155595923534 , 8.158516244806831 , + 8.726805608446096 , 9.117347505127018 , 9.383452989684827 , + 9.552510629712033 , 9.642122788401721 , 9.662052731249666 + }; + + // sigma uncertainty + inline AMREX_GPU_DEVICE amrex::Array1D sigma_rate = { + 3.971423348709594 , 3.9854593235013285 , 4.024815832903268 , + 4.0314047624482265 , 3.9417759635774936 , 3.6906279246480533 , + 3.251536607107749 , 2.0701484947682434 , 1.1869283697166775 , + 0.920681080175448 , 0.9218751101680556 , 0.9042181506398859 , + 1.1006102913307827 , 1.5857597850795233 , 1.989380063311179 , + 2.0751824847594524 , 1.9589673882119614 , 1.827448311636562 , + 1.7067460949010984 , 1.578153622394334 , 1.441255919193865 , + 1.3069805544001651 , 1.1850957485562468 , 1.0794294692513358 , + 0.9194856227706742 , 0.8193392057977047 , 0.7428892724547593 , + 0.7756484020716891 , 0.8051356825079926 , 0.7875478559814296 , + 0.7323678937132266 , 0.664233170395303 , 0.5458065926612362 , + 0.46561903092791146, 0.4134332777573413 , 0.37912113276856246, + 0.35346981298978397, 0.30821972366932904, 0.27155269052189734, + 0.23980399220731693, 0.21268909341035092, 0.17142911562753102, + 0.142367241286922 , 0.12133228516752496, 0.10705907229340778, + 0.09349034308733897, 0.09166718852582387, 0.0944006754214843 , + 0.0980337402713654 , 0.10165365372649982, 0.10526051065749294 + }; + +} + // temperature / rate tabulation for Ca40 + He4 --> Ti44 -namespace He4_Ca40_to_Ti44_starlib_data { +namespace Ca40_He4_to_Ti44_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -3.912023005428146 , -3.6888794541139363 , -3.506557897319982 , @@ -3381,9 +3379,9 @@ namespace He4_Ca40_to_Ti44_starlib_data { } -// temperature / rate tabulation for Sc43 + p --> Ti44 +// temperature / rate tabulation for Sc43 + p --> He4 + Ca40 -namespace p_Sc43_to_Ti44_starlib_data { +namespace Sc43_p_to_He4_Ca40_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3406,23 +3404,31 @@ namespace p_Sc43_to_Ti44_starlib_data { }; inline AMREX_GPU_DEVICE amrex::Array1D log_rate = { - -223.4941626037178 , -219.03246622671557 , -214.57073513255327 , - -210.109008885998 , -205.6473082525591 , -201.18552262498568 , - -192.26215518939563 , -183.33886696859054 , -161.02995363604668 , - -138.7216201092693 , -94.1044038351351 , -49.48749068631269 , - -45.98031186379424 , -42.47235829283528 , -38.964963925370334 , - -35.457570257002956 , -31.950260762503664 , -30.25726094183319 , - -28.564458006637675 , -26.871618139591536 , -25.17915432021875 , - -23.4861418803324 , -22.422628456908498 , -20.295387134001345 , - -18.168366815338377 , -14.400880146350788 , -11.54029666176636 , - -9.477958413392223 , -7.415585393768329 , -5.983496377458805 , - -4.5516294190600615, -2.438290275159421 , -0.8126066205972733, - 0.4780957991430718, 1.5288784045756836, 2.401525040848949 , - 3.8048831298702424, 5.20839265902005 , 5.968963281761469 , - 6.729704589038828 , 7.682021510826875 , 8.329416783939319 , - 8.786762208441091 , 9.105202053852878 , 9.407550541263888 , - 9.383452989684827 , 9.211339872309265 , 9.012742727629712 , - 8.837390855544697 , 8.695339376799712 + -223.55987140000354 , -219.16383027690725 , + -214.7677730884682 , -210.37179922631347 , + -205.97561884420148 , -201.5798183735455 , + -192.78747305389547 , -183.99573646944373 , + -162.0154368662598 , -140.03504073977453 , + -96.07464608484995 , -52.114447608993856 , + -48.56983442756754 , -45.02530190532673 , + -41.48060565422657 , -37.935882158669585 , + -34.39121883055307 , -32.670364574161546 , + -30.94971727607896 , -29.228530457497374 , + -27.507918918794566 , -25.78698550213512 , + -24.698228642148432 , -22.521445873977388 , + -20.34414470417785 , -16.463406836246737 , + -13.49705682684574 , -11.333107038394392 , + -9.170158582343351 , -7.6406833295539265 , + -6.111600348347963 , -3.8000345034800986 , + -1.9675424491824272 , -0.46760650464601416, + 0.7866375236472842 , 1.852070316332157 , + 3.659450643423124 , 5.466793516519938 , + 6.543192162194399 , 7.61972421378267 , + 9.097171673870545 , 10.190169124654325 , + 11.028092421478492 , 11.67163715612505 , + 12.486352388215193 , 12.834947936069979 , + 12.93795965440605 , 12.95252359811243 , + 12.950150554758663 , 12.955127458028414 }; // sigma uncertainty @@ -3448,9 +3454,9 @@ namespace p_Sc43_to_Ti44_starlib_data { } -// temperature / rate tabulation for Sc43 + p --> He4 + Ca40 +// temperature / rate tabulation for Sc43 + p --> Ti44 -namespace p_Sc43_to_He4_Ca40_starlib_data { +namespace Sc43_p_to_Ti44_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3473,31 +3479,23 @@ namespace p_Sc43_to_He4_Ca40_starlib_data { }; inline AMREX_GPU_DEVICE amrex::Array1D log_rate = { - -223.55987140000354 , -219.16383027690725 , - -214.7677730884682 , -210.37179922631347 , - -205.97561884420148 , -201.5798183735455 , - -192.78747305389547 , -183.99573646944373 , - -162.0154368662598 , -140.03504073977453 , - -96.07464608484995 , -52.114447608993856 , - -48.56983442756754 , -45.02530190532673 , - -41.48060565422657 , -37.935882158669585 , - -34.39121883055307 , -32.670364574161546 , - -30.94971727607896 , -29.228530457497374 , - -27.507918918794566 , -25.78698550213512 , - -24.698228642148432 , -22.521445873977388 , - -20.34414470417785 , -16.463406836246737 , - -13.49705682684574 , -11.333107038394392 , - -9.170158582343351 , -7.6406833295539265 , - -6.111600348347963 , -3.8000345034800986 , - -1.9675424491824272 , -0.46760650464601416, - 0.7866375236472842 , 1.852070316332157 , - 3.659450643423124 , 5.466793516519938 , - 6.543192162194399 , 7.61972421378267 , - 9.097171673870545 , 10.190169124654325 , - 11.028092421478492 , 11.67163715612505 , - 12.486352388215193 , 12.834947936069979 , - 12.93795965440605 , 12.95252359811243 , - 12.950150554758663 , 12.955127458028414 + -223.4941626037178 , -219.03246622671557 , -214.57073513255327 , + -210.109008885998 , -205.6473082525591 , -201.18552262498568 , + -192.26215518939563 , -183.33886696859054 , -161.02995363604668 , + -138.7216201092693 , -94.1044038351351 , -49.48749068631269 , + -45.98031186379424 , -42.47235829283528 , -38.964963925370334 , + -35.457570257002956 , -31.950260762503664 , -30.25726094183319 , + -28.564458006637675 , -26.871618139591536 , -25.17915432021875 , + -23.4861418803324 , -22.422628456908498 , -20.295387134001345 , + -18.168366815338377 , -14.400880146350788 , -11.54029666176636 , + -9.477958413392223 , -7.415585393768329 , -5.983496377458805 , + -4.5516294190600615, -2.438290275159421 , -0.8126066205972733, + 0.4780957991430718, 1.5288784045756836, 2.401525040848949 , + 3.8048831298702424, 5.20839265902005 , 5.968963281761469 , + 6.729704589038828 , 7.682021510826875 , 8.329416783939319 , + 8.786762208441091 , 9.105202053852878 , 9.407550541263888 , + 9.383452989684827 , 9.211339872309265 , 9.012742727629712 , + 8.837390855544697 , 8.695339376799712 }; // sigma uncertainty @@ -3525,7 +3523,7 @@ namespace p_Sc43_to_He4_Ca40_starlib_data { // temperature / rate tabulation for Ti44 + He4 --> Cr48 -namespace He4_Ti44_to_Cr48_starlib_data { +namespace Ti44_He4_to_Cr48_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -2.2072749131897207 , -2.120263536200091 , -2.0402208285265546 , @@ -3578,9 +3576,9 @@ namespace He4_Ti44_to_Cr48_starlib_data { } -// temperature / rate tabulation for V47 + p --> Cr48 +// temperature / rate tabulation for V47 + p --> He4 + Ti44 -namespace p_V47_to_Cr48_starlib_data { +namespace V47_p_to_He4_Ti44_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3603,31 +3601,23 @@ namespace p_V47_to_Cr48_starlib_data { }; inline AMREX_GPU_DEVICE amrex::Array1D log_rate = { - -2.2361432901753099e+02, -2.1927287765090765e+02, - -2.1493139418935496e+02, -2.1058964749646194e+02, - -2.0624833522719814e+02, -2.0190672583588309e+02, - -1.9322405118153793e+02, -1.8454060326094145e+02, - -1.6283278013851373e+02, -1.4112517010644817e+02, - -9.7709878011951034e+01, -5.4294678229798940e+01, - -5.0549812973575598e+01, -4.6805661179837614e+01, - -4.3061484767015031e+01, -3.9316991300912520e+01, - -3.5572725170253072e+01, -3.3768668173214614e+01, - -3.1964638611394744e+01, -3.0160757781634342e+01, - -2.8356898121111414e+01, -2.6552951728491767e+01, - -2.5415411036948910e+01, -2.3140364316729219e+01, - -2.0865290336975828e+01, -1.6823922884675639e+01, - -1.3756298698332428e+01, -1.1544416132061599e+01, - -9.3319431937354320e+00, -7.7937593182514195e+00, - -6.2559510619565746e+00, -3.9905252335831034e+00, - -2.2576117273513145e+00, -8.9135424658412343e-01, - 2.1268909341035092e-01, 1.1239550963399048e+00, - 2.5680215564985067e+00, 4.0118683403978626e+00, - 4.7808027546312495e+00, 5.5506312951620265e+00, - 6.5066805191752657e+00, 7.1585139973293206e+00, - 7.6299757070277892e+00, 7.9854843567338225e+00, - 8.4698919182982237e+00, 8.7331106976387076e+00, - 8.8115032501582391e+00, 8.7460802173575125e+00, - 8.5954496893820043e+00, 8.4102759090701600e+00 + -223.97102255556982 , -219.98622062313186 , -216.0008803156841 , + -212.01623777542625 , -208.03138831259912 , -204.04630573630146 , + -196.0765507157805 , -188.10690187408653 , -168.1822535329737 , + -148.25753199479627 , -108.40843154007179 , -68.55935441172596 , + -66.08082101593429 , -63.60192640830292 , -61.123180517289505 , + -58.644319728666744 , -56.16566356063059 , -55.35712243810737 , + -54.54860234802939 , -53.73990664782579 , -52.931841971830075 , + -52.1230757902172 , -51.7260226243875 , -50.932362077555425 , + -50.1386736677736 , -48.9752995356757 , -48.19728320406529 , + -45.84794502236689 , -43.499136561619096 , -40.56359092170022 , + -37.62794061325723 , -33.080161372211165 , -29.396528214012537 , + -26.329740129135615 , -23.724814995821966 , -21.47234864983666 , + -17.428911550902306 , -13.385027686880822 , -10.757273079058885 , + -8.129552668220626 , -4.352856257374102 , -1.4881056272665754, + 0.7751878908961547, 2.617395832834079 , 5.43415858945945 , + 7.456454555176209 , 8.93313654381203 , 10.035830739523842 , + 10.90025166856016 , 11.613675368070371 }; // sigma uncertainty @@ -3653,9 +3643,9 @@ namespace p_V47_to_Cr48_starlib_data { } -// temperature / rate tabulation for V47 + p --> He4 + Ti44 +// temperature / rate tabulation for V47 + p --> Cr48 -namespace p_V47_to_He4_Ti44_starlib_data { +namespace V47_p_to_Cr48_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -4.509860006183766 , -4.422848629194137 , -4.3428059215206005 , @@ -3678,23 +3668,31 @@ namespace p_V47_to_He4_Ti44_starlib_data { }; inline AMREX_GPU_DEVICE amrex::Array1D log_rate = { - -223.97102255556982 , -219.98622062313186 , -216.0008803156841 , - -212.01623777542625 , -208.03138831259912 , -204.04630573630146 , - -196.0765507157805 , -188.10690187408653 , -168.1822535329737 , - -148.25753199479627 , -108.40843154007179 , -68.55935441172596 , - -66.08082101593429 , -63.60192640830292 , -61.123180517289505 , - -58.644319728666744 , -56.16566356063059 , -55.35712243810737 , - -54.54860234802939 , -53.73990664782579 , -52.931841971830075 , - -52.1230757902172 , -51.7260226243875 , -50.932362077555425 , - -50.1386736677736 , -48.9752995356757 , -48.19728320406529 , - -45.84794502236689 , -43.499136561619096 , -40.56359092170022 , - -37.62794061325723 , -33.080161372211165 , -29.396528214012537 , - -26.329740129135615 , -23.724814995821966 , -21.47234864983666 , - -17.428911550902306 , -13.385027686880822 , -10.757273079058885 , - -8.129552668220626 , -4.352856257374102 , -1.4881056272665754, - 0.7751878908961547, 2.617395832834079 , 5.43415858945945 , - 7.456454555176209 , 8.93313654381203 , 10.035830739523842 , - 10.90025166856016 , 11.613675368070371 + -2.2361432901753099e+02, -2.1927287765090765e+02, + -2.1493139418935496e+02, -2.1058964749646194e+02, + -2.0624833522719814e+02, -2.0190672583588309e+02, + -1.9322405118153793e+02, -1.8454060326094145e+02, + -1.6283278013851373e+02, -1.4112517010644817e+02, + -9.7709878011951034e+01, -5.4294678229798940e+01, + -5.0549812973575598e+01, -4.6805661179837614e+01, + -4.3061484767015031e+01, -3.9316991300912520e+01, + -3.5572725170253072e+01, -3.3768668173214614e+01, + -3.1964638611394744e+01, -3.0160757781634342e+01, + -2.8356898121111414e+01, -2.6552951728491767e+01, + -2.5415411036948910e+01, -2.3140364316729219e+01, + -2.0865290336975828e+01, -1.6823922884675639e+01, + -1.3756298698332428e+01, -1.1544416132061599e+01, + -9.3319431937354320e+00, -7.7937593182514195e+00, + -6.2559510619565746e+00, -3.9905252335831034e+00, + -2.2576117273513145e+00, -8.9135424658412343e-01, + 2.1268909341035092e-01, 1.1239550963399048e+00, + 2.5680215564985067e+00, 4.0118683403978626e+00, + 4.7808027546312495e+00, 5.5506312951620265e+00, + 6.5066805191752657e+00, 7.1585139973293206e+00, + 7.6299757070277892e+00, 7.9854843567338225e+00, + 8.4698919182982237e+00, 8.7331106976387076e+00, + 8.8115032501582391e+00, 8.7460802173575125e+00, + 8.5954496893820043e+00, 8.4102759090701600e+00 }; // sigma uncertainty @@ -3722,7 +3720,7 @@ namespace p_V47_to_He4_Ti44_starlib_data { // temperature / rate tabulation for Fe52 + n --> Fe53 -namespace n_Fe52_to_Fe53_starlib_data { +namespace Fe52_n_to_Fe53_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -3798,7 +3796,7 @@ namespace n_Fe52_to_Fe53_starlib_data { // temperature / rate tabulation for Fe53 + n --> Fe54 -namespace n_Fe53_to_Fe54_starlib_data { +namespace Fe53_n_to_Fe54_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -3874,7 +3872,7 @@ namespace n_Fe53_to_Fe54_starlib_data { // temperature / rate tabulation for Fe54 + n --> Fe55 -namespace n_Fe54_to_Fe55_starlib_data { +namespace Fe54_n_to_Fe55_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -3950,7 +3948,7 @@ namespace n_Fe54_to_Fe55_starlib_data { // temperature / rate tabulation for Fe55 + n --> Fe56 -namespace n_Fe55_to_Fe56_starlib_data { +namespace Fe55_n_to_Fe56_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -4026,7 +4024,7 @@ namespace n_Fe55_to_Fe56_starlib_data { // temperature / rate tabulation for Ni56 + n --> Ni57 -namespace n_Ni56_to_Ni57_starlib_data { +namespace Ni56_n_to_Ni57_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -4102,7 +4100,7 @@ namespace n_Ni56_to_Ni57_starlib_data { // temperature / rate tabulation for Ni57 + n --> Ni58 -namespace n_Ni57_to_Ni58_starlib_data { +namespace Ni57_n_to_Ni58_starlib_data { inline AMREX_GPU_DEVICE amrex::Array1D log_t9 = { -6.907755278982137 , -6.214608098422191 , -5.809142990314028 , @@ -4179,6 +4177,8 @@ namespace n_Ni57_to_Ni58_starlib_data { namespace temp_tabular { + using namespace Rates; + template AMREX_GPU_DEVICE AMREX_INLINE void rate_C12_C12_to_p_Na23_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { @@ -4235,7 +4235,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_p_Al27_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_p_Al27_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> p + Al27 @@ -4244,13 +4244,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - C12_O16_to_p_Al27_starlib_data::log_t9, - C12_O16_to_p_Al27_starlib_data::log_rate); - auto p = Rates::get_p_random(); + O16_C12_to_p_Al27_starlib_data::log_t9, + O16_C12_to_p_Al27_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - C12_O16_to_p_Al27_starlib_data::log_t9, - C12_O16_to_p_Al27_starlib_data::sigma_rate); + O16_C12_to_p_Al27_starlib_data::log_t9, + O16_C12_to_p_Al27_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4262,7 +4262,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_He4_Mg24_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_He4_Mg24_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> He4 + Mg24 @@ -4271,13 +4271,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - C12_O16_to_He4_Mg24_starlib_data::log_t9, - C12_O16_to_He4_Mg24_starlib_data::log_rate); - auto p = Rates::get_p_random(); + O16_C12_to_He4_Mg24_starlib_data::log_t9, + O16_C12_to_He4_Mg24_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - C12_O16_to_He4_Mg24_starlib_data::log_t9, - C12_O16_to_He4_Mg24_starlib_data::sigma_rate); + O16_C12_to_He4_Mg24_starlib_data::log_t9, + O16_C12_to_He4_Mg24_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4370,7 +4370,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_C12_to_N13_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_C12_p_to_N13_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + p --> N13 @@ -4379,13 +4379,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_C12_to_N13_starlib_data::log_t9, - p_C12_to_N13_starlib_data::log_rate); - auto p = Rates::get_p_random(); + C12_p_to_N13_starlib_data::log_t9, + C12_p_to_N13_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_C12_to_N13_starlib_data::log_t9, - p_C12_to_N13_starlib_data::sigma_rate); + C12_p_to_N13_starlib_data::log_t9, + C12_p_to_N13_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4397,7 +4397,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_C12_to_O16_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_C12_He4_to_O16_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + He4 --> O16 @@ -4406,13 +4406,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_C12_to_O16_starlib_data::log_t9, - He4_C12_to_O16_starlib_data::log_rate); - auto p = Rates::get_p_random(); + C12_He4_to_O16_starlib_data::log_t9, + C12_He4_to_O16_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_C12_to_O16_starlib_data::log_t9, - He4_C12_to_O16_starlib_data::sigma_rate); + C12_He4_to_O16_starlib_data::log_t9, + C12_He4_to_O16_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4424,7 +4424,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_N13_to_p_O16_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_N13_He4_to_p_O16_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // N13 + He4 --> p + O16 @@ -4433,13 +4433,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_N13_to_p_O16_starlib_data::log_t9, - He4_N13_to_p_O16_starlib_data::log_rate); - auto p = Rates::get_p_random(); + N13_He4_to_p_O16_starlib_data::log_t9, + N13_He4_to_p_O16_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_N13_to_p_O16_starlib_data::log_t9, - He4_N13_to_p_O16_starlib_data::sigma_rate); + N13_He4_to_p_O16_starlib_data::log_t9, + N13_He4_to_p_O16_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4451,7 +4451,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_O16_to_Ne20_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_He4_to_Ne20_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + He4 --> Ne20 @@ -4460,13 +4460,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_O16_to_Ne20_starlib_data::log_t9, - He4_O16_to_Ne20_starlib_data::log_rate); - auto p = Rates::get_p_random(); + O16_He4_to_Ne20_starlib_data::log_t9, + O16_He4_to_Ne20_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_O16_to_Ne20_starlib_data::log_t9, - He4_O16_to_Ne20_starlib_data::sigma_rate); + O16_He4_to_Ne20_starlib_data::log_t9, + O16_He4_to_Ne20_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4478,7 +4478,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Ne20_to_Mg24_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ne20_He4_to_Mg24_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ne20 + He4 --> Mg24 @@ -4487,13 +4487,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ne20_to_Mg24_starlib_data::log_t9, - He4_Ne20_to_Mg24_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ne20_He4_to_Mg24_starlib_data::log_t9, + Ne20_He4_to_Mg24_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ne20_to_Mg24_starlib_data::log_t9, - He4_Ne20_to_Mg24_starlib_data::sigma_rate); + Ne20_He4_to_Mg24_starlib_data::log_t9, + Ne20_He4_to_Mg24_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4505,7 +4505,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Na23_to_He4_Ne20_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Na23_p_to_He4_Ne20_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Na23 + p --> He4 + Ne20 @@ -4514,13 +4514,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Na23_to_He4_Ne20_starlib_data::log_t9, - p_Na23_to_He4_Ne20_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Na23_p_to_He4_Ne20_starlib_data::log_t9, + Na23_p_to_He4_Ne20_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Na23_to_He4_Ne20_starlib_data::log_t9, - p_Na23_to_He4_Ne20_starlib_data::sigma_rate); + Na23_p_to_He4_Ne20_starlib_data::log_t9, + Na23_p_to_He4_Ne20_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4532,7 +4532,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Na23_to_Mg24_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Na23_p_to_Mg24_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Na23 + p --> Mg24 @@ -4541,13 +4541,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Na23_to_Mg24_starlib_data::log_t9, - p_Na23_to_Mg24_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Na23_p_to_Mg24_starlib_data::log_t9, + Na23_p_to_Mg24_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Na23_to_Mg24_starlib_data::log_t9, - p_Na23_to_Mg24_starlib_data::sigma_rate); + Na23_p_to_Mg24_starlib_data::log_t9, + Na23_p_to_Mg24_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4559,7 +4559,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Mg24_to_Si28_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Mg24_He4_to_Si28_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Mg24 + He4 --> Si28 @@ -4568,13 +4568,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Mg24_to_Si28_starlib_data::log_t9, - He4_Mg24_to_Si28_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Mg24_He4_to_Si28_starlib_data::log_t9, + Mg24_He4_to_Si28_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Mg24_to_Si28_starlib_data::log_t9, - He4_Mg24_to_Si28_starlib_data::sigma_rate); + Mg24_He4_to_Si28_starlib_data::log_t9, + Mg24_He4_to_Si28_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4586,7 +4586,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Al27_to_He4_Mg24_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Al27_p_to_He4_Mg24_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Al27 + p --> He4 + Mg24 @@ -4595,13 +4595,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Al27_to_He4_Mg24_starlib_data::log_t9, - p_Al27_to_He4_Mg24_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Al27_p_to_He4_Mg24_starlib_data::log_t9, + Al27_p_to_He4_Mg24_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Al27_to_He4_Mg24_starlib_data::log_t9, - p_Al27_to_He4_Mg24_starlib_data::sigma_rate); + Al27_p_to_He4_Mg24_starlib_data::log_t9, + Al27_p_to_He4_Mg24_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4613,7 +4613,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Al27_to_Si28_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Al27_p_to_Si28_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Al27 + p --> Si28 @@ -4622,13 +4622,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Al27_to_Si28_starlib_data::log_t9, - p_Al27_to_Si28_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Al27_p_to_Si28_starlib_data::log_t9, + Al27_p_to_Si28_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Al27_to_Si28_starlib_data::log_t9, - p_Al27_to_Si28_starlib_data::sigma_rate); + Al27_p_to_Si28_starlib_data::log_t9, + Al27_p_to_Si28_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4640,7 +4640,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Si28_to_S32_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Si28_He4_to_S32_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Si28 + He4 --> S32 @@ -4649,13 +4649,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Si28_to_S32_starlib_data::log_t9, - He4_Si28_to_S32_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Si28_He4_to_S32_starlib_data::log_t9, + Si28_He4_to_S32_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Si28_to_S32_starlib_data::log_t9, - He4_Si28_to_S32_starlib_data::sigma_rate); + Si28_He4_to_S32_starlib_data::log_t9, + Si28_He4_to_S32_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4667,7 +4667,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_P31_to_He4_Si28_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_P31_p_to_He4_Si28_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // P31 + p --> He4 + Si28 @@ -4676,13 +4676,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_P31_to_He4_Si28_starlib_data::log_t9, - p_P31_to_He4_Si28_starlib_data::log_rate); - auto p = Rates::get_p_random(); + P31_p_to_He4_Si28_starlib_data::log_t9, + P31_p_to_He4_Si28_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_P31_to_He4_Si28_starlib_data::log_t9, - p_P31_to_He4_Si28_starlib_data::sigma_rate); + P31_p_to_He4_Si28_starlib_data::log_t9, + P31_p_to_He4_Si28_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4694,7 +4694,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_P31_to_S32_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_P31_p_to_S32_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // P31 + p --> S32 @@ -4703,13 +4703,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_P31_to_S32_starlib_data::log_t9, - p_P31_to_S32_starlib_data::log_rate); - auto p = Rates::get_p_random(); + P31_p_to_S32_starlib_data::log_t9, + P31_p_to_S32_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_P31_to_S32_starlib_data::log_t9, - p_P31_to_S32_starlib_data::sigma_rate); + P31_p_to_S32_starlib_data::log_t9, + P31_p_to_S32_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4721,7 +4721,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Cr48_to_p_Mn51_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Cr48_He4_to_p_Mn51_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cr48 + He4 --> p + Mn51 @@ -4730,13 +4730,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Cr48_to_p_Mn51_starlib_data::log_t9, - He4_Cr48_to_p_Mn51_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Cr48_He4_to_p_Mn51_starlib_data::log_t9, + Cr48_He4_to_p_Mn51_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Cr48_to_p_Mn51_starlib_data::log_t9, - He4_Cr48_to_p_Mn51_starlib_data::sigma_rate); + Cr48_He4_to_p_Mn51_starlib_data::log_t9, + Cr48_He4_to_p_Mn51_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4748,7 +4748,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Cr48_to_Fe52_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Cr48_He4_to_Fe52_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cr48 + He4 --> Fe52 @@ -4757,13 +4757,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Cr48_to_Fe52_starlib_data::log_t9, - He4_Cr48_to_Fe52_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Cr48_He4_to_Fe52_starlib_data::log_t9, + Cr48_He4_to_Fe52_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Cr48_to_Fe52_starlib_data::log_t9, - He4_Cr48_to_Fe52_starlib_data::sigma_rate); + Cr48_He4_to_Fe52_starlib_data::log_t9, + Cr48_He4_to_Fe52_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4775,7 +4775,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Mn51_to_Fe52_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Mn51_p_to_Fe52_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Mn51 + p --> Fe52 @@ -4784,13 +4784,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Mn51_to_Fe52_starlib_data::log_t9, - p_Mn51_to_Fe52_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Mn51_p_to_Fe52_starlib_data::log_t9, + Mn51_p_to_Fe52_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Mn51_to_Fe52_starlib_data::log_t9, - p_Mn51_to_Fe52_starlib_data::sigma_rate); + Mn51_p_to_Fe52_starlib_data::log_t9, + Mn51_p_to_Fe52_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4802,7 +4802,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Mn51_to_Co55_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Mn51_He4_to_Co55_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Mn51 + He4 --> Co55 @@ -4811,13 +4811,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Mn51_to_Co55_starlib_data::log_t9, - He4_Mn51_to_Co55_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Mn51_He4_to_Co55_starlib_data::log_t9, + Mn51_He4_to_Co55_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Mn51_to_Co55_starlib_data::log_t9, - He4_Mn51_to_Co55_starlib_data::sigma_rate); + Mn51_He4_to_Co55_starlib_data::log_t9, + Mn51_He4_to_Co55_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4829,7 +4829,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Fe52_to_p_Co55_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe52_He4_to_p_Co55_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe52 + He4 --> p + Co55 @@ -4838,13 +4838,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Fe52_to_p_Co55_starlib_data::log_t9, - He4_Fe52_to_p_Co55_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe52_He4_to_p_Co55_starlib_data::log_t9, + Fe52_He4_to_p_Co55_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Fe52_to_p_Co55_starlib_data::log_t9, - He4_Fe52_to_p_Co55_starlib_data::sigma_rate); + Fe52_He4_to_p_Co55_starlib_data::log_t9, + Fe52_He4_to_p_Co55_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4856,7 +4856,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Fe52_to_Ni56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe52_He4_to_Ni56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe52 + He4 --> Ni56 @@ -4865,13 +4865,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Fe52_to_Ni56_starlib_data::log_t9, - He4_Fe52_to_Ni56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe52_He4_to_Ni56_starlib_data::log_t9, + Fe52_He4_to_Ni56_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Fe52_to_Ni56_starlib_data::log_t9, - He4_Fe52_to_Ni56_starlib_data::sigma_rate); + Fe52_He4_to_Ni56_starlib_data::log_t9, + Fe52_He4_to_Ni56_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4883,7 +4883,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Co55_to_Ni56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Co55_p_to_Ni56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co55 + p --> Ni56 @@ -4892,13 +4892,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Co55_to_Ni56_starlib_data::log_t9, - p_Co55_to_Ni56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Co55_p_to_Ni56_starlib_data::log_t9, + Co55_p_to_Ni56_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Co55_to_Ni56_starlib_data::log_t9, - p_Co55_to_Ni56_starlib_data::sigma_rate); + Co55_p_to_Ni56_starlib_data::log_t9, + Co55_p_to_Ni56_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4910,7 +4910,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Co55_to_Cu59_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Co55_He4_to_Cu59_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co55 + He4 --> Cu59 @@ -4919,13 +4919,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Co55_to_Cu59_starlib_data::log_t9, - He4_Co55_to_Cu59_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Co55_He4_to_Cu59_starlib_data::log_t9, + Co55_He4_to_Cu59_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Co55_to_Cu59_starlib_data::log_t9, - He4_Co55_to_Cu59_starlib_data::sigma_rate); + Co55_He4_to_Cu59_starlib_data::log_t9, + Co55_He4_to_Cu59_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4937,7 +4937,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Ni56_to_Zn60_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ni56_He4_to_Zn60_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ni56 + He4 --> Zn60 @@ -4946,13 +4946,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ni56_to_Zn60_starlib_data::log_t9, - He4_Ni56_to_Zn60_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ni56_He4_to_Zn60_starlib_data::log_t9, + Ni56_He4_to_Zn60_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ni56_to_Zn60_starlib_data::log_t9, - He4_Ni56_to_Zn60_starlib_data::sigma_rate); + Ni56_He4_to_Zn60_starlib_data::log_t9, + Ni56_He4_to_Zn60_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4964,7 +4964,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Cu59_to_He4_Ni56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Cu59_p_to_He4_Ni56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cu59 + p --> He4 + Ni56 @@ -4973,13 +4973,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Cu59_to_He4_Ni56_starlib_data::log_t9, - p_Cu59_to_He4_Ni56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Cu59_p_to_He4_Ni56_starlib_data::log_t9, + Cu59_p_to_He4_Ni56_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Cu59_to_He4_Ni56_starlib_data::log_t9, - p_Cu59_to_He4_Ni56_starlib_data::sigma_rate); + Cu59_p_to_He4_Ni56_starlib_data::log_t9, + Cu59_p_to_He4_Ni56_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -4991,7 +4991,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Cu59_to_Zn60_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Cu59_p_to_Zn60_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cu59 + p --> Zn60 @@ -5000,13 +5000,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Cu59_to_Zn60_starlib_data::log_t9, - p_Cu59_to_Zn60_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Cu59_p_to_Zn60_starlib_data::log_t9, + Cu59_p_to_Zn60_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Cu59_to_Zn60_starlib_data::log_t9, - p_Cu59_to_Zn60_starlib_data::sigma_rate); + Cu59_p_to_Zn60_starlib_data::log_t9, + Cu59_p_to_Zn60_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5072,7 +5072,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_n_Si27_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_n_Si27_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> n + Si27 @@ -5081,13 +5081,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - C12_O16_to_n_Si27_starlib_data::log_t9, - C12_O16_to_n_Si27_starlib_data::log_rate); - auto p = Rates::get_p_random(); + O16_C12_to_n_Si27_starlib_data::log_t9, + O16_C12_to_n_Si27_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - C12_O16_to_n_Si27_starlib_data::log_t9, - C12_O16_to_n_Si27_starlib_data::sigma_rate); + O16_C12_to_n_Si27_starlib_data::log_t9, + O16_C12_to_n_Si27_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5099,7 +5099,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Mn51_to_p_Fe54_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Mn51_He4_to_p_Fe54_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Mn51 + He4 --> p + Fe54 @@ -5108,13 +5108,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Mn51_to_p_Fe54_starlib_data::log_t9, - He4_Mn51_to_p_Fe54_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Mn51_He4_to_p_Fe54_starlib_data::log_t9, + Mn51_He4_to_p_Fe54_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Mn51_to_p_Fe54_starlib_data::log_t9, - He4_Mn51_to_p_Fe54_starlib_data::sigma_rate); + Mn51_He4_to_p_Fe54_starlib_data::log_t9, + Mn51_He4_to_p_Fe54_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5126,7 +5126,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Fe54_to_Co55_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe54_p_to_Co55_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe54 + p --> Co55 @@ -5135,13 +5135,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Fe54_to_Co55_starlib_data::log_t9, - p_Fe54_to_Co55_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe54_p_to_Co55_starlib_data::log_t9, + Fe54_p_to_Co55_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Fe54_to_Co55_starlib_data::log_t9, - p_Fe54_to_Co55_starlib_data::sigma_rate); + Fe54_p_to_Co55_starlib_data::log_t9, + Fe54_p_to_Co55_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5153,7 +5153,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Fe56_to_Co57_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe56_p_to_Co57_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe56 + p --> Co57 @@ -5162,13 +5162,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Fe56_to_Co57_starlib_data::log_t9, - p_Fe56_to_Co57_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe56_p_to_Co57_starlib_data::log_t9, + Fe56_p_to_Co57_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Fe56_to_Co57_starlib_data::log_t9, - p_Fe56_to_Co57_starlib_data::sigma_rate); + Fe56_p_to_Co57_starlib_data::log_t9, + Fe56_p_to_Co57_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5180,7 +5180,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Fe54_to_Ni58_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe54_He4_to_Ni58_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe54 + He4 --> Ni58 @@ -5189,13 +5189,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Fe54_to_Ni58_starlib_data::log_t9, - He4_Fe54_to_Ni58_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe54_He4_to_Ni58_starlib_data::log_t9, + Fe54_He4_to_Ni58_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Fe54_to_Ni58_starlib_data::log_t9, - He4_Fe54_to_Ni58_starlib_data::sigma_rate); + Fe54_He4_to_Ni58_starlib_data::log_t9, + Fe54_He4_to_Ni58_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5207,7 +5207,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Co55_to_Co56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Co55_n_to_Co56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co55 + n --> Co56 @@ -5216,13 +5216,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Co55_to_Co56_starlib_data::log_t9, - n_Co55_to_Co56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Co55_n_to_Co56_starlib_data::log_t9, + Co55_n_to_Co56_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Co55_to_Co56_starlib_data::log_t9, - n_Co55_to_Co56_starlib_data::sigma_rate); + Co55_n_to_Co56_starlib_data::log_t9, + Co55_n_to_Co56_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5234,7 +5234,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Co56_to_p_Fe56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Co56_n_to_p_Fe56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co56 + n --> p + Fe56 @@ -5243,13 +5243,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Co56_to_p_Fe56_starlib_data::log_t9, - n_Co56_to_p_Fe56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Co56_n_to_p_Fe56_starlib_data::log_t9, + Co56_n_to_p_Fe56_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Co56_to_p_Fe56_starlib_data::log_t9, - n_Co56_to_p_Fe56_starlib_data::sigma_rate); + Co56_n_to_p_Fe56_starlib_data::log_t9, + Co56_n_to_p_Fe56_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5261,7 +5261,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Co56_to_Co57_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Co56_n_to_Co57_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co56 + n --> Co57 @@ -5270,13 +5270,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Co56_to_Co57_starlib_data::log_t9, - n_Co56_to_Co57_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Co56_n_to_Co57_starlib_data::log_t9, + Co56_n_to_Co57_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Co56_to_Co57_starlib_data::log_t9, - n_Co56_to_Co57_starlib_data::sigma_rate); + Co56_n_to_Co57_starlib_data::log_t9, + Co56_n_to_Co57_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5288,7 +5288,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Co57_to_He4_Fe54_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Co57_p_to_He4_Fe54_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co57 + p --> He4 + Fe54 @@ -5297,13 +5297,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Co57_to_He4_Fe54_starlib_data::log_t9, - p_Co57_to_He4_Fe54_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Co57_p_to_He4_Fe54_starlib_data::log_t9, + Co57_p_to_He4_Fe54_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Co57_to_He4_Fe54_starlib_data::log_t9, - p_Co57_to_He4_Fe54_starlib_data::sigma_rate); + Co57_p_to_He4_Fe54_starlib_data::log_t9, + Co57_p_to_He4_Fe54_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5315,7 +5315,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Co57_to_Ni58_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Co57_p_to_Ni58_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co57 + p --> Ni58 @@ -5324,13 +5324,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Co57_to_Ni58_starlib_data::log_t9, - p_Co57_to_Ni58_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Co57_p_to_Ni58_starlib_data::log_t9, + Co57_p_to_Ni58_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Co57_to_Ni58_starlib_data::log_t9, - p_Co57_to_Ni58_starlib_data::sigma_rate); + Co57_p_to_Ni58_starlib_data::log_t9, + Co57_p_to_Ni58_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5342,7 +5342,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Co55_to_p_Ni58_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Co55_He4_to_p_Ni58_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Co55 + He4 --> p + Ni58 @@ -5351,13 +5351,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Co55_to_p_Ni58_starlib_data::log_t9, - He4_Co55_to_p_Ni58_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Co55_He4_to_p_Ni58_starlib_data::log_t9, + Co55_He4_to_p_Ni58_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Co55_to_p_Ni58_starlib_data::log_t9, - He4_Co55_to_p_Ni58_starlib_data::sigma_rate); + Co55_He4_to_p_Ni58_starlib_data::log_t9, + Co55_He4_to_p_Ni58_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5369,7 +5369,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Ni56_to_p_Co56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ni56_n_to_p_Co56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ni56 + n --> p + Co56 @@ -5378,13 +5378,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Ni56_to_p_Co56_starlib_data::log_t9, - n_Ni56_to_p_Co56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ni56_n_to_p_Co56_starlib_data::log_t9, + Ni56_n_to_p_Co56_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Ni56_to_p_Co56_starlib_data::log_t9, - n_Ni56_to_p_Co56_starlib_data::sigma_rate); + Ni56_n_to_p_Co56_starlib_data::log_t9, + Ni56_n_to_p_Co56_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5396,7 +5396,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Ni58_to_Cu59_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ni58_p_to_Cu59_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ni58 + p --> Cu59 @@ -5405,13 +5405,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Ni58_to_Cu59_starlib_data::log_t9, - p_Ni58_to_Cu59_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ni58_p_to_Cu59_starlib_data::log_t9, + Ni58_p_to_Cu59_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Ni58_to_Cu59_starlib_data::log_t9, - p_Ni58_to_Cu59_starlib_data::sigma_rate); + Ni58_p_to_Cu59_starlib_data::log_t9, + Ni58_p_to_Cu59_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5423,7 +5423,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Cu59_to_He4_Co56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Cu59_n_to_He4_Co56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Cu59 + n --> He4 + Co56 @@ -5432,13 +5432,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Cu59_to_He4_Co56_starlib_data::log_t9, - n_Cu59_to_He4_Co56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Cu59_n_to_He4_Co56_starlib_data::log_t9, + Cu59_n_to_He4_Co56_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Cu59_to_He4_Co56_starlib_data::log_t9, - n_Cu59_to_He4_Co56_starlib_data::sigma_rate); + Cu59_n_to_He4_Co56_starlib_data::log_t9, + Cu59_n_to_He4_Co56_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5450,7 +5450,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_S32_to_Ar36_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_S32_He4_to_Ar36_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // S32 + He4 --> Ar36 @@ -5459,13 +5459,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_S32_to_Ar36_starlib_data::log_t9, - He4_S32_to_Ar36_starlib_data::log_rate); - auto p = Rates::get_p_random(); + S32_He4_to_Ar36_starlib_data::log_t9, + S32_He4_to_Ar36_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_S32_to_Ar36_starlib_data::log_t9, - He4_S32_to_Ar36_starlib_data::sigma_rate); + S32_He4_to_Ar36_starlib_data::log_t9, + S32_He4_to_Ar36_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5477,22 +5477,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Cl35_to_Ar36_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Cl35_p_to_He4_S32_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - // Cl35 + p --> Ar36 + // Cl35 + p --> He4 + S32 // our rate is exp(μ + pσ + h) // where μ = median rate, p = Gaussian random #, // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Cl35_to_Ar36_starlib_data::log_t9, - p_Cl35_to_Ar36_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Cl35_p_to_He4_S32_starlib_data::log_t9, + Cl35_p_to_He4_S32_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Cl35_to_Ar36_starlib_data::log_t9, - p_Cl35_to_Ar36_starlib_data::sigma_rate); + Cl35_p_to_He4_S32_starlib_data::log_t9, + Cl35_p_to_He4_S32_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5504,22 +5504,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Cl35_to_He4_S32_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Cl35_p_to_Ar36_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - // Cl35 + p --> He4 + S32 + // Cl35 + p --> Ar36 // our rate is exp(μ + pσ + h) // where μ = median rate, p = Gaussian random #, // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Cl35_to_He4_S32_starlib_data::log_t9, - p_Cl35_to_He4_S32_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Cl35_p_to_Ar36_starlib_data::log_t9, + Cl35_p_to_Ar36_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Cl35_to_He4_S32_starlib_data::log_t9, - p_Cl35_to_He4_S32_starlib_data::sigma_rate); + Cl35_p_to_Ar36_starlib_data::log_t9, + Cl35_p_to_Ar36_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5531,7 +5531,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Ar36_to_Ca40_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ar36_He4_to_Ca40_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ar36 + He4 --> Ca40 @@ -5540,13 +5540,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ar36_to_Ca40_starlib_data::log_t9, - He4_Ar36_to_Ca40_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ar36_He4_to_Ca40_starlib_data::log_t9, + Ar36_He4_to_Ca40_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ar36_to_Ca40_starlib_data::log_t9, - He4_Ar36_to_Ca40_starlib_data::sigma_rate); + Ar36_He4_to_Ca40_starlib_data::log_t9, + Ar36_He4_to_Ca40_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5558,22 +5558,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_K39_to_Ca40_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_K39_p_to_He4_Ar36_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - // K39 + p --> Ca40 + // K39 + p --> He4 + Ar36 // our rate is exp(μ + pσ + h) // where μ = median rate, p = Gaussian random #, // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_K39_to_Ca40_starlib_data::log_t9, - p_K39_to_Ca40_starlib_data::log_rate); - auto p = Rates::get_p_random(); + K39_p_to_He4_Ar36_starlib_data::log_t9, + K39_p_to_He4_Ar36_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_K39_to_Ca40_starlib_data::log_t9, - p_K39_to_Ca40_starlib_data::sigma_rate); + K39_p_to_He4_Ar36_starlib_data::log_t9, + K39_p_to_He4_Ar36_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5585,22 +5585,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_K39_to_He4_Ar36_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_K39_p_to_Ca40_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - // K39 + p --> He4 + Ar36 + // K39 + p --> Ca40 // our rate is exp(μ + pσ + h) // where μ = median rate, p = Gaussian random #, // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_K39_to_He4_Ar36_starlib_data::log_t9, - p_K39_to_He4_Ar36_starlib_data::log_rate); - auto p = Rates::get_p_random(); + K39_p_to_Ca40_starlib_data::log_t9, + K39_p_to_Ca40_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_K39_to_He4_Ar36_starlib_data::log_t9, - p_K39_to_He4_Ar36_starlib_data::sigma_rate); + K39_p_to_Ca40_starlib_data::log_t9, + K39_p_to_Ca40_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5612,7 +5612,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Ca40_to_Ti44_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ca40_He4_to_Ti44_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ca40 + He4 --> Ti44 @@ -5621,13 +5621,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ca40_to_Ti44_starlib_data::log_t9, - He4_Ca40_to_Ti44_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ca40_He4_to_Ti44_starlib_data::log_t9, + Ca40_He4_to_Ti44_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ca40_to_Ti44_starlib_data::log_t9, - He4_Ca40_to_Ti44_starlib_data::sigma_rate); + Ca40_He4_to_Ti44_starlib_data::log_t9, + Ca40_He4_to_Ti44_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5639,22 +5639,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Sc43_to_Ti44_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Sc43_p_to_He4_Ca40_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - // Sc43 + p --> Ti44 + // Sc43 + p --> He4 + Ca40 // our rate is exp(μ + pσ + h) // where μ = median rate, p = Gaussian random #, // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Sc43_to_Ti44_starlib_data::log_t9, - p_Sc43_to_Ti44_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Sc43_p_to_He4_Ca40_starlib_data::log_t9, + Sc43_p_to_He4_Ca40_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Sc43_to_Ti44_starlib_data::log_t9, - p_Sc43_to_Ti44_starlib_data::sigma_rate); + Sc43_p_to_He4_Ca40_starlib_data::log_t9, + Sc43_p_to_He4_Ca40_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5666,22 +5666,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Sc43_to_He4_Ca40_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Sc43_p_to_Ti44_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - // Sc43 + p --> He4 + Ca40 + // Sc43 + p --> Ti44 // our rate is exp(μ + pσ + h) // where μ = median rate, p = Gaussian random #, // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Sc43_to_He4_Ca40_starlib_data::log_t9, - p_Sc43_to_He4_Ca40_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Sc43_p_to_Ti44_starlib_data::log_t9, + Sc43_p_to_Ti44_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_Sc43_to_He4_Ca40_starlib_data::log_t9, - p_Sc43_to_He4_Ca40_starlib_data::sigma_rate); + Sc43_p_to_Ti44_starlib_data::log_t9, + Sc43_p_to_Ti44_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5693,7 +5693,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Ti44_to_Cr48_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ti44_He4_to_Cr48_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ti44 + He4 --> Cr48 @@ -5702,13 +5702,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ti44_to_Cr48_starlib_data::log_t9, - He4_Ti44_to_Cr48_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ti44_He4_to_Cr48_starlib_data::log_t9, + Ti44_He4_to_Cr48_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - He4_Ti44_to_Cr48_starlib_data::log_t9, - He4_Ti44_to_Cr48_starlib_data::sigma_rate); + Ti44_He4_to_Cr48_starlib_data::log_t9, + Ti44_He4_to_Cr48_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5720,22 +5720,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_V47_to_Cr48_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_V47_p_to_He4_Ti44_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - // V47 + p --> Cr48 + // V47 + p --> He4 + Ti44 // our rate is exp(μ + pσ + h) // where μ = median rate, p = Gaussian random #, // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_V47_to_Cr48_starlib_data::log_t9, - p_V47_to_Cr48_starlib_data::log_rate); - auto p = Rates::get_p_random(); + V47_p_to_He4_Ti44_starlib_data::log_t9, + V47_p_to_He4_Ti44_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_V47_to_Cr48_starlib_data::log_t9, - p_V47_to_Cr48_starlib_data::sigma_rate); + V47_p_to_He4_Ti44_starlib_data::log_t9, + V47_p_to_He4_Ti44_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5747,22 +5747,22 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_V47_to_He4_Ti44_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_V47_p_to_Cr48_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - // V47 + p --> He4 + Ti44 + // V47 + p --> Cr48 // our rate is exp(μ + pσ + h) // where μ = median rate, p = Gaussian random #, // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_V47_to_He4_Ti44_starlib_data::log_t9, - p_V47_to_He4_Ti44_starlib_data::log_rate); - auto p = Rates::get_p_random(); + V47_p_to_Cr48_starlib_data::log_t9, + V47_p_to_Cr48_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - p_V47_to_He4_Ti44_starlib_data::log_t9, - p_V47_to_He4_Ti44_starlib_data::sigma_rate); + V47_p_to_Cr48_starlib_data::log_t9, + V47_p_to_Cr48_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5774,7 +5774,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Fe52_to_Fe53_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe52_n_to_Fe53_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe52 + n --> Fe53 @@ -5783,13 +5783,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Fe52_to_Fe53_starlib_data::log_t9, - n_Fe52_to_Fe53_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe52_n_to_Fe53_starlib_data::log_t9, + Fe52_n_to_Fe53_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Fe52_to_Fe53_starlib_data::log_t9, - n_Fe52_to_Fe53_starlib_data::sigma_rate); + Fe52_n_to_Fe53_starlib_data::log_t9, + Fe52_n_to_Fe53_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5801,7 +5801,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Fe53_to_Fe54_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe53_n_to_Fe54_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe53 + n --> Fe54 @@ -5810,13 +5810,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Fe53_to_Fe54_starlib_data::log_t9, - n_Fe53_to_Fe54_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe53_n_to_Fe54_starlib_data::log_t9, + Fe53_n_to_Fe54_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Fe53_to_Fe54_starlib_data::log_t9, - n_Fe53_to_Fe54_starlib_data::sigma_rate); + Fe53_n_to_Fe54_starlib_data::log_t9, + Fe53_n_to_Fe54_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5828,7 +5828,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Fe54_to_Fe55_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe54_n_to_Fe55_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe54 + n --> Fe55 @@ -5837,13 +5837,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Fe54_to_Fe55_starlib_data::log_t9, - n_Fe54_to_Fe55_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe54_n_to_Fe55_starlib_data::log_t9, + Fe54_n_to_Fe55_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Fe54_to_Fe55_starlib_data::log_t9, - n_Fe54_to_Fe55_starlib_data::sigma_rate); + Fe54_n_to_Fe55_starlib_data::log_t9, + Fe54_n_to_Fe55_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5855,7 +5855,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Fe55_to_Fe56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Fe55_n_to_Fe56_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Fe55 + n --> Fe56 @@ -5864,13 +5864,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Fe55_to_Fe56_starlib_data::log_t9, - n_Fe55_to_Fe56_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Fe55_n_to_Fe56_starlib_data::log_t9, + Fe55_n_to_Fe56_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Fe55_to_Fe56_starlib_data::log_t9, - n_Fe55_to_Fe56_starlib_data::sigma_rate); + Fe55_n_to_Fe56_starlib_data::log_t9, + Fe55_n_to_Fe56_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5882,7 +5882,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Ni56_to_Ni57_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ni56_n_to_Ni57_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ni56 + n --> Ni57 @@ -5891,13 +5891,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Ni56_to_Ni57_starlib_data::log_t9, - n_Ni56_to_Ni57_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ni56_n_to_Ni57_starlib_data::log_t9, + Ni56_n_to_Ni57_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Ni56_to_Ni57_starlib_data::log_t9, - n_Ni56_to_Ni57_starlib_data::sigma_rate); + Ni56_n_to_Ni57_starlib_data::log_t9, + Ni56_n_to_Ni57_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5909,7 +5909,7 @@ namespace temp_tabular { template AMREX_GPU_DEVICE AMREX_INLINE - void rate_n_Ni57_to_Ni58_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Ni57_n_to_Ni58_starlib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Ni57 + n --> Ni58 @@ -5918,13 +5918,13 @@ namespace temp_tabular { // σ = uncertainty, h = screening potential auto [_mu, _dmu_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Ni57_to_Ni58_starlib_data::log_t9, - n_Ni57_to_Ni58_starlib_data::log_rate); - auto p = Rates::get_p_random(); + Ni57_n_to_Ni58_starlib_data::log_t9, + Ni57_n_to_Ni58_starlib_data::log_rate); + auto p = Rates::get_p_random(); auto [_sigma, _dsigma_dlogT9] = interp_net::monotone_1d_interp( tfactors.lnT9, - n_Ni57_to_Ni58_starlib_data::log_t9, - n_Ni57_to_Ni58_starlib_data::sigma_rate); + Ni57_n_to_Ni58_starlib_data::log_t9, + Ni57_n_to_Ni58_starlib_data::sigma_rate); rate = std::exp(_mu + p * _sigma + log_scor); // we found dlog(rate)/dlog(T9) if constexpr (do_T_derivatives) { @@ -5936,14 +5936,12 @@ namespace temp_tabular { template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -5985,7 +5983,7 @@ namespace temp_tabular { } { - // C12_O16_to_p_Al27_starlib + // O16_C12_to_p_Al27_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -5995,15 +5993,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_p_Al27_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_starlib) = rate; + rate_O16_C12_to_p_Al27_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_starlib) = drate_dT; } } { - // C12_O16_to_He4_Mg24_starlib + // O16_C12_to_He4_Mg24_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6013,10 +6011,10 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_He4_Mg24_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_starlib) = rate; + rate_O16_C12_to_He4_Mg24_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_starlib) = drate_dT; } } @@ -6075,7 +6073,7 @@ namespace temp_tabular { } { - // p_C12_to_N13_starlib + // C12_p_to_N13_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6085,15 +6083,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); } #endif - rate_p_C12_to_N13_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_starlib) = rate; + rate_C12_p_to_N13_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_starlib) = drate_dT; } } { - // He4_C12_to_O16_starlib + // C12_He4_to_O16_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6103,15 +6101,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); } #endif - rate_He4_C12_to_O16_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_starlib) = rate; + rate_C12_He4_to_O16_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_starlib) = drate_dT; } } { - // He4_N13_to_p_O16_starlib + // N13_He4_to_p_O16_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6121,15 +6119,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); } #endif - rate_He4_N13_to_p_O16_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_starlib) = rate; + rate_N13_He4_to_p_O16_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_starlib) = drate_dT; } } { - // He4_O16_to_Ne20_starlib + // O16_He4_to_Ne20_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6139,15 +6137,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); } #endif - rate_He4_O16_to_Ne20_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_starlib) = rate; + rate_O16_He4_to_Ne20_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_starlib) = drate_dT; } } { - // He4_Ne20_to_Mg24_starlib + // Ne20_He4_to_Mg24_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6157,15 +6155,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); } #endif - rate_He4_Ne20_to_Mg24_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_starlib) = rate; + rate_Ne20_He4_to_Mg24_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_starlib) = drate_dT; } } { - // p_Na23_to_He4_Ne20_starlib + // Na23_p_to_He4_Ne20_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6175,15 +6173,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); } #endif - rate_p_Na23_to_He4_Ne20_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_starlib) = rate; + rate_Na23_p_to_He4_Ne20_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_starlib) = drate_dT; } } { - // p_Na23_to_Mg24_starlib + // Na23_p_to_Mg24_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6193,15 +6191,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); } #endif - rate_p_Na23_to_Mg24_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_starlib) = rate; + rate_Na23_p_to_Mg24_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_starlib) = drate_dT; } } { - // He4_Mg24_to_Si28_starlib + // Mg24_He4_to_Si28_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6211,15 +6209,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); } #endif - rate_He4_Mg24_to_Si28_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_starlib) = rate; + rate_Mg24_He4_to_Si28_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_starlib) = drate_dT; } } { - // p_Al27_to_He4_Mg24_starlib + // Al27_p_to_He4_Mg24_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6229,15 +6227,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); } #endif - rate_p_Al27_to_He4_Mg24_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_starlib) = rate; + rate_Al27_p_to_He4_Mg24_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_starlib) = drate_dT; } } { - // p_Al27_to_Si28_starlib + // Al27_p_to_Si28_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6247,15 +6245,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); } #endif - rate_p_Al27_to_Si28_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_starlib) = rate; + rate_Al27_p_to_Si28_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_starlib) = drate_dT; } } { - // He4_Si28_to_S32_starlib + // Si28_He4_to_S32_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6265,15 +6263,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); } #endif - rate_He4_Si28_to_S32_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_starlib) = rate; + rate_Si28_He4_to_S32_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_starlib) = drate_dT; } } { - // p_P31_to_He4_Si28_starlib + // P31_p_to_He4_Si28_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6283,15 +6281,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); } #endif - rate_p_P31_to_He4_Si28_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_starlib) = rate; + rate_P31_p_to_He4_Si28_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_starlib) = drate_dT; } } { - // p_P31_to_S32_starlib + // P31_p_to_S32_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6301,15 +6299,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); } #endif - rate_p_P31_to_S32_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_starlib) = rate; + rate_P31_p_to_S32_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_starlib) = drate_dT; } } { - // He4_Cr48_to_p_Mn51_starlib + // Cr48_He4_to_p_Mn51_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6319,15 +6317,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - rate_He4_Cr48_to_p_Mn51_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_starlib) = rate; + rate_Cr48_He4_to_p_Mn51_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_starlib) = drate_dT; } } { - // He4_Cr48_to_Fe52_starlib + // Cr48_He4_to_Fe52_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6337,15 +6335,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); } #endif - rate_He4_Cr48_to_Fe52_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_starlib) = rate; + rate_Cr48_He4_to_Fe52_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_starlib) = drate_dT; } } { - // p_Mn51_to_Fe52_starlib + // Mn51_p_to_Fe52_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6355,15 +6353,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); } #endif - rate_p_Mn51_to_Fe52_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_starlib) = rate; + rate_Mn51_p_to_Fe52_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_starlib) = drate_dT; } } { - // He4_Mn51_to_Co55_starlib + // Mn51_He4_to_Co55_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6373,15 +6371,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); } #endif - rate_He4_Mn51_to_Co55_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_Co55_starlib) = rate; + rate_Mn51_He4_to_Co55_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_Co55_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_Co55_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_Co55_starlib) = drate_dT; } } { - // He4_Fe52_to_p_Co55_starlib + // Fe52_He4_to_p_Co55_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6391,15 +6389,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - rate_He4_Fe52_to_p_Co55_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_starlib) = rate; + rate_Fe52_He4_to_p_Co55_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_starlib) = drate_dT; } } { - // He4_Fe52_to_Ni56_starlib + // Fe52_He4_to_Ni56_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6409,15 +6407,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); } #endif - rate_He4_Fe52_to_Ni56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_starlib) = rate; + rate_Fe52_He4_to_Ni56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_starlib) = drate_dT; } } { - // p_Co55_to_Ni56_starlib + // Co55_p_to_Ni56_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6427,15 +6425,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); } #endif - rate_p_Co55_to_Ni56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_starlib) = rate; + rate_Co55_p_to_Ni56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_starlib) = drate_dT; } } { - // He4_Co55_to_Cu59_starlib + // Co55_He4_to_Cu59_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6445,15 +6443,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); } #endif - rate_He4_Co55_to_Cu59_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_Cu59_starlib) = rate; + rate_Co55_He4_to_Cu59_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_Cu59_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_Cu59_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_He4_to_Cu59_starlib) = drate_dT; } } { - // He4_Ni56_to_Zn60_starlib + // Ni56_He4_to_Zn60_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6463,15 +6461,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); } #endif - rate_He4_Ni56_to_Zn60_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni56_to_Zn60_starlib) = rate; + rate_Ni56_He4_to_Zn60_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_He4_to_Zn60_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_Zn60_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_Zn60_starlib) = drate_dT; } } { - // p_Cu59_to_He4_Ni56_starlib + // Cu59_p_to_He4_Ni56_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6481,15 +6479,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); } #endif - rate_p_Cu59_to_He4_Ni56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_He4_Ni56_starlib) = rate; + rate_Cu59_p_to_He4_Ni56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_He4_Ni56_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_He4_Ni56_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cu59_p_to_He4_Ni56_starlib) = drate_dT; } } { - // p_Cu59_to_Zn60_starlib + // Cu59_p_to_Zn60_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6499,10 +6497,10 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); } #endif - rate_p_Cu59_to_Zn60_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_Zn60_starlib) = rate; + rate_Cu59_p_to_Zn60_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_Zn60_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_Zn60_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cu59_p_to_Zn60_starlib) = drate_dT; } } @@ -6543,7 +6541,7 @@ namespace temp_tabular { } { - // C12_O16_to_n_Si27_starlib + // O16_C12_to_n_Si27_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6553,15 +6551,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_n_Si27_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_starlib) = rate; + rate_O16_C12_to_n_Si27_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_starlib) = drate_dT; } } { - // He4_Mn51_to_p_Fe54_starlib + // Mn51_He4_to_p_Fe54_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6571,15 +6569,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); } #endif - rate_He4_Mn51_to_p_Fe54_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_p_Fe54_starlib) = rate; + rate_Mn51_He4_to_p_Fe54_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_p_Fe54_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_p_Fe54_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_p_Fe54_starlib) = drate_dT; } } { - // p_Fe54_to_Co55_starlib + // Fe54_p_to_Co55_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6589,15 +6587,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); } #endif - rate_p_Fe54_to_Co55_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe54_to_Co55_starlib) = rate; + rate_Fe54_p_to_Co55_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_p_to_Co55_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_Co55_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe54_p_to_Co55_starlib) = drate_dT; } } { - // p_Fe56_to_Co57_starlib + // Fe56_p_to_Co57_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6607,15 +6605,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); } #endif - rate_p_Fe56_to_Co57_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe56_to_Co57_starlib) = rate; + rate_Fe56_p_to_Co57_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_p_to_Co57_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_Co57_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe56_p_to_Co57_starlib) = drate_dT; } } { - // He4_Fe54_to_Ni58_starlib + // Fe54_He4_to_Ni58_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6625,51 +6623,51 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); } #endif - rate_He4_Fe54_to_Ni58_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe54_to_Ni58_starlib) = rate; + rate_Fe54_He4_to_Ni58_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_He4_to_Ni58_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_Ni58_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_Ni58_starlib) = drate_dT; } } { - // n_Co55_to_Co56_starlib + // Co55_n_to_Co56_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co55_to_Co56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co55_to_Co56_starlib) = rate; + rate_Co55_n_to_Co56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_n_to_Co56_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co55_to_Co56_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_n_to_Co56_starlib) = drate_dT; } } { - // n_Co56_to_p_Fe56_starlib + // Co56_n_to_p_Fe56_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_p_Fe56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_p_Fe56_starlib) = rate; + rate_Co56_n_to_p_Fe56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_p_Fe56_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_p_Fe56_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co56_n_to_p_Fe56_starlib) = drate_dT; } } { - // n_Co56_to_Co57_starlib + // Co56_n_to_Co57_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_Co57_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_Co57_starlib) = rate; + rate_Co56_n_to_Co57_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_Co57_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_Co57_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co56_n_to_Co57_starlib) = drate_dT; } } { - // p_Co57_to_He4_Fe54_starlib + // Co57_p_to_He4_Fe54_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6679,15 +6677,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); } #endif - rate_p_Co57_to_He4_Fe54_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_He4_Fe54_starlib) = rate; + rate_Co57_p_to_He4_Fe54_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_He4_Fe54_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_He4_Fe54_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co57_p_to_He4_Fe54_starlib) = drate_dT; } } { - // p_Co57_to_Ni58_starlib + // Co57_p_to_Ni58_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6697,15 +6695,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); } #endif - rate_p_Co57_to_Ni58_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_Ni58_starlib) = rate; + rate_Co57_p_to_Ni58_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_Ni58_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_Ni58_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co57_p_to_Ni58_starlib) = drate_dT; } } { - // He4_Co55_to_p_Ni58_starlib + // Co55_He4_to_p_Ni58_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6715,27 +6713,27 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); } #endif - rate_He4_Co55_to_p_Ni58_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_p_Ni58_starlib) = rate; + rate_Co55_He4_to_p_Ni58_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_p_Ni58_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_p_Ni58_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Co55_He4_to_p_Ni58_starlib) = drate_dT; } } { - // n_Ni56_to_p_Co56_starlib + // Ni56_n_to_p_Co56_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_p_Co56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_p_Co56_starlib) = rate; + rate_Ni56_n_to_p_Co56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_p_Co56_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_p_Co56_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni56_n_to_p_Co56_starlib) = drate_dT; } } { - // p_Ni58_to_Cu59_starlib + // Ni58_p_to_Cu59_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6745,27 +6743,27 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); } #endif - rate_p_Ni58_to_Cu59_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni58_to_Cu59_starlib) = rate; + rate_Ni58_p_to_Cu59_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_p_to_Cu59_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_Cu59_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni58_p_to_Cu59_starlib) = drate_dT; } } { - // n_Cu59_to_He4_Co56_starlib + // Cu59_n_to_He4_Co56_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu59_to_He4_Co56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu59_to_He4_Co56_starlib) = rate; + rate_Cu59_n_to_He4_Co56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_n_to_He4_Co56_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu59_to_He4_Co56_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cu59_n_to_He4_Co56_starlib) = drate_dT; } } { - // He4_S32_to_Ar36_starlib + // S32_He4_to_Ar36_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6775,15 +6773,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); } #endif - rate_He4_S32_to_Ar36_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_starlib) = rate; + rate_S32_He4_to_Ar36_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_starlib) = drate_dT; } } { - // p_Cl35_to_Ar36_starlib + // Cl35_p_to_He4_S32_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6793,15 +6791,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - rate_p_Cl35_to_Ar36_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_starlib) = rate; + rate_Cl35_p_to_He4_S32_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_starlib) = drate_dT; } } { - // p_Cl35_to_He4_S32_starlib + // Cl35_p_to_Ar36_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6811,15 +6809,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); } #endif - rate_p_Cl35_to_He4_S32_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_starlib) = rate; + rate_Cl35_p_to_Ar36_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_starlib) = drate_dT; } } { - // He4_Ar36_to_Ca40_starlib + // Ar36_He4_to_Ca40_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6829,15 +6827,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); } #endif - rate_He4_Ar36_to_Ca40_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_starlib) = rate; + rate_Ar36_He4_to_Ca40_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_starlib) = drate_dT; } } { - // p_K39_to_Ca40_starlib + // K39_p_to_He4_Ar36_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6847,15 +6845,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - rate_p_K39_to_Ca40_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_starlib) = rate; + rate_K39_p_to_He4_Ar36_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_starlib) = drate_dT; } } { - // p_K39_to_He4_Ar36_starlib + // K39_p_to_Ca40_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6865,15 +6863,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); } #endif - rate_p_K39_to_He4_Ar36_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_starlib) = rate; + rate_K39_p_to_Ca40_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_starlib) = drate_dT; } } { - // He4_Ca40_to_Ti44_starlib + // Ca40_He4_to_Ti44_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6883,15 +6881,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); } #endif - rate_He4_Ca40_to_Ti44_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_starlib) = rate; + rate_Ca40_He4_to_Ti44_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_starlib) = drate_dT; } } { - // p_Sc43_to_Ti44_starlib + // Sc43_p_to_He4_Ca40_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6901,15 +6899,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - rate_p_Sc43_to_Ti44_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_starlib) = rate; + rate_Sc43_p_to_He4_Ca40_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_starlib) = drate_dT; } } { - // p_Sc43_to_He4_Ca40_starlib + // Sc43_p_to_Ti44_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6919,15 +6917,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); } #endif - rate_p_Sc43_to_He4_Ca40_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_starlib) = rate; + rate_Sc43_p_to_Ti44_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_starlib) = drate_dT; } } { - // He4_Ti44_to_Cr48_starlib + // Ti44_He4_to_Cr48_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6937,15 +6935,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); } #endif - rate_He4_Ti44_to_Cr48_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_starlib) = rate; + rate_Ti44_He4_to_Cr48_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_starlib) = drate_dT; } } { - // p_V47_to_Cr48_starlib + // V47_p_to_He4_Ti44_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6955,15 +6953,15 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); } #endif - rate_p_V47_to_Cr48_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_starlib) = rate; + rate_V47_p_to_He4_Ti44_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_starlib) = drate_dT; } } { - // p_V47_to_He4_Ti44_starlib + // V47_p_to_Cr48_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -6973,88 +6971,87 @@ namespace temp_tabular { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); } #endif - rate_p_V47_to_He4_Ti44_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_starlib) = rate; + rate_V47_p_to_Cr48_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_starlib) = drate_dT; } } { - // n_Fe52_to_Fe53_starlib + // Fe52_n_to_Fe53_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe52_to_Fe53_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe52_to_Fe53_starlib) = rate; + rate_Fe52_n_to_Fe53_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_to_Fe53_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe52_n_to_Fe53_starlib) = drate_dT; } } { - // n_Fe53_to_Fe54_starlib + // Fe53_n_to_Fe54_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe53_to_Fe54_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe53_to_Fe54_starlib) = rate; + rate_Fe53_n_to_Fe54_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_n_to_Fe54_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_starlib) = drate_dT; } } { - // n_Fe54_to_Fe55_starlib + // Fe54_n_to_Fe55_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe54_to_Fe55_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe54_to_Fe55_starlib) = rate; + rate_Fe54_n_to_Fe55_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_to_Fe55_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe54_n_to_Fe55_starlib) = drate_dT; } } { - // n_Fe55_to_Fe56_starlib + // Fe55_n_to_Fe56_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe55_to_Fe56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe55_to_Fe56_starlib) = rate; + rate_Fe55_n_to_Fe56_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_n_to_Fe56_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_starlib) = drate_dT; } } { - // n_Ni56_to_Ni57_starlib + // Ni56_n_to_Ni57_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_Ni57_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_Ni57_starlib) = rate; + rate_Ni56_n_to_Ni57_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_Ni57_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni56_n_to_Ni57_starlib) = drate_dT; } } { - // n_Ni57_to_Ni58_starlib + // Ni57_n_to_Ni58_starlib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_Ni58_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_Ni58_starlib) = rate; + rate_Ni57_n_to_Ni58_starlib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_Ni58_starlib) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_starlib) = drate_dT; + rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_starlib) = drate_dT; } } } - } #endif diff --git a/networks/he-burn/ase-iron/Make.package b/networks/he-burn/ase-iron/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/ase-iron/Make.package +++ b/networks/he-burn/ase-iron/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/ase-iron/actual_network.H b/networks/he-burn/ase-iron/actual_network.H index 50e3cb8bf..ad2684a02 100644 --- a/networks/he-burn/ase-iron/actual_network.H +++ b/networks/he-burn/ase-iron/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -264,77 +264,77 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_p_C12_to_N13_reaclib = 1, - k_He4_C12_to_O16_reaclib = 2, - k_He4_O16_to_Ne20_reaclib = 3, - k_He4_Ne20_to_Mg24_reaclib = 4, - k_p_Na23_to_Mg24_reaclib = 5, - k_He4_Mg24_to_Si28_reaclib = 6, - k_p_Al27_to_Si28_reaclib = 7, - k_He4_Si28_to_S32_reaclib = 8, - k_p_P31_to_S32_reaclib = 9, - k_He4_Cr48_to_Fe52_reaclib = 10, - k_p_Mn51_to_Fe52_reaclib = 11, - k_He4_Mn51_to_Co55_reaclib = 12, - k_He4_Fe52_to_Ni56_reaclib = 13, - k_p_Co55_to_Ni56_reaclib = 14, - k_He4_Co55_to_Cu59_reaclib = 15, - k_He4_Ni56_to_Zn60_reaclib = 16, - k_p_Cu59_to_Zn60_reaclib = 17, + k_C12_p_to_N13_reaclib = 1, + k_C12_He4_to_O16_reaclib = 2, + k_O16_He4_to_Ne20_reaclib = 3, + k_Ne20_He4_to_Mg24_reaclib = 4, + k_Na23_p_to_Mg24_reaclib = 5, + k_Mg24_He4_to_Si28_reaclib = 6, + k_Al27_p_to_Si28_reaclib = 7, + k_Si28_He4_to_S32_reaclib = 8, + k_P31_p_to_S32_reaclib = 9, + k_Cr48_He4_to_Fe52_reaclib = 10, + k_Mn51_p_to_Fe52_reaclib = 11, + k_Mn51_He4_to_Co55_reaclib = 12, + k_Fe52_He4_to_Ni56_reaclib = 13, + k_Co55_p_to_Ni56_reaclib = 14, + k_Co55_He4_to_Cu59_reaclib = 15, + k_Ni56_He4_to_Zn60_reaclib = 16, + k_Cu59_p_to_Zn60_reaclib = 17, k_C12_C12_to_p_Na23_reaclib = 18, k_C12_C12_to_He4_Ne20_reaclib = 19, - k_He4_N13_to_p_O16_reaclib = 20, - k_C12_O16_to_p_Al27_reaclib = 21, - k_C12_O16_to_He4_Mg24_reaclib = 22, + k_N13_He4_to_p_O16_reaclib = 20, + k_O16_C12_to_p_Al27_reaclib = 21, + k_O16_C12_to_He4_Mg24_reaclib = 22, k_O16_O16_to_p_P31_reaclib = 23, k_O16_O16_to_He4_Si28_reaclib = 24, - k_p_Na23_to_He4_Ne20_reaclib = 25, - k_p_Al27_to_He4_Mg24_reaclib = 26, - k_p_P31_to_He4_Si28_reaclib = 27, - k_He4_Cr48_to_p_Mn51_reaclib = 28, - k_He4_Fe52_to_p_Co55_reaclib = 29, - k_p_Cu59_to_He4_Ni56_reaclib = 30, + k_Na23_p_to_He4_Ne20_reaclib = 25, + k_Al27_p_to_He4_Mg24_reaclib = 26, + k_P31_p_to_He4_Si28_reaclib = 27, + k_Cr48_He4_to_p_Mn51_reaclib = 28, + k_Fe52_He4_to_p_Co55_reaclib = 29, + k_Cu59_p_to_He4_Ni56_reaclib = 30, k_He4_He4_He4_to_C12_reaclib = 31, k_C12_C12_to_n_Mg23_reaclib = 32, k_O16_O16_to_n_S31_reaclib = 33, - k_C12_O16_to_n_Si27_reaclib = 34, - k_p_Fe54_to_Co55_reaclib = 35, - k_He4_Fe54_to_Ni58_reaclib = 36, - k_p_Fe56_to_Co57_reaclib = 37, - k_n_Co55_to_Co56_reaclib = 38, - k_n_Co56_to_Co57_reaclib = 39, - k_p_Co57_to_Ni58_reaclib = 40, - k_p_Ni58_to_Cu59_reaclib = 41, - k_He4_Mn51_to_p_Fe54_reaclib = 42, - k_He4_Co55_to_p_Ni58_reaclib = 43, - k_n_Co56_to_p_Fe56_reaclib = 44, - k_p_Co57_to_He4_Fe54_reaclib = 45, - k_n_Ni56_to_p_Co56_reaclib = 46, - k_n_Cu59_to_He4_Co56_reaclib = 47, - k_He4_S32_to_Ar36_reaclib = 48, - k_p_Cl35_to_Ar36_reaclib = 49, - k_p_Cl35_to_He4_S32_reaclib = 50, - k_He4_Ar36_to_Ca40_reaclib = 51, - k_p_K39_to_Ca40_reaclib = 52, - k_p_K39_to_He4_Ar36_reaclib = 53, - k_He4_Ca40_to_Ti44_reaclib = 54, - k_p_Sc43_to_Ti44_reaclib = 55, - k_p_Sc43_to_He4_Ca40_reaclib = 56, - k_He4_Ti44_to_Cr48_reaclib = 57, - k_He4_Ti44_to_p_V47_reaclib = 58, - k_p_V47_to_Cr48_reaclib = 59, - k_n_Fe52_to_Fe53_reaclib = 60, - k_n_Fe53_to_Fe54_reaclib = 61, - k_n_Fe54_to_Fe55_reaclib = 62, - k_n_Fe55_to_Fe56_reaclib = 63, - k_n_Ni56_to_Ni57_reaclib = 64, - k_n_Ni57_to_Ni58_reaclib = 65, - k_Co56_to_Fe56_weaktab = 66, - k_Co56_to_Ni56_weaktab = 67, - k_Fe56_to_Co56_weaktab = 68, - k_Ni56_to_Co56_weaktab = 69, - k_n_to_p_weaktab = 70, - k_p_to_n_weaktab = 71, + k_O16_C12_to_n_Si27_reaclib = 34, + k_Fe54_p_to_Co55_reaclib = 35, + k_Fe54_He4_to_Ni58_reaclib = 36, + k_Fe56_p_to_Co57_reaclib = 37, + k_Co55_n_to_Co56_reaclib = 38, + k_Co56_n_to_Co57_reaclib = 39, + k_Co57_p_to_Ni58_reaclib = 40, + k_Ni58_p_to_Cu59_reaclib = 41, + k_Mn51_He4_to_p_Fe54_reaclib = 42, + k_Co55_He4_to_p_Ni58_reaclib = 43, + k_Co56_n_to_p_Fe56_reaclib = 44, + k_Co57_p_to_He4_Fe54_reaclib = 45, + k_Ni56_n_to_p_Co56_reaclib = 46, + k_Cu59_n_to_He4_Co56_reaclib = 47, + k_S32_He4_to_Ar36_reaclib = 48, + k_Cl35_p_to_He4_S32_reaclib = 49, + k_Cl35_p_to_Ar36_reaclib = 50, + k_Ar36_He4_to_Ca40_reaclib = 51, + k_K39_p_to_He4_Ar36_reaclib = 52, + k_K39_p_to_Ca40_reaclib = 53, + k_Ca40_He4_to_Ti44_reaclib = 54, + k_Sc43_p_to_He4_Ca40_reaclib = 55, + k_Sc43_p_to_Ti44_reaclib = 56, + k_Ti44_He4_to_p_V47_reaclib = 57, + k_Ti44_He4_to_Cr48_reaclib = 58, + k_V47_p_to_Cr48_reaclib = 59, + k_Fe52_n_to_Fe53_reaclib = 60, + k_Fe53_n_to_Fe54_reaclib = 61, + k_Fe54_n_to_Fe55_reaclib = 62, + k_Fe55_n_to_Fe56_reaclib = 63, + k_Ni56_n_to_Ni57_reaclib = 64, + k_Ni57_n_to_Ni58_reaclib = 65, + k_Co56_to_Fe56_electron_capture_weaktab = 66, + k_Co56_to_Ni56_beta_neg_weaktab = 67, + k_Fe56_to_Co56_beta_neg_weaktab = 68, + k_Ni56_to_Co56_electron_capture_weaktab = 69, + k_n_to_p_beta_neg_weaktab = 70, + k_p_to_n_electron_capture_weaktab = 71, k_S32_He4_to_Ar36_approx = 72, k_Ar36_to_S32_He4_approx = 73, k_Ar36_He4_to_Ca40_approx = 74, @@ -351,7 +351,7 @@ namespace Rates k_Ni58_to_Ni56_n_n_approx = 85, k_C12_C12_to_Mg24_modified = 86, k_O16_O16_to_S32_modified = 87, - k_C12_O16_to_Si28_modified = 88, + k_O16_C12_to_Si28_modified = 88, k_N13_to_p_C12_derived = 89, k_O16_to_He4_C12_derived = 90, k_Ne20_to_He4_O16_derived = 91, @@ -369,20 +369,20 @@ namespace Rates k_Cu59_to_He4_Co55_derived = 103, k_Zn60_to_p_Cu59_derived = 104, k_Zn60_to_He4_Ni56_derived = 105, - k_C12_to_He4_He4_He4_derived = 106, - k_p_O16_to_He4_N13_derived = 107, - k_He4_Ne20_to_p_Na23_derived = 108, - k_He4_Ne20_to_C12_C12_derived = 109, - k_p_Na23_to_C12_C12_derived = 110, - k_He4_Mg24_to_p_Al27_derived = 111, - k_He4_Mg24_to_C12_O16_derived = 112, - k_p_Al27_to_C12_O16_derived = 113, - k_He4_Si28_to_p_P31_derived = 114, - k_He4_Si28_to_O16_O16_derived = 115, - k_p_P31_to_O16_O16_derived = 116, - k_p_Mn51_to_He4_Cr48_derived = 117, - k_p_Co55_to_He4_Fe52_derived = 118, - k_He4_Ni56_to_p_Cu59_derived = 119, + k_C12_to_3He4_derived = 106, + k_O16_p_to_He4_N13_derived = 107, + k_Ne20_He4_to_p_Na23_derived = 108, + k_Ne20_He4_to_C12_C12_derived = 109, + k_Na23_p_to_C12_C12_derived = 110, + k_Mg24_He4_to_p_Al27_derived = 111, + k_Mg24_He4_to_C12_O16_derived = 112, + k_Al27_p_to_C12_O16_derived = 113, + k_Si28_He4_to_p_P31_derived = 114, + k_Si28_He4_to_O16_O16_derived = 115, + k_P31_p_to_O16_O16_derived = 116, + k_Mn51_p_to_He4_Cr48_derived = 117, + k_Co55_p_to_He4_Fe52_derived = 118, + k_Ni56_He4_to_p_Cu59_derived = 119, k_Mg24_to_C12_C12_derived = 120, k_S32_to_O16_O16_derived = 121, k_Si28_to_C12_O16_derived = 122, @@ -393,31 +393,31 @@ namespace Rates k_Ni58_to_p_Co57_derived = 127, k_Ni58_to_He4_Fe54_derived = 128, k_Cu59_to_p_Ni58_derived = 129, - k_p_Fe54_to_He4_Mn51_derived = 130, - k_He4_Fe54_to_p_Co57_derived = 131, - k_p_Fe56_to_n_Co56_derived = 132, - k_p_Co56_to_n_Ni56_derived = 133, - k_He4_Co56_to_n_Cu59_derived = 134, - k_p_Ni58_to_He4_Co55_derived = 135, - k_He4_S32_to_p_Cl35_derived = 136, + k_Fe54_p_to_He4_Mn51_derived = 130, + k_Fe54_He4_to_p_Co57_derived = 131, + k_Fe56_p_to_n_Co56_derived = 132, + k_Co56_p_to_n_Ni56_derived = 133, + k_Co56_He4_to_n_Cu59_derived = 134, + k_Ni58_p_to_He4_Co55_derived = 135, + k_S32_He4_to_p_Cl35_derived = 136, k_Ar36_to_He4_S32_derived = 137, k_Ar36_to_p_Cl35_derived = 138, - k_He4_Ar36_to_p_K39_derived = 139, + k_Ar36_He4_to_p_K39_derived = 139, k_Ca40_to_He4_Ar36_derived = 140, k_Ca40_to_p_K39_derived = 141, - k_He4_Ca40_to_p_Sc43_derived = 142, + k_Ca40_He4_to_p_Sc43_derived = 142, k_Ti44_to_He4_Ca40_derived = 143, k_Ti44_to_p_Sc43_derived = 144, - k_Cr48_to_He4_Ti44_derived = 145, - k_Cr48_to_p_V47_derived = 146, - k_p_V47_to_He4_Ti44_derived = 147, - k_Fe54_to_n_Fe53_derived = 148, - k_Fe53_to_n_Fe52_derived = 149, - k_Fe56_to_n_Fe55_derived = 150, - k_Fe55_to_n_Fe54_derived = 151, - k_Ni58_to_n_Ni57_derived = 152, - k_Ni57_to_n_Ni56_derived = 153, - NumRates = k_Ni57_to_n_Ni56_derived + k_V47_p_to_He4_Ti44_derived = 145, + k_Cr48_to_He4_Ti44_derived = 146, + k_Cr48_to_p_V47_derived = 147, + k_Fe53_to_n_Fe52_derived = 148, + k_Fe54_to_n_Fe53_derived = 149, + k_Fe55_to_n_Fe54_derived = 150, + k_Fe56_to_n_Fe55_derived = 151, + k_Ni57_to_n_Ni56_derived = 152, + k_Ni58_to_n_Ni57_derived = 153, + NumRates = k_Ni58_to_n_Ni57_derived }; enum ScreenPairs : @@ -471,77 +471,77 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "p_C12_to_N13_reaclib", // 1, - "He4_C12_to_O16_reaclib", // 2, - "He4_O16_to_Ne20_reaclib", // 3, - "He4_Ne20_to_Mg24_reaclib", // 4, - "p_Na23_to_Mg24_reaclib", // 5, - "He4_Mg24_to_Si28_reaclib", // 6, - "p_Al27_to_Si28_reaclib", // 7, - "He4_Si28_to_S32_reaclib", // 8, - "p_P31_to_S32_reaclib", // 9, - "He4_Cr48_to_Fe52_reaclib", // 10, - "p_Mn51_to_Fe52_reaclib", // 11, - "He4_Mn51_to_Co55_reaclib", // 12, - "He4_Fe52_to_Ni56_reaclib", // 13, - "p_Co55_to_Ni56_reaclib", // 14, - "He4_Co55_to_Cu59_reaclib", // 15, - "He4_Ni56_to_Zn60_reaclib", // 16, - "p_Cu59_to_Zn60_reaclib", // 17, + "C12_p_to_N13_reaclib", // 1, + "C12_He4_to_O16_reaclib", // 2, + "O16_He4_to_Ne20_reaclib", // 3, + "Ne20_He4_to_Mg24_reaclib", // 4, + "Na23_p_to_Mg24_reaclib", // 5, + "Mg24_He4_to_Si28_reaclib", // 6, + "Al27_p_to_Si28_reaclib", // 7, + "Si28_He4_to_S32_reaclib", // 8, + "P31_p_to_S32_reaclib", // 9, + "Cr48_He4_to_Fe52_reaclib", // 10, + "Mn51_p_to_Fe52_reaclib", // 11, + "Mn51_He4_to_Co55_reaclib", // 12, + "Fe52_He4_to_Ni56_reaclib", // 13, + "Co55_p_to_Ni56_reaclib", // 14, + "Co55_He4_to_Cu59_reaclib", // 15, + "Ni56_He4_to_Zn60_reaclib", // 16, + "Cu59_p_to_Zn60_reaclib", // 17, "C12_C12_to_p_Na23_reaclib", // 18, "C12_C12_to_He4_Ne20_reaclib", // 19, - "He4_N13_to_p_O16_reaclib", // 20, - "C12_O16_to_p_Al27_reaclib", // 21, - "C12_O16_to_He4_Mg24_reaclib", // 22, + "N13_He4_to_p_O16_reaclib", // 20, + "O16_C12_to_p_Al27_reaclib", // 21, + "O16_C12_to_He4_Mg24_reaclib", // 22, "O16_O16_to_p_P31_reaclib", // 23, "O16_O16_to_He4_Si28_reaclib", // 24, - "p_Na23_to_He4_Ne20_reaclib", // 25, - "p_Al27_to_He4_Mg24_reaclib", // 26, - "p_P31_to_He4_Si28_reaclib", // 27, - "He4_Cr48_to_p_Mn51_reaclib", // 28, - "He4_Fe52_to_p_Co55_reaclib", // 29, - "p_Cu59_to_He4_Ni56_reaclib", // 30, + "Na23_p_to_He4_Ne20_reaclib", // 25, + "Al27_p_to_He4_Mg24_reaclib", // 26, + "P31_p_to_He4_Si28_reaclib", // 27, + "Cr48_He4_to_p_Mn51_reaclib", // 28, + "Fe52_He4_to_p_Co55_reaclib", // 29, + "Cu59_p_to_He4_Ni56_reaclib", // 30, "He4_He4_He4_to_C12_reaclib", // 31, "C12_C12_to_n_Mg23_reaclib", // 32, "O16_O16_to_n_S31_reaclib", // 33, - "C12_O16_to_n_Si27_reaclib", // 34, - "p_Fe54_to_Co55_reaclib", // 35, - "He4_Fe54_to_Ni58_reaclib", // 36, - "p_Fe56_to_Co57_reaclib", // 37, - "n_Co55_to_Co56_reaclib", // 38, - "n_Co56_to_Co57_reaclib", // 39, - "p_Co57_to_Ni58_reaclib", // 40, - "p_Ni58_to_Cu59_reaclib", // 41, - "He4_Mn51_to_p_Fe54_reaclib", // 42, - "He4_Co55_to_p_Ni58_reaclib", // 43, - "n_Co56_to_p_Fe56_reaclib", // 44, - "p_Co57_to_He4_Fe54_reaclib", // 45, - "n_Ni56_to_p_Co56_reaclib", // 46, - "n_Cu59_to_He4_Co56_reaclib", // 47, - "He4_S32_to_Ar36_reaclib", // 48, - "p_Cl35_to_Ar36_reaclib", // 49, - "p_Cl35_to_He4_S32_reaclib", // 50, - "He4_Ar36_to_Ca40_reaclib", // 51, - "p_K39_to_Ca40_reaclib", // 52, - "p_K39_to_He4_Ar36_reaclib", // 53, - "He4_Ca40_to_Ti44_reaclib", // 54, - "p_Sc43_to_Ti44_reaclib", // 55, - "p_Sc43_to_He4_Ca40_reaclib", // 56, - "He4_Ti44_to_Cr48_reaclib", // 57, - "He4_Ti44_to_p_V47_reaclib", // 58, - "p_V47_to_Cr48_reaclib", // 59, - "n_Fe52_to_Fe53_reaclib", // 60, - "n_Fe53_to_Fe54_reaclib", // 61, - "n_Fe54_to_Fe55_reaclib", // 62, - "n_Fe55_to_Fe56_reaclib", // 63, - "n_Ni56_to_Ni57_reaclib", // 64, - "n_Ni57_to_Ni58_reaclib", // 65, - "Co56_to_Fe56_weaktab", // 66, - "Co56_to_Ni56_weaktab", // 67, - "Fe56_to_Co56_weaktab", // 68, - "Ni56_to_Co56_weaktab", // 69, - "n_to_p_weaktab", // 70, - "p_to_n_weaktab", // 71, + "O16_C12_to_n_Si27_reaclib", // 34, + "Fe54_p_to_Co55_reaclib", // 35, + "Fe54_He4_to_Ni58_reaclib", // 36, + "Fe56_p_to_Co57_reaclib", // 37, + "Co55_n_to_Co56_reaclib", // 38, + "Co56_n_to_Co57_reaclib", // 39, + "Co57_p_to_Ni58_reaclib", // 40, + "Ni58_p_to_Cu59_reaclib", // 41, + "Mn51_He4_to_p_Fe54_reaclib", // 42, + "Co55_He4_to_p_Ni58_reaclib", // 43, + "Co56_n_to_p_Fe56_reaclib", // 44, + "Co57_p_to_He4_Fe54_reaclib", // 45, + "Ni56_n_to_p_Co56_reaclib", // 46, + "Cu59_n_to_He4_Co56_reaclib", // 47, + "S32_He4_to_Ar36_reaclib", // 48, + "Cl35_p_to_He4_S32_reaclib", // 49, + "Cl35_p_to_Ar36_reaclib", // 50, + "Ar36_He4_to_Ca40_reaclib", // 51, + "K39_p_to_He4_Ar36_reaclib", // 52, + "K39_p_to_Ca40_reaclib", // 53, + "Ca40_He4_to_Ti44_reaclib", // 54, + "Sc43_p_to_He4_Ca40_reaclib", // 55, + "Sc43_p_to_Ti44_reaclib", // 56, + "Ti44_He4_to_p_V47_reaclib", // 57, + "Ti44_He4_to_Cr48_reaclib", // 58, + "V47_p_to_Cr48_reaclib", // 59, + "Fe52_n_to_Fe53_reaclib", // 60, + "Fe53_n_to_Fe54_reaclib", // 61, + "Fe54_n_to_Fe55_reaclib", // 62, + "Fe55_n_to_Fe56_reaclib", // 63, + "Ni56_n_to_Ni57_reaclib", // 64, + "Ni57_n_to_Ni58_reaclib", // 65, + "Co56_to_Fe56_electron_capture_weaktab", // 66, + "Co56_to_Ni56_beta_neg_weaktab", // 67, + "Fe56_to_Co56_beta_neg_weaktab", // 68, + "Ni56_to_Co56_electron_capture_weaktab", // 69, + "n_to_p_beta_neg_weaktab", // 70, + "p_to_n_electron_capture_weaktab", // 71, "S32_He4_to_Ar36_approx", // 72, "Ar36_to_S32_He4_approx", // 73, "Ar36_He4_to_Ca40_approx", // 74, @@ -558,7 +558,7 @@ namespace Rates "Ni58_to_Ni56_n_n_approx", // 85, "C12_C12_to_Mg24_modified", // 86, "O16_O16_to_S32_modified", // 87, - "C12_O16_to_Si28_modified", // 88, + "O16_C12_to_Si28_modified", // 88, "N13_to_p_C12_derived", // 89, "O16_to_He4_C12_derived", // 90, "Ne20_to_He4_O16_derived", // 91, @@ -576,20 +576,20 @@ namespace Rates "Cu59_to_He4_Co55_derived", // 103, "Zn60_to_p_Cu59_derived", // 104, "Zn60_to_He4_Ni56_derived", // 105, - "C12_to_He4_He4_He4_derived", // 106, - "p_O16_to_He4_N13_derived", // 107, - "He4_Ne20_to_p_Na23_derived", // 108, - "He4_Ne20_to_C12_C12_derived", // 109, - "p_Na23_to_C12_C12_derived", // 110, - "He4_Mg24_to_p_Al27_derived", // 111, - "He4_Mg24_to_C12_O16_derived", // 112, - "p_Al27_to_C12_O16_derived", // 113, - "He4_Si28_to_p_P31_derived", // 114, - "He4_Si28_to_O16_O16_derived", // 115, - "p_P31_to_O16_O16_derived", // 116, - "p_Mn51_to_He4_Cr48_derived", // 117, - "p_Co55_to_He4_Fe52_derived", // 118, - "He4_Ni56_to_p_Cu59_derived", // 119, + "C12_to_3He4_derived", // 106, + "O16_p_to_He4_N13_derived", // 107, + "Ne20_He4_to_p_Na23_derived", // 108, + "Ne20_He4_to_C12_C12_derived", // 109, + "Na23_p_to_C12_C12_derived", // 110, + "Mg24_He4_to_p_Al27_derived", // 111, + "Mg24_He4_to_C12_O16_derived", // 112, + "Al27_p_to_C12_O16_derived", // 113, + "Si28_He4_to_p_P31_derived", // 114, + "Si28_He4_to_O16_O16_derived", // 115, + "P31_p_to_O16_O16_derived", // 116, + "Mn51_p_to_He4_Cr48_derived", // 117, + "Co55_p_to_He4_Fe52_derived", // 118, + "Ni56_He4_to_p_Cu59_derived", // 119, "Mg24_to_C12_C12_derived", // 120, "S32_to_O16_O16_derived", // 121, "Si28_to_C12_O16_derived", // 122, @@ -600,30 +600,30 @@ namespace Rates "Ni58_to_p_Co57_derived", // 127, "Ni58_to_He4_Fe54_derived", // 128, "Cu59_to_p_Ni58_derived", // 129, - "p_Fe54_to_He4_Mn51_derived", // 130, - "He4_Fe54_to_p_Co57_derived", // 131, - "p_Fe56_to_n_Co56_derived", // 132, - "p_Co56_to_n_Ni56_derived", // 133, - "He4_Co56_to_n_Cu59_derived", // 134, - "p_Ni58_to_He4_Co55_derived", // 135, - "He4_S32_to_p_Cl35_derived", // 136, + "Fe54_p_to_He4_Mn51_derived", // 130, + "Fe54_He4_to_p_Co57_derived", // 131, + "Fe56_p_to_n_Co56_derived", // 132, + "Co56_p_to_n_Ni56_derived", // 133, + "Co56_He4_to_n_Cu59_derived", // 134, + "Ni58_p_to_He4_Co55_derived", // 135, + "S32_He4_to_p_Cl35_derived", // 136, "Ar36_to_He4_S32_derived", // 137, "Ar36_to_p_Cl35_derived", // 138, - "He4_Ar36_to_p_K39_derived", // 139, + "Ar36_He4_to_p_K39_derived", // 139, "Ca40_to_He4_Ar36_derived", // 140, "Ca40_to_p_K39_derived", // 141, - "He4_Ca40_to_p_Sc43_derived", // 142, + "Ca40_He4_to_p_Sc43_derived", // 142, "Ti44_to_He4_Ca40_derived", // 143, "Ti44_to_p_Sc43_derived", // 144, - "Cr48_to_He4_Ti44_derived", // 145, - "Cr48_to_p_V47_derived", // 146, - "p_V47_to_He4_Ti44_derived", // 147, - "Fe54_to_n_Fe53_derived", // 148, - "Fe53_to_n_Fe52_derived", // 149, - "Fe56_to_n_Fe55_derived", // 150, - "Fe55_to_n_Fe54_derived", // 151, - "Ni58_to_n_Ni57_derived", // 152, - "Ni57_to_n_Ni56_derived" // 153, + "V47_p_to_He4_Ti44_derived", // 145, + "Cr48_to_He4_Ti44_derived", // 146, + "Cr48_to_p_V47_derived", // 147, + "Fe53_to_n_Fe52_derived", // 148, + "Fe54_to_n_Fe53_derived", // 149, + "Fe55_to_n_Fe54_derived", // 150, + "Fe56_to_n_Fe55_derived", // 151, + "Ni57_to_n_Ni56_derived", // 152, + "Ni58_to_n_Ni57_derived" // 153, }; template @@ -656,44 +656,44 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 42; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_derived, - He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_He4_Cr48_to_Fe52_reaclib, k_Fe52_to_He4_Cr48_derived, - H1, Mn51, -1, Fe52, -1, -1, Mn51, Fe52, k_p_Mn51_to_Fe52_reaclib, k_Fe52_to_p_Mn51_derived, - He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_He4_Mn51_to_Co55_reaclib, k_Co55_to_He4_Mn51_derived, - He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_He4_Fe52_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_derived, - H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_p_Co55_to_Ni56_reaclib, k_Ni56_to_p_Co55_derived, - He4, Co55, -1, Cu59, -1, -1, Co55, Cu59, k_He4_Co55_to_Cu59_reaclib, k_Cu59_to_He4_Co55_derived, - He4, Ni56, -1, Zn60, -1, -1, Ni56, Zn60, k_He4_Ni56_to_Zn60_reaclib, k_Zn60_to_He4_Ni56_derived, - H1, Cu59, -1, Zn60, -1, -1, Cu59, Zn60, k_p_Cu59_to_Zn60_reaclib, k_Zn60_to_p_Cu59_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_derived, - He4, Cr48, -1, H1, Mn51, -1, Cr48, Mn51, k_He4_Cr48_to_p_Mn51_reaclib, k_p_Mn51_to_He4_Cr48_derived, - He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_He4_Fe52_to_p_Co55_reaclib, k_p_Co55_to_He4_Fe52_derived, - H1, Cu59, -1, He4, Ni56, -1, Cu59, Ni56, k_p_Cu59_to_He4_Ni56_reaclib, k_He4_Ni56_to_p_Cu59_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, - H1, Fe54, -1, Co55, -1, -1, Fe54, Co55, k_p_Fe54_to_Co55_reaclib, k_Co55_to_p_Fe54_derived, - He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_He4_Fe54_to_Ni58_reaclib, k_Ni58_to_He4_Fe54_derived, - H1, Fe56, -1, Co57, -1, -1, Fe56, Co57, k_p_Fe56_to_Co57_reaclib, k_Co57_to_p_Fe56_derived, - N, Co55, -1, Co56, -1, -1, Co55, Co56, k_n_Co55_to_Co56_reaclib, k_Co56_to_n_Co55_derived, - N, Co56, -1, Co57, -1, -1, Co56, Co57, k_n_Co56_to_Co57_reaclib, k_Co57_to_n_Co56_derived, - H1, Co57, -1, Ni58, -1, -1, Co57, Ni58, k_p_Co57_to_Ni58_reaclib, k_Ni58_to_p_Co57_derived, - H1, Ni58, -1, Cu59, -1, -1, Ni58, Cu59, k_p_Ni58_to_Cu59_reaclib, k_Cu59_to_p_Ni58_derived, - He4, Mn51, -1, H1, Fe54, -1, Mn51, Fe54, k_He4_Mn51_to_p_Fe54_reaclib, k_p_Fe54_to_He4_Mn51_derived, - He4, Co55, -1, H1, Ni58, -1, Co55, Ni58, k_He4_Co55_to_p_Ni58_reaclib, k_p_Ni58_to_He4_Co55_derived, - N, Co56, -1, H1, Fe56, -1, Co56, Fe56, k_n_Co56_to_p_Fe56_reaclib, k_p_Fe56_to_n_Co56_derived, - H1, Co57, -1, He4, Fe54, -1, Co57, Fe54, k_p_Co57_to_He4_Fe54_reaclib, k_He4_Fe54_to_p_Co57_derived, - N, Ni56, -1, H1, Co56, -1, Ni56, Co56, k_n_Ni56_to_p_Co56_reaclib, k_p_Co56_to_n_Ni56_derived, - N, Cu59, -1, He4, Co56, -1, Cu59, Co56, k_n_Cu59_to_He4_Co56_reaclib, k_He4_Co56_to_n_Cu59_derived, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_derived, + He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_Cr48_He4_to_Fe52_reaclib, k_Fe52_to_He4_Cr48_derived, + H1, Mn51, -1, Fe52, -1, -1, Mn51, Fe52, k_Mn51_p_to_Fe52_reaclib, k_Fe52_to_p_Mn51_derived, + He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_Mn51_He4_to_Co55_reaclib, k_Co55_to_He4_Mn51_derived, + He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_Fe52_He4_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_derived, + H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_Co55_p_to_Ni56_reaclib, k_Ni56_to_p_Co55_derived, + He4, Co55, -1, Cu59, -1, -1, Co55, Cu59, k_Co55_He4_to_Cu59_reaclib, k_Cu59_to_He4_Co55_derived, + He4, Ni56, -1, Zn60, -1, -1, Ni56, Zn60, k_Ni56_He4_to_Zn60_reaclib, k_Zn60_to_He4_Ni56_derived, + H1, Cu59, -1, Zn60, -1, -1, Cu59, Zn60, k_Cu59_p_to_Zn60_reaclib, k_Zn60_to_p_Cu59_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_derived, + He4, Cr48, -1, H1, Mn51, -1, Cr48, Mn51, k_Cr48_He4_to_p_Mn51_reaclib, k_Mn51_p_to_He4_Cr48_derived, + He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_Fe52_He4_to_p_Co55_reaclib, k_Co55_p_to_He4_Fe52_derived, + H1, Cu59, -1, He4, Ni56, -1, Cu59, Ni56, k_Cu59_p_to_He4_Ni56_reaclib, k_Ni56_He4_to_p_Cu59_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, + H1, Fe54, -1, Co55, -1, -1, Fe54, Co55, k_Fe54_p_to_Co55_reaclib, k_Co55_to_p_Fe54_derived, + He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_Fe54_He4_to_Ni58_reaclib, k_Ni58_to_He4_Fe54_derived, + H1, Fe56, -1, Co57, -1, -1, Fe56, Co57, k_Fe56_p_to_Co57_reaclib, k_Co57_to_p_Fe56_derived, + N, Co55, -1, Co56, -1, -1, Co55, Co56, k_Co55_n_to_Co56_reaclib, k_Co56_to_n_Co55_derived, + N, Co56, -1, Co57, -1, -1, Co56, Co57, k_Co56_n_to_Co57_reaclib, k_Co57_to_n_Co56_derived, + H1, Co57, -1, Ni58, -1, -1, Co57, Ni58, k_Co57_p_to_Ni58_reaclib, k_Ni58_to_p_Co57_derived, + H1, Ni58, -1, Cu59, -1, -1, Ni58, Cu59, k_Ni58_p_to_Cu59_reaclib, k_Cu59_to_p_Ni58_derived, + He4, Mn51, -1, H1, Fe54, -1, Mn51, Fe54, k_Mn51_He4_to_p_Fe54_reaclib, k_Fe54_p_to_He4_Mn51_derived, + He4, Co55, -1, H1, Ni58, -1, Co55, Ni58, k_Co55_He4_to_p_Ni58_reaclib, k_Ni58_p_to_He4_Co55_derived, + N, Co56, -1, H1, Fe56, -1, Co56, Fe56, k_Co56_n_to_p_Fe56_reaclib, k_Fe56_p_to_n_Co56_derived, + H1, Co57, -1, He4, Fe54, -1, Co57, Fe54, k_Co57_p_to_He4_Fe54_reaclib, k_Fe54_He4_to_p_Co57_derived, + N, Ni56, -1, H1, Co56, -1, Ni56, Co56, k_Ni56_n_to_p_Co56_reaclib, k_Co56_p_to_n_Ni56_derived, + N, Cu59, -1, He4, Co56, -1, Cu59, Co56, k_Cu59_n_to_He4_Co56_reaclib, k_Co56_He4_to_n_Cu59_derived, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, Ca40, He4, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_approx, k_Ti44_to_Ca40_He4_approx, diff --git a/networks/he-burn/ase-iron/actual_rhs.H b/networks/he-burn/ase-iron/actual_rhs.H index 28e5bd857..2aec60f15 100644 --- a/networks/he-burn/ase-iron/actual_rhs.H +++ b/networks/he-burn/ase-iron/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -472,9 +469,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -486,7 +485,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -494,75 +495,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_to_p_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_to_n_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -614,47 +560,15 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(N) = - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = 0.0_rt; @@ -693,18 +607,18 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(Fe54) = 0.0_rt; ydot_nuc(Fe56) = - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Co55) = 0.0_rt; ydot_nuc(Co56) = - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = 0.0_rt; ydot_nuc(Ni56) = - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni58) = 0.0_rt; @@ -721,148 +635,148 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(N) = - (-screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + - (-2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + - (-2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + - (-2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + + (-screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + + (-screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + - (-screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + - (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (-screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + - (-screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + + (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (-screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (-screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (-screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (-screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - (-screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (-screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (-screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (-screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + (-screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (-screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + (-screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived)*Y(Mg24)) + - (-screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (-screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(N13) = - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + (-screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_S32_to_O16_O16_derived)*Y(S32)) + - (-screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (-screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Na23) = - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + (0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Mg24_to_C12_C12_derived)*Y(Mg24)); ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + - (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + (0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_S32_to_O16_O16_derived)*Y(S32)) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -879,87 +793,87 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(Cr48) = - (-screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + (screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + -screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(Mn51) = - (-screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho); + (-screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho); ydot_nuc(Fe52) = - (screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)); + (screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)); ydot_nuc(Fe54) = - (-screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + - (-screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)); + (-screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + + (-0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)); ydot_nuc(Fe56) = - (-screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (-screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Co55) = - (screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (-screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho); + (screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho); ydot_nuc(Co56) = - (screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = - (screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + - (-screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho); + (screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (-screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho); ydot_nuc(Ni56) = - (screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + - (screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni58) = - (screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + - (-screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)); + (screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (-screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)); ydot_nuc(Cu59) = - (screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (-screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + - (-screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + -screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (-screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho); + (screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (-screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + + (-screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + -screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (-screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho); ydot_nuc(Zn60) = - (screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + -screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + - (screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)); + (screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + -screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)); } @@ -1015,18 +929,20 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -4.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 4.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) - 4.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_to_p_weaktab); + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho - screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho - 2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(N, N, scratch); - scratch = screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_p_to_n_weaktab); + scratch = screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(N, H1, scratch); - scratch = screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho; jac.set(N, He4, scratch); jac.set(N, C12, 0.0); @@ -1059,69 +975,69 @@ void jac_nuc(const burn_t& state, jac.set(N, Mn51, 0.0); - scratch = -2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(N, Fe52, scratch); - scratch = -2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx); + scratch = -screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx); jac.set(N, Fe54, scratch); - scratch = 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx) + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx); jac.set(N, Fe56, scratch); - scratch = -screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho; jac.set(N, Co55, scratch); - scratch = screened_rates(k_Co56_to_n_Co55_derived) + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho + screened_rates(k_Co56_to_n_Co55_derived); jac.set(N, Co56, scratch); scratch = screened_rates(k_Co57_to_n_Co56_derived); jac.set(N, Co57, scratch); - scratch = -2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho; jac.set(N, Ni56, scratch); scratch = 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx); jac.set(N, Ni58, scratch); - scratch = -screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho; jac.set(N, Cu59, scratch); jac.set(N, Zn60, 0.0); - scratch = screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho + screened_rates(k_n_to_p_weaktab); + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho + screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(H1, N, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho - screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho - screened_rates(k_p_to_n_weaktab); + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho - screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho - screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1133,76 +1049,76 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho; jac.set(H1, Cr48, scratch); - scratch = screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(H1, Mn51, scratch); - scratch = screened_rates(k_Fe52_to_p_Mn51_derived) + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived); jac.set(H1, Fe52, scratch); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(H1, Fe54, scratch); - scratch = -screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho; jac.set(H1, Fe56, scratch); - scratch = screened_rates(k_Co55_to_p_Fe54_derived) + screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived); jac.set(H1, Co55, scratch); - scratch = screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho; jac.set(H1, Co56, scratch); - scratch = screened_rates(k_Co57_to_p_Fe56_derived) - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived); jac.set(H1, Co57, scratch); - scratch = screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived) + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived); jac.set(H1, Ni56, scratch); - scratch = screened_rates(k_Ni58_to_p_Co57_derived) - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived); jac.set(H1, Ni58, scratch); - scratch = screened_rates(k_Cu59_to_p_Ni58_derived) - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived); jac.set(H1, Cu59, scratch); scratch = screened_rates(k_Zn60_to_p_Cu59_derived); jac.set(H1, Zn60, scratch); - scratch = screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho; jac.set(He4, N, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -1217,36 +1133,36 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx); jac.set(He4, Ti44, scratch); - scratch = screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx); jac.set(He4, Cr48, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(He4, Mn51, scratch); - scratch = screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived); jac.set(He4, Fe52, scratch); - scratch = -screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(He4, Fe54, scratch); jac.set(He4, Fe56, 0.0); - scratch = screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived); jac.set(He4, Co55, scratch); - scratch = -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho; jac.set(He4, Co56, scratch); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho; jac.set(He4, Co57, scratch); - scratch = -screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived); + scratch = -screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived); jac.set(He4, Ni56, scratch); - scratch = screened_rates(k_Ni58_to_He4_Fe54_derived) + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived); jac.set(He4, Ni58, scratch); - scratch = screened_rates(k_Cu59_to_He4_Co55_derived) + screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived); jac.set(He4, Cu59, scratch); scratch = screened_rates(k_Zn60_to_He4_Ni56_derived); @@ -1254,31 +1170,31 @@ void jac_nuc(const burn_t& state, jac.set(C12, N, 0.0); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho; jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); scratch = screened_rates(k_N13_to_p_C12_derived); jac.set(C12, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); - scratch = 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho; + scratch = 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho; jac.set(C12, Ne20, scratch); - scratch = 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho; jac.set(C12, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived); + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived); jac.set(C12, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho; jac.set(C12, Al27, scratch); scratch = screened_rates(k_Si28_to_C12_O16_derived); @@ -1320,19 +1236,19 @@ void jac_nuc(const burn_t& state, jac.set(N13, N, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, Ne20, 0.0); @@ -1381,19 +1297,19 @@ void jac_nuc(const burn_t& state, jac.set(O16, N, 0.0); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived); jac.set(O16, O16, scratch); scratch = screened_rates(k_Ne20_to_He4_O16_derived); @@ -1401,16 +1317,16 @@ void jac_nuc(const burn_t& state, jac.set(O16, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho; jac.set(O16, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho; jac.set(O16, Al27, scratch); - scratch = 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_C12_O16_derived); + scratch = 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_C12_O16_derived); jac.set(O16, Si28, scratch); - scratch = 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho; jac.set(O16, P31, scratch); scratch = 2.0*screened_rates(k_S32_to_O16_O16_derived); @@ -1448,10 +1364,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; jac.set(Ne20, H1, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -1459,13 +1375,13 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N13, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); jac.set(Ne20, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); @@ -1511,10 +1427,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, N, 0.0); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -1524,10 +1440,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, O16, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_derived); @@ -1573,30 +1489,30 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, N, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_C12_C12_derived) - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_C12_C12_derived) - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -1638,28 +1554,28 @@ void jac_nuc(const burn_t& state, jac.set(Al27, N, 0.0); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, Ne20, 0.0); jac.set(Al27, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -1701,34 +1617,34 @@ void jac_nuc(const burn_t& state, jac.set(Si28, N, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, Ne20, 0.0); jac.set(Si28, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_C12_O16_derived) - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_C12_O16_derived) - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -1766,10 +1682,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, N, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -1787,10 +1703,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1828,10 +1744,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, N, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -1849,10 +1765,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_O16_O16_derived) - screened_rates(k_S32_to_p_P31_derived); @@ -2071,10 +1987,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, N, 0.0); - scratch = screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho; jac.set(Cr48, H1, scratch); - scratch = -screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(Cr48, He4, scratch); jac.set(Cr48, C12, 0.0); @@ -2104,10 +2020,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho; jac.set(Cr48, Ti44, scratch); - scratch = -screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_to_Ti44_He4_approx); jac.set(Cr48, Cr48, scratch); - scratch = screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(Cr48, Mn51, scratch); scratch = screened_rates(k_Fe52_to_He4_Cr48_derived); @@ -2133,10 +2049,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, N, 0.0); - scratch = screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho; jac.set(Mn51, H1, scratch); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; jac.set(Mn51, He4, scratch); jac.set(Mn51, C12, 0.0); @@ -2165,16 +2081,16 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho; jac.set(Mn51, Cr48, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(Mn51, Mn51, scratch); scratch = screened_rates(k_Fe52_to_p_Mn51_derived); jac.set(Mn51, Fe52, scratch); - scratch = screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(Mn51, Fe54, scratch); jac.set(Mn51, Fe56, 0.0); @@ -2194,13 +2110,13 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Zn60, 0.0); - scratch = -2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = -1.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe52, N, scratch); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho; jac.set(Fe52, H1, scratch); - scratch = screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho; jac.set(Fe52, He4, scratch); jac.set(Fe52, C12, 0.0); @@ -2229,13 +2145,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho; jac.set(Fe52, Cr48, scratch); - scratch = screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho; jac.set(Fe52, Mn51, scratch); - scratch = -screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_Mn51_derived) - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho - 0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_Mn51_derived); jac.set(Fe52, Fe52, scratch); scratch = screened_rates(k_Fe54_to_Fe52_n_n_approx); @@ -2243,7 +2159,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Fe56, 0.0); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho; jac.set(Fe52, Co55, scratch); jac.set(Fe52, Co56, 0.0); @@ -2259,13 +2175,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Zn60, 0.0); - scratch = 2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = 1.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe54, N, scratch); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho; jac.set(Fe54, H1, scratch); - scratch = -screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; jac.set(Fe54, He4, scratch); jac.set(Fe54, C12, 0.0); @@ -2296,13 +2212,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Cr48, 0.0); - scratch = screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho; jac.set(Fe54, Mn51, scratch); - scratch = screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Fe54, Fe52, scratch); - scratch = -screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe54_to_Fe52_n_n_approx) - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho - 0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho - screened_rates(k_Fe54_to_Fe52_n_n_approx); jac.set(Fe54, Fe54, scratch); scratch = screened_rates(k_Fe56_to_Fe54_n_n_approx); @@ -2313,7 +2229,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Co56, 0.0); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho; jac.set(Fe54, Co57, scratch); jac.set(Fe54, Ni56, 0.0); @@ -2325,10 +2241,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Zn60, 0.0); - scratch = 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + 1.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe56, N, scratch); - scratch = -screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho; jac.set(Fe56, H1, scratch); jac.set(Fe56, He4, 0.0); @@ -2365,15 +2281,15 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Fe52, 0.0); - scratch = screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Fe56, Fe54, scratch); - scratch = -screened_rates(k_Fe56_to_Co56_weaktab) - screened_rates(k_Fe56_to_Fe54_n_n_approx) - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho - screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) - screened_rates(k_Fe56_to_Fe54_n_n_approx); jac.set(Fe56, Fe56, scratch); jac.set(Fe56, Co55, 0.0); - scratch = screened_rates(k_Co56_to_Fe56_weaktab) + screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_to_Fe56_electron_capture_weaktab); jac.set(Fe56, Co56, scratch); scratch = screened_rates(k_Co57_to_p_Fe56_derived); @@ -2387,13 +2303,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Zn60, 0.0); - scratch = -screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho; + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho; jac.set(Co55, N, scratch); - scratch = -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(Co55, H1, scratch); - scratch = -screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho; jac.set(Co55, He4, scratch); jac.set(Co55, C12, 0.0); @@ -2424,18 +2340,18 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Cr48, 0.0); - scratch = screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Mn51, scratch); - scratch = screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Fe52, scratch); - scratch = screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho; jac.set(Co55, Fe54, scratch); jac.set(Co55, Fe56, 0.0); - scratch = -screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_Fe54_derived) - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_Fe54_derived); jac.set(Co55, Co55, scratch); scratch = screened_rates(k_Co56_to_n_Co55_derived); @@ -2446,7 +2362,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni56_to_p_Co55_derived); jac.set(Co55, Ni56, scratch); - scratch = screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho; jac.set(Co55, Ni58, scratch); scratch = screened_rates(k_Cu59_to_He4_Co55_derived); @@ -2454,13 +2370,13 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Zn60, 0.0); - scratch = screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho; jac.set(Co56, N, scratch); - scratch = -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho; jac.set(Co56, H1, scratch); - scratch = -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho; jac.set(Co56, He4, scratch); jac.set(Co56, C12, 0.0); @@ -2497,35 +2413,35 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Fe54, 0.0); - scratch = screened_rates(k_Fe56_to_Co56_weaktab) + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab); jac.set(Co56, Fe56, scratch); - scratch = screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho; jac.set(Co56, Co55, scratch); - scratch = -screened_rates(k_Co56_to_Fe56_weaktab) - screened_rates(k_Co56_to_Ni56_weaktab) - screened_rates(k_Co56_to_n_Co55_derived) - screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho - screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) - screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) - screened_rates(k_Co56_to_n_Co55_derived); jac.set(Co56, Co56, scratch); scratch = screened_rates(k_Co57_to_n_Co56_derived); jac.set(Co56, Co57, scratch); - scratch = screened_rates(k_Ni56_to_Co56_weaktab) + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_to_Co56_electron_capture_weaktab); jac.set(Co56, Ni56, scratch); jac.set(Co56, Ni58, 0.0); - scratch = screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho; jac.set(Co56, Cu59, scratch); jac.set(Co56, Zn60, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho; jac.set(Co57, N, scratch); - scratch = -screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho + screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho; jac.set(Co57, H1, scratch); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho; jac.set(Co57, He4, scratch); jac.set(Co57, C12, 0.0); @@ -2560,18 +2476,18 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho; jac.set(Co57, Fe54, scratch); - scratch = screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho; jac.set(Co57, Fe56, scratch); jac.set(Co57, Co55, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho; jac.set(Co57, Co56, scratch); - scratch = -screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_Fe56_derived) - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_Fe56_derived); jac.set(Co57, Co57, scratch); jac.set(Co57, Ni56, 0.0); @@ -2583,13 +2499,13 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Zn60, 0.0); - scratch = -2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho; + scratch = -1.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho; jac.set(Ni56, N, scratch); - scratch = screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho; jac.set(Ni56, H1, scratch); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho; jac.set(Ni56, He4, scratch); jac.set(Ni56, C12, 0.0); @@ -2622,40 +2538,40 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Mn51, 0.0); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho; jac.set(Ni56, Fe52, scratch); jac.set(Ni56, Fe54, 0.0); jac.set(Ni56, Fe56, 0.0); - scratch = screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho; jac.set(Ni56, Co55, scratch); - scratch = screened_rates(k_Co56_to_Ni56_weaktab) + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab); jac.set(Ni56, Co56, scratch); jac.set(Ni56, Co57, 0.0); - scratch = -screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_to_Co56_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_Co55_derived) - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho - 0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_Co55_derived); jac.set(Ni56, Ni56, scratch); scratch = screened_rates(k_Ni58_to_Ni56_n_n_approx); jac.set(Ni56, Ni58, scratch); - scratch = screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho; jac.set(Ni56, Cu59, scratch); scratch = screened_rates(k_Zn60_to_He4_Ni56_derived); jac.set(Ni56, Zn60, scratch); - scratch = 2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = 1.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Ni58, N, scratch); - scratch = screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(Ni58, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho; jac.set(Ni58, He4, scratch); jac.set(Ni58, C12, 0.0); @@ -2690,23 +2606,23 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Fe54, scratch); jac.set(Ni58, Fe56, 0.0); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Co55, scratch); jac.set(Ni58, Co56, 0.0); - scratch = screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho; jac.set(Ni58, Co57, scratch); - scratch = screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Ni58, Ni56, scratch); - scratch = -screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_Ni56_n_n_approx) - screened_rates(k_Ni58_to_p_Co57_derived) - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho - screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_Ni56_n_n_approx) - screened_rates(k_Ni58_to_p_Co57_derived); jac.set(Ni58, Ni58, scratch); scratch = screened_rates(k_Cu59_to_p_Ni58_derived); @@ -2714,13 +2630,13 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Zn60, 0.0); - scratch = -screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho; jac.set(Cu59, N, scratch); - scratch = -screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho; jac.set(Cu59, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho; jac.set(Cu59, He4, scratch); jac.set(Cu59, C12, 0.0); @@ -2759,21 +2675,21 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Fe56, 0.0); - scratch = screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho; jac.set(Cu59, Co55, scratch); - scratch = screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho; jac.set(Cu59, Co56, scratch); jac.set(Cu59, Co57, 0.0); - scratch = screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho; jac.set(Cu59, Ni56, scratch); - scratch = screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho; jac.set(Cu59, Ni58, scratch); - scratch = -screened_rates(k_Cu59_to_He4_Co55_derived) - screened_rates(k_Cu59_to_p_Ni58_derived) - screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_to_He4_Co55_derived) - screened_rates(k_Cu59_to_p_Ni58_derived); jac.set(Cu59, Cu59, scratch); scratch = screened_rates(k_Zn60_to_p_Cu59_derived); @@ -2781,10 +2697,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, N, 0.0); - scratch = screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho; + scratch = screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho; jac.set(Zn60, H1, scratch); - scratch = screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho; jac.set(Zn60, He4, scratch); jac.set(Zn60, C12, 0.0); @@ -2829,12 +2745,12 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, Co57, 0.0); - scratch = screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho; jac.set(Zn60, Ni56, scratch); jac.set(Zn60, Ni58, 0.0); - scratch = screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho; jac.set(Zn60, Cu59, scratch); scratch = -screened_rates(k_Zn60_to_He4_Ni56_derived) - screened_rates(k_Zn60_to_p_Cu59_derived); diff --git a/networks/he-burn/ase-iron/approximate_rates.H b/networks/he-burn/ase-iron/approximate_rates.H index 317921baf..7b1d48afa 100644 --- a/networks/he-burn/ase-iron/approximate_rates.H +++ b/networks/he-burn/ase-iron/approximate_rates.H @@ -8,384 +8,386 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_n_n_to_Fe54_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Fe52_to_Fe53_reaclib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe53_to_Fe54_reaclib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_reaclib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_reaclib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_n_to_Fe54_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Fe52_n_to_Fe53_reaclib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe53_n_to_Fe54_reaclib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Fe52_n_to_Fe53_reaclib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_reaclib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_Fe52_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe53_to_Fe54_reaclib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_reaclib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_Fe52_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe53_n_to_Fe54_reaclib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_reaclib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_n_n_to_Fe56_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Fe54_to_Fe55_reaclib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe55_to_Fe56_reaclib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_reaclib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_reaclib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_n_to_Fe56_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Fe54_n_to_Fe55_reaclib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe55_n_to_Fe56_reaclib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Fe54_n_to_Fe55_reaclib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_reaclib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_Fe54_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe55_to_Fe56_reaclib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_reaclib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_Fe54_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe55_n_to_Fe56_reaclib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_reaclib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_n_n_to_Ni58_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Ni56_to_Ni57_reaclib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Ni57_to_Ni58_reaclib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_reaclib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_reaclib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_n_to_Ni58_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Ni56_n_to_Ni57_reaclib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Ni57_n_to_Ni58_reaclib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Ni56_n_to_Ni57_reaclib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_reaclib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_Ni56_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Ni57_to_Ni58_reaclib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_reaclib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_Ni56_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Ni57_n_to_Ni58_reaclib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_reaclib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Fe52_n_n_to_Fe54_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_n_to_Fe54_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_n_to_Fe54_approx) = drate_dT; + } + + rate_Fe54_to_Fe52_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_to_Fe52_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_Fe52_n_n_approx) = drate_dT; + } + + rate_Fe54_n_n_to_Fe56_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_n_to_Fe56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_n_to_Fe56_approx) = drate_dT; + } + + rate_Fe56_to_Fe54_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_to_Fe54_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Fe54_n_n_approx) = drate_dT; + } + + rate_Ni56_n_n_to_Ni58_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_n_to_Ni58_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_n_to_Ni58_approx) = drate_dT; + } + + rate_Ni58_to_Ni56_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_to_Ni56_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_Ni56_n_n_approx) = drate_dT; + } - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - rate_Fe52_n_n_to_Fe54_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_n_n_to_Fe54_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_n_n_to_Fe54_approx) = drate_dT; - } - - rate_Fe54_to_Fe52_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_to_Fe52_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_Fe52_n_n_approx) = drate_dT; - } - - rate_Fe54_n_n_to_Fe56_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_n_n_to_Fe56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_n_n_to_Fe56_approx) = drate_dT; - } - - rate_Fe56_to_Fe54_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe56_to_Fe54_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_Fe54_n_n_approx) = drate_dT; - } - - rate_Ni56_n_n_to_Ni58_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_n_n_to_Ni58_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_n_n_to_Ni58_approx) = drate_dT; - } - - rate_Ni58_to_Ni56_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Ni58_to_Ni56_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_Ni56_n_n_approx) = drate_dT; - } - - } - #endif diff --git a/networks/he-burn/ase-iron/ase-iron.png b/networks/he-burn/ase-iron/ase-iron.png index 87a853fd6..7c0a46368 100644 Binary files a/networks/he-burn/ase-iron/ase-iron.png and b/networks/he-burn/ase-iron/ase-iron.png differ diff --git a/networks/he-burn/ase-iron/ase_iron.py b/networks/he-burn/ase-iron/ase_iron.py index f9d552487..863661969 100644 --- a/networks/he-burn/ase-iron/ase_iron.py +++ b/networks/he-burn/ase-iron/ase_iron.py @@ -27,7 +27,8 @@ def get_library(): for r, mp in other_rates: _r = reaclib_lib.get_rate_by_name(r) - forward_rate = pyna.ModifiedRate(_r, new_products=[mp]) + forward_rate = pyna.ModifiedRate(_r, new_products=[mp], + description=f"{r}(n,γ){mp}") derived_rate = pyna.DerivedRate(forward_rate, use_pf=True) subch += pyna.Library(rates=[forward_rate, derived_rate]) diff --git a/networks/he-burn/ase-iron/branched_rates.H b/networks/he-burn/ase-iron/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/ase-iron/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/ase-iron/derived_rates.H b/networks/he-burn/ase-iron/derived_rates.H index 29189db5f..6a790ad7d 100644 --- a/networks/he-burn/ase-iron/derived_rates.H +++ b/networks/he-burn/ase-iron/derived_rates.H @@ -7,5430 +7,5432 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from st08r + ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - // ReacLib set derived from st08r - ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from st08r + ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // ReacLib set derived from st08r - ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> p + Mn51 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 --> He4 + Mn51 - // Co55 --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.61473213109255 + -95.29300562248025 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 90.61473213109255 + -95.29300562248025 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 - + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 95.29300562248025 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 95.29300562248025 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i - + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> p + Co55 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cu59 --> He4 + Co55 - // Cu59 --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - Cu59_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dCu59_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - Cu59_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dCu59_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.97354557942113 + -55.1611006026015 * tfactors.T9i + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 + + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 90.97354557942113 + -55.1611006026015 * tfactors.T9i + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 - + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 55.1611006026015 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i + + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 55.1611006026015 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i - + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Zn60 --> p + Cu59 - // Zn60 --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; - amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; + // interpolating Zn60 partition function + get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); - // interpolating Zn60 partition function - get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - Zn60_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dZn60_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - Zn60_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dZn60_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.31218638341413 + -59.240729222177784 * tfactors.T9i + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 + + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.31218638341413 + -59.240729222177784 * tfactors.T9i + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 - + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.240729222177784 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i + + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.240729222177784 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i - + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_He4_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_He4_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Zn60 --> He4 + Ni56 - // Zn60 --> He4 + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; - amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; + // interpolating Zn60 partition function + get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); - // interpolating Zn60 partition function - get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ni56_log_pf - Zn60_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNi56_log_pf_dT9 - dZn60_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ni56_log_pf - Zn60_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNi56_log_pf_dT9 - dZn60_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 86.06332792090964 + -31.2372260432927 * tfactors.T9i + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 + + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 86.06332792090964 + -31.2372260432927 * tfactors.T9i + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 - + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 31.2372260432927 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i + + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 31.2372260432927 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i - + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> C12 + C12 - // Ne20 + He4 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na23 + p --> C12 + C12 - // Na23 + p --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - p_log_pf - Na23_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dp_log_pf_dT9 - dNa23_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - p_log_pf - Na23_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dp_log_pf_dT9 - dNa23_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 60.92541574740554 + -26.004360836807496 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 60.92541574740554 + -26.004360836807496 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.004360836807496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.004360836807496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> C12 + O16 - // Mg24 + He4 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Al27 + p --> C12 + O16 - // Al27 + p --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - p_log_pf - Al27_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dAl27_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - p_log_pf - Al27_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dAl27_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 68.96430994536895 + -59.8005159928172 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 68.96430994536895 + -59.8005159928172 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.8005159928172 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.8005159928172 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> O16 + O16 - // Si28 + He4 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 97.78921572069022 + -111.60083385054465 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 97.78921572069022 + -111.60083385054465 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 111.60083385054465 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 111.60083385054465 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // P31 + p --> O16 + O16 - // P31 + p --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - p_log_pf - P31_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dP31_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - p_log_pf - P31_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dP31_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 86.33118481035693 + -88.87103716814843 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 86.33118481035693 + -88.87103716814843 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.87103716814843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.87103716814843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mn51 + p --> He4 + Cr48 - // Mn51 + p --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 + p --> He4 + Fe52 - // Co55 + p --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_He4_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni56_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 + He4 --> p + Cu59 - // Ni56 + He4 --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - He4_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - He4_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.864958462504486 + -28.003503178913892 * tfactors.T9i + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 + + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.864958462504486 + -28.003503178913892 * tfactors.T9i + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 - + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 28.003503178913892 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i + + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 28.003503178913892 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i - + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> C12 + C12 - // Mg24 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 12.203060308868553 + -191.84225839903127 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 12.203060308868553 + -191.84225839903127 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 191.84225839903127 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 191.84225839903127 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> O16 + O16 - // S32 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 102.9883182326601 + -192.3301592962798 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 9.12001 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 102.9883182326601 + -192.3301592962798 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 9.12001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 192.3301592962798 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 9.12001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 192.3301592962798 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 9.12001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> C12 + O16 - // Si28 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = -106.3111878016318 + -195.9077167184711 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -176.78 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = -106.3111878016318 + -195.9077167184711 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -176.78 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 195.9077167184711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -176.78 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 195.9077167184711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -176.78 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_p_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_p_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 --> p + Fe54 - // Co55 --> p + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe54_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe54_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe54_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe54_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 57.84851844810452 + -58.76958578644693 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 57.84851844810452 + -58.76958578644693 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 - + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 58.76958578644693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 58.76958578644693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i - + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 --> n + Co55 - // Co56 --> n + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co55_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co55_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 40.647564333711024 + -116.994640839646 * tfactors.T9i + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 40.647564333711024 + -116.994640839646 * tfactors.T9i + -1.86357 * tfactors.T913 - + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 116.994640839646 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 116.994640839646 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i - + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 --> n + Co56 - // Co57 --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co56_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co56_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dCo57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 41.17386809654295 + -132.01901045161702 * tfactors.T9i + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 41.17386809654295 + -132.01901045161702 * tfactors.T9i + -1.37855 * tfactors.T913 - + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 132.01901045161702 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 132.01901045161702 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i - + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_p_Fe56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_p_Fe56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 --> p + Fe56 - // Co57 --> p + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe56_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe56_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe56_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe56_log_pf_dT9 - dCo57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 57.68564187237867 + -69.94636137001572 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 57.68564187237867 + -69.94636137001572 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 - + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 69.94636137001572 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 69.94636137001572 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i - + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> p + Co57 - // Ni58 --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co57_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co57_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.794489871251855 + -94.83410720454592 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.794489871251855 + -94.83410720454592 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 - + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.83410720454592 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.83410720454592 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i - + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> He4 + Fe54 - // Ni58 --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe54_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe54_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe54_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe54_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 85.23428031558652 + -74.25981652709197 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 85.23428031558652 + -74.25981652709197 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 - + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.25981652709197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.25981652709197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i - + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_p_Ni58_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_p_Ni58_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cu59 --> p + Ni58 - // Cu59 --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ni58_log_pf - Cu59_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNi58_log_pf_dT9 - dCu59_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ni58_log_pf - Cu59_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNi58_log_pf_dT9 - dCu59_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from si13n + ln_set_rate = 58.97928371193912 + -39.67086986195644 * tfactors.T9i + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 + + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from si13n - ln_set_rate = 58.97928371193912 + -39.67086986195644 * tfactors.T9i + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 - + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 39.67086986195644 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i + + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 39.67086986195644 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i - + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe54_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + p --> He4 + Mn51 - // Fe54 + p --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - p_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dp_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - p_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dp_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 65.35241368298804 + -36.52341983603332 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 65.35241368298804 + -36.52341983603332 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 - + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.52341983603332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.52341983603332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i - + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + He4 --> p + Co57 - // Fe54 + He4 --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co57_log_pf - He4_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co57_log_pf - He4_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = -1.404090444334669 + -20.574290677453938 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = -1.404090444334669 + -20.574290677453938 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 - + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 20.574290677453938 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 20.574290677453938 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i - + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe56_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 + p --> n + Co56 - // Fe56 + p --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co56_log_pf - p_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dp_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co56_log_pf - p_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dp_log_pf_dT9 - dFe56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 22.653426224164285 + -62.07264908160129 * tfactors.T9i + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 22.653426224164285 + -62.07264908160129 * tfactors.T9i + -1.13331 * tfactors.T913 - + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 62.07264908160129 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 62.07264908160129 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i - + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co56_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 + p --> n + Ni56 - // Co56 + p --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - p_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - p_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 13.374260291785419 + -33.830037058152215 * tfactors.T9i + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 13.374260291785419 + -33.830037058152215 * tfactors.T9i + 1.76846 * tfactors.T913 - + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.830037058152215 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.830037058152215 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i - + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_He4_to_n_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co56_to_n_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 + He4 --> n + Cu59 - // Co56 + He4 --> n + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Cu59_log_pf - He4_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Cu59_log_pf - He4_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 8.911918754289905 + -61.8335402370445 * tfactors.T9i + -1.00882 * tfactors.T913 + + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 8.911918754289905 + -61.8335402370445 * tfactors.T9i + -1.00882 * tfactors.T913 - + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 61.8335402370445 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.00882 * tfactors.T923i + + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 61.8335402370445 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.00882 * tfactors.T923i - + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni58_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 + p --> He4 + Co55 - // Ni58 + p --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - p_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - p_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 63.596461867482006 + -15.490230740645051 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.596461867482006 + -15.490230740645051 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 - + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 15.490230740645051 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 15.490230740645051 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i - + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lo18r + ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0 + ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from chw0 - ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // V47 + p --> He4 + Ti44 - // Cr48 --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; - // ReacLib set derived from ths8r - ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from chw0r + ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } -} + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + } - // Cr48 --> p + V47 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // Cr48 --> He4 + Ti44 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // Evaluate partition function terms - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - // ReacLib set derived from nfisn - ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ths8r + ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from nfisn - ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // Cr48 --> p + V47 - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + rate = 0.0; + drate_dT = 0.0; - // ReacLib set derived from nfisn - ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; + // Evaluate partition function terms - ln_set_rate += net_log_pf + log_scor; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + amrex::Real p_log_pf, dp_log_pf_dT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // ReacLib set derived from nfisn - ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nfisn + ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; -} + ln_set_rate += net_log_pf + log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; - // V47 + p --> He4 + Ti44 + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // Evaluate partition function terms + // ReacLib set derived from nfisn + ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // ReacLib set derived from nfisn + ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + ln_set_rate += net_log_pf + log_scor; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nfisn + ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - // ReacLib set derived from chw0r - ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_to_n_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_n_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe53 --> n + Fe52 - // Fe54 --> n + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe52_log_pf - Fe53_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe52_log_pf_dT9 - dFe53_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe53_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe53_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 37.50789742709652 + -124.01421385132892 * tfactors.T9i + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 42.23234536763494 + -155.25009527915816 * tfactors.T9i + -1.10421 * tfactors.T913 - + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 124.01421385132892 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 155.25009527915816 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i - + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_n_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe53_to_n_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 --> n + Fe53 - // Fe53 --> n + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe53_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe53_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe52_log_pf - Fe53_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe52_log_pf_dT9 - dFe53_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 42.23234536763494 + -155.25009527915816 * tfactors.T9i + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 37.50789742709652 + -124.01421385132892 * tfactors.T9i + -0.344319 * tfactors.T913 - + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 155.25009527915816 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 124.01421385132892 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i - + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_to_n_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe55 --> n + Fe54 - // Fe56 --> n + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe54_log_pf - Fe55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe54_log_pf_dT9 - dFe55_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dFe56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ks03 + ln_set_rate = 21.50487677145662 + -107.84100838776591 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; - // ReacLib set derived from ks03 - ln_set_rate = 46.806892234523204 + -130.0322634199283 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 - + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 107.84100838776591 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 130.0322634199283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i - + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe55_to_n_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 --> n + Fe55 - // Fe55 --> n + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe54_log_pf - Fe55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe54_log_pf_dT9 - dFe55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ks03 + ln_set_rate = 46.806892234523204 + -130.0322634199283 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; - // ReacLib set derived from ks03 - ln_set_rate = 21.50487677145662 + -107.84100838776591 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 - + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 130.0322634199283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 107.84100838776591 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i - + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni57 --> n + Ni56 - // Ni58 --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - Ni57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dNi57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 38.391039283996996 + -118.91983039605458 * tfactors.T9i + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 42.36077897558323 + -141.76332431826057 * tfactors.T9i + -1.90814 * tfactors.T913 - + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 118.91983039605458 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 141.76332431826057 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i - + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> n + Ni57 - // Ni57 --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - Ni57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dNi57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 42.36077897558323 + -141.76332431826057 * tfactors.T9i + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 38.391039283996996 + -118.91983039605458 * tfactors.T9i + -1.19665 * tfactors.T913 - + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 141.76332431826057 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 118.91983039605458 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i - + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - part_fun::pf_cache_t pf_cache{}; + part_fun::pf_cache_t pf_cache{}; - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - { - // N13_to_p_C12_derived + { + // N13_to_p_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_derived + { + // Fe52_to_p_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Co55_to_He4_Mn51_derived + { + // Co55_to_He4_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Cu59_to_He4_Co55_derived + { + // Cu59_to_He4_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cu59_to_He4_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_He4_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cu59_to_He4_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_He4_Co55_derived) = drate_dT; + } } - } - { - // Zn60_to_p_Cu59_derived + { + // Zn60_to_p_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Zn60_to_p_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_p_Cu59_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Zn60_to_p_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_p_Cu59_derived) = drate_dT; + } } - } - { - // Zn60_to_He4_Ni56_derived + { + // Zn60_to_He4_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_He4_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Zn60_to_He4_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_He4_Ni56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_He4_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Zn60_to_He4_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_He4_Ni56_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_C12_C12_derived + { + // Ne20_He4_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived) = drate_dT; + rate_Ne20_He4_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_C12_C12_derived) = drate_dT; + } } - } - { - // p_Na23_to_C12_C12_derived + { + // Na23_p_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Na23_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_derived) = drate_dT; + rate_Na23_p_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na23_p_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_C12_C12_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_C12_O16_derived + { + // Mg24_He4_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived) = drate_dT; + rate_Mg24_He4_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_C12_O16_derived) = drate_dT; + } } - } - { - // p_Al27_to_C12_O16_derived + { + // Al27_p_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Al27_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_derived) = drate_dT; + rate_Al27_p_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Al27_p_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_C12_O16_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // He4_Si28_to_O16_O16_derived + { + // Si28_He4_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_derived) = drate_dT; + rate_Si28_He4_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_O16_O16_derived) = drate_dT; + } } - } - { - // p_P31_to_O16_O16_derived + { + // P31_p_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_P31_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_derived) = drate_dT; + rate_P31_p_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_P31_p_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_O16_O16_derived) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_derived + { + // Mn51_p_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Mn51_p_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // He4_Ni56_to_p_Cu59_derived + { + // Ni56_He4_to_p_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); - } + log_scor = rate_eval.log_screen(k_He4_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); + } #endif - rate_He4_Ni56_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ni56_to_p_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_p_Cu59_derived) = drate_dT; + rate_Ni56_He4_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_He4_to_p_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_p_Cu59_derived) = drate_dT; + } } - } - { - // Mg24_to_C12_C12_derived + { + // Mg24_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + } } - } - { - // S32_to_O16_O16_derived + { + // S32_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + } } - } - { - // Si28_to_C12_O16_derived + { + // Si28_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + } } - } - { - // Co55_to_p_Fe54_derived + { + // Co55_to_p_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_p_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co55_to_p_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_p_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_to_p_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_derived) = drate_dT; + } } - } - { - // Co56_to_n_Co55_derived + { + // Co56_to_n_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co56_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + } } - } - { - // Co57_to_n_Co56_derived + { + // Co57_to_n_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + } } - } - { - // Co57_to_p_Fe56_derived + { + // Co57_to_p_Fe56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_p_Fe56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co57_to_p_Fe56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_p_Fe56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_to_p_Fe56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_derived) = drate_dT; + } } - } - { - // Ni58_to_p_Co57_derived + { + // Ni58_to_p_Co57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_p_Co57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_p_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_derived) = drate_dT; + } } - } - { - // Ni58_to_He4_Fe54_derived + { + // Ni58_to_He4_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_He4_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_He4_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + } } - } - { - // Cu59_to_p_Ni58_derived + { + // Cu59_to_p_Ni58_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_p_Ni58_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cu59_to_p_Ni58_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_p_Ni58_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_p_Ni58_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cu59_to_p_Ni58_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_p_Ni58_derived) = drate_dT; + } } - } - { - // p_Fe54_to_He4_Mn51_derived + { + // Fe54_p_to_He4_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); - } + log_scor = rate_eval.log_screen(k_p_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); + } #endif - rate_p_Fe54_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Fe54_to_He4_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_He4_Mn51_derived) = drate_dT; + rate_Fe54_p_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_p_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_to_He4_Mn51_derived) = drate_dT; + } } - } - { - // He4_Fe54_to_p_Co57_derived + { + // Fe54_He4_to_p_Co57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Fe54_to_p_Co57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_p_Co57_derived) = drate_dT; + rate_Fe54_He4_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_He4_to_p_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_p_Co57_derived) = drate_dT; + } } - } - { - // p_Fe56_to_n_Co56_derived + { + // Fe56_p_to_n_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); - } + log_scor = rate_eval.log_screen(k_p_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); + } #endif - rate_p_Fe56_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Fe56_to_n_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_n_Co56_derived) = drate_dT; + rate_Fe56_p_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_p_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_to_n_Co56_derived) = drate_dT; + } } - } - { - // p_Co56_to_n_Ni56_derived + { + // Co56_p_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); - } + log_scor = rate_eval.log_screen(k_p_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); + } #endif - rate_p_Co56_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co56_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co56_to_n_Ni56_derived) = drate_dT; + rate_Co56_p_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_p_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_to_n_Ni56_derived) = drate_dT; + } } - } - { - // He4_Co56_to_n_Cu59_derived + { + // Co56_He4_to_n_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); - } + log_scor = rate_eval.log_screen(k_He4_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); + } #endif - rate_He4_Co56_to_n_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Co56_to_n_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co56_to_n_Cu59_derived) = drate_dT; + rate_Co56_He4_to_n_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_He4_to_n_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_He4_to_n_Cu59_derived) = drate_dT; + } } - } - { - // p_Ni58_to_He4_Co55_derived + { + // Ni58_p_to_He4_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); - } + log_scor = rate_eval.log_screen(k_p_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); + } #endif - rate_p_Ni58_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Ni58_to_He4_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_He4_Co55_derived) = drate_dT; + rate_Ni58_p_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_p_to_He4_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_to_He4_Co55_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // V47_p_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_V47_p_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } -#endif - rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; - } - } - { - // Fe54_to_n_Fe53_derived + { + // Fe53_to_n_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe54_to_n_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_to_n_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; + } } - } - { - // Fe53_to_n_Fe52_derived + { + // Fe54_to_n_Fe53_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe53_to_n_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_to_n_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; + } } - } - { - // Fe56_to_n_Fe55_derived + { + // Fe55_to_n_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe56_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_to_n_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; + } } - } - { - // Fe55_to_n_Fe54_derived + { + // Fe56_to_n_Fe55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe55_to_n_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; + } } - } - { - // Ni58_to_n_Ni57_derived + { + // Ni57_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; + } } - } - { - // Ni57_to_n_Ni56_derived + { + // Ni58_to_n_Ni57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived) = drate_dT; + } } - } + } + } #endif diff --git a/networks/he-burn/ase-iron/modified_rates.H b/networks/he-burn/ase-iron/modified_rates.H index e63de5077..629772bb7 100644 --- a/networks/he-burn/ase-iron/modified_rates.H +++ b/networks/he-burn/ase-iron/modified_rates.H @@ -12,6 +12,9 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +22,7 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) + // represents the sequence: c12(c12,n)mg23(n,γ)mg24 rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -28,22 +32,24 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) + // represents the sequence: o16(o16,n)s31(n,γ)s32 rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) + // represents the sequence: o16(c12,n)si27(n,γ)si28 - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -89,7 +95,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -99,10 +105,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } diff --git a/networks/he-burn/ase-iron/partition_functions.H b/networks/he-burn/ase-iron/partition_functions.H index 9fd59d303..88d94029b 100644 --- a/networks/he-burn/ase-iron/partition_functions.H +++ b/networks/he-burn/ase-iron/partition_functions.H @@ -120,7 +120,7 @@ namespace part_fun { inline AMREX_GPU_DEVICE amrex::Array1D Mg24_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, - 9.999994999180668e-07, 0.0001259920626667995, 0.0017764212290928272, 0.008665347199341391, 0.02478529122240376, + 9.999994999180668e-07, 0.0001259920626667995, 0.0017764212290928272, 0.008665347199341391, 0.024785291222403763, 0.05209612203517594, 0.09017063128626053, 0.13704782771330884, 0.19024508258946665, 0.30679917070896673, 0.42717245621910793, 0.5457138884802113, 0.660894613389287, 0.773014180490088, 0.9932517730102834, 1.2119409739751128, 1.4398351280479205, 1.682688374173693, 1.9487632180377197, 2.244955980157409, @@ -217,7 +217,7 @@ namespace part_fun { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.1999928000476974e-05, 0.0001599872013651075, 0.0008965979359162839, - 0.0030782573008273765, 0.007778667567807429, 0.01603376935914739, 0.02868269041229125, 0.06934041108806749, + 0.003078257300827377, 0.007778667567807429, 0.01603376935914739, 0.02868269041229125, 0.06934041108806749, 0.13236245968854618, 0.21875794860165648, 0.32915769331179123, 0.4643325791959468, 0.8109302162163288, 1.2669476034873244, 1.81319474994812, 2.4336133554004498, 3.086486636822455, 3.756538102587751, 4.4272389774954295, 5.093750200806762, 5.746203190540153, 6.386879319362645, 7.940939762327791, @@ -552,7 +552,7 @@ namespace part_fun { inline AMREX_GPU_DEVICE amrex::Array1D Fe56_pf_array = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 3.999991999914312e-06, 2.2999735504161862e-05, 9.099585975123644e-05, - 0.00026996355655966415, 0.007115623795532719, 0.036122649876509136, 0.09416770925148646, 0.17582214798729476, + 0.00026996355655966415, 0.00711562379553272, 0.036122649876509136, 0.09416770925148646, 0.17582214798729476, 0.2723587679931664, 0.37744210592173955, 0.4880608616770881, 0.6035325999923254, 0.8511487220072201, 1.1254226572294825, 1.4290963940696066, 1.7632754575255085, 2.1292725925101696, 2.9601050959108397, 3.9080149840306073, 4.9344739331306915, 6.0014148779611505, 7.07326971745971, 8.151909872940905, @@ -577,7 +577,7 @@ namespace part_fun { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.9999980000601777e-06, 3.299945551192844e-05, 0.0002149768908123338, - 0.0008776147834635239, 0.002650484360963482, 0.006510758935580232, 0.013783568660113304, 0.04542450669313041, + 0.0008776147834635239, 0.0026504843609634825, 0.006510758935580232, 0.013783568660113304, 0.04542450669313041, 0.11337689843044624, 0.2341190990271887, 0.4197354671252422, 0.6733637730790638, 1.3506671834767394, 2.175887439948088, 3.068052935133617, 3.9982007016691985, 4.948759890378168, 5.910796644040527, 6.887552571664617, 7.874739125171811, 8.869257522797287, 9.87302834505142, 12.392552212472792, @@ -649,7 +649,7 @@ namespace part_fun { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 9.999994999180668e-07, 1.7999838002017484e-05, 0.00014798904908051437, - 0.0006687763192560828, 0.0021007917908672197, 0.0051805577080849445, 0.0108093677159202, 0.033929817942853414, + 0.0006687763192560828, 0.0021007917908672197, 0.005180557708084945, 0.0108093677159202, 0.033929817942853414, 0.08125919821801637, 0.16557206393583876, 0.30308828495767837, 0.5109446166860524, 1.172482137234565, 2.102913897864978, 3.1654750481410856, 4.272490747605575, 5.389071729816501, 6.498282149476434, 7.605890001053122, 8.712759974960212, 9.814656338829513, 10.918718232265187, 13.664687668229691, @@ -697,7 +697,7 @@ namespace part_fun { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 6.499788759151895e-05, 0.0010874085569544608, 0.005954238288214293, 0.018769741111677243, - 0.04333627107625303, 0.08256291389970516, 0.13844890680808367, 0.21212628348615897, 0.4130674701171434, + 0.04333627107625303, 0.08256291389970516, 0.1384489068080837, 0.21212628348615897, 0.4130674701171434, 0.6787038764017188, 0.9964869046943904, 1.355513968039992, 1.7493953139667429, 2.624668592163159, 3.6082115510464816, 4.653960350157523, 5.736572297479192, 6.834108738813838, 7.937374696163295, 9.038365107236372, 10.142504453006628, 11.247656987355347, 12.35017298950393, 15.107494239612924, diff --git a/networks/he-burn/ase-iron/pynucastro-info.txt b/networks/he-burn/ase-iron/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/he-burn/ase-iron/pynucastro-info.txt +++ b/networks/he-burn/ase-iron/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/ase-iron/reaclib_rates.H b/networks/he-burn/ase-iron/reaclib_rates.H index 901673f6e..0d128a112 100644 --- a/networks/he-burn/ase-iron/reaclib_rates.H +++ b/networks/he-burn/ase-iron/reaclib_rates.H @@ -8,4158 +8,4161 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + p --> N13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + p --> N13 - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - ln_set_rate += log_scor; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + ln_set_rate += log_scor; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> Fe52 - // Mn51 + p --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> Co55 - // Mn51 + He4 --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 - + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i - + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_He4_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co55_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + He4 --> Cu59 - // Co55 + He4 --> Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.2921 + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 + + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.2921 + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 - + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i + + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i - + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_He4_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni56_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + He4 --> Zn60 - // Ni56 + He4 --> Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.0733 + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 + + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.0733 + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 - + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i + + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i - + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_p_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu59_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + p --> Zn60 - // Cu59 + p --> Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.226 + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 + + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.226 + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 - + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i + + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i - + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p + Mn51 - // Cr48 + He4 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_p_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu59_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + p --> He4 + Ni56 - // Cu59 + p --> He4 + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.7688 + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 + + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.7688 + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 - + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i + + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i - + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> n + S31 - // O16 + O16 --> n + S31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> n + Si27 - // O16 + C12 --> n + Si27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe54_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + p --> Co55 - // Fe54 + p --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 - + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i - + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + He4 --> Ni58 - // Fe54 + He4 --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 - + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i - + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe56_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + p --> Co57 - // Fe56 + p --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 - + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i - + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_n_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co55_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + n --> Co56 - // Co55 + n --> Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.065 + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; - // ths8r - ln_set_rate = 17.065 + -1.86357 * tfactors.T913 - + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i - + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> Co57 - // Co56 + n --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.3552 + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; - // ths8r - ln_set_rate = 17.3552 + -1.37855 * tfactors.T913 - + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i - + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co57_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p --> Ni58 - // Co57 + p --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 - + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i - + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni58_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + p --> Cu59 - // Ni58 + p --> Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 36.6662 + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 + + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // si13n - ln_set_rate = 36.6662 + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 - + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i + + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i - + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> p + Fe54 - // Mn51 + He4 --> p + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 - + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i - + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_He4_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co55_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + He4 --> p + Ni58 - // Co55 + He4 --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 - + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i - + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> p + Fe56 - // Co56 + n --> p + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.4539 + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; - // ths8r - ln_set_rate = 20.4539 + -1.13331 * tfactors.T913 - + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i - + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co57_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p --> He4 + Fe54 - // Co57 + p --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 - + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i - + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> p + Co56 - // Ni56 + n --> p + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.5693 + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; - // ths8r - ln_set_rate = 15.5693 + 1.76846 * tfactors.T913 - + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i - + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_n_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu59_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + n --> He4 + Co56 - // Cu59 + n --> He4 + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.0108 + -1.00882 * tfactors.T913 + + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; - // ths8r - ln_set_rate = 11.0108 + -1.00882 * tfactors.T913 - + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.00882 * tfactors.T923i + + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.00882 * tfactors.T923i - + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - ln_set_rate += log_scor; + // K39 + p --> Ca40 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; -} + ln_set_rate += log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - // K39 + p --> He4 + Ar36 + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe52_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + n --> Fe53 - // Fe52 + n --> Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.8885 + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; - // ths8r - ln_set_rate = 15.8885 + -0.344319 * tfactors.T913 - + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i - + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_n_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe53_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + n --> Fe54 - // Fe53 + n --> Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4534 + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; - // ths8r - ln_set_rate = 16.4534 + -1.10421 * tfactors.T913 - + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i - + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe54_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + n --> Fe55 - // Fe54 + n --> Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; - // ks03 - ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 - + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i - + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_n_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe55_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + n --> Fe56 - // Fe55 + n --> Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; - // ks03 - ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 - + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i - + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> Ni57 - // Ni56 + n --> Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.0765 + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; - // ths8r - ln_set_rate = 16.0765 + -1.19665 * tfactors.T913 - + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i - + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_n_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni57_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + n --> Ni58 - // Ni57 + n --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.2731 + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; - // ths8r - ln_set_rate = 17.2731 + -1.90814 * tfactors.T913 - + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i - + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_Fe52_reaclib + { + // Mn51_p_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_Co55_reaclib + { + // Mn51_He4_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_Co55_reaclib) = drate_dT; + rate_Mn51_He4_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_Co55_to_Cu59_reaclib + { + // Co55_He4_to_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); - } + log_scor = rate_eval.log_screen(k_He4_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); + } #endif - rate_He4_Co55_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_Cu59_reaclib) = drate_dT; + rate_Co55_He4_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_He4_to_Cu59_reaclib) = drate_dT; + } } - } - { - // He4_Ni56_to_Zn60_reaclib + { + // Ni56_He4_to_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); - } + log_scor = rate_eval.log_screen(k_He4_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); + } #endif - rate_He4_Ni56_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni56_to_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_Zn60_reaclib) = drate_dT; + rate_Ni56_He4_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_He4_to_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_Zn60_reaclib) = drate_dT; + } } - } - { - // p_Cu59_to_Zn60_reaclib + { + // Cu59_p_to_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); - } + log_scor = rate_eval.log_screen(k_p_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); + } #endif - rate_p_Cu59_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_Zn60_reaclib) = drate_dT; + rate_Cu59_p_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_p_to_Zn60_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_Mn51_reaclib + { + // Cr48_He4_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // p_Cu59_to_He4_Ni56_reaclib + { + // Cu59_p_to_He4_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); - } + log_scor = rate_eval.log_screen(k_p_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); + } #endif - rate_p_Cu59_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_He4_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_He4_Ni56_reaclib) = drate_dT; + rate_Cu59_p_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_He4_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_p_to_He4_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_n_S31_reaclib + { + // O16_O16_to_n_S31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_n_Si27_reaclib + { + // O16_C12_to_n_Si27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_reaclib) = drate_dT; + } } - } - { - // p_Fe54_to_Co55_reaclib + { + // Fe54_p_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); - } + log_scor = rate_eval.log_screen(k_p_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); + } #endif - rate_p_Fe54_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe54_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_Co55_reaclib) = drate_dT; + rate_Fe54_p_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_p_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_to_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe54_to_Ni58_reaclib + { + // Fe54_He4_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe54_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_Ni58_reaclib) = drate_dT; + rate_Fe54_He4_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_He4_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_Ni58_reaclib) = drate_dT; + } } - } - { - // p_Fe56_to_Co57_reaclib + { + // Fe56_p_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); - } + log_scor = rate_eval.log_screen(k_p_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); + } #endif - rate_p_Fe56_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe56_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_Co57_reaclib) = drate_dT; + rate_Fe56_p_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_p_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_to_Co57_reaclib) = drate_dT; + } } - } - { - // n_Co55_to_Co56_reaclib + { + // Co55_n_to_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co55_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co55_to_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co55_to_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_n_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_n_to_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_n_to_Co56_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_Co57_reaclib + { + // Co56_n_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_Co57_reaclib) = drate_dT; + } } - } - { - // p_Co57_to_Ni58_reaclib + { + // Co57_p_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); - } + log_scor = rate_eval.log_screen(k_p_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); + } #endif - rate_p_Co57_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_Ni58_reaclib) = drate_dT; + rate_Co57_p_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_to_Ni58_reaclib) = drate_dT; + } } - } - { - // p_Ni58_to_Cu59_reaclib + { + // Ni58_p_to_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); - } + log_scor = rate_eval.log_screen(k_p_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); + } #endif - rate_p_Ni58_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni58_to_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_Cu59_reaclib) = drate_dT; + rate_Ni58_p_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_p_to_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_to_Cu59_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_p_Fe54_reaclib + { + // Mn51_He4_to_p_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_p_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_p_Fe54_reaclib) = drate_dT; + rate_Mn51_He4_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_p_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_p_Fe54_reaclib) = drate_dT; + } } - } - { - // He4_Co55_to_p_Ni58_reaclib + { + // Co55_He4_to_p_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); - } + log_scor = rate_eval.log_screen(k_He4_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); + } #endif - rate_He4_Co55_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_p_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_p_Ni58_reaclib) = drate_dT; + rate_Co55_He4_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_p_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_He4_to_p_Ni58_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_p_Fe56_reaclib + { + // Co56_n_to_p_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_p_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_p_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_p_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_p_Fe56_reaclib) = drate_dT; + } } - } - { - // p_Co57_to_He4_Fe54_reaclib + { + // Co57_p_to_He4_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); - } + log_scor = rate_eval.log_screen(k_p_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); + } #endif - rate_p_Co57_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_He4_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_He4_Fe54_reaclib) = drate_dT; + rate_Co57_p_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_He4_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_to_He4_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_p_Co56_reaclib + { + // Ni56_n_to_p_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_p_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_p_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_p_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_p_Co56_reaclib) = drate_dT; + } } - } - { - // n_Cu59_to_He4_Co56_reaclib + { + // Cu59_n_to_He4_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu59_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu59_to_He4_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu59_to_He4_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_n_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_n_to_He4_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_n_to_He4_Co56_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } - { - // n_Fe52_to_Fe53_reaclib + { + // Fe52_n_to_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe52_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe52_to_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_n_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_to_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_to_Fe53_reaclib) = drate_dT; + } } - } - { - // n_Fe53_to_Fe54_reaclib + { + // Fe53_n_to_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe53_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe53_to_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_n_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_n_to_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Fe54_to_Fe55_reaclib + { + // Fe54_n_to_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe54_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe54_to_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_n_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_to_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_to_Fe55_reaclib) = drate_dT; + } } - } - { - // n_Fe55_to_Fe56_reaclib + { + // Fe55_n_to_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe55_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe55_to_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_n_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_n_to_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_Ni57_reaclib + { + // Ni56_n_to_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_Ni57_reaclib) = drate_dT; + } } - } - { - // n_Ni57_to_Ni58_reaclib + { + // Ni57_n_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_n_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/he-burn/ase-iron/tabular_weak_rates.H b/networks/he-burn/ase-iron/tabular_weak_rates.H new file mode 100644 index 000000000..774628385 --- /dev/null +++ b/networks/he-burn/ase-iron/tabular_weak_rates.H @@ -0,0 +1,84 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_to_n_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/he-burn/ase-iron/temperature_table_rates.H b/networks/he-burn/ase-iron/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/he-burn/ase-iron/temperature_table_rates.H +++ b/networks/he-burn/ase-iron/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/ase-test/Make.package b/networks/he-burn/ase-test/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/ase-test/Make.package +++ b/networks/he-burn/ase-test/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/ase-test/_parameters b/networks/he-burn/ase-test/_parameters index c878a50f5..78534a2de 100644 --- a/networks/he-burn/ase-test/_parameters +++ b/networks/he-burn/ase-test/_parameters @@ -1,4 +1,4 @@ @namespace: network -disable_p_C12_to_N13_reaclib int 0 -disable_He4_N13_to_p_O16_reaclib int 0 +disable_C12_p_to_N13_reaclib int 0 +disable_N13_He4_to_p_O16_reaclib int 0 diff --git a/networks/he-burn/ase-test/actual_network.H b/networks/he-burn/ase-test/actual_network.H index db585d252..9e5730836 100644 --- a/networks/he-burn/ase-test/actual_network.H +++ b/networks/he-burn/ase-test/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -210,48 +210,48 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_p_C12_to_N13_reaclib = 1, - k_He4_C12_to_O16_reaclib = 2, - k_He4_O16_to_Ne20_reaclib = 3, - k_He4_Ne20_to_Mg24_reaclib = 4, - k_p_Na23_to_Mg24_reaclib = 5, - k_He4_Mg24_to_Si28_reaclib = 6, - k_p_Al27_to_Si28_reaclib = 7, - k_He4_Si28_to_S32_reaclib = 8, - k_p_P31_to_S32_reaclib = 9, + k_C12_p_to_N13_reaclib = 1, + k_C12_He4_to_O16_reaclib = 2, + k_O16_He4_to_Ne20_reaclib = 3, + k_Ne20_He4_to_Mg24_reaclib = 4, + k_Na23_p_to_Mg24_reaclib = 5, + k_Mg24_He4_to_Si28_reaclib = 6, + k_Al27_p_to_Si28_reaclib = 7, + k_Si28_He4_to_S32_reaclib = 8, + k_P31_p_to_S32_reaclib = 9, k_C12_C12_to_p_Na23_reaclib = 10, k_C12_C12_to_He4_Ne20_reaclib = 11, - k_He4_N13_to_p_O16_reaclib = 12, - k_C12_O16_to_p_Al27_reaclib = 13, - k_C12_O16_to_He4_Mg24_reaclib = 14, + k_N13_He4_to_p_O16_reaclib = 12, + k_O16_C12_to_p_Al27_reaclib = 13, + k_O16_C12_to_He4_Mg24_reaclib = 14, k_O16_O16_to_p_P31_reaclib = 15, k_O16_O16_to_He4_Si28_reaclib = 16, - k_p_Ne20_to_He4_F17_reaclib = 17, - k_p_Na23_to_He4_Ne20_reaclib = 18, - k_p_Al27_to_He4_Mg24_reaclib = 19, - k_p_P31_to_He4_Si28_reaclib = 20, + k_Ne20_p_to_He4_F17_reaclib = 17, + k_Na23_p_to_He4_Ne20_reaclib = 18, + k_Al27_p_to_He4_Mg24_reaclib = 19, + k_P31_p_to_He4_Si28_reaclib = 20, k_He4_He4_He4_to_C12_reaclib = 21, k_C12_C12_to_n_Mg23_reaclib = 22, k_O16_O16_to_n_S31_reaclib = 23, - k_C12_O16_to_n_Si27_reaclib = 24, - k_He4_S32_to_Ar36_reaclib = 25, - k_p_Cl35_to_Ar36_reaclib = 26, - k_p_Cl35_to_He4_S32_reaclib = 27, - k_He4_Ar36_to_Ca40_reaclib = 28, - k_p_K39_to_Ca40_reaclib = 29, - k_p_K39_to_He4_Ar36_reaclib = 30, - k_He4_Ca40_to_Ti44_reaclib = 31, - k_p_Sc43_to_Ti44_reaclib = 32, - k_p_Sc43_to_He4_Ca40_reaclib = 33, - k_He4_Ti44_to_Cr48_reaclib = 34, - k_He4_Ti44_to_p_V47_reaclib = 35, - k_p_V47_to_Cr48_reaclib = 36, - k_He4_Cr48_to_Fe52_reaclib = 37, - k_He4_Cr48_to_p_Mn51_reaclib = 38, - k_p_Mn51_to_Fe52_reaclib = 39, - k_He4_Fe52_to_Ni56_reaclib = 40, - k_He4_Fe52_to_p_Co55_reaclib = 41, - k_p_Co55_to_Ni56_reaclib = 42, + k_O16_C12_to_n_Si27_reaclib = 24, + k_S32_He4_to_Ar36_reaclib = 25, + k_Cl35_p_to_He4_S32_reaclib = 26, + k_Cl35_p_to_Ar36_reaclib = 27, + k_Ar36_He4_to_Ca40_reaclib = 28, + k_K39_p_to_He4_Ar36_reaclib = 29, + k_K39_p_to_Ca40_reaclib = 30, + k_Ca40_He4_to_Ti44_reaclib = 31, + k_Sc43_p_to_He4_Ca40_reaclib = 32, + k_Sc43_p_to_Ti44_reaclib = 33, + k_Ti44_He4_to_p_V47_reaclib = 34, + k_Ti44_He4_to_Cr48_reaclib = 35, + k_V47_p_to_Cr48_reaclib = 36, + k_Cr48_He4_to_p_Mn51_reaclib = 37, + k_Cr48_He4_to_Fe52_reaclib = 38, + k_Mn51_p_to_Fe52_reaclib = 39, + k_Fe52_He4_to_p_Co55_reaclib = 40, + k_Fe52_He4_to_Ni56_reaclib = 41, + k_Co55_p_to_Ni56_reaclib = 42, k_O16_p_to_F17_iliadis = 43, k_S32_He4_to_Ar36_approx = 44, k_Ar36_to_S32_He4_approx = 45, @@ -267,7 +267,7 @@ namespace Rates k_Ni56_to_Fe52_He4_approx = 55, k_C12_C12_to_Mg24_modified = 56, k_O16_O16_to_S32_modified = 57, - k_C12_O16_to_Si28_modified = 58, + k_O16_C12_to_Si28_modified = 58, k_N13_to_p_C12_derived = 59, k_O16_to_He4_C12_derived = 60, k_Ne20_to_He4_O16_derived = 61, @@ -277,41 +277,41 @@ namespace Rates k_Si28_to_He4_Mg24_derived = 65, k_S32_to_p_P31_derived = 66, k_S32_to_He4_Si28_derived = 67, - k_C12_to_He4_He4_He4_derived = 68, - k_p_O16_to_He4_N13_derived = 69, - k_He4_F17_to_p_Ne20_derived = 70, - k_He4_Ne20_to_p_Na23_derived = 71, - k_He4_Ne20_to_C12_C12_derived = 72, - k_p_Na23_to_C12_C12_derived = 73, - k_He4_Mg24_to_p_Al27_derived = 74, - k_He4_Mg24_to_C12_O16_derived = 75, - k_p_Al27_to_C12_O16_derived = 76, - k_He4_Si28_to_p_P31_derived = 77, - k_He4_Si28_to_O16_O16_derived = 78, - k_p_P31_to_O16_O16_derived = 79, + k_C12_to_3He4_derived = 68, + k_O16_p_to_He4_N13_derived = 69, + k_F17_He4_to_p_Ne20_derived = 70, + k_Ne20_He4_to_p_Na23_derived = 71, + k_Ne20_He4_to_C12_C12_derived = 72, + k_Na23_p_to_C12_C12_derived = 73, + k_Mg24_He4_to_p_Al27_derived = 74, + k_Mg24_He4_to_C12_O16_derived = 75, + k_Al27_p_to_C12_O16_derived = 76, + k_Si28_He4_to_p_P31_derived = 77, + k_Si28_He4_to_O16_O16_derived = 78, + k_P31_p_to_O16_O16_derived = 79, k_Mg24_to_C12_C12_derived = 80, k_S32_to_O16_O16_derived = 81, k_Si28_to_C12_O16_derived = 82, k_F17_to_O16_p_derived = 83, - k_He4_S32_to_p_Cl35_derived = 84, + k_S32_He4_to_p_Cl35_derived = 84, k_Ar36_to_He4_S32_derived = 85, k_Ar36_to_p_Cl35_derived = 86, - k_He4_Ar36_to_p_K39_derived = 87, + k_Ar36_He4_to_p_K39_derived = 87, k_Ca40_to_He4_Ar36_derived = 88, k_Ca40_to_p_K39_derived = 89, - k_He4_Ca40_to_p_Sc43_derived = 90, + k_Ca40_He4_to_p_Sc43_derived = 90, k_Ti44_to_He4_Ca40_derived = 91, k_Ti44_to_p_Sc43_derived = 92, - k_Cr48_to_He4_Ti44_derived = 93, - k_Cr48_to_p_V47_derived = 94, - k_p_V47_to_He4_Ti44_derived = 95, - k_Fe52_to_He4_Cr48_derived = 96, - k_Fe52_to_p_Mn51_derived = 97, - k_p_Mn51_to_He4_Cr48_derived = 98, - k_Ni56_to_He4_Fe52_derived = 99, - k_Ni56_to_p_Co55_derived = 100, - k_p_Co55_to_He4_Fe52_derived = 101, - NumRates = k_p_Co55_to_He4_Fe52_derived + k_V47_p_to_He4_Ti44_derived = 93, + k_Cr48_to_He4_Ti44_derived = 94, + k_Cr48_to_p_V47_derived = 95, + k_Mn51_p_to_He4_Cr48_derived = 96, + k_Fe52_to_He4_Cr48_derived = 97, + k_Fe52_to_p_Mn51_derived = 98, + k_Co55_p_to_He4_Fe52_derived = 99, + k_Ni56_to_He4_Fe52_derived = 100, + k_Ni56_to_p_Co55_derived = 101, + NumRates = k_Ni56_to_p_Co55_derived }; enum ScreenPairs : @@ -356,48 +356,48 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "p_C12_to_N13_reaclib", // 1, - "He4_C12_to_O16_reaclib", // 2, - "He4_O16_to_Ne20_reaclib", // 3, - "He4_Ne20_to_Mg24_reaclib", // 4, - "p_Na23_to_Mg24_reaclib", // 5, - "He4_Mg24_to_Si28_reaclib", // 6, - "p_Al27_to_Si28_reaclib", // 7, - "He4_Si28_to_S32_reaclib", // 8, - "p_P31_to_S32_reaclib", // 9, + "C12_p_to_N13_reaclib", // 1, + "C12_He4_to_O16_reaclib", // 2, + "O16_He4_to_Ne20_reaclib", // 3, + "Ne20_He4_to_Mg24_reaclib", // 4, + "Na23_p_to_Mg24_reaclib", // 5, + "Mg24_He4_to_Si28_reaclib", // 6, + "Al27_p_to_Si28_reaclib", // 7, + "Si28_He4_to_S32_reaclib", // 8, + "P31_p_to_S32_reaclib", // 9, "C12_C12_to_p_Na23_reaclib", // 10, "C12_C12_to_He4_Ne20_reaclib", // 11, - "He4_N13_to_p_O16_reaclib", // 12, - "C12_O16_to_p_Al27_reaclib", // 13, - "C12_O16_to_He4_Mg24_reaclib", // 14, + "N13_He4_to_p_O16_reaclib", // 12, + "O16_C12_to_p_Al27_reaclib", // 13, + "O16_C12_to_He4_Mg24_reaclib", // 14, "O16_O16_to_p_P31_reaclib", // 15, "O16_O16_to_He4_Si28_reaclib", // 16, - "p_Ne20_to_He4_F17_reaclib", // 17, - "p_Na23_to_He4_Ne20_reaclib", // 18, - "p_Al27_to_He4_Mg24_reaclib", // 19, - "p_P31_to_He4_Si28_reaclib", // 20, + "Ne20_p_to_He4_F17_reaclib", // 17, + "Na23_p_to_He4_Ne20_reaclib", // 18, + "Al27_p_to_He4_Mg24_reaclib", // 19, + "P31_p_to_He4_Si28_reaclib", // 20, "He4_He4_He4_to_C12_reaclib", // 21, "C12_C12_to_n_Mg23_reaclib", // 22, "O16_O16_to_n_S31_reaclib", // 23, - "C12_O16_to_n_Si27_reaclib", // 24, - "He4_S32_to_Ar36_reaclib", // 25, - "p_Cl35_to_Ar36_reaclib", // 26, - "p_Cl35_to_He4_S32_reaclib", // 27, - "He4_Ar36_to_Ca40_reaclib", // 28, - "p_K39_to_Ca40_reaclib", // 29, - "p_K39_to_He4_Ar36_reaclib", // 30, - "He4_Ca40_to_Ti44_reaclib", // 31, - "p_Sc43_to_Ti44_reaclib", // 32, - "p_Sc43_to_He4_Ca40_reaclib", // 33, - "He4_Ti44_to_Cr48_reaclib", // 34, - "He4_Ti44_to_p_V47_reaclib", // 35, - "p_V47_to_Cr48_reaclib", // 36, - "He4_Cr48_to_Fe52_reaclib", // 37, - "He4_Cr48_to_p_Mn51_reaclib", // 38, - "p_Mn51_to_Fe52_reaclib", // 39, - "He4_Fe52_to_Ni56_reaclib", // 40, - "He4_Fe52_to_p_Co55_reaclib", // 41, - "p_Co55_to_Ni56_reaclib", // 42, + "O16_C12_to_n_Si27_reaclib", // 24, + "S32_He4_to_Ar36_reaclib", // 25, + "Cl35_p_to_He4_S32_reaclib", // 26, + "Cl35_p_to_Ar36_reaclib", // 27, + "Ar36_He4_to_Ca40_reaclib", // 28, + "K39_p_to_He4_Ar36_reaclib", // 29, + "K39_p_to_Ca40_reaclib", // 30, + "Ca40_He4_to_Ti44_reaclib", // 31, + "Sc43_p_to_He4_Ca40_reaclib", // 32, + "Sc43_p_to_Ti44_reaclib", // 33, + "Ti44_He4_to_p_V47_reaclib", // 34, + "Ti44_He4_to_Cr48_reaclib", // 35, + "V47_p_to_Cr48_reaclib", // 36, + "Cr48_He4_to_p_Mn51_reaclib", // 37, + "Cr48_He4_to_Fe52_reaclib", // 38, + "Mn51_p_to_Fe52_reaclib", // 39, + "Fe52_He4_to_p_Co55_reaclib", // 40, + "Fe52_He4_to_Ni56_reaclib", // 41, + "Co55_p_to_Ni56_reaclib", // 42, "O16_p_to_F17_iliadis", // 43, "S32_He4_to_Ar36_approx", // 44, "Ar36_to_S32_He4_approx", // 45, @@ -413,7 +413,7 @@ namespace Rates "Ni56_to_Fe52_He4_approx", // 55, "C12_C12_to_Mg24_modified", // 56, "O16_O16_to_S32_modified", // 57, - "C12_O16_to_Si28_modified", // 58, + "O16_C12_to_Si28_modified", // 58, "N13_to_p_C12_derived", // 59, "O16_to_He4_C12_derived", // 60, "Ne20_to_He4_O16_derived", // 61, @@ -423,40 +423,40 @@ namespace Rates "Si28_to_He4_Mg24_derived", // 65, "S32_to_p_P31_derived", // 66, "S32_to_He4_Si28_derived", // 67, - "C12_to_He4_He4_He4_derived", // 68, - "p_O16_to_He4_N13_derived", // 69, - "He4_F17_to_p_Ne20_derived", // 70, - "He4_Ne20_to_p_Na23_derived", // 71, - "He4_Ne20_to_C12_C12_derived", // 72, - "p_Na23_to_C12_C12_derived", // 73, - "He4_Mg24_to_p_Al27_derived", // 74, - "He4_Mg24_to_C12_O16_derived", // 75, - "p_Al27_to_C12_O16_derived", // 76, - "He4_Si28_to_p_P31_derived", // 77, - "He4_Si28_to_O16_O16_derived", // 78, - "p_P31_to_O16_O16_derived", // 79, + "C12_to_3He4_derived", // 68, + "O16_p_to_He4_N13_derived", // 69, + "F17_He4_to_p_Ne20_derived", // 70, + "Ne20_He4_to_p_Na23_derived", // 71, + "Ne20_He4_to_C12_C12_derived", // 72, + "Na23_p_to_C12_C12_derived", // 73, + "Mg24_He4_to_p_Al27_derived", // 74, + "Mg24_He4_to_C12_O16_derived", // 75, + "Al27_p_to_C12_O16_derived", // 76, + "Si28_He4_to_p_P31_derived", // 77, + "Si28_He4_to_O16_O16_derived", // 78, + "P31_p_to_O16_O16_derived", // 79, "Mg24_to_C12_C12_derived", // 80, "S32_to_O16_O16_derived", // 81, "Si28_to_C12_O16_derived", // 82, "F17_to_O16_p_derived", // 83, - "He4_S32_to_p_Cl35_derived", // 84, + "S32_He4_to_p_Cl35_derived", // 84, "Ar36_to_He4_S32_derived", // 85, "Ar36_to_p_Cl35_derived", // 86, - "He4_Ar36_to_p_K39_derived", // 87, + "Ar36_He4_to_p_K39_derived", // 87, "Ca40_to_He4_Ar36_derived", // 88, "Ca40_to_p_K39_derived", // 89, - "He4_Ca40_to_p_Sc43_derived", // 90, + "Ca40_He4_to_p_Sc43_derived", // 90, "Ti44_to_He4_Ca40_derived", // 91, "Ti44_to_p_Sc43_derived", // 92, - "Cr48_to_He4_Ti44_derived", // 93, - "Cr48_to_p_V47_derived", // 94, - "p_V47_to_He4_Ti44_derived", // 95, - "Fe52_to_He4_Cr48_derived", // 96, - "Fe52_to_p_Mn51_derived", // 97, - "p_Mn51_to_He4_Cr48_derived", // 98, - "Ni56_to_He4_Fe52_derived", // 99, - "Ni56_to_p_Co55_derived", // 100, - "p_Co55_to_He4_Fe52_derived" // 101, + "V47_p_to_He4_Ti44_derived", // 93, + "Cr48_to_He4_Ti44_derived", // 94, + "Cr48_to_p_V47_derived", // 95, + "Mn51_p_to_He4_Cr48_derived", // 96, + "Fe52_to_He4_Cr48_derived", // 97, + "Fe52_to_p_Mn51_derived", // 98, + "Co55_p_to_He4_Fe52_derived", // 99, + "Ni56_to_He4_Fe52_derived", // 100, + "Ni56_to_p_Co55_derived" // 101, }; template @@ -489,21 +489,21 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 22; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, - He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_He4_F17_to_p_Ne20_derived, k_p_Ne20_to_He4_F17_reaclib, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, + He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_F17_He4_to_p_Ne20_derived, k_Ne20_p_to_He4_F17_reaclib, O16, H1, -1, F17, -1, -1, O16, F17, k_O16_p_to_F17_iliadis, k_F17_to_O16_p_derived, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, diff --git a/networks/he-burn/ase-test/actual_rhs.H b/networks/he-burn/ase-test/actual_rhs.H index bc130d2f3..eee9b5c6b 100644 --- a/networks/he-burn/ase-test/actual_rhs.H +++ b/networks/he-burn/ase-test/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -382,9 +379,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -396,7 +395,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -404,17 +405,21 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); - if (disable_p_C12_to_N13_reaclib) { - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = 0.0; + if (disable_C12_p_to_N13_reaclib) { + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = 0.0; + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = 0.0; } rate_eval.screened_rates(k_N13_to_p_C12_derived) = 0.0; if constexpr (std::is_same_v) { @@ -422,28 +427,20 @@ void evaluate_rates(const burn_t& state, } } - if (disable_He4_N13_to_p_O16_reaclib) { - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = 0.0; + if (disable_N13_He4_to_p_O16_reaclib) { + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = 0.0; + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = 0.0; } - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = 0.0; + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = 0.0; + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = 0.0; } } // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -495,6 +492,7 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); ydot_nuc(H1) = 0.0_rt; @@ -543,40 +541,40 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + - (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + (-screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_O16_p_derived)*Y(F17)); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + (-screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + @@ -585,77 +583,77 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_Fe52_He4_approx)*Y(Ni56)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + (-screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived)*Y(Mg24)) + - (-screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (-screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(N13) = - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + (-screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_S32_to_O16_O16_derived)*Y(S32)) + - (-screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)) + + (-screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)) + (-screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_O16_p_derived)*Y(F17)); ydot_nuc(F17) = - (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (-screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + (screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_O16_p_derived)*Y(F17)); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(Na23) = - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + (0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Mg24_to_C12_C12_derived)*Y(Mg24)); ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + - (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + (0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_S32_to_O16_O16_derived)*Y(S32)) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -736,45 +734,47 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*state.rho - screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_iliadis)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_iliadis)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = screened_rates(k_F17_to_O16_p_derived) + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho + screened_rates(k_F17_to_O16_p_derived); jac.set(H1, F17, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -792,40 +792,40 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho; jac.set(He4, F17, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived) + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -849,33 +849,33 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni56_to_Fe52_He4_approx); jac.set(He4, Ni56, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho; jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); scratch = screened_rates(k_N13_to_p_C12_derived); jac.set(C12, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); jac.set(C12, F17, 0.0); - scratch = 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho; + scratch = 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho; jac.set(C12, Ne20, scratch); - scratch = 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho; jac.set(C12, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived); + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived); jac.set(C12, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho; jac.set(C12, Al27, scratch); scratch = screened_rates(k_Si28_to_C12_O16_derived); @@ -897,19 +897,19 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ni56, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, F17, 0.0); @@ -940,19 +940,19 @@ void jac_nuc(const burn_t& state, jac.set(N13, Ni56, 0.0); - scratch = -screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_iliadis)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_iliadis)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived); jac.set(O16, O16, scratch); scratch = screened_rates(k_F17_to_O16_p_derived); @@ -963,16 +963,16 @@ void jac_nuc(const burn_t& state, jac.set(O16, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho; jac.set(O16, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho; jac.set(O16, Al27, scratch); - scratch = 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_C12_O16_derived); + scratch = 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_C12_O16_derived); jac.set(O16, Si28, scratch); - scratch = 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho; jac.set(O16, P31, scratch); scratch = 2.0*screened_rates(k_S32_to_O16_O16_derived); @@ -990,10 +990,10 @@ void jac_nuc(const burn_t& state, jac.set(O16, Ni56, 0.0); - scratch = screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_p_to_F17_iliadis)*Y(O16)*state.rho; jac.set(F17, H1, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho; jac.set(F17, He4, scratch); jac.set(F17, C12, 0.0); @@ -1003,10 +1003,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_O16_p_to_F17_iliadis)*Y(H1)*state.rho; jac.set(F17, O16, scratch); - scratch = -screened_rates(k_F17_to_O16_p_derived) - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_F17_to_O16_p_derived); jac.set(F17, F17, scratch); - scratch = screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, Ne20, scratch); jac.set(F17, Na23, 0.0); @@ -1033,10 +1033,10 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ni56, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho; jac.set(Ne20, H1, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -1044,16 +1044,16 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N13, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho; jac.set(Ne20, F17, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived) - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); jac.set(Ne20, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); @@ -1079,10 +1079,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Ni56, 0.0); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -1094,10 +1094,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, F17, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_derived); @@ -1123,32 +1123,32 @@ void jac_nuc(const burn_t& state, jac.set(Na23, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); jac.set(Mg24, F17, 0.0); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_C12_C12_derived) - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_C12_C12_derived) - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -1170,18 +1170,18 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ni56, 0.0); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, F17, 0.0); @@ -1190,10 +1190,10 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -1215,18 +1215,18 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, F17, 0.0); @@ -1235,16 +1235,16 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_C12_O16_derived) - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_C12_O16_derived) - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -1262,10 +1262,10 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Ni56, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -1285,10 +1285,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1306,10 +1306,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Ni56, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -1329,10 +1329,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_O16_O16_derived) - screened_rates(k_S32_to_p_P31_derived); diff --git a/networks/he-burn/ase-test/approximate_rates.H b/networks/he-burn/ase-test/approximate_rates.H index cb7a05d24..147172f47 100644 --- a/networks/he-burn/ase-test/approximate_rates.H +++ b/networks/he-burn/ase-test/approximate_rates.H @@ -8,348 +8,350 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; + } + + rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; + } + + rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; + } + + rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; + } - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; } - - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; - } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; - } - - rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; - } - - rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; - } - - rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; - } - - } - #endif diff --git a/networks/he-burn/ase-test/branched_rates.H b/networks/he-burn/ase-test/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/ase-test/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/ase-test/derived_rates.H b/networks/he-burn/ase-test/derived_rates.H index 80b1f1b9e..2acb072d4 100644 --- a/networks/he-burn/ase-test/derived_rates.H +++ b/networks/he-burn/ase-test/derived_rates.H @@ -7,3837 +7,3839 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from st08r + ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - // ReacLib set derived from st08r - ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from st08r + ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // ReacLib set derived from st08r - ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_He4_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F17_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 + He4 --> p + Ne20 - // F17 + He4 --> p + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - He4_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dHe4_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - He4_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dHe4_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacr + ln_set_rate = 38.645331236377224 + -0.004848799532844339 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 38.645331236377224 + -0.004848799532844339 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 0.004848799532844339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 0.004848799532844339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> C12 + C12 - // Ne20 + He4 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na23 + p --> C12 + C12 - // Na23 + p --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - p_log_pf - Na23_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dp_log_pf_dT9 - dNa23_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - p_log_pf - Na23_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dp_log_pf_dT9 - dNa23_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 60.92541574740554 + -26.004360836807496 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 60.92541574740554 + -26.004360836807496 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.004360836807496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.004360836807496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> C12 + O16 - // Mg24 + He4 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Al27 + p --> C12 + O16 - // Al27 + p --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - p_log_pf - Al27_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dAl27_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - p_log_pf - Al27_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dAl27_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 68.96430994536895 + -59.8005159928172 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 68.96430994536895 + -59.8005159928172 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.8005159928172 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.8005159928172 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> O16 + O16 - // Si28 + He4 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 97.78921572069022 + -111.60083385054465 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 97.78921572069022 + -111.60083385054465 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 111.60083385054465 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 111.60083385054465 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // P31 + p --> O16 + O16 - // P31 + p --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - p_log_pf - P31_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dP31_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - p_log_pf - P31_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dP31_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 86.33118481035693 + -88.87103716814843 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 86.33118481035693 + -88.87103716814843 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.87103716814843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.87103716814843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> C12 + C12 - // Mg24 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 12.203060308868553 + -191.84225839903127 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 12.203060308868553 + -191.84225839903127 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 191.84225839903127 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 191.84225839903127 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> O16 + O16 - // S32 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 102.9883182326601 + -192.3301592962798 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 9.12001 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 102.9883182326601 + -192.3301592962798 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 9.12001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 192.3301592962798 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 9.12001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 192.3301592962798 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 9.12001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> C12 + O16 - // Si28 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = -106.3111878016318 + -195.9077167184711 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -176.78 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = -106.3111878016318 + -195.9077167184711 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -176.78 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 195.9077167184711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -176.78 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 195.9077167184711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -176.78 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_to_O16_p_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F17_to_O16_p_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 --> O16 + p - // F17 --> O16 + p + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + p_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dp_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + p_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dp_log_pf_dT9 - dF17_log_pf_dT9; + auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( + tfactors.lnT9, + O16_p_to_F17_iliadis_data::log_t9, + O16_p_to_F17_iliadis_data::log_rate); - auto [_rate, _drate_dT] = interp_net::monotone_1d_interp( - tfactors.lnT9, - O16_p_to_F17_iliadis_data::log_t9, - O16_p_to_F17_iliadis_data::log_rate); + // Apply Equilibrium Ratio + constexpr amrex::Real Q_kBGK = -0.6002689639985703 * 1.0e-9_rt / C::k_MeV; + amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; + _rate += 21.841444037879352 + Q_kBT + net_log_pf + log_scor; + _rate += 1.5 * tfactors.lnT9; - // Apply Equilibrium Ratio - constexpr amrex::Real Q_kBGK = -0.6002689639985703 * 1.0e-9_rt / C::k_MeV; - amrex::Real Q_kBT = Q_kBGK * tfactors.T9i; - _rate += 21.841444037879352 + Q_kBT + net_log_pf + log_scor; - _rate += 1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + _rate = std::max(_rate, -230.0); + rate = std::exp(_rate); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - _rate = std::max(_rate, -230.0); - rate = std::exp(_rate); + // we found dlog(rate)/dlog(T9) + if constexpr (std::is_same_v) { + // Convert to dlog(rate)/dT9 first + _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + drate_dT = rate * _drate_dT * 1.0e-9_rt; + } - // we found dlog(rate)/dlog(T9) - if constexpr (std::is_same_v) { - // Convert to dlog(rate)/dT9 first - _drate_dT = (_drate_dT + 1.5 - Q_kBT) * tfactors.T9i + net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - drate_dT = rate * _drate_dT * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lo18r + ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0 + ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from chw0 - ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // V47 + p --> He4 + Ti44 - // Cr48 --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; - // ReacLib set derived from ths8r - ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from chw0r + ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cr48 --> He4 + Ti44 - // Cr48 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nfisn - ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } - // ReacLib set derived from nfisn - ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - ln_set_rate += net_log_pf + log_scor; + // Cr48 --> p + V47 - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // Evaluate partition function terms - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - // ReacLib set derived from nfisn - ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - ln_set_rate += net_log_pf + log_scor; + amrex::Real p_log_pf, dp_log_pf_dT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + amrex::Real V47_log_pf, dV47_log_pf_dT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // ReacLib set derived from nfisn - ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + // ReacLib set derived from nfisn + ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + ln_set_rate += net_log_pf + log_scor; -} + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // V47 + p --> He4 + Ti44 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // ReacLib set derived from nfisn + ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - // Evaluate partition function terms + ln_set_rate += net_log_pf + log_scor; - amrex::Real p_log_pf, dp_log_pf_dT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // ReacLib set derived from nfisn + ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; + // ReacLib set derived from nfisn + ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from chw0r - ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Mn51 + p --> He4 + Cr48 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Fe52 --> He4 + Cr48 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> He4 + Cr48 + // Fe52 --> p + Mn51 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Co55 + p --> He4 + Fe52 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Ni56 --> He4 + Fe52 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Co55 + p --> He4 + Fe52 + // Ni56 --> p + Co55 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - part_fun::pf_cache_t pf_cache{}; + part_fun::pf_cache_t pf_cache{}; - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - { - // N13_to_p_C12_derived + { + // N13_to_p_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_F17_to_p_Ne20_derived + { + // F17_He4_to_p_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); - } + log_scor = rate_eval.log_screen(k_He4_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); + } #endif - rate_He4_F17_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived) = drate_dT; + rate_F17_He4_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_He4_to_p_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_He4_to_p_Ne20_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_C12_C12_derived + { + // Ne20_He4_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived) = drate_dT; + rate_Ne20_He4_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_C12_C12_derived) = drate_dT; + } } - } - { - // p_Na23_to_C12_C12_derived + { + // Na23_p_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Na23_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_derived) = drate_dT; + rate_Na23_p_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na23_p_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_C12_C12_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_C12_O16_derived + { + // Mg24_He4_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived) = drate_dT; + rate_Mg24_He4_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_C12_O16_derived) = drate_dT; + } } - } - { - // p_Al27_to_C12_O16_derived + { + // Al27_p_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Al27_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_derived) = drate_dT; + rate_Al27_p_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Al27_p_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_C12_O16_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // He4_Si28_to_O16_O16_derived + { + // Si28_He4_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_derived) = drate_dT; + rate_Si28_He4_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_O16_O16_derived) = drate_dT; + } } - } - { - // p_P31_to_O16_O16_derived + { + // P31_p_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_P31_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_derived) = drate_dT; + rate_P31_p_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_P31_p_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_O16_O16_derived) = drate_dT; + } } - } - { - // Mg24_to_C12_C12_derived + { + // Mg24_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + } } - } - { - // S32_to_O16_O16_derived + { + // S32_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + } } - } - { - // Si28_to_C12_O16_derived + { + // Si28_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + } } - } - { - // F17_to_O16_p_derived + { + // F17_to_O16_p_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_O16_p_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F17_to_O16_p_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_O16_p_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_to_O16_p_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_to_O16_p_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_O16_p_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // V47_p_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_V47_p_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } + + { + // Mn51_p_to_He4_Cr48_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; + rate_Mn51_p_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_derived + { + // Fe52_to_p_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } -#endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; - } } - } #endif diff --git a/networks/he-burn/ase-test/modified_rates.H b/networks/he-burn/ase-test/modified_rates.H index e63de5077..9fe01c420 100644 --- a/networks/he-burn/ase-test/modified_rates.H +++ b/networks/he-burn/ase-test/modified_rates.H @@ -12,6 +12,9 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,7 +22,6 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -28,22 +30,20 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) - - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -89,7 +89,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -99,10 +99,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } diff --git a/networks/he-burn/ase-test/pynucastro-info.txt b/networks/he-burn/ase-test/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/he-burn/ase-test/pynucastro-info.txt +++ b/networks/he-burn/ase-test/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/ase-test/reaclib_rates.H b/networks/he-burn/ase-test/reaclib_rates.H index 9f017812f..82d5186ff 100644 --- a/networks/he-burn/ase-test/reaclib_rates.H +++ b/networks/he-burn/ase-test/reaclib_rates.H @@ -8,2982 +8,2985 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + p --> N13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + p --> N13 - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - ln_set_rate += log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_p_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne20_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + p --> He4 + F17 - // Ne20 + p --> He4 + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> n + S31 - // O16 + O16 --> n + S31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> n + Si27 - // O16 + C12 --> n + Si27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - ln_set_rate += log_scor; + // K39 + p --> Ca40 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; -} + ln_set_rate += log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - // K39 + p --> He4 + Ar36 + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p + Mn51 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> Fe52 - // Mn51 + p --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_Ne20_to_He4_F17_reaclib + { + // Ne20_p_to_He4_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); - } + log_scor = rate_eval.log_screen(k_p_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); + } #endif - rate_p_Ne20_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne20_to_He4_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17_reaclib) = drate_dT; + rate_Ne20_p_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_p_to_He4_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_p_to_He4_F17_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_n_S31_reaclib + { + // O16_O16_to_n_S31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_n_Si27_reaclib + { + // O16_C12_to_n_Si27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_Mn51_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_Fe52_reaclib + { + // Mn51_p_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/he-burn/ase-test/tabular_weak_rates.H b/networks/he-burn/ase-test/tabular_weak_rates.H new file mode 100644 index 000000000..797530335 --- /dev/null +++ b/networks/he-burn/ase-test/tabular_weak_rates.H @@ -0,0 +1,33 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + } + +} +#endif diff --git a/networks/he-burn/ase-test/temperature_table_rates.H b/networks/he-burn/ase-test/temperature_table_rates.H index 2b0c185b1..8394b1212 100644 --- a/networks/he-burn/ase-test/temperature_table_rates.H +++ b/networks/he-burn/ase-test/temperature_table_rates.H @@ -9,8 +9,6 @@ using namespace amrex::literals; -using namespace Rates; - // temperature / rate tabulation for O16 + p --> F17 namespace O16_p_to_F17_iliadis_data { @@ -60,6 +58,8 @@ namespace O16_p_to_F17_iliadis_data { namespace temp_tabular { + using namespace Rates; + template AMREX_GPU_DEVICE AMREX_INLINE void rate_O16_p_to_F17_iliadis(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { @@ -81,14 +81,12 @@ namespace temp_tabular { template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -114,6 +112,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/ase/Make.package b/networks/he-burn/ase/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/ase/Make.package +++ b/networks/he-burn/ase/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/ase/_parameters b/networks/he-burn/ase/_parameters index c878a50f5..78534a2de 100644 --- a/networks/he-burn/ase/_parameters +++ b/networks/he-burn/ase/_parameters @@ -1,4 +1,4 @@ @namespace: network -disable_p_C12_to_N13_reaclib int 0 -disable_He4_N13_to_p_O16_reaclib int 0 +disable_C12_p_to_N13_reaclib int 0 +disable_N13_He4_to_p_O16_reaclib int 0 diff --git a/networks/he-burn/ase/actual_network.H b/networks/he-burn/ase/actual_network.H index 1e53daf84..4dc2d0f9f 100644 --- a/networks/he-burn/ase/actual_network.H +++ b/networks/he-burn/ase/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -204,47 +204,47 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_p_C12_to_N13_reaclib = 1, - k_He4_C12_to_O16_reaclib = 2, - k_He4_O16_to_Ne20_reaclib = 3, - k_He4_Ne20_to_Mg24_reaclib = 4, - k_p_Na23_to_Mg24_reaclib = 5, - k_He4_Mg24_to_Si28_reaclib = 6, - k_p_Al27_to_Si28_reaclib = 7, - k_He4_Si28_to_S32_reaclib = 8, - k_p_P31_to_S32_reaclib = 9, + k_C12_p_to_N13_reaclib = 1, + k_C12_He4_to_O16_reaclib = 2, + k_O16_He4_to_Ne20_reaclib = 3, + k_Ne20_He4_to_Mg24_reaclib = 4, + k_Na23_p_to_Mg24_reaclib = 5, + k_Mg24_He4_to_Si28_reaclib = 6, + k_Al27_p_to_Si28_reaclib = 7, + k_Si28_He4_to_S32_reaclib = 8, + k_P31_p_to_S32_reaclib = 9, k_C12_C12_to_p_Na23_reaclib = 10, k_C12_C12_to_He4_Ne20_reaclib = 11, - k_He4_N13_to_p_O16_reaclib = 12, - k_C12_O16_to_p_Al27_reaclib = 13, - k_C12_O16_to_He4_Mg24_reaclib = 14, + k_N13_He4_to_p_O16_reaclib = 12, + k_O16_C12_to_p_Al27_reaclib = 13, + k_O16_C12_to_He4_Mg24_reaclib = 14, k_O16_O16_to_p_P31_reaclib = 15, k_O16_O16_to_He4_Si28_reaclib = 16, - k_p_Na23_to_He4_Ne20_reaclib = 17, - k_p_Al27_to_He4_Mg24_reaclib = 18, - k_p_P31_to_He4_Si28_reaclib = 19, + k_Na23_p_to_He4_Ne20_reaclib = 17, + k_Al27_p_to_He4_Mg24_reaclib = 18, + k_P31_p_to_He4_Si28_reaclib = 19, k_He4_He4_He4_to_C12_reaclib = 20, k_C12_C12_to_n_Mg23_reaclib = 21, k_O16_O16_to_n_S31_reaclib = 22, - k_C12_O16_to_n_Si27_reaclib = 23, - k_He4_S32_to_Ar36_reaclib = 24, - k_p_Cl35_to_Ar36_reaclib = 25, - k_p_Cl35_to_He4_S32_reaclib = 26, - k_He4_Ar36_to_Ca40_reaclib = 27, - k_p_K39_to_Ca40_reaclib = 28, - k_p_K39_to_He4_Ar36_reaclib = 29, - k_He4_Ca40_to_Ti44_reaclib = 30, - k_p_Sc43_to_Ti44_reaclib = 31, - k_p_Sc43_to_He4_Ca40_reaclib = 32, - k_He4_Ti44_to_Cr48_reaclib = 33, - k_He4_Ti44_to_p_V47_reaclib = 34, - k_p_V47_to_Cr48_reaclib = 35, - k_He4_Cr48_to_Fe52_reaclib = 36, - k_He4_Cr48_to_p_Mn51_reaclib = 37, - k_p_Mn51_to_Fe52_reaclib = 38, - k_He4_Fe52_to_Ni56_reaclib = 39, - k_He4_Fe52_to_p_Co55_reaclib = 40, - k_p_Co55_to_Ni56_reaclib = 41, + k_O16_C12_to_n_Si27_reaclib = 23, + k_S32_He4_to_Ar36_reaclib = 24, + k_Cl35_p_to_He4_S32_reaclib = 25, + k_Cl35_p_to_Ar36_reaclib = 26, + k_Ar36_He4_to_Ca40_reaclib = 27, + k_K39_p_to_He4_Ar36_reaclib = 28, + k_K39_p_to_Ca40_reaclib = 29, + k_Ca40_He4_to_Ti44_reaclib = 30, + k_Sc43_p_to_He4_Ca40_reaclib = 31, + k_Sc43_p_to_Ti44_reaclib = 32, + k_Ti44_He4_to_p_V47_reaclib = 33, + k_Ti44_He4_to_Cr48_reaclib = 34, + k_V47_p_to_Cr48_reaclib = 35, + k_Cr48_He4_to_p_Mn51_reaclib = 36, + k_Cr48_He4_to_Fe52_reaclib = 37, + k_Mn51_p_to_Fe52_reaclib = 38, + k_Fe52_He4_to_p_Co55_reaclib = 39, + k_Fe52_He4_to_Ni56_reaclib = 40, + k_Co55_p_to_Ni56_reaclib = 41, k_S32_He4_to_Ar36_approx = 42, k_Ar36_to_S32_He4_approx = 43, k_Ar36_He4_to_Ca40_approx = 44, @@ -259,7 +259,7 @@ namespace Rates k_Ni56_to_Fe52_He4_approx = 53, k_C12_C12_to_Mg24_modified = 54, k_O16_O16_to_S32_modified = 55, - k_C12_O16_to_Si28_modified = 56, + k_O16_C12_to_Si28_modified = 56, k_N13_to_p_C12_derived = 57, k_O16_to_He4_C12_derived = 58, k_Ne20_to_He4_O16_derived = 59, @@ -269,39 +269,39 @@ namespace Rates k_Si28_to_He4_Mg24_derived = 63, k_S32_to_p_P31_derived = 64, k_S32_to_He4_Si28_derived = 65, - k_C12_to_He4_He4_He4_derived = 66, - k_p_O16_to_He4_N13_derived = 67, - k_He4_Ne20_to_p_Na23_derived = 68, - k_He4_Ne20_to_C12_C12_derived = 69, - k_p_Na23_to_C12_C12_derived = 70, - k_He4_Mg24_to_p_Al27_derived = 71, - k_He4_Mg24_to_C12_O16_derived = 72, - k_p_Al27_to_C12_O16_derived = 73, - k_He4_Si28_to_p_P31_derived = 74, - k_He4_Si28_to_O16_O16_derived = 75, - k_p_P31_to_O16_O16_derived = 76, + k_C12_to_3He4_derived = 66, + k_O16_p_to_He4_N13_derived = 67, + k_Ne20_He4_to_p_Na23_derived = 68, + k_Ne20_He4_to_C12_C12_derived = 69, + k_Na23_p_to_C12_C12_derived = 70, + k_Mg24_He4_to_p_Al27_derived = 71, + k_Mg24_He4_to_C12_O16_derived = 72, + k_Al27_p_to_C12_O16_derived = 73, + k_Si28_He4_to_p_P31_derived = 74, + k_Si28_He4_to_O16_O16_derived = 75, + k_P31_p_to_O16_O16_derived = 76, k_Mg24_to_C12_C12_derived = 77, k_S32_to_O16_O16_derived = 78, k_Si28_to_C12_O16_derived = 79, - k_He4_S32_to_p_Cl35_derived = 80, + k_S32_He4_to_p_Cl35_derived = 80, k_Ar36_to_He4_S32_derived = 81, k_Ar36_to_p_Cl35_derived = 82, - k_He4_Ar36_to_p_K39_derived = 83, + k_Ar36_He4_to_p_K39_derived = 83, k_Ca40_to_He4_Ar36_derived = 84, k_Ca40_to_p_K39_derived = 85, - k_He4_Ca40_to_p_Sc43_derived = 86, + k_Ca40_He4_to_p_Sc43_derived = 86, k_Ti44_to_He4_Ca40_derived = 87, k_Ti44_to_p_Sc43_derived = 88, - k_Cr48_to_He4_Ti44_derived = 89, - k_Cr48_to_p_V47_derived = 90, - k_p_V47_to_He4_Ti44_derived = 91, - k_Fe52_to_He4_Cr48_derived = 92, - k_Fe52_to_p_Mn51_derived = 93, - k_p_Mn51_to_He4_Cr48_derived = 94, - k_Ni56_to_He4_Fe52_derived = 95, - k_Ni56_to_p_Co55_derived = 96, - k_p_Co55_to_He4_Fe52_derived = 97, - NumRates = k_p_Co55_to_He4_Fe52_derived + k_V47_p_to_He4_Ti44_derived = 89, + k_Cr48_to_He4_Ti44_derived = 90, + k_Cr48_to_p_V47_derived = 91, + k_Mn51_p_to_He4_Cr48_derived = 92, + k_Fe52_to_He4_Cr48_derived = 93, + k_Fe52_to_p_Mn51_derived = 94, + k_Co55_p_to_He4_Fe52_derived = 95, + k_Ni56_to_He4_Fe52_derived = 96, + k_Ni56_to_p_Co55_derived = 97, + NumRates = k_Ni56_to_p_Co55_derived }; enum ScreenPairs : @@ -344,47 +344,47 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "p_C12_to_N13_reaclib", // 1, - "He4_C12_to_O16_reaclib", // 2, - "He4_O16_to_Ne20_reaclib", // 3, - "He4_Ne20_to_Mg24_reaclib", // 4, - "p_Na23_to_Mg24_reaclib", // 5, - "He4_Mg24_to_Si28_reaclib", // 6, - "p_Al27_to_Si28_reaclib", // 7, - "He4_Si28_to_S32_reaclib", // 8, - "p_P31_to_S32_reaclib", // 9, + "C12_p_to_N13_reaclib", // 1, + "C12_He4_to_O16_reaclib", // 2, + "O16_He4_to_Ne20_reaclib", // 3, + "Ne20_He4_to_Mg24_reaclib", // 4, + "Na23_p_to_Mg24_reaclib", // 5, + "Mg24_He4_to_Si28_reaclib", // 6, + "Al27_p_to_Si28_reaclib", // 7, + "Si28_He4_to_S32_reaclib", // 8, + "P31_p_to_S32_reaclib", // 9, "C12_C12_to_p_Na23_reaclib", // 10, "C12_C12_to_He4_Ne20_reaclib", // 11, - "He4_N13_to_p_O16_reaclib", // 12, - "C12_O16_to_p_Al27_reaclib", // 13, - "C12_O16_to_He4_Mg24_reaclib", // 14, + "N13_He4_to_p_O16_reaclib", // 12, + "O16_C12_to_p_Al27_reaclib", // 13, + "O16_C12_to_He4_Mg24_reaclib", // 14, "O16_O16_to_p_P31_reaclib", // 15, "O16_O16_to_He4_Si28_reaclib", // 16, - "p_Na23_to_He4_Ne20_reaclib", // 17, - "p_Al27_to_He4_Mg24_reaclib", // 18, - "p_P31_to_He4_Si28_reaclib", // 19, + "Na23_p_to_He4_Ne20_reaclib", // 17, + "Al27_p_to_He4_Mg24_reaclib", // 18, + "P31_p_to_He4_Si28_reaclib", // 19, "He4_He4_He4_to_C12_reaclib", // 20, "C12_C12_to_n_Mg23_reaclib", // 21, "O16_O16_to_n_S31_reaclib", // 22, - "C12_O16_to_n_Si27_reaclib", // 23, - "He4_S32_to_Ar36_reaclib", // 24, - "p_Cl35_to_Ar36_reaclib", // 25, - "p_Cl35_to_He4_S32_reaclib", // 26, - "He4_Ar36_to_Ca40_reaclib", // 27, - "p_K39_to_Ca40_reaclib", // 28, - "p_K39_to_He4_Ar36_reaclib", // 29, - "He4_Ca40_to_Ti44_reaclib", // 30, - "p_Sc43_to_Ti44_reaclib", // 31, - "p_Sc43_to_He4_Ca40_reaclib", // 32, - "He4_Ti44_to_Cr48_reaclib", // 33, - "He4_Ti44_to_p_V47_reaclib", // 34, - "p_V47_to_Cr48_reaclib", // 35, - "He4_Cr48_to_Fe52_reaclib", // 36, - "He4_Cr48_to_p_Mn51_reaclib", // 37, - "p_Mn51_to_Fe52_reaclib", // 38, - "He4_Fe52_to_Ni56_reaclib", // 39, - "He4_Fe52_to_p_Co55_reaclib", // 40, - "p_Co55_to_Ni56_reaclib", // 41, + "O16_C12_to_n_Si27_reaclib", // 23, + "S32_He4_to_Ar36_reaclib", // 24, + "Cl35_p_to_He4_S32_reaclib", // 25, + "Cl35_p_to_Ar36_reaclib", // 26, + "Ar36_He4_to_Ca40_reaclib", // 27, + "K39_p_to_He4_Ar36_reaclib", // 28, + "K39_p_to_Ca40_reaclib", // 29, + "Ca40_He4_to_Ti44_reaclib", // 30, + "Sc43_p_to_He4_Ca40_reaclib", // 31, + "Sc43_p_to_Ti44_reaclib", // 32, + "Ti44_He4_to_p_V47_reaclib", // 33, + "Ti44_He4_to_Cr48_reaclib", // 34, + "V47_p_to_Cr48_reaclib", // 35, + "Cr48_He4_to_p_Mn51_reaclib", // 36, + "Cr48_He4_to_Fe52_reaclib", // 37, + "Mn51_p_to_Fe52_reaclib", // 38, + "Fe52_He4_to_p_Co55_reaclib", // 39, + "Fe52_He4_to_Ni56_reaclib", // 40, + "Co55_p_to_Ni56_reaclib", // 41, "S32_He4_to_Ar36_approx", // 42, "Ar36_to_S32_He4_approx", // 43, "Ar36_He4_to_Ca40_approx", // 44, @@ -399,7 +399,7 @@ namespace Rates "Ni56_to_Fe52_He4_approx", // 53, "C12_C12_to_Mg24_modified", // 54, "O16_O16_to_S32_modified", // 55, - "C12_O16_to_Si28_modified", // 56, + "O16_C12_to_Si28_modified", // 56, "N13_to_p_C12_derived", // 57, "O16_to_He4_C12_derived", // 58, "Ne20_to_He4_O16_derived", // 59, @@ -409,38 +409,38 @@ namespace Rates "Si28_to_He4_Mg24_derived", // 63, "S32_to_p_P31_derived", // 64, "S32_to_He4_Si28_derived", // 65, - "C12_to_He4_He4_He4_derived", // 66, - "p_O16_to_He4_N13_derived", // 67, - "He4_Ne20_to_p_Na23_derived", // 68, - "He4_Ne20_to_C12_C12_derived", // 69, - "p_Na23_to_C12_C12_derived", // 70, - "He4_Mg24_to_p_Al27_derived", // 71, - "He4_Mg24_to_C12_O16_derived", // 72, - "p_Al27_to_C12_O16_derived", // 73, - "He4_Si28_to_p_P31_derived", // 74, - "He4_Si28_to_O16_O16_derived", // 75, - "p_P31_to_O16_O16_derived", // 76, + "C12_to_3He4_derived", // 66, + "O16_p_to_He4_N13_derived", // 67, + "Ne20_He4_to_p_Na23_derived", // 68, + "Ne20_He4_to_C12_C12_derived", // 69, + "Na23_p_to_C12_C12_derived", // 70, + "Mg24_He4_to_p_Al27_derived", // 71, + "Mg24_He4_to_C12_O16_derived", // 72, + "Al27_p_to_C12_O16_derived", // 73, + "Si28_He4_to_p_P31_derived", // 74, + "Si28_He4_to_O16_O16_derived", // 75, + "P31_p_to_O16_O16_derived", // 76, "Mg24_to_C12_C12_derived", // 77, "S32_to_O16_O16_derived", // 78, "Si28_to_C12_O16_derived", // 79, - "He4_S32_to_p_Cl35_derived", // 80, + "S32_He4_to_p_Cl35_derived", // 80, "Ar36_to_He4_S32_derived", // 81, "Ar36_to_p_Cl35_derived", // 82, - "He4_Ar36_to_p_K39_derived", // 83, + "Ar36_He4_to_p_K39_derived", // 83, "Ca40_to_He4_Ar36_derived", // 84, "Ca40_to_p_K39_derived", // 85, - "He4_Ca40_to_p_Sc43_derived", // 86, + "Ca40_He4_to_p_Sc43_derived", // 86, "Ti44_to_He4_Ca40_derived", // 87, "Ti44_to_p_Sc43_derived", // 88, - "Cr48_to_He4_Ti44_derived", // 89, - "Cr48_to_p_V47_derived", // 90, - "p_V47_to_He4_Ti44_derived", // 91, - "Fe52_to_He4_Cr48_derived", // 92, - "Fe52_to_p_Mn51_derived", // 93, - "p_Mn51_to_He4_Cr48_derived", // 94, - "Ni56_to_He4_Fe52_derived", // 95, - "Ni56_to_p_Co55_derived", // 96, - "p_Co55_to_He4_Fe52_derived" // 97, + "V47_p_to_He4_Ti44_derived", // 89, + "Cr48_to_He4_Ti44_derived", // 90, + "Cr48_to_p_V47_derived", // 91, + "Mn51_p_to_He4_Cr48_derived", // 92, + "Fe52_to_He4_Cr48_derived", // 93, + "Fe52_to_p_Mn51_derived", // 94, + "Co55_p_to_He4_Fe52_derived", // 95, + "Ni56_to_He4_Fe52_derived", // 96, + "Ni56_to_p_Co55_derived" // 97, }; template @@ -473,20 +473,20 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 20; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, Ca40, He4, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_approx, k_Ti44_to_Ca40_He4_approx, diff --git a/networks/he-burn/ase/actual_rhs.H b/networks/he-burn/ase/actual_rhs.H index ebead3efd..94c3900c9 100644 --- a/networks/he-burn/ase/actual_rhs.H +++ b/networks/he-burn/ase/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -362,9 +359,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -376,7 +375,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -384,17 +385,21 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); - if (disable_p_C12_to_N13_reaclib) { - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = 0.0; + if (disable_C12_p_to_N13_reaclib) { + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = 0.0; + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = 0.0; } rate_eval.screened_rates(k_N13_to_p_C12_derived) = 0.0; if constexpr (std::is_same_v) { @@ -402,28 +407,20 @@ void evaluate_rates(const burn_t& state, } } - if (disable_He4_N13_to_p_O16_reaclib) { - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = 0.0; + if (disable_N13_He4_to_p_O16_reaclib) { + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = 0.0; + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = 0.0; } - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = 0.0; + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = 0.0; + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = 0.0; } } // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -475,6 +472,7 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); ydot_nuc(H1) = 0.0_rt; @@ -521,37 +519,37 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + - (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + @@ -560,71 +558,71 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_Fe52_He4_approx)*Y(Ni56)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + (-screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived)*Y(Mg24)) + - (-screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (-screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(N13) = - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + (-screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_S32_to_O16_O16_derived)*Y(S32)) + - (-screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (-screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Na23) = - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + (0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Mg24_to_C12_C12_derived)*Y(Mg24)); ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Si28_to_C12_O16_derived)*Y(Si28)); ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + - (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + (0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_S32_to_O16_O16_derived)*Y(S32)) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -705,42 +703,44 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -758,37 +758,37 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -812,31 +812,31 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni56_to_Fe52_He4_approx); jac.set(He4, Ni56, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho; jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); scratch = screened_rates(k_N13_to_p_C12_derived); jac.set(C12, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); - scratch = 2.0*screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho; + scratch = 2.0*screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho; jac.set(C12, Ne20, scratch); - scratch = 2.0*screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho; jac.set(C12, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived); + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho + 2.0*screened_rates(k_Mg24_to_C12_C12_derived); jac.set(C12, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho; jac.set(C12, Al27, scratch); scratch = screened_rates(k_Si28_to_C12_O16_derived); @@ -858,19 +858,19 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ni56, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, Ne20, 0.0); @@ -899,19 +899,19 @@ void jac_nuc(const burn_t& state, jac.set(N13, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived); jac.set(O16, O16, scratch); scratch = screened_rates(k_Ne20_to_He4_O16_derived); @@ -919,16 +919,16 @@ void jac_nuc(const burn_t& state, jac.set(O16, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho; jac.set(O16, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho; jac.set(O16, Al27, scratch); - scratch = 2.0*screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_C12_O16_derived); + scratch = 2.0*screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_C12_O16_derived); jac.set(O16, Si28, scratch); - scratch = 2.0*screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho; jac.set(O16, P31, scratch); scratch = 2.0*screened_rates(k_S32_to_O16_O16_derived); @@ -946,10 +946,10 @@ void jac_nuc(const burn_t& state, jac.set(O16, Ni56, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; jac.set(Ne20, H1, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -957,13 +957,13 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N13, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_C12_C12_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); jac.set(Ne20, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); @@ -989,10 +989,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Ni56, 0.0); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -1002,10 +1002,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, O16, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_C12_C12_derived)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_derived); @@ -1031,30 +1031,30 @@ void jac_nuc(const burn_t& state, jac.set(Na23, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_C12_C12_derived) - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_C12_C12_derived) - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -1076,28 +1076,28 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ni56, 0.0); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, Ne20, 0.0); jac.set(Al27, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_derived)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -1119,34 +1119,34 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, Ne20, 0.0); jac.set(Si28, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_C12_O16_derived) - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_O16_O16_derived)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_C12_O16_derived) - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -1164,10 +1164,10 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Ni56, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -1185,10 +1185,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_derived)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1206,10 +1206,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Ni56, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -1227,10 +1227,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_O16_O16_derived) - screened_rates(k_S32_to_p_P31_derived); diff --git a/networks/he-burn/ase/approximate_rates.H b/networks/he-burn/ase/approximate_rates.H index cb7a05d24..147172f47 100644 --- a/networks/he-burn/ase/approximate_rates.H +++ b/networks/he-burn/ase/approximate_rates.H @@ -8,348 +8,350 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; + } + + rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; + } + + rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; + } + + rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; + } - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; } - - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; - } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; - } - - rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; - } - - rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; - } - - rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; - } - - } - #endif diff --git a/networks/he-burn/ase/ase.py b/networks/he-burn/ase/ase.py index 7d892e88b..b79c45703 100644 --- a/networks/he-burn/ase/ase.py +++ b/networks/he-burn/ase/ase.py @@ -27,7 +27,8 @@ def get_library(): for r, mp in other_rates: _r = reaclib_lib.get_rate_by_name(r) - forward_rate = pyna.ModifiedRate(_r, new_products=[mp]) + forward_rate = pyna.ModifiedRate(_r, new_products=[mp], + description=f"{r}(n,γ){mp}") derived_rate = pyna.DerivedRate(forward_rate, use_pf=True) subch += pyna.Library(rates=[forward_rate, derived_rate]) diff --git a/networks/he-burn/ase/branched_rates.H b/networks/he-burn/ase/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/ase/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/ase/derived_rates.H b/networks/he-burn/ase/derived_rates.H index 0f37d61f6..22f6bf068 100644 --- a/networks/he-burn/ase/derived_rates.H +++ b/networks/he-burn/ase/derived_rates.H @@ -7,3690 +7,3692 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from st08r + ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - // ReacLib set derived from st08r - ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from st08r + ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // ReacLib set derived from st08r - ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> C12 + C12 - // Ne20 + He4 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 61.474151468919175 + -53.57824966896331 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.57824966896331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na23 + p --> C12 + C12 - // Na23 + p --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - p_log_pf - Na23_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dp_log_pf_dT9 - dNa23_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - p_log_pf - Na23_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dp_log_pf_dT9 - dNa23_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 60.92541574740554 + -26.004360836807496 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 60.92541574740554 + -26.004360836807496 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.004360836807496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.004360836807496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> C12 + O16 - // Mg24 + He4 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 49.57295819231048 + -78.2098115311048 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 78.2098115311048 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Al27 + p --> C12 + O16 - // Al27 + p --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - p_log_pf - Al27_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dAl27_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - p_log_pf - Al27_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dAl27_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 68.96430994536895 + -59.8005159928172 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 68.96430994536895 + -59.8005159928172 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.8005159928172 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.8005159928172 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> O16 + O16 - // Si28 + He4 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 97.78921572069022 + -111.60083385054465 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 97.78921572069022 + -111.60083385054465 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 111.60083385054465 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 111.60083385054465 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // P31 + p --> O16 + O16 - // P31 + p --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - p_log_pf - P31_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dP31_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - p_log_pf - P31_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dp_log_pf_dT9 - dP31_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 86.33118481035693 + -88.87103716814843 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 86.33118481035693 + -88.87103716814843 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.87103716814843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.87103716814843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_C12_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> C12 + C12 - // Mg24 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + C12_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + C12_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dC12_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 12.203060308868553 + -191.84225839903127 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 12.203060308868553 + -191.84225839903127 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 191.84225839903127 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 191.84225839903127 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_O16_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> O16 + O16 - // S32 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = O16_log_pf + O16_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = O16_log_pf + O16_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dO16_log_pf_dT9 + dO16_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = 102.9883182326601 + -192.3301592962798 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 9.12001 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = 102.9883182326601 + -192.3301592962798 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 9.12001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 192.3301592962798 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 9.12001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 192.3301592962798 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 9.12001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_C12_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> C12 + O16 - // Si28 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = C12_log_pf + O16_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = C12_log_pf + O16_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dC12_log_pf_dT9 + dO16_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88r + ln_set_rate = -106.3111878016318 + -195.9077167184711 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -176.78 * tfactors.lnT9; - // ReacLib set derived from cf88r - ln_set_rate = -106.3111878016318 + -195.9077167184711 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -176.78 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 195.9077167184711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -176.78 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 195.9077167184711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -176.78 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lo18r + ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0 + ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from chw0 - ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; + + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // V47 + p --> He4 + Ti44 + + rate = 0.0; + drate_dT = 0.0; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Evaluate partition function terms - // Cr48 --> He4 + Ti44 + amrex::Real p_log_pf, dp_log_pf_dT9; - rate = 0.0; - drate_dT = 0.0; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0r + ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cr48 --> He4 + Ti44 - // Cr48 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nfisn - ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } - // ReacLib set derived from nfisn - ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - ln_set_rate += net_log_pf + log_scor; + // Cr48 --> p + V47 - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // Evaluate partition function terms - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - // ReacLib set derived from nfisn - ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - ln_set_rate += net_log_pf + log_scor; + amrex::Real p_log_pf, dp_log_pf_dT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + amrex::Real V47_log_pf, dV47_log_pf_dT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // ReacLib set derived from nfisn - ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + // ReacLib set derived from nfisn + ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += net_log_pf + log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } - -} + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // V47 + p --> He4 + Ti44 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // ReacLib set derived from nfisn + ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - // Evaluate partition function terms + ln_set_rate += net_log_pf + log_scor; - amrex::Real p_log_pf, dp_log_pf_dT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // ReacLib set derived from nfisn + ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; + // ReacLib set derived from nfisn + ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from chw0r - ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Mn51 + p --> He4 + Cr48 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Fe52 --> He4 + Cr48 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> He4 + Cr48 + // Fe52 --> p + Mn51 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Co55 + p --> He4 + Fe52 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Ni56 --> He4 + Fe52 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Co55 + p --> He4 + Fe52 + // Ni56 --> p + Co55 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - part_fun::pf_cache_t pf_cache{}; + part_fun::pf_cache_t pf_cache{}; - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - { - // N13_to_p_C12_derived + { + // N13_to_p_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_C12_C12_derived + { + // Ne20_He4_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_derived) = drate_dT; + rate_Ne20_He4_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_C12_C12_derived) = drate_dT; + } } - } - { - // p_Na23_to_C12_C12_derived + { + // Na23_p_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Na23_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_derived) = drate_dT; + rate_Na23_p_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na23_p_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_C12_C12_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_C12_O16_derived + { + // Mg24_He4_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_derived) = drate_dT; + rate_Mg24_He4_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_C12_O16_derived) = drate_dT; + } } - } - { - // p_Al27_to_C12_O16_derived + { + // Al27_p_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Al27_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_derived) = drate_dT; + rate_Al27_p_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Al27_p_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_C12_O16_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // He4_Si28_to_O16_O16_derived + { + // Si28_He4_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_derived) = drate_dT; + rate_Si28_He4_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_O16_O16_derived) = drate_dT; + } } - } - { - // p_P31_to_O16_O16_derived + { + // P31_p_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_P31_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_derived) = drate_dT; + rate_P31_p_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_P31_p_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_O16_O16_derived) = drate_dT; + } } - } - { - // Mg24_to_C12_C12_derived + { + // Mg24_to_C12_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_C12_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_C12_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_C12_C12_derived) = drate_dT; + } } - } - { - // S32_to_O16_O16_derived + { + // S32_to_O16_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_O16_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_O16_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_O16_O16_derived) = drate_dT; + } } - } - { - // Si28_to_C12_O16_derived + { + // Si28_to_C12_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_C12_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_C12_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_C12_O16_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // V47_p_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_V47_p_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } + + { + // Mn51_p_to_He4_Cr48_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; + rate_Mn51_p_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_derived + { + // Fe52_to_p_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } -#endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; - } } - } #endif diff --git a/networks/he-burn/ase/modified_rates.H b/networks/he-burn/ase/modified_rates.H index e63de5077..629772bb7 100644 --- a/networks/he-burn/ase/modified_rates.H +++ b/networks/he-burn/ase/modified_rates.H @@ -12,6 +12,9 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +22,7 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) + // represents the sequence: c12(c12,n)mg23(n,γ)mg24 rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -28,22 +32,24 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) + // represents the sequence: o16(o16,n)s31(n,γ)s32 rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) + // represents the sequence: o16(c12,n)si27(n,γ)si28 - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -89,7 +95,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -99,10 +105,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } diff --git a/networks/he-burn/ase/pynucastro-info.txt b/networks/he-burn/ase/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/he-burn/ase/pynucastro-info.txt +++ b/networks/he-burn/ase/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/ase/reaclib_rates.H b/networks/he-burn/ase/reaclib_rates.H index 3a36f7af9..045e9f0e7 100644 --- a/networks/he-burn/ase/reaclib_rates.H +++ b/networks/he-burn/ase/reaclib_rates.H @@ -8,2928 +8,2931 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + p --> N13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + p --> N13 - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - ln_set_rate += log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> n + S31 - // O16 + O16 --> n + S31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> n + Si27 - // O16 + C12 --> n + Si27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - ln_set_rate += log_scor; + // K39 + p --> Ca40 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; -} + ln_set_rate += log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - // K39 + p --> He4 + Ar36 + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p + Mn51 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> Fe52 - // Mn51 + p --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + { + // C12_p_to_N13_reaclib - { - // p_C12_to_N13_reaclib - - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_n_S31_reaclib + { + // O16_O16_to_n_S31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_n_Si27_reaclib + { + // O16_C12_to_n_Si27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_Mn51_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_Fe52_reaclib + { + // Mn51_p_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/he-burn/ase/tabular_weak_rates.H b/networks/he-burn/ase/tabular_weak_rates.H new file mode 100644 index 000000000..797530335 --- /dev/null +++ b/networks/he-burn/ase/tabular_weak_rates.H @@ -0,0 +1,33 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + } + +} +#endif diff --git a/networks/he-burn/ase/temperature_table_rates.H b/networks/he-burn/ase/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/he-burn/ase/temperature_table_rates.H +++ b/networks/he-burn/ase/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/cno-he-burn-33a/Make.package b/networks/he-burn/cno-he-burn-33a/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/cno-he-burn-33a/Make.package +++ b/networks/he-burn/cno-he-burn-33a/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/cno-he-burn-33a/actual_network.H b/networks/he-burn/cno-he-burn-33a/actual_network.H index 57fc83fba..8fa37bf50 100644 --- a/networks/he-burn/cno-he-burn-33a/actual_network.H +++ b/networks/he-burn/cno-he-burn-33a/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -294,88 +294,88 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_N13_to_C13_reaclib = 1, - k_O14_to_N14_reaclib = 2, - k_O15_to_N15_reaclib = 3, - k_p_C12_to_N13_reaclib = 4, - k_He4_C12_to_O16_reaclib = 5, - k_p_C13_to_N14_reaclib = 6, - k_p_N13_to_O14_reaclib = 7, - k_p_N14_to_O15_reaclib = 8, - k_He4_N14_to_F18_reaclib = 9, - k_p_N15_to_O16_reaclib = 10, - k_He4_N15_to_F19_reaclib = 11, - k_He4_O14_to_Ne18_reaclib = 12, - k_He4_O15_to_Ne19_reaclib = 13, - k_p_O16_to_F17_reaclib = 14, - k_He4_O16_to_Ne20_reaclib = 15, - k_p_O17_to_F18_reaclib = 16, - k_He4_O17_to_Ne21_reaclib = 17, - k_p_O18_to_F19_reaclib = 18, - k_p_F17_to_Ne18_reaclib = 19, - k_p_F18_to_Ne19_reaclib = 20, - k_He4_F18_to_Na22_reaclib = 21, - k_p_F19_to_Ne20_reaclib = 22, - k_He4_F19_to_Na23_reaclib = 23, - k_He4_Ne18_to_Mg22_reaclib = 24, - k_He4_Ne20_to_Mg24_reaclib = 25, - k_p_Ne21_to_Na22_reaclib = 26, - k_p_Na23_to_Mg24_reaclib = 27, - k_He4_Mg24_to_Si28_reaclib = 28, - k_p_Al27_to_Si28_reaclib = 29, - k_He4_Si28_to_S32_reaclib = 30, - k_p_P31_to_S32_reaclib = 31, + k_N13_to_C13_beta_pos_reaclib = 1, + k_O14_to_N14_beta_pos_reaclib = 2, + k_O15_to_N15_beta_pos_reaclib = 3, + k_C12_p_to_N13_reaclib = 4, + k_C12_He4_to_O16_reaclib = 5, + k_C13_p_to_N14_reaclib = 6, + k_N13_p_to_O14_reaclib = 7, + k_N14_p_to_O15_reaclib = 8, + k_N14_He4_to_F18_reaclib = 9, + k_N15_p_to_O16_reaclib = 10, + k_N15_He4_to_F19_reaclib = 11, + k_O14_He4_to_Ne18_reaclib = 12, + k_O15_He4_to_Ne19_reaclib = 13, + k_O16_p_to_F17_reaclib = 14, + k_O16_He4_to_Ne20_reaclib = 15, + k_O17_p_to_F18_reaclib = 16, + k_O17_He4_to_Ne21_reaclib = 17, + k_O18_p_to_F19_reaclib = 18, + k_F17_p_to_Ne18_reaclib = 19, + k_F18_p_to_Ne19_reaclib = 20, + k_F18_He4_to_Na22_reaclib = 21, + k_F19_p_to_Ne20_reaclib = 22, + k_F19_He4_to_Na23_reaclib = 23, + k_Ne18_He4_to_Mg22_reaclib = 24, + k_Ne20_He4_to_Mg24_reaclib = 25, + k_Ne21_p_to_Na22_reaclib = 26, + k_Na23_p_to_Mg24_reaclib = 27, + k_Mg24_He4_to_Si28_reaclib = 28, + k_Al27_p_to_Si28_reaclib = 29, + k_Si28_He4_to_S32_reaclib = 30, + k_P31_p_to_S32_reaclib = 31, k_C12_C12_to_p_Na23_reaclib = 32, k_C12_C12_to_He4_Ne20_reaclib = 33, - k_He4_N13_to_p_O16_reaclib = 34, - k_p_N15_to_He4_C12_reaclib = 35, - k_He4_O14_to_p_F17_reaclib = 36, - k_C12_O16_to_p_Al27_reaclib = 37, - k_C12_O16_to_He4_Mg24_reaclib = 38, + k_N13_He4_to_p_O16_reaclib = 34, + k_N15_p_to_He4_C12_reaclib = 35, + k_O14_He4_to_p_F17_reaclib = 36, + k_O16_C12_to_p_Al27_reaclib = 37, + k_O16_C12_to_He4_Mg24_reaclib = 38, k_O16_O16_to_p_P31_reaclib = 39, k_O16_O16_to_He4_Si28_reaclib = 40, - k_p_O17_to_He4_N14_reaclib = 41, - k_p_O18_to_He4_N15_reaclib = 42, - k_p_F18_to_He4_O15_reaclib = 43, - k_He4_F18_to_p_Ne21_reaclib = 44, - k_p_F19_to_He4_O16_reaclib = 45, - k_He4_Ne19_to_p_Na22_reaclib = 46, - k_p_Ne20_to_He4_F17_reaclib = 47, - k_p_Na23_to_He4_Ne20_reaclib = 48, - k_p_Al27_to_He4_Mg24_reaclib = 49, - k_p_P31_to_He4_Si28_reaclib = 50, + k_O17_p_to_He4_N14_reaclib = 41, + k_O18_p_to_He4_N15_reaclib = 42, + k_F18_p_to_He4_O15_reaclib = 43, + k_F18_He4_to_p_Ne21_reaclib = 44, + k_F19_p_to_He4_O16_reaclib = 45, + k_Ne19_He4_to_p_Na22_reaclib = 46, + k_Ne20_p_to_He4_F17_reaclib = 47, + k_Na23_p_to_He4_Ne20_reaclib = 48, + k_Al27_p_to_He4_Mg24_reaclib = 49, + k_P31_p_to_He4_Si28_reaclib = 50, k_He4_He4_He4_to_C12_reaclib = 51, k_C12_C12_to_n_Mg23_reaclib = 52, k_O16_O16_to_n_S31_reaclib = 53, - k_C12_O16_to_n_Si27_reaclib = 54, - k_He4_S32_to_Ar36_reaclib = 55, - k_p_Cl35_to_Ar36_reaclib = 56, - k_p_Cl35_to_He4_S32_reaclib = 57, - k_He4_Ar36_to_Ca40_reaclib = 58, - k_p_K39_to_Ca40_reaclib = 59, - k_p_K39_to_He4_Ar36_reaclib = 60, - k_He4_Ca40_to_Ti44_reaclib = 61, - k_p_Sc43_to_Ti44_reaclib = 62, - k_p_Sc43_to_He4_Ca40_reaclib = 63, - k_He4_Ti44_to_Cr48_reaclib = 64, - k_He4_Ti44_to_p_V47_reaclib = 65, - k_p_V47_to_Cr48_reaclib = 66, - k_He4_Cr48_to_Fe52_reaclib = 67, - k_He4_Cr48_to_p_Mn51_reaclib = 68, - k_p_Mn51_to_Fe52_reaclib = 69, - k_He4_Fe52_to_Ni56_reaclib = 70, - k_He4_Fe52_to_p_Co55_reaclib = 71, - k_p_Co55_to_Ni56_reaclib = 72, - k_F17_to_O17_weaktab = 73, - k_O17_to_F17_weaktab = 74, - k_F18_to_Ne18_weaktab = 75, - k_F18_to_O18_weaktab = 76, - k_Ne18_to_F18_weaktab = 77, - k_O18_to_F18_weaktab = 78, - k_F19_to_Ne19_weaktab = 79, - k_Ne19_to_F19_weaktab = 80, - k_Mg22_to_Na22_weaktab = 81, - k_Na22_to_Mg22_weaktab = 82, + k_O16_C12_to_n_Si27_reaclib = 54, + k_S32_He4_to_Ar36_reaclib = 55, + k_Cl35_p_to_He4_S32_reaclib = 56, + k_Cl35_p_to_Ar36_reaclib = 57, + k_Ar36_He4_to_Ca40_reaclib = 58, + k_K39_p_to_He4_Ar36_reaclib = 59, + k_K39_p_to_Ca40_reaclib = 60, + k_Ca40_He4_to_Ti44_reaclib = 61, + k_Sc43_p_to_He4_Ca40_reaclib = 62, + k_Sc43_p_to_Ti44_reaclib = 63, + k_Ti44_He4_to_p_V47_reaclib = 64, + k_Ti44_He4_to_Cr48_reaclib = 65, + k_V47_p_to_Cr48_reaclib = 66, + k_Cr48_He4_to_p_Mn51_reaclib = 67, + k_Cr48_He4_to_Fe52_reaclib = 68, + k_Mn51_p_to_Fe52_reaclib = 69, + k_Fe52_He4_to_p_Co55_reaclib = 70, + k_Fe52_He4_to_Ni56_reaclib = 71, + k_Co55_p_to_Ni56_reaclib = 72, + k_F17_to_O17_electron_capture_weaktab = 73, + k_O17_to_F17_beta_neg_weaktab = 74, + k_F18_to_Ne18_beta_neg_weaktab = 75, + k_F18_to_O18_electron_capture_weaktab = 76, + k_Ne18_to_F18_electron_capture_weaktab = 77, + k_O18_to_F18_beta_neg_weaktab = 78, + k_F19_to_Ne19_beta_neg_weaktab = 79, + k_Ne19_to_F19_electron_capture_weaktab = 80, + k_Mg22_to_Na22_electron_capture_weaktab = 81, + k_Na22_to_Mg22_beta_neg_weaktab = 82, k_S32_He4_to_Ar36_approx = 83, k_Ar36_to_S32_He4_approx = 84, k_Ar36_He4_to_Ca40_approx = 85, @@ -390,7 +390,7 @@ namespace Rates k_Ni56_to_Fe52_He4_approx = 94, k_C12_C12_to_Mg24_modified = 95, k_O16_O16_to_S32_modified = 96, - k_C12_O16_to_Si28_modified = 97, + k_O16_C12_to_Si28_modified = 97, k_N13_to_p_C12_derived = 98, k_N14_to_p_C13_derived = 99, k_O14_to_p_N13_derived = 100, @@ -419,39 +419,39 @@ namespace Rates k_Si28_to_He4_Mg24_derived = 123, k_S32_to_p_P31_derived = 124, k_S32_to_He4_Si28_derived = 125, - k_C12_to_He4_He4_He4_derived = 126, - k_He4_C12_to_p_N15_derived = 127, - k_He4_N14_to_p_O17_derived = 128, - k_He4_N15_to_p_O18_derived = 129, - k_He4_O15_to_p_F18_derived = 130, - k_p_O16_to_He4_N13_derived = 131, - k_He4_O16_to_p_F19_derived = 132, - k_p_F17_to_He4_O14_derived = 133, - k_He4_F17_to_p_Ne20_derived = 134, - k_He4_Ne20_to_p_Na23_derived = 135, - k_p_Ne21_to_He4_F18_derived = 136, - k_p_Na22_to_He4_Ne19_derived = 137, - k_He4_Mg24_to_p_Al27_derived = 138, - k_He4_Si28_to_p_P31_derived = 139, - k_He4_S32_to_p_Cl35_derived = 140, + k_C12_to_3He4_derived = 126, + k_C12_He4_to_p_N15_derived = 127, + k_N14_He4_to_p_O17_derived = 128, + k_N15_He4_to_p_O18_derived = 129, + k_O15_He4_to_p_F18_derived = 130, + k_O16_p_to_He4_N13_derived = 131, + k_O16_He4_to_p_F19_derived = 132, + k_F17_p_to_He4_O14_derived = 133, + k_F17_He4_to_p_Ne20_derived = 134, + k_Ne20_He4_to_p_Na23_derived = 135, + k_Ne21_p_to_He4_F18_derived = 136, + k_Na22_p_to_He4_Ne19_derived = 137, + k_Mg24_He4_to_p_Al27_derived = 138, + k_Si28_He4_to_p_P31_derived = 139, + k_S32_He4_to_p_Cl35_derived = 140, k_Ar36_to_He4_S32_derived = 141, k_Ar36_to_p_Cl35_derived = 142, - k_He4_Ar36_to_p_K39_derived = 143, + k_Ar36_He4_to_p_K39_derived = 143, k_Ca40_to_He4_Ar36_derived = 144, k_Ca40_to_p_K39_derived = 145, - k_He4_Ca40_to_p_Sc43_derived = 146, + k_Ca40_He4_to_p_Sc43_derived = 146, k_Ti44_to_He4_Ca40_derived = 147, k_Ti44_to_p_Sc43_derived = 148, - k_Cr48_to_He4_Ti44_derived = 149, - k_Cr48_to_p_V47_derived = 150, - k_p_V47_to_He4_Ti44_derived = 151, - k_Fe52_to_He4_Cr48_derived = 152, - k_Fe52_to_p_Mn51_derived = 153, - k_p_Mn51_to_He4_Cr48_derived = 154, - k_Ni56_to_He4_Fe52_derived = 155, - k_Ni56_to_p_Co55_derived = 156, - k_p_Co55_to_He4_Fe52_derived = 157, - NumRates = k_p_Co55_to_He4_Fe52_derived + k_V47_p_to_He4_Ti44_derived = 149, + k_Cr48_to_He4_Ti44_derived = 150, + k_Cr48_to_p_V47_derived = 151, + k_Mn51_p_to_He4_Cr48_derived = 152, + k_Fe52_to_He4_Cr48_derived = 153, + k_Fe52_to_p_Mn51_derived = 154, + k_Co55_p_to_He4_Fe52_derived = 155, + k_Ni56_to_He4_Fe52_derived = 156, + k_Ni56_to_p_Co55_derived = 157, + NumRates = k_Ni56_to_p_Co55_derived }; enum ScreenPairs : @@ -516,88 +516,88 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "N13_to_C13_reaclib", // 1, - "O14_to_N14_reaclib", // 2, - "O15_to_N15_reaclib", // 3, - "p_C12_to_N13_reaclib", // 4, - "He4_C12_to_O16_reaclib", // 5, - "p_C13_to_N14_reaclib", // 6, - "p_N13_to_O14_reaclib", // 7, - "p_N14_to_O15_reaclib", // 8, - "He4_N14_to_F18_reaclib", // 9, - "p_N15_to_O16_reaclib", // 10, - "He4_N15_to_F19_reaclib", // 11, - "He4_O14_to_Ne18_reaclib", // 12, - "He4_O15_to_Ne19_reaclib", // 13, - "p_O16_to_F17_reaclib", // 14, - "He4_O16_to_Ne20_reaclib", // 15, - "p_O17_to_F18_reaclib", // 16, - "He4_O17_to_Ne21_reaclib", // 17, - "p_O18_to_F19_reaclib", // 18, - "p_F17_to_Ne18_reaclib", // 19, - "p_F18_to_Ne19_reaclib", // 20, - "He4_F18_to_Na22_reaclib", // 21, - "p_F19_to_Ne20_reaclib", // 22, - "He4_F19_to_Na23_reaclib", // 23, - "He4_Ne18_to_Mg22_reaclib", // 24, - "He4_Ne20_to_Mg24_reaclib", // 25, - "p_Ne21_to_Na22_reaclib", // 26, - "p_Na23_to_Mg24_reaclib", // 27, - "He4_Mg24_to_Si28_reaclib", // 28, - "p_Al27_to_Si28_reaclib", // 29, - "He4_Si28_to_S32_reaclib", // 30, - "p_P31_to_S32_reaclib", // 31, + "N13_to_C13_beta_pos_reaclib", // 1, + "O14_to_N14_beta_pos_reaclib", // 2, + "O15_to_N15_beta_pos_reaclib", // 3, + "C12_p_to_N13_reaclib", // 4, + "C12_He4_to_O16_reaclib", // 5, + "C13_p_to_N14_reaclib", // 6, + "N13_p_to_O14_reaclib", // 7, + "N14_p_to_O15_reaclib", // 8, + "N14_He4_to_F18_reaclib", // 9, + "N15_p_to_O16_reaclib", // 10, + "N15_He4_to_F19_reaclib", // 11, + "O14_He4_to_Ne18_reaclib", // 12, + "O15_He4_to_Ne19_reaclib", // 13, + "O16_p_to_F17_reaclib", // 14, + "O16_He4_to_Ne20_reaclib", // 15, + "O17_p_to_F18_reaclib", // 16, + "O17_He4_to_Ne21_reaclib", // 17, + "O18_p_to_F19_reaclib", // 18, + "F17_p_to_Ne18_reaclib", // 19, + "F18_p_to_Ne19_reaclib", // 20, + "F18_He4_to_Na22_reaclib", // 21, + "F19_p_to_Ne20_reaclib", // 22, + "F19_He4_to_Na23_reaclib", // 23, + "Ne18_He4_to_Mg22_reaclib", // 24, + "Ne20_He4_to_Mg24_reaclib", // 25, + "Ne21_p_to_Na22_reaclib", // 26, + "Na23_p_to_Mg24_reaclib", // 27, + "Mg24_He4_to_Si28_reaclib", // 28, + "Al27_p_to_Si28_reaclib", // 29, + "Si28_He4_to_S32_reaclib", // 30, + "P31_p_to_S32_reaclib", // 31, "C12_C12_to_p_Na23_reaclib", // 32, "C12_C12_to_He4_Ne20_reaclib", // 33, - "He4_N13_to_p_O16_reaclib", // 34, - "p_N15_to_He4_C12_reaclib", // 35, - "He4_O14_to_p_F17_reaclib", // 36, - "C12_O16_to_p_Al27_reaclib", // 37, - "C12_O16_to_He4_Mg24_reaclib", // 38, + "N13_He4_to_p_O16_reaclib", // 34, + "N15_p_to_He4_C12_reaclib", // 35, + "O14_He4_to_p_F17_reaclib", // 36, + "O16_C12_to_p_Al27_reaclib", // 37, + "O16_C12_to_He4_Mg24_reaclib", // 38, "O16_O16_to_p_P31_reaclib", // 39, "O16_O16_to_He4_Si28_reaclib", // 40, - "p_O17_to_He4_N14_reaclib", // 41, - "p_O18_to_He4_N15_reaclib", // 42, - "p_F18_to_He4_O15_reaclib", // 43, - "He4_F18_to_p_Ne21_reaclib", // 44, - "p_F19_to_He4_O16_reaclib", // 45, - "He4_Ne19_to_p_Na22_reaclib", // 46, - "p_Ne20_to_He4_F17_reaclib", // 47, - "p_Na23_to_He4_Ne20_reaclib", // 48, - "p_Al27_to_He4_Mg24_reaclib", // 49, - "p_P31_to_He4_Si28_reaclib", // 50, + "O17_p_to_He4_N14_reaclib", // 41, + "O18_p_to_He4_N15_reaclib", // 42, + "F18_p_to_He4_O15_reaclib", // 43, + "F18_He4_to_p_Ne21_reaclib", // 44, + "F19_p_to_He4_O16_reaclib", // 45, + "Ne19_He4_to_p_Na22_reaclib", // 46, + "Ne20_p_to_He4_F17_reaclib", // 47, + "Na23_p_to_He4_Ne20_reaclib", // 48, + "Al27_p_to_He4_Mg24_reaclib", // 49, + "P31_p_to_He4_Si28_reaclib", // 50, "He4_He4_He4_to_C12_reaclib", // 51, "C12_C12_to_n_Mg23_reaclib", // 52, "O16_O16_to_n_S31_reaclib", // 53, - "C12_O16_to_n_Si27_reaclib", // 54, - "He4_S32_to_Ar36_reaclib", // 55, - "p_Cl35_to_Ar36_reaclib", // 56, - "p_Cl35_to_He4_S32_reaclib", // 57, - "He4_Ar36_to_Ca40_reaclib", // 58, - "p_K39_to_Ca40_reaclib", // 59, - "p_K39_to_He4_Ar36_reaclib", // 60, - "He4_Ca40_to_Ti44_reaclib", // 61, - "p_Sc43_to_Ti44_reaclib", // 62, - "p_Sc43_to_He4_Ca40_reaclib", // 63, - "He4_Ti44_to_Cr48_reaclib", // 64, - "He4_Ti44_to_p_V47_reaclib", // 65, - "p_V47_to_Cr48_reaclib", // 66, - "He4_Cr48_to_Fe52_reaclib", // 67, - "He4_Cr48_to_p_Mn51_reaclib", // 68, - "p_Mn51_to_Fe52_reaclib", // 69, - "He4_Fe52_to_Ni56_reaclib", // 70, - "He4_Fe52_to_p_Co55_reaclib", // 71, - "p_Co55_to_Ni56_reaclib", // 72, - "F17_to_O17_weaktab", // 73, - "O17_to_F17_weaktab", // 74, - "F18_to_Ne18_weaktab", // 75, - "F18_to_O18_weaktab", // 76, - "Ne18_to_F18_weaktab", // 77, - "O18_to_F18_weaktab", // 78, - "F19_to_Ne19_weaktab", // 79, - "Ne19_to_F19_weaktab", // 80, - "Mg22_to_Na22_weaktab", // 81, - "Na22_to_Mg22_weaktab", // 82, + "O16_C12_to_n_Si27_reaclib", // 54, + "S32_He4_to_Ar36_reaclib", // 55, + "Cl35_p_to_He4_S32_reaclib", // 56, + "Cl35_p_to_Ar36_reaclib", // 57, + "Ar36_He4_to_Ca40_reaclib", // 58, + "K39_p_to_He4_Ar36_reaclib", // 59, + "K39_p_to_Ca40_reaclib", // 60, + "Ca40_He4_to_Ti44_reaclib", // 61, + "Sc43_p_to_He4_Ca40_reaclib", // 62, + "Sc43_p_to_Ti44_reaclib", // 63, + "Ti44_He4_to_p_V47_reaclib", // 64, + "Ti44_He4_to_Cr48_reaclib", // 65, + "V47_p_to_Cr48_reaclib", // 66, + "Cr48_He4_to_p_Mn51_reaclib", // 67, + "Cr48_He4_to_Fe52_reaclib", // 68, + "Mn51_p_to_Fe52_reaclib", // 69, + "Fe52_He4_to_p_Co55_reaclib", // 70, + "Fe52_He4_to_Ni56_reaclib", // 71, + "Co55_p_to_Ni56_reaclib", // 72, + "F17_to_O17_electron_capture_weaktab", // 73, + "O17_to_F17_beta_neg_weaktab", // 74, + "F18_to_Ne18_beta_neg_weaktab", // 75, + "F18_to_O18_electron_capture_weaktab", // 76, + "Ne18_to_F18_electron_capture_weaktab", // 77, + "O18_to_F18_beta_neg_weaktab", // 78, + "F19_to_Ne19_beta_neg_weaktab", // 79, + "Ne19_to_F19_electron_capture_weaktab", // 80, + "Mg22_to_Na22_electron_capture_weaktab", // 81, + "Na22_to_Mg22_beta_neg_weaktab", // 82, "S32_He4_to_Ar36_approx", // 83, "Ar36_to_S32_He4_approx", // 84, "Ar36_He4_to_Ca40_approx", // 85, @@ -612,7 +612,7 @@ namespace Rates "Ni56_to_Fe52_He4_approx", // 94, "C12_C12_to_Mg24_modified", // 95, "O16_O16_to_S32_modified", // 96, - "C12_O16_to_Si28_modified", // 97, + "O16_C12_to_Si28_modified", // 97, "N13_to_p_C12_derived", // 98, "N14_to_p_C13_derived", // 99, "O14_to_p_N13_derived", // 100, @@ -641,38 +641,38 @@ namespace Rates "Si28_to_He4_Mg24_derived", // 123, "S32_to_p_P31_derived", // 124, "S32_to_He4_Si28_derived", // 125, - "C12_to_He4_He4_He4_derived", // 126, - "He4_C12_to_p_N15_derived", // 127, - "He4_N14_to_p_O17_derived", // 128, - "He4_N15_to_p_O18_derived", // 129, - "He4_O15_to_p_F18_derived", // 130, - "p_O16_to_He4_N13_derived", // 131, - "He4_O16_to_p_F19_derived", // 132, - "p_F17_to_He4_O14_derived", // 133, - "He4_F17_to_p_Ne20_derived", // 134, - "He4_Ne20_to_p_Na23_derived", // 135, - "p_Ne21_to_He4_F18_derived", // 136, - "p_Na22_to_He4_Ne19_derived", // 137, - "He4_Mg24_to_p_Al27_derived", // 138, - "He4_Si28_to_p_P31_derived", // 139, - "He4_S32_to_p_Cl35_derived", // 140, + "C12_to_3He4_derived", // 126, + "C12_He4_to_p_N15_derived", // 127, + "N14_He4_to_p_O17_derived", // 128, + "N15_He4_to_p_O18_derived", // 129, + "O15_He4_to_p_F18_derived", // 130, + "O16_p_to_He4_N13_derived", // 131, + "O16_He4_to_p_F19_derived", // 132, + "F17_p_to_He4_O14_derived", // 133, + "F17_He4_to_p_Ne20_derived", // 134, + "Ne20_He4_to_p_Na23_derived", // 135, + "Ne21_p_to_He4_F18_derived", // 136, + "Na22_p_to_He4_Ne19_derived", // 137, + "Mg24_He4_to_p_Al27_derived", // 138, + "Si28_He4_to_p_P31_derived", // 139, + "S32_He4_to_p_Cl35_derived", // 140, "Ar36_to_He4_S32_derived", // 141, "Ar36_to_p_Cl35_derived", // 142, - "He4_Ar36_to_p_K39_derived", // 143, + "Ar36_He4_to_p_K39_derived", // 143, "Ca40_to_He4_Ar36_derived", // 144, "Ca40_to_p_K39_derived", // 145, - "He4_Ca40_to_p_Sc43_derived", // 146, + "Ca40_He4_to_p_Sc43_derived", // 146, "Ti44_to_He4_Ca40_derived", // 147, "Ti44_to_p_Sc43_derived", // 148, - "Cr48_to_He4_Ti44_derived", // 149, - "Cr48_to_p_V47_derived", // 150, - "p_V47_to_He4_Ti44_derived", // 151, - "Fe52_to_He4_Cr48_derived", // 152, - "Fe52_to_p_Mn51_derived", // 153, - "p_Mn51_to_He4_Cr48_derived", // 154, - "Ni56_to_He4_Fe52_derived", // 155, - "Ni56_to_p_Co55_derived", // 156, - "p_Co55_to_He4_Fe52_derived" // 157, + "V47_p_to_He4_Ti44_derived", // 149, + "Cr48_to_He4_Ti44_derived", // 150, + "Cr48_to_p_V47_derived", // 151, + "Mn51_p_to_He4_Cr48_derived", // 152, + "Fe52_to_He4_Cr48_derived", // 153, + "Fe52_to_p_Mn51_derived", // 154, + "Co55_p_to_He4_Fe52_derived", // 155, + "Ni56_to_He4_Fe52_derived", // 156, + "Ni56_to_p_Co55_derived" // 157, }; template @@ -705,48 +705,48 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 48; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - H1, C13, -1, N14, -1, -1, C13, N14, k_p_C13_to_N14_reaclib, k_N14_to_p_C13_derived, - H1, N13, -1, O14, -1, -1, N13, O14, k_p_N13_to_O14_reaclib, k_O14_to_p_N13_derived, - H1, N14, -1, O15, -1, -1, N14, O15, k_p_N14_to_O15_reaclib, k_O15_to_p_N14_derived, - He4, N14, -1, F18, -1, -1, N14, F18, k_He4_N14_to_F18_reaclib, k_F18_to_He4_N14_derived, - H1, N15, -1, O16, -1, -1, N15, O16, k_p_N15_to_O16_reaclib, k_O16_to_p_N15_derived, - He4, N15, -1, F19, -1, -1, N15, F19, k_He4_N15_to_F19_reaclib, k_F19_to_He4_N15_derived, - He4, O14, -1, Ne18, -1, -1, O14, Ne18, k_He4_O14_to_Ne18_reaclib, k_Ne18_to_He4_O14_derived, - He4, O15, -1, Ne19, -1, -1, O15, Ne19, k_He4_O15_to_Ne19_reaclib, k_Ne19_to_He4_O15_derived, - H1, O16, -1, F17, -1, -1, O16, F17, k_p_O16_to_F17_reaclib, k_F17_to_p_O16_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - H1, O17, -1, F18, -1, -1, O17, F18, k_p_O17_to_F18_reaclib, k_F18_to_p_O17_derived, - He4, O17, -1, Ne21, -1, -1, O17, Ne21, k_He4_O17_to_Ne21_reaclib, k_Ne21_to_He4_O17_derived, - H1, O18, -1, F19, -1, -1, O18, F19, k_p_O18_to_F19_reaclib, k_F19_to_p_O18_derived, - H1, F17, -1, Ne18, -1, -1, F17, Ne18, k_p_F17_to_Ne18_reaclib, k_Ne18_to_p_F17_derived, - H1, F18, -1, Ne19, -1, -1, F18, Ne19, k_p_F18_to_Ne19_reaclib, k_Ne19_to_p_F18_derived, - He4, F18, -1, Na22, -1, -1, F18, Na22, k_He4_F18_to_Na22_reaclib, k_Na22_to_He4_F18_derived, - H1, F19, -1, Ne20, -1, -1, F19, Ne20, k_p_F19_to_Ne20_reaclib, k_Ne20_to_p_F19_derived, - He4, F19, -1, Na23, -1, -1, F19, Na23, k_He4_F19_to_Na23_reaclib, k_Na23_to_He4_F19_derived, - He4, Ne18, -1, Mg22, -1, -1, Ne18, Mg22, k_He4_Ne18_to_Mg22_reaclib, k_Mg22_to_He4_Ne18_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - H1, Ne21, -1, Na22, -1, -1, Ne21, Na22, k_p_Ne21_to_Na22_reaclib, k_Na22_to_p_Ne21_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, N15, -1, He4, C12, -1, N15, C12, k_p_N15_to_He4_C12_reaclib, k_He4_C12_to_p_N15_derived, - He4, O14, -1, H1, F17, -1, O14, F17, k_He4_O14_to_p_F17_reaclib, k_p_F17_to_He4_O14_derived, - H1, O17, -1, He4, N14, -1, O17, N14, k_p_O17_to_He4_N14_reaclib, k_He4_N14_to_p_O17_derived, - H1, O18, -1, He4, N15, -1, O18, N15, k_p_O18_to_He4_N15_reaclib, k_He4_N15_to_p_O18_derived, - H1, F18, -1, He4, O15, -1, F18, O15, k_p_F18_to_He4_O15_reaclib, k_He4_O15_to_p_F18_derived, - He4, F18, -1, H1, Ne21, -1, F18, Ne21, k_He4_F18_to_p_Ne21_reaclib, k_p_Ne21_to_He4_F18_derived, - H1, F19, -1, He4, O16, -1, F19, O16, k_p_F19_to_He4_O16_reaclib, k_He4_O16_to_p_F19_derived, - He4, Ne19, -1, H1, Na22, -1, Ne19, Na22, k_He4_Ne19_to_p_Na22_reaclib, k_p_Na22_to_He4_Ne19_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, - He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_He4_F17_to_p_Ne20_derived, k_p_Ne20_to_He4_F17_reaclib, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + H1, C13, -1, N14, -1, -1, C13, N14, k_C13_p_to_N14_reaclib, k_N14_to_p_C13_derived, + H1, N13, -1, O14, -1, -1, N13, O14, k_N13_p_to_O14_reaclib, k_O14_to_p_N13_derived, + H1, N14, -1, O15, -1, -1, N14, O15, k_N14_p_to_O15_reaclib, k_O15_to_p_N14_derived, + He4, N14, -1, F18, -1, -1, N14, F18, k_N14_He4_to_F18_reaclib, k_F18_to_He4_N14_derived, + H1, N15, -1, O16, -1, -1, N15, O16, k_N15_p_to_O16_reaclib, k_O16_to_p_N15_derived, + He4, N15, -1, F19, -1, -1, N15, F19, k_N15_He4_to_F19_reaclib, k_F19_to_He4_N15_derived, + He4, O14, -1, Ne18, -1, -1, O14, Ne18, k_O14_He4_to_Ne18_reaclib, k_Ne18_to_He4_O14_derived, + He4, O15, -1, Ne19, -1, -1, O15, Ne19, k_O15_He4_to_Ne19_reaclib, k_Ne19_to_He4_O15_derived, + H1, O16, -1, F17, -1, -1, O16, F17, k_O16_p_to_F17_reaclib, k_F17_to_p_O16_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + H1, O17, -1, F18, -1, -1, O17, F18, k_O17_p_to_F18_reaclib, k_F18_to_p_O17_derived, + He4, O17, -1, Ne21, -1, -1, O17, Ne21, k_O17_He4_to_Ne21_reaclib, k_Ne21_to_He4_O17_derived, + H1, O18, -1, F19, -1, -1, O18, F19, k_O18_p_to_F19_reaclib, k_F19_to_p_O18_derived, + H1, F17, -1, Ne18, -1, -1, F17, Ne18, k_F17_p_to_Ne18_reaclib, k_Ne18_to_p_F17_derived, + H1, F18, -1, Ne19, -1, -1, F18, Ne19, k_F18_p_to_Ne19_reaclib, k_Ne19_to_p_F18_derived, + He4, F18, -1, Na22, -1, -1, F18, Na22, k_F18_He4_to_Na22_reaclib, k_Na22_to_He4_F18_derived, + H1, F19, -1, Ne20, -1, -1, F19, Ne20, k_F19_p_to_Ne20_reaclib, k_Ne20_to_p_F19_derived, + He4, F19, -1, Na23, -1, -1, F19, Na23, k_F19_He4_to_Na23_reaclib, k_Na23_to_He4_F19_derived, + He4, Ne18, -1, Mg22, -1, -1, Ne18, Mg22, k_Ne18_He4_to_Mg22_reaclib, k_Mg22_to_He4_Ne18_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + H1, Ne21, -1, Na22, -1, -1, Ne21, Na22, k_Ne21_p_to_Na22_reaclib, k_Na22_to_p_Ne21_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, N15, -1, He4, C12, -1, N15, C12, k_N15_p_to_He4_C12_reaclib, k_C12_He4_to_p_N15_derived, + He4, O14, -1, H1, F17, -1, O14, F17, k_O14_He4_to_p_F17_reaclib, k_F17_p_to_He4_O14_derived, + H1, O17, -1, He4, N14, -1, O17, N14, k_O17_p_to_He4_N14_reaclib, k_N14_He4_to_p_O17_derived, + H1, O18, -1, He4, N15, -1, O18, N15, k_O18_p_to_He4_N15_reaclib, k_N15_He4_to_p_O18_derived, + H1, F18, -1, He4, O15, -1, F18, O15, k_F18_p_to_He4_O15_reaclib, k_O15_He4_to_p_F18_derived, + He4, F18, -1, H1, Ne21, -1, F18, Ne21, k_F18_He4_to_p_Ne21_reaclib, k_Ne21_p_to_He4_F18_derived, + H1, F19, -1, He4, O16, -1, F19, O16, k_F19_p_to_He4_O16_reaclib, k_O16_He4_to_p_F19_derived, + He4, Ne19, -1, H1, Na22, -1, Ne19, Na22, k_Ne19_He4_to_p_Na22_reaclib, k_Na22_p_to_He4_Ne19_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, + He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_F17_He4_to_p_Ne20_derived, k_Ne20_p_to_He4_F17_reaclib, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, Ca40, He4, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_approx, k_Ti44_to_Ca40_He4_approx, diff --git a/networks/he-burn/cno-he-burn-33a/actual_rhs.H b/networks/he-burn/cno-he-burn-33a/actual_rhs.H index e8f870e4f..fabc465ae 100644 --- a/networks/he-burn/cno-he-burn-33a/actual_rhs.H +++ b/networks/he-burn/cno-he-burn-33a/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -582,9 +579,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -596,7 +595,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -604,107 +605,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F17_to_O17_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_O17_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O17_to_F17_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O17_to_F17_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_Ne18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_Ne18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_O18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_O18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne18_to_F18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_F18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O18_to_F18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O18_to_F18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F19_to_Ne19_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_Ne19_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne19_to_F19_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_F19_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg22_Na22_meta, j_Mg22_Na22_rhoy, j_Mg22_Na22_temp, j_Mg22_Na22_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg22_to_Na22_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg22_to_Na22_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mg22) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na22_Mg22_meta, j_Na22_Mg22_rhoy, j_Na22_Mg22_temp, j_Na22_Mg22_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na22_to_Mg22_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_Mg22_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -759,85 +673,33 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // N13_to_C13_reaclib + // N13_to_C13_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; + reaclib_rates::rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; } { - // O14_to_N14_reaclib + // O14_to_N14_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; + reaclib_rates::rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; } { - // O15_to_N15_reaclib + // O15_to_N15_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; + reaclib_rates::rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; } - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F17_to_O17_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O17_to_F17_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_Ne18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_O18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne18_to_F18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O18_to_F18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F19_to_Ne19_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne19_to_F19_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg22_Na22_meta, j_Mg22_Na22_rhoy, j_Mg22_Na22_temp, j_Mg22_Na22_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg22_to_Na22_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mg22) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na22_Mg22_meta, j_Na22_Mg22_rhoy, j_Na22_Mg22_temp, j_Na22_Mg22_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na22_to_Mg22_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; @@ -848,58 +710,58 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(C12) = 0.0_rt; ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14); + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O16) = 0.0_rt; ydot_nuc(O17) = - (screened_rates(k_F17_to_O17_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(O18) = - (screened_rates(k_F18_to_O18_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_weaktab)*Y(O18)); + (screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)); ydot_nuc(F17) = - (-screened_rates(k_F17_to_O17_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (-screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(F18) = - (-screened_rates(k_F18_to_O18_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_weaktab)*Y(O18)) + - (screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (-screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)) + + (screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(F19) = - (screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne18) = - (-screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (-screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(Ne19) = - (-screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (-screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne20) = 0.0_rt; ydot_nuc(Ne21) = 0.0_rt; ydot_nuc(Na22) = - (screened_rates(k_Mg22_to_Na22_weaktab)*Y(Mg22) + -screened_rates(k_Na22_to_Mg22_weaktab)*Y(Na22)); + (screened_rates(k_Mg22_to_Na22_electron_capture_weaktab)*Y(Mg22) + -screened_rates(k_Na22_to_Mg22_beta_neg_weaktab)*Y(Na22)); ydot_nuc(Na23) = 0.0_rt; ydot_nuc(Mg22) = - (-screened_rates(k_Mg22_to_Na22_weaktab)*Y(Mg22) + screened_rates(k_Na22_to_Mg22_weaktab)*Y(Na22)); + (-screened_rates(k_Mg22_to_Na22_electron_capture_weaktab)*Y(Mg22) + screened_rates(k_Na22_to_Mg22_beta_neg_weaktab)*Y(Na22)); ydot_nuc(Mg24) = 0.0_rt; @@ -932,74 +794,74 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + - (-screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (-screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (-screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + + (-screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (-screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + (-screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (-screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (-screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (-screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (-screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + - (-screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + - (-screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + - (-screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (-screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (-screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (-screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (-screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (-screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (-screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (-screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + (-screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + @@ -1008,173 +870,173 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_Fe52_He4_approx)*Y(Ni56)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + -screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + (screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + -screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - (-screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + (-screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - (screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + - (-screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho); + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + (screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + + (-screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - (-screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (-screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + (-screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (-screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - (screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (-screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + (screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (-screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - (screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + (screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + -screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(O17) = - (-screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + - (-screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (screened_rates(k_F17_to_O17_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (-screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(O18) = - (-screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_F18_to_O18_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_weaktab)*Y(O18)); + (-screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)); ydot_nuc(F17) = - (screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + - (-screened_rates(k_F17_to_O17_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + (-screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (-screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(F18) = - (screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + - (-screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_F18_to_O18_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_weaktab)*Y(O18)) + - (screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (-screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)) + + (screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(F19) = - (screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (-screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + - (-screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (-screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne18) = - (screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (-screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + - (-screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + + (-screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(Ne19) = - (screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + - (-screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (-screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(Ne21) = - (screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + - (-screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + - (screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho); + (screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho); ydot_nuc(Na22) = - (screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + - (screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + - (screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + - (screened_rates(k_Mg22_to_Na22_weaktab)*Y(Mg22) + -screened_rates(k_Na22_to_Mg22_weaktab)*Y(Na22)); + (screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (screened_rates(k_Mg22_to_Na22_electron_capture_weaktab)*Y(Mg22) + -screened_rates(k_Na22_to_Mg22_beta_neg_weaktab)*Y(Na22)); ydot_nuc(Na23) = - (screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg22) = - (screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + - (-screened_rates(k_Mg22_to_Na22_weaktab)*Y(Mg22) + screened_rates(k_Na22_to_Mg22_weaktab)*Y(Na22)); + (screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Mg22_to_He4_Ne18_derived)*Y(Mg22)) + + (-screened_rates(k_Mg22_to_Na22_electron_capture_weaktab)*Y(Mg22) + screened_rates(k_Na22_to_Mg22_beta_neg_weaktab)*Y(Na22)); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + 0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -1255,86 +1117,88 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho + screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho + screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, C13, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived) - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho + screened_rates(k_N14_to_p_C13_derived) - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived); jac.set(H1, N14, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(H1, N15, scratch); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_derived); + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_derived); jac.set(H1, O14, scratch); - scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14_derived); + scratch = screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14_derived); jac.set(H1, O15, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_p_N15_derived) - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived); jac.set(H1, O16, scratch); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, O17, scratch); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(H1, O18, scratch); - scratch = screened_rates(k_F17_to_p_O16_derived) + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived); jac.set(H1, F17, scratch); - scratch = screened_rates(k_F18_to_p_O17_derived) + screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived); jac.set(H1, F18, scratch); - scratch = screened_rates(k_F19_to_p_O18_derived) - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived); jac.set(H1, F19, scratch); scratch = screened_rates(k_Ne18_to_p_F17_derived); jac.set(H1, Ne18, scratch); - scratch = screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_p_F18_derived); + scratch = screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_p_F18_derived); jac.set(H1, Ne19, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_p_F19_derived) - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived); jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho; jac.set(H1, Ne21, scratch); - scratch = screened_rates(k_Na22_to_p_Ne21_derived) - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived); jac.set(H1, Na22, scratch); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); jac.set(H1, Mg22, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1352,81 +1216,81 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(Ne18)*state.rho - screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho - screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho - screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); jac.set(He4, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(He4, N15, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(He4, O14, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho; jac.set(He4, O15, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(He4, O17, scratch); - scratch = screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(He4, O18, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(He4, F17, scratch); - scratch = screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_He4_N14_derived); jac.set(He4, F18, scratch); - scratch = screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_He4_N15_derived); jac.set(He4, F19, scratch); - scratch = -screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived); + scratch = -screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived); jac.set(He4, Ne18, scratch); - scratch = -screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived); + scratch = -screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived); jac.set(He4, Ne19, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived) + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_Ne21_to_He4_O17_derived) + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(H1)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived); jac.set(He4, Ne21, scratch); - scratch = screened_rates(k_Na22_to_He4_F18_derived) + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(H1)*state.rho + screened_rates(k_Na22_to_He4_F18_derived); jac.set(He4, Na22, scratch); - scratch = screened_rates(k_Na23_to_He4_F19_derived) + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho + screened_rates(k_Na23_to_He4_F19_derived); jac.set(He4, Na23, scratch); scratch = screened_rates(k_Mg22_to_He4_Ne18_derived); jac.set(He4, Mg22, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -1450,13 +1314,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni56_to_Fe52_He4_approx); jac.set(He4, Ni56, scratch); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); jac.set(C12, C13, 0.0); @@ -1466,14 +1330,14 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, N15, scratch); jac.set(C12, O14, 0.0); jac.set(C12, O15, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); jac.set(C12, O17, 0.0); @@ -1522,17 +1386,17 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ni56, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho; jac.set(C13, H1, scratch); jac.set(C13, He4, 0.0); jac.set(C13, C12, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(C13, C13, scratch); - scratch = screened_rates(k_N13_to_C13_reaclib); + scratch = screened_rates(k_N13_to_C13_beta_pos_reaclib); jac.set(C13, N13, scratch); scratch = screened_rates(k_N14_to_p_C13_derived); @@ -1592,18 +1456,18 @@ void jac_nuc(const burn_t& state, jac.set(C13, Ni56, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); jac.set(N13, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_reaclib) - screened_rates(k_N13_to_p_C12_derived) - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_N13_to_C13_beta_pos_reaclib) - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); @@ -1615,7 +1479,7 @@ void jac_nuc(const burn_t& state, jac.set(N13, O15, 0.0); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, O17, 0.0); @@ -1664,25 +1528,25 @@ void jac_nuc(const burn_t& state, jac.set(N13, Ni56, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(N14, H1, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, C12, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, C13, scratch); jac.set(N14, N13, 0.0); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_to_p_C13_derived) - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_N14_to_p_C13_derived); jac.set(N14, N14, scratch); jac.set(N14, N15, 0.0); - scratch = screened_rates(k_O14_to_N14_reaclib); + scratch = screened_rates(k_O14_to_N14_beta_pos_reaclib); jac.set(N14, O14, scratch); scratch = screened_rates(k_O15_to_p_N14_derived); @@ -1690,7 +1554,7 @@ void jac_nuc(const burn_t& state, jac.set(N14, O16, 0.0); - scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, O17, scratch); jac.set(N14, O18, 0.0); @@ -1738,13 +1602,13 @@ void jac_nuc(const burn_t& state, jac.set(N14, Ni56, 0.0); - scratch = -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(N15, H1, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho; jac.set(N15, He4, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho; jac.set(N15, C12, scratch); jac.set(N15, C13, 0.0); @@ -1753,12 +1617,12 @@ void jac_nuc(const burn_t& state, jac.set(N15, N14, 0.0); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(N15, N15, scratch); jac.set(N15, O14, 0.0); - scratch = screened_rates(k_O15_to_N15_reaclib); + scratch = screened_rates(k_O15_to_N15_beta_pos_reaclib); jac.set(N15, O15, scratch); scratch = screened_rates(k_O16_to_p_N15_derived); @@ -1766,7 +1630,7 @@ void jac_nuc(const burn_t& state, jac.set(N15, O17, 0.0); - scratch = screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(N15, O18, scratch); jac.set(N15, F17, 0.0); @@ -1812,24 +1676,24 @@ void jac_nuc(const burn_t& state, jac.set(N15, Ni56, 0.0); - scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho; jac.set(O14, H1, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(O14, He4, scratch); jac.set(O14, C12, 0.0); jac.set(O14, C13, 0.0); - scratch = screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho; jac.set(O14, N13, scratch); jac.set(O14, N14, 0.0); jac.set(O14, N15, 0.0); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_reaclib) - screened_rates(k_O14_to_p_N13_derived); + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_beta_pos_reaclib) - screened_rates(k_O14_to_p_N13_derived); jac.set(O14, O14, scratch); jac.set(O14, O15, 0.0); @@ -1840,7 +1704,7 @@ void jac_nuc(const burn_t& state, jac.set(O14, O18, 0.0); - scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(O14, F17, scratch); jac.set(O14, F18, 0.0); @@ -1884,10 +1748,10 @@ void jac_nuc(const burn_t& state, jac.set(O14, Ni56, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho; jac.set(O15, H1, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho; jac.set(O15, He4, scratch); jac.set(O15, C12, 0.0); @@ -1896,14 +1760,14 @@ void jac_nuc(const burn_t& state, jac.set(O15, N13, 0.0); - scratch = screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, N14, scratch); jac.set(O15, N15, 0.0); jac.set(O15, O14, 0.0); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_reaclib) - screened_rates(k_O15_to_p_N14_derived); + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_beta_pos_reaclib) - screened_rates(k_O15_to_p_N14_derived); jac.set(O15, O15, scratch); jac.set(O15, O16, 0.0); @@ -1914,7 +1778,7 @@ void jac_nuc(const burn_t& state, jac.set(O15, F17, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, F18, scratch); jac.set(O15, F19, 0.0); @@ -1956,30 +1820,30 @@ void jac_nuc(const burn_t& state, jac.set(O15, Ni56, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); jac.set(O16, C13, 0.0); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, N15, scratch); jac.set(O16, O14, 0.0); jac.set(O16, O15, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_O16_to_p_N15_derived) - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_O16_to_p_N15_derived); jac.set(O16, O16, scratch); jac.set(O16, O17, 0.0); @@ -1991,7 +1855,7 @@ void jac_nuc(const burn_t& state, jac.set(O16, F18, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, F19, scratch); jac.set(O16, Ne18, 0.0); @@ -2031,10 +1895,10 @@ void jac_nuc(const burn_t& state, jac.set(O16, Ni56, 0.0); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(O17, H1, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho; jac.set(O17, He4, scratch); jac.set(O17, C12, 0.0); @@ -2043,7 +1907,7 @@ void jac_nuc(const burn_t& state, jac.set(O17, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho; jac.set(O17, N14, scratch); jac.set(O17, N15, 0.0); @@ -2054,12 +1918,12 @@ void jac_nuc(const burn_t& state, jac.set(O17, O16, 0.0); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_to_F17_weaktab) - screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_to_F17_beta_neg_weaktab); jac.set(O17, O17, scratch); jac.set(O17, O18, 0.0); - scratch = screened_rates(k_F17_to_O17_weaktab); + scratch = screened_rates(k_F17_to_O17_electron_capture_weaktab); jac.set(O17, F17, scratch); scratch = screened_rates(k_F18_to_p_O17_derived); @@ -2104,10 +1968,10 @@ void jac_nuc(const burn_t& state, jac.set(O17, Ni56, 0.0); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(O18, H1, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho; jac.set(O18, He4, scratch); jac.set(O18, C12, 0.0); @@ -2118,7 +1982,7 @@ void jac_nuc(const burn_t& state, jac.set(O18, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho; jac.set(O18, N15, scratch); jac.set(O18, O14, 0.0); @@ -2129,12 +1993,12 @@ void jac_nuc(const burn_t& state, jac.set(O18, O17, 0.0); - scratch = -screened_rates(k_O18_to_F18_weaktab) - screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_to_F18_beta_neg_weaktab); jac.set(O18, O18, scratch); jac.set(O18, F17, 0.0); - scratch = screened_rates(k_F18_to_O18_weaktab); + scratch = screened_rates(k_F18_to_O18_electron_capture_weaktab); jac.set(O18, F18, scratch); scratch = screened_rates(k_F19_to_p_O18_derived); @@ -2176,10 +2040,10 @@ void jac_nuc(const burn_t& state, jac.set(O18, Ni56, 0.0); - scratch = -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho; jac.set(F17, H1, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(F17, He4, scratch); jac.set(F17, C12, 0.0); @@ -2192,20 +2056,20 @@ void jac_nuc(const burn_t& state, jac.set(F17, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(F17, O14, scratch); jac.set(F17, O15, 0.0); - scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, O16, scratch); - scratch = screened_rates(k_O17_to_F17_weaktab); + scratch = screened_rates(k_O17_to_F17_beta_neg_weaktab); jac.set(F17, O17, scratch); jac.set(F17, O18, 0.0); - scratch = -screened_rates(k_F17_to_O17_weaktab) - screened_rates(k_F17_to_p_O16_derived) - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho - screened_rates(k_F17_to_O17_electron_capture_weaktab) - screened_rates(k_F17_to_p_O16_derived); jac.set(F17, F17, scratch); jac.set(F17, F18, 0.0); @@ -2217,7 +2081,7 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ne19, 0.0); - scratch = screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, Ne20, scratch); jac.set(F17, Ne21, 0.0); @@ -2250,10 +2114,10 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ni56, 0.0); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho; jac.set(F18, H1, scratch); - scratch = -screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho; jac.set(F18, He4, scratch); jac.set(F18, C12, 0.0); @@ -2262,32 +2126,32 @@ void jac_nuc(const burn_t& state, jac.set(F18, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho; jac.set(F18, N14, scratch); jac.set(F18, N15, 0.0); jac.set(F18, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho; jac.set(F18, O15, scratch); jac.set(F18, O16, 0.0); - scratch = screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho; jac.set(F18, O17, scratch); - scratch = screened_rates(k_O18_to_F18_weaktab); + scratch = screened_rates(k_O18_to_F18_beta_neg_weaktab); jac.set(F18, O18, scratch); jac.set(F18, F17, 0.0); - scratch = -screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_F18_to_Ne18_weaktab) - screened_rates(k_F18_to_O18_weaktab) - screened_rates(k_F18_to_p_O17_derived) - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_F18_to_Ne18_beta_neg_weaktab) - screened_rates(k_F18_to_O18_electron_capture_weaktab) - screened_rates(k_F18_to_p_O17_derived); jac.set(F18, F18, scratch); jac.set(F18, F19, 0.0); - scratch = screened_rates(k_Ne18_to_F18_weaktab); + scratch = screened_rates(k_Ne18_to_F18_electron_capture_weaktab); jac.set(F18, Ne18, scratch); scratch = screened_rates(k_Ne19_to_p_F18_derived); @@ -2295,7 +2159,7 @@ void jac_nuc(const burn_t& state, jac.set(F18, Ne20, 0.0); - scratch = screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(H1)*state.rho; jac.set(F18, Ne21, scratch); scratch = screened_rates(k_Na22_to_He4_F18_derived); @@ -2327,10 +2191,10 @@ void jac_nuc(const burn_t& state, jac.set(F18, Ni56, 0.0); - scratch = -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho; jac.set(F19, H1, scratch); - scratch = -screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho + screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho; jac.set(F19, He4, scratch); jac.set(F19, C12, 0.0); @@ -2341,31 +2205,31 @@ void jac_nuc(const burn_t& state, jac.set(F19, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho; jac.set(F19, N15, scratch); jac.set(F19, O14, 0.0); jac.set(F19, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho; jac.set(F19, O16, scratch); jac.set(F19, O17, 0.0); - scratch = screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho; jac.set(F19, O18, scratch); jac.set(F19, F17, 0.0); jac.set(F19, F18, 0.0); - scratch = -screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_F19_to_Ne19_weaktab) - screened_rates(k_F19_to_p_O18_derived) - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_F19_to_Ne19_beta_neg_weaktab) - screened_rates(k_F19_to_p_O18_derived); jac.set(F19, F19, scratch); jac.set(F19, Ne18, 0.0); - scratch = screened_rates(k_Ne19_to_F19_weaktab); + scratch = screened_rates(k_Ne19_to_F19_electron_capture_weaktab); jac.set(F19, Ne19, scratch); scratch = screened_rates(k_Ne20_to_p_F19_derived); @@ -2402,10 +2266,10 @@ void jac_nuc(const burn_t& state, jac.set(F19, Ni56, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho; jac.set(Ne18, H1, scratch); - scratch = -screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(Ne18)*state.rho + screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(Ne18)*state.rho + screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho; jac.set(Ne18, He4, scratch); jac.set(Ne18, C12, 0.0); @@ -2418,7 +2282,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho; jac.set(Ne18, O14, scratch); jac.set(Ne18, O15, 0.0); @@ -2429,15 +2293,15 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, O18, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho; jac.set(Ne18, F17, scratch); - scratch = screened_rates(k_F18_to_Ne18_weaktab); + scratch = screened_rates(k_F18_to_Ne18_beta_neg_weaktab); jac.set(Ne18, F18, scratch); jac.set(Ne18, F19, 0.0); - scratch = -screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_weaktab) - screened_rates(k_Ne18_to_He4_O14_derived) - screened_rates(k_Ne18_to_p_F17_derived); + scratch = -screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_electron_capture_weaktab) - screened_rates(k_Ne18_to_He4_O14_derived) - screened_rates(k_Ne18_to_p_F17_derived); jac.set(Ne18, Ne18, scratch); jac.set(Ne18, Ne19, 0.0); @@ -2475,10 +2339,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, Ni56, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*state.rho; jac.set(Ne19, H1, scratch); - scratch = -screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho; + scratch = -screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho; jac.set(Ne19, He4, scratch); jac.set(Ne19, C12, 0.0); @@ -2493,7 +2357,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho; jac.set(Ne19, O15, scratch); jac.set(Ne19, O16, 0.0); @@ -2504,22 +2368,22 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, F17, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho; jac.set(Ne19, F18, scratch); - scratch = screened_rates(k_F19_to_Ne19_weaktab); + scratch = screened_rates(k_F19_to_Ne19_beta_neg_weaktab); jac.set(Ne19, F19, scratch); jac.set(Ne19, Ne18, 0.0); - scratch = -screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne19_to_F19_weaktab) - screened_rates(k_Ne19_to_He4_O15_derived) - screened_rates(k_Ne19_to_p_F18_derived); + scratch = -screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne19_to_F19_electron_capture_weaktab) - screened_rates(k_Ne19_to_He4_O15_derived) - screened_rates(k_Ne19_to_p_F18_derived); jac.set(Ne19, Ne19, scratch); jac.set(Ne19, Ne20, 0.0); jac.set(Ne19, Ne21, 0.0); - scratch = screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(H1)*state.rho; jac.set(Ne19, Na22, scratch); jac.set(Ne19, Na23, 0.0); @@ -2548,10 +2412,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, Ni56, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho; jac.set(Ne20, H1, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -2569,33 +2433,33 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); jac.set(Ne20, O17, 0.0); jac.set(Ne20, O18, 0.0); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho; jac.set(Ne20, F17, scratch); jac.set(Ne20, F18, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, F19, scratch); jac.set(Ne20, Ne18, 0.0); jac.set(Ne20, Ne19, 0.0); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived) - screened_rates(k_Ne20_to_p_F19_derived) - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived) - screened_rates(k_Ne20_to_p_F19_derived); jac.set(Ne20, Ne20, scratch); jac.set(Ne20, Ne21, 0.0); jac.set(Ne20, Na22, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); jac.set(Ne20, Mg22, 0.0); @@ -2623,10 +2487,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Ni56, 0.0); - scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho; + scratch = -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho; jac.set(Ne21, H1, scratch); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho; jac.set(Ne21, He4, scratch); jac.set(Ne21, C12, 0.0); @@ -2645,14 +2509,14 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, O16, 0.0); - scratch = screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, O17, scratch); jac.set(Ne21, O18, 0.0); jac.set(Ne21, F17, 0.0); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, F18, scratch); jac.set(Ne21, F19, 0.0); @@ -2663,7 +2527,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, Ne20, 0.0); - scratch = -screened_rates(k_Ne21_to_He4_O17_derived) - screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne21_to_He4_O17_derived); jac.set(Ne21, Ne21, scratch); scratch = screened_rates(k_Na22_to_p_Ne21_derived); @@ -2695,10 +2559,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, Ni56, 0.0); - scratch = -screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho; + scratch = -screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho; jac.set(Na22, H1, scratch); - scratch = screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho; + scratch = screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho + screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho; jac.set(Na22, He4, scratch); jac.set(Na22, C12, 0.0); @@ -2723,27 +2587,27 @@ void jac_nuc(const burn_t& state, jac.set(Na22, F17, 0.0); - scratch = screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho; jac.set(Na22, F18, scratch); jac.set(Na22, F19, 0.0); jac.set(Na22, Ne18, 0.0); - scratch = screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho; jac.set(Na22, Ne19, scratch); jac.set(Na22, Ne20, 0.0); - scratch = screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho; jac.set(Na22, Ne21, scratch); - scratch = -screened_rates(k_Na22_to_He4_F18_derived) - screened_rates(k_Na22_to_Mg22_weaktab) - screened_rates(k_Na22_to_p_Ne21_derived) - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(H1)*state.rho - screened_rates(k_Na22_to_He4_F18_derived) - screened_rates(k_Na22_to_Mg22_beta_neg_weaktab) - screened_rates(k_Na22_to_p_Ne21_derived); jac.set(Na22, Na22, scratch); jac.set(Na22, Na23, 0.0); - scratch = screened_rates(k_Mg22_to_Na22_weaktab); + scratch = screened_rates(k_Mg22_to_Na22_electron_capture_weaktab); jac.set(Na22, Mg22, scratch); jac.set(Na22, Mg24, 0.0); @@ -2768,10 +2632,10 @@ void jac_nuc(const burn_t& state, jac.set(Na22, Ni56, 0.0); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -2799,21 +2663,21 @@ void jac_nuc(const burn_t& state, jac.set(Na23, F18, 0.0); - scratch = screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho; jac.set(Na23, F19, scratch); jac.set(Na23, Ne18, 0.0); jac.set(Na23, Ne19, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); jac.set(Na23, Ne21, 0.0); jac.set(Na23, Na22, 0.0); - scratch = -screened_rates(k_Na23_to_He4_F19_derived) - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_to_He4_F19_derived); jac.set(Na23, Na23, scratch); jac.set(Na23, Mg22, 0.0); @@ -2843,7 +2707,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg22, H1, 0.0); - scratch = screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(Ne18)*state.rho; + scratch = screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(Ne18)*state.rho; jac.set(Mg22, He4, scratch); jac.set(Mg22, C12, 0.0); @@ -2872,7 +2736,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg22, F19, 0.0); - scratch = screened_rates(k_He4_Ne18_to_Mg22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne18_He4_to_Mg22_reaclib)*Y(He4)*state.rho; jac.set(Mg22, Ne18, scratch); jac.set(Mg22, Ne19, 0.0); @@ -2881,12 +2745,12 @@ void jac_nuc(const burn_t& state, jac.set(Mg22, Ne21, 0.0); - scratch = screened_rates(k_Na22_to_Mg22_weaktab); + scratch = screened_rates(k_Na22_to_Mg22_beta_neg_weaktab); jac.set(Mg22, Na22, scratch); jac.set(Mg22, Na23, 0.0); - scratch = -screened_rates(k_Mg22_to_He4_Ne18_derived) - screened_rates(k_Mg22_to_Na22_weaktab); + scratch = -screened_rates(k_Mg22_to_He4_Ne18_derived) - screened_rates(k_Mg22_to_Na22_electron_capture_weaktab); jac.set(Mg22, Mg22, scratch); jac.set(Mg22, Mg24, 0.0); @@ -2911,13 +2775,13 @@ void jac_nuc(const burn_t& state, jac.set(Mg22, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, C13, 0.0); @@ -2932,7 +2796,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); jac.set(Mg24, O17, 0.0); @@ -2949,22 +2813,22 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ne19, 0.0); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); jac.set(Mg24, Ne21, 0.0); jac.set(Mg24, Na22, 0.0); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); jac.set(Mg24, Mg22, 0.0); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -2986,13 +2850,13 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ni56, 0.0); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, C13, 0.0); @@ -3007,7 +2871,7 @@ void jac_nuc(const burn_t& state, jac.set(Al27, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, O17, 0.0); @@ -3034,10 +2898,10 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Mg22, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -3059,13 +2923,13 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, C13, 0.0); @@ -3080,7 +2944,7 @@ void jac_nuc(const burn_t& state, jac.set(Si28, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, O17, 0.0); @@ -3107,16 +2971,16 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Mg22, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -3134,10 +2998,10 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Ni56, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -3185,10 +3049,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -3206,10 +3070,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Ni56, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -3257,10 +3121,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_p_P31_derived); diff --git a/networks/he-burn/cno-he-burn-33a/approximate_rates.H b/networks/he-burn/cno-he-burn-33a/approximate_rates.H index cb7a05d24..147172f47 100644 --- a/networks/he-burn/cno-he-burn-33a/approximate_rates.H +++ b/networks/he-burn/cno-he-burn-33a/approximate_rates.H @@ -8,348 +8,350 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; + } + + rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; + } + + rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; + } + + rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; + } - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; } - - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; - } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; - } - - rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; - } - - rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; - } - - rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; - } - - } - #endif diff --git a/networks/he-burn/cno-he-burn-33a/branched_rates.H b/networks/he-burn/cno-he-burn-33a/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/cno-he-burn-33a/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/cno-he-burn-33a/derived_rates.H b/networks/he-burn/cno-he-burn-33a/derived_rates.H index d5785cf10..8c16f4861 100644 --- a/networks/he-burn/cno-he-burn-33a/derived_rates.H +++ b/networks/he-burn/cno-he-burn-33a/derived_rates.H @@ -7,6162 +7,6164 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_to_p_C13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N14_to_p_C13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N14 --> p + C13 - // N14 --> p + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real C13_log_pf, dC13_log_pf_dT9; - amrex::Real C13_log_pf, dC13_log_pf_dT9; + // setting C13 log(partition function) to 0.0 by default, independent of T + C13_log_pf = 0.0_rt; + dC13_log_pf_dT9 = 0.0_rt; - // setting C13 log(partition function) to 0.0 by default, independent of T - C13_log_pf = 0.0_rt; - dC13_log_pf_dT9 = 0.0_rt; + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + C13_log_pf - N14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC13_log_pf_dT9 - dN14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C13_log_pf - N14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC13_log_pf_dT9 - dN14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrn + ln_set_rate = 41.72421240281699 + -87.62065170634826 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 41.72421240281699 + -87.62065170634826 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.62065170634826 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 87.62065170634826 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 37.17241240281699 + -93.40212170634825 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 37.17241240281699 + -93.40212170634825 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.40212170634825 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.40212170634825 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 38.39121240281698 + -101.17495170634825 * tfactors.T9i; - // ReacLib set derived from nacrr - ln_set_rate = 38.39121240281698 + -101.17495170634825 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.17495170634825 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.17495170634825 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_p_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_p_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O14 --> p + N13 - // O14 --> p + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N13_log_pf - O14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN13_log_pf_dT9 - dO14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N13_log_pf - O14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN13_log_pf_dT9 - dO14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lg06r + ln_set_rate = 35.3038971632548 + -59.81629660012578 * tfactors.T9i + 1.57122 * tfactors.T913i; - // ReacLib set derived from lg06r - ln_set_rate = 35.3038971632548 + -59.81629660012578 * tfactors.T9i + 1.57122 * tfactors.T913i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.81629660012578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.81629660012578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lg06n + ln_set_rate = 42.44239716325481 + -53.690276600125785 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from lg06n - ln_set_rate = 42.44239716325481 + -53.690276600125785 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.690276600125785 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.690276600125785 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_p_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_p_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O15 --> p + N14 - // O15 --> p + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N14_log_pf - O15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN14_log_pf_dT9 - dO15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N14_log_pf - O15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN14_log_pf_dT9 - dO15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from im05r + ln_set_rate = 30.76303704754867 + -89.56670699689953 * tfactors.T9i + + 1.5682 * tfactors.lnT9; - // ReacLib set derived from im05r - ln_set_rate = 30.76303704754867 + -89.56670699689953 * tfactors.T9i - + 1.5682 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.56670699689953 * tfactors.T9i * tfactors.T9i + + 1.5682 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.56670699689953 * tfactors.T9i * tfactors.T9i - + 1.5682 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05r + ln_set_rate = 31.68169704754867 + -87.67370699689953 * tfactors.T9i; - // ReacLib set derived from im05r - ln_set_rate = 31.68169704754867 + -87.67370699689953 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.67370699689953 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 87.67370699689953 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05n + ln_set_rate = 44.144157047548674 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.833333 * tfactors.lnT9; - // ReacLib set derived from im05n - ln_set_rate = 44.144157047548674 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05n + ln_set_rate = 41.03725704754867 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from im05n - ln_set_rate = 41.03725704754867 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> p + N15 - // O16 --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + N15_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N15_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from li10r + ln_set_rate = 38.86679552635226 + -150.96226378057287 * tfactors.T9i + + 0.0459037 * tfactors.T9; - // ReacLib set derived from li10r - ln_set_rate = 38.86679552635226 + -150.96226378057287 * tfactors.T9i - + 0.0459037 * tfactors.T9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 150.96226378057287 * tfactors.T9i * tfactors.T9i + + 0.0459037; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 150.96226378057287 * tfactors.T9i * tfactors.T9i - + 0.0459037; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from li10r + ln_set_rate = 30.912955526352267 + -143.65591378057286 * tfactors.T9i; - // ReacLib set derived from li10r - ln_set_rate = 30.912955526352267 + -143.65591378057286 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 143.65591378057286 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 143.65591378057286 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from li10n + ln_set_rate = 44.33999552635227 + -140.73276378057287 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from li10n - ln_set_rate = 44.33999552635227 + -140.73276378057287 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 140.73276378057287 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 140.73276378057287 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_to_p_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F17_to_p_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 --> p + O16 - // F17 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O16_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO16_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O16_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO16_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ia08n + ln_set_rate = 40.93184403787935 + -6.965832070525503 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ia08n - ln_set_rate = 40.93184403787935 + -6.965832070525503 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.965832070525503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.965832070525503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F18 --> p + O17 - // F18 --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real O17_log_pf, dO17_log_pf_dT9; - amrex::Real O17_log_pf, dO17_log_pf_dT9; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); - // interpolating O17 partition function - get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O17_log_pf - F18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dF18_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O17_log_pf - F18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dF18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 33.72287495567065 + -71.29605321275191 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 33.72287495567065 + -71.29605321275191 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.29605321275191 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.29605321275191 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 11.255394955670651 + -65.81406921275192 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 11.255394955670651 + -65.81406921275192 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.81406921275192 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.81406921275192 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 40.22529495567065 + -65.06777321275192 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 40.22529495567065 + -65.06777321275192 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.06777321275192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.06777321275192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_He4_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_He4_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F18 --> He4 + N14 - // F18 --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N14_log_pf - F18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN14_log_pf_dT9 - dF18_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N14_log_pf - F18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN14_log_pf_dT9 - dF18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 38.61662473666887 + -62.20224752987261 * tfactors.T9i + -5.6227 * tfactors.T913i; - // ReacLib set derived from il10r - ln_set_rate = 38.61662473666887 + -62.20224752987261 * tfactors.T9i + -5.6227 * tfactors.T913i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 62.20224752987261 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 62.20224752987261 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 24.91396273666887 + -56.396987529872604 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 24.91396273666887 + -56.396987529872604 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 56.396987529872604 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 56.396987529872604 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.25102473666887 + -51.236647529872606 * tfactors.T9i + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.25102473666887 + -51.236647529872606 * tfactors.T9i + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 51.236647529872606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 51.236647529872606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F19 --> p + O18 - // F19 --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O18_log_pf, dO18_log_pf_dT9; - amrex::Real O18_log_pf, dO18_log_pf_dT9; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); - // interpolating O18 partition function - get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O18_log_pf - F19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dF19_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O18_log_pf - F19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dF19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10n + ln_set_rate = 42.868088644181995 + -92.7618744782197 * tfactors.T9i + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 42.868088644181995 + -92.7618744782197 * tfactors.T9i + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.7618744782197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.7618744782197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 30.219848644181997 + -99.4871744782197 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 30.219848644181997 + -99.4871744782197 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.4871744782197 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.4871744782197 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 28.027568644181997 + -94.41868447821969 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 28.027568644181997 + -94.41868447821969 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.41868447821969 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.41868447821969 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -12.056811355818002 + -93.0066174782197 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -12.056811355818002 + -93.0066174782197 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.0066174782197 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.0066174782197 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_He4_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_He4_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F19 --> He4 + N15 - // F19 --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + N15_log_pf - F19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN15_log_pf_dT9 - dF19_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N15_log_pf - F19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN15_log_pf_dT9 - dF19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -4.0595772096034 + -50.77806404408662 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = -4.0595772096034 + -50.77806404408662 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.77806404408662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.77806404408662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 28.273522790396598 + -53.56282404408662 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 28.273522790396598 + -53.56282404408662 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.56282404408662 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.56282404408662 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 15.3204027903966 + -50.75615404408662 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 15.3204027903966 + -50.75615404408662 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.75615404408662 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.75615404408662 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 50.130922790396596 + -46.57820404408662 * tfactors.T9i + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 50.130922790396596 + -46.57820404408662 * tfactors.T9i + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.57820404408662 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.57820404408662 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_p_F17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_p_F17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne18 --> p + F17 - // Ne18 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F17_log_pf - Ne18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF17_log_pf_dT9 - dNe18_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F17_log_pf - Ne18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF17_log_pf_dT9 - dNe18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cb09 + ln_set_rate = 17.58370046698957 + -45.55769965436449 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.6337600000000001 * tfactors.lnT9; - // ReacLib set derived from cb09 - ln_set_rate = 17.58370046698957 + -45.55769965436449 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.6337600000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 45.55769965436449 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.6337600000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 45.55769965436449 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.6337600000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from cb09 + ln_set_rate = 53.00858046698957 + -50.485039254364494 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; - // ReacLib set derived from cb09 - ln_set_rate = 53.00858046698957 + -50.485039254364494 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.485039254364494 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.485039254364494 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne18 --> He4 + O14 - // Ne18 --> He4 + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O14_log_pf - Ne18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dNe18_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O14_log_pf - Ne18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dNe18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from wh87n + ln_set_rate = 51.160347955038674 + -59.35823432141371 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from wh87n - ln_set_rate = 51.160347955038674 + -59.35823432141371 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.35823432141371 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.35823432141371 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 20.01796795503867 + -71.51723432141371 * tfactors.T9i + + 6.5 * tfactors.lnT9; - // ReacLib set derived from wh87r - ln_set_rate = 20.01796795503867 + -71.51723432141371 * tfactors.T9i - + 6.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.51723432141371 * tfactors.T9i * tfactors.T9i + + 6.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.51723432141371 * tfactors.T9i * tfactors.T9i - + 6.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 28.243807955038672 + -81.96823432141372 * tfactors.T9i; - // ReacLib set derived from wh87r - ln_set_rate = 28.243807955038672 + -81.96823432141372 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.96823432141372 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.96823432141372 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 22.56327795503867 + -71.08823432141371 * tfactors.T9i; - // ReacLib set derived from wh87r - ln_set_rate = 22.56327795503867 + -71.08823432141371 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.08823432141371 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.08823432141371 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne19 --> p + F18 - // Ne19 --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; - amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); - // interpolating Ne19 partition function - get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F18_log_pf - Ne19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dNe19_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F18_log_pf - Ne19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dNe19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 18.192220240787112 + -77.27667559674641 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 18.192220240787112 + -77.27667559674641 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.27667559674641 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.27667559674641 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -5.39950975921289 + -74.78415559674642 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = -5.39950975921289 + -74.78415559674642 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.78415559674642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.78415559674642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 81.45789024078711 + -74.38520559674642 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 81.45789024078711 + -74.38520559674642 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.38520559674642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.38520559674642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_He4_O15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_He4_O15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne19 --> He4 + O15 - // Ne19 --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; - amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); - // interpolating Ne19 partition function - get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O15_log_pf - Ne19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO15_log_pf_dT9 - dNe19_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O15_log_pf - Ne19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO15_log_pf_dT9 - dNe19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from dc11r + ln_set_rate = -7.510242070092687 + -45.15053612970033 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; - // ReacLib set derived from dc11r - ln_set_rate = -7.510242070092687 + -45.15053612970033 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 45.15053612970033 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 45.15053612970033 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from dc11r + ln_set_rate = 24.694111429907313 + -46.83053612970032 * tfactors.T9i; - // ReacLib set derived from dc11r - ln_set_rate = 24.694111429907313 + -46.83053612970032 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.83053612970032 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.83053612970032 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from dc11n + ln_set_rate = 51.03075792990731 + -40.946146129700324 * tfactors.T9i + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from dc11n - ln_set_rate = 51.03075792990731 + -40.946146129700324 * tfactors.T9i + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.946146129700324 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.946146129700324 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> p + F19 - // Ne20 --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F19_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F19_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrr + ln_set_rate = 18.711255537457795 + -156.78628300750532 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 18.711255537457795 + -156.78628300750532 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 156.78628300750532 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 156.78628300750532 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 36.72378553745779 + -150.75597300750533 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 36.72378553745779 + -150.75597300750533 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 150.75597300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 150.75597300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrn + ln_set_rate = 42.62288553745779 + -149.04214300750533 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 42.62288553745779 + -149.04214300750533 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 149.04214300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 149.04214300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_to_He4_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne21_to_He4_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne21 --> He4 + O17 - // Ne21 --> He4 + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; - amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); - // interpolating Ne21 partition function - get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O17_log_pf, dO17_log_pf_dT9; - amrex::Real O17_log_pf, dO17_log_pf_dT9; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); - // interpolating O17 partition function - get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O17_log_pf - Ne21_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO17_log_pf_dT9 - dNe21_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O17_log_pf - Ne21_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO17_log_pf_dT9 - dNe21_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from be13r + ln_set_rate = 0.09298411543850094 + -90.7784662204353 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 83.7218 * tfactors.lnT9; - // ReacLib set derived from be13r - ln_set_rate = 0.09298411543850094 + -90.7784662204353 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 83.7218 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 90.7784662204353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 83.7218 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 90.7784662204353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 83.7218 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from be13r + ln_set_rate = -91.95121588456149 + -98.9451062204353 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -41.2753 * tfactors.lnT9; - // ReacLib set derived from be13r - ln_set_rate = -91.95121588456149 + -98.9451062204353 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -41.2753 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.9451062204353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -41.2753 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.9451062204353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -41.2753 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from be13r + ln_set_rate = 27.322784115438502 + -91.26872622043531 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 6.25778 * tfactors.lnT9; - // ReacLib set derived from be13r - ln_set_rate = 27.322784115438502 + -91.26872622043531 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 6.25778 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 91.26872622043531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 6.25778 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 91.26872622043531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 6.25778 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_to_p_Ne21_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na22_to_p_Ne21_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na22 --> p + Ne21 - // Na22 --> p + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; - amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); - // interpolating Ne21 partition function - get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Na22_log_pf, dNa22_log_pf_dT9; - amrex::Real Na22_log_pf, dNa22_log_pf_dT9; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); - // interpolating Na22 partition function - get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ne21_log_pf - Na22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe21_log_pf_dT9 - dNa22_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ne21_log_pf - Na22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe21_log_pf_dT9 - dNa22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10n + ln_set_rate = 42.165346980750385 + -78.19798607071328 * tfactors.T9i + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 42.165346980750385 + -78.19798607071328 * tfactors.T9i + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 78.19798607071328 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 78.19798607071328 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -16.390453019249613 + -82.41183607071328 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = -16.390453019249613 + -82.41183607071328 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 82.41183607071328 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 82.41183607071328 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 24.852786980750384 + -79.59755607071328 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 24.852786980750384 + -79.59755607071328 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 79.59755607071328 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 79.59755607071328 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -24.559653019249616 + -78.39416607071328 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -24.559653019249616 + -78.39416607071328 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 78.39416607071328 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 78.39416607071328 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_to_He4_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na22_to_He4_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na22 --> He4 + F18 - // Na22 --> He4 + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real Na22_log_pf, dNa22_log_pf_dT9; - amrex::Real Na22_log_pf, dNa22_log_pf_dT9; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); - // interpolating Na22 partition function - get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + F18_log_pf - Na22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF18_log_pf_dT9 - dNa22_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + F18_log_pf - Na22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF18_log_pf_dT9 - dNa22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from rpsmr + ln_set_rate = 59.32473614051823 + -100.22898907841348 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; - // ReacLib set derived from rpsmr - ln_set_rate = 59.32473614051823 + -100.22898907841348 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.22898907841348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.22898907841348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_to_He4_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na23_to_He4_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na23 --> He4 + F19 - // Na23 --> He4 + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + F19_log_pf - Na23_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF19_log_pf_dT9 - dNa23_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + F19_log_pf - Na23_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF19_log_pf_dT9 - dNa23_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from rpsmr + ln_set_rate = 76.90044981594414 + -123.58233417534949 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 + + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 55.9823 * tfactors.lnT9; - // ReacLib set derived from rpsmr - ln_set_rate = 76.90044981594414 + -123.58233417534949 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 - + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 55.9823 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 123.58233417534949 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i + + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 55.9823 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 123.58233417534949 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i - + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 55.9823 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg22_to_He4_Ne18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg22_to_He4_Ne18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg22 --> He4 + Ne18 - // Mg22 --> He4 + Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mg22_log_pf, dMg22_log_pf_dT9; - amrex::Real Mg22_log_pf, dMg22_log_pf_dT9; + // interpolating Mg22 partition function + get_partition_function_cached(Mg22, tfactors.T9, pf_cache, Mg22_log_pf, dMg22_log_pf_dT9); - // interpolating Mg22 partition function - get_partition_function_cached(Mg22, tfactors.T9, pf_cache, Mg22_log_pf, dMg22_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne18_log_pf - Mg22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe18_log_pf_dT9 - dMg22_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne18_log_pf - Mg22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe18_log_pf_dT9 - dMg22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 57.680013188545345 + -94.4898569232192 * tfactors.T9i + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 + + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 57.680013188545345 + -94.4898569232192 * tfactors.T9i + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 - + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.4898569232192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i + + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.4898569232192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i - + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from st08r + ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - // ReacLib set derived from st08r - ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from st08r + ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // ReacLib set derived from st08r - ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 + He4 --> p + N15 - // C12 + He4 --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N15_log_pf - He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N15_log_pf - He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrn + ln_set_rate = 27.135846229234243 + -57.62215691264642 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 27.135846229234243 + -57.62215691264642 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 57.62215691264642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 57.62215691264642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = -6.915773770765759 + -58.78595691264642 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = -6.915773770765759 + -58.78595691264642 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 58.78595691264642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 58.78595691264642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 20.556646229234243 + -65.02815691264642 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = 20.556646229234243 + -65.02815691264642 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.02815691264642 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.02815691264642 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = -5.21402377076576 + -59.643326912646415 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = -5.21402377076576 + -59.643326912646415 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.643326912646415 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.643326912646415 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N14 + He4 --> p + O17 - // N14 + He4 --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O17_log_pf, dO17_log_pf_dT9; - amrex::Real O17_log_pf, dO17_log_pf_dT9; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); - // interpolating O17 partition function - get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + O17_log_pf - He4_log_pf - N14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dHe4_log_pf_dT9 - dN14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O17_log_pf - He4_log_pf - N14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dHe4_log_pf_dT9 - dN14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -7.592359780998223 + -14.584520682879308 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -7.592359780998223 + -14.584520682879308 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.584520682879308 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.584520682879308 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.194270219001776 + -13.831125682879309 * tfactors.T9i + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.194270219001776 + -13.831125682879309 * tfactors.T9i + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 13.831125682879309 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 13.831125682879309 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 9.789270219001777 + -18.78977568287931 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 9.789270219001777 + -18.78977568287931 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.78977568287931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.78977568287931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 5.148870219001777 + -15.945895682879309 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 5.148870219001777 + -15.945895682879309 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 15.945895682879309 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 15.945895682879309 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N15 + He4 --> p + O18 - // N15 + He4 --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O18_log_pf, dO18_log_pf_dT9; - amrex::Real O18_log_pf, dO18_log_pf_dT9; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); - // interpolating O18 partition function - get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + O18_log_pf - He4_log_pf - N15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dHe4_log_pf_dT9 - dN15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O18_log_pf - He4_log_pf - N15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dHe4_log_pf_dT9 - dN15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -29.6926341462146 + -46.42955443414268 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -29.6926341462146 + -46.42955443414268 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.42955443414268 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.42955443414268 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 25.178865853785396 + -46.183670434142684 * tfactors.T9i + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 25.178865853785396 + -46.183670434142684 * tfactors.T9i + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.183670434142684 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.183670434142684 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 7.155285853785398 + -51.50702043414268 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 7.155285853785398 + -51.50702043414268 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 51.50702043414268 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 51.50702043414268 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 8.4842658537854 + -47.84667043414268 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 8.4842658537854 + -47.84667043414268 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 47.84667043414268 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 47.84667043414268 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O15 + He4 --> p + F18 - // O15 + He4 --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + F18_log_pf - He4_log_pf - O15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dHe4_log_pf_dT9 - dO15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F18_log_pf - He4_log_pf - O15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dHe4_log_pf_dT9 - dO15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 1.0671723108797964 + -36.45580946704611 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 1.0671723108797964 + -36.45580946704611 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.45580946704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.45580946704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -32.4286676891202 + -33.81549146704611 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -32.4286676891202 + -33.81549146704611 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.81549146704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.81549146704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 61.315932310879795 + -33.43905946704611 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 61.315932310879795 + -33.43905946704611 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.43905946704611 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.43905946704611 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + He4 --> p + F19 - // O16 + He4 --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + F19_log_pf - He4_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dHe4_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F19_log_pf - He4_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dHe4_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacr + ln_set_rate = -53.121227264044336 + -94.28220973651266 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = -53.121227264044336 + -94.28220973651266 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.28220973651266 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.28220973651266 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 25.874672735955667 + -94.15455973651265 * tfactors.T9i + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 25.874672735955667 + -94.15455973651265 * tfactors.T9i + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.15455973651265 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.15455973651265 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 13.941672735955667 + -97.44055973651265 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = 13.941672735955667 + -97.44055973651265 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 97.44055973651265 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 97.44055973651265 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 14.778572735955667 + -97.90640973651266 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 14.778572735955667 + -97.90640973651266 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 97.90640973651266 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 97.90640973651266 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 7.822072735955667 + -96.62283973651265 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 7.822072735955667 + -96.62283973651265 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 96.62283973651265 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 96.62283973651265 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 + p --> He4 + O14 - // F17 + p --> He4 + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O14_log_pf - p_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dp_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O14_log_pf - p_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dp_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from Ha96r + ln_set_rate = 11.415567488049104 + -25.85518506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 11.415567488049104 + -25.85518506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.85518506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.85518506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 17.938467488049106 + -39.83288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 17.938467488049106 + -39.83288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 39.83288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 39.83288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96n + ln_set_rate = 40.122467488049104 + -13.83288506704921 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from Ha96n - ln_set_rate = 40.122467488049104 + -13.83288506704921 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 13.83288506704921 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 13.83288506704921 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 15.595367488049106 + -36.34288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 15.595367488049106 + -36.34288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.34288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.34288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 10.405067488049104 + -27.43288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 10.405067488049104 + -27.43288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.43288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.43288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = -106.80433251195089 + -14.285921067049209 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = -106.80433251195089 + -14.285921067049209 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.285921067049209 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.285921067049209 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_He4_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F17_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 + He4 --> p + Ne20 - // F17 + He4 --> p + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - He4_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dHe4_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - He4_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dHe4_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacr + ln_set_rate = 38.645331236377224 + -0.004848799532844339 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 38.645331236377224 + -0.004848799532844339 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 0.004848799532844339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 0.004848799532844339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_p_to_He4_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne21_to_He4_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne21 + p --> He4 + F18 - // Ne21 + p --> He4 + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; - amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); - // interpolating Ne21 partition function - get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + F18_log_pf - p_log_pf - Ne21_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF18_log_pf_dT9 - dp_log_pf_dT9 - dNe21_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + F18_log_pf - p_log_pf - Ne21_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF18_log_pf_dT9 - dp_log_pf_dT9 - dNe21_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from rpsmr + ln_set_rate = 50.63668915976785 + -22.04702300768339 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; - // ReacLib set derived from rpsmr - ln_set_rate = 50.63668915976785 + -22.04702300768339 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.04702300768339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.04702300768339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_p_to_He4_Ne19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na22_to_He4_Ne19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na22 + p --> He4 + Ne19 - // Na22 + p --> He4 + Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Na22_log_pf, dNa22_log_pf_dT9; - amrex::Real Na22_log_pf, dNa22_log_pf_dT9; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); - // interpolating Na22 partition function - get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; - amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); - // interpolating Ne19 partition function - get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne19_log_pf - p_log_pf - Na22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe19_log_pf_dT9 - dp_log_pf_dT9 - dNa22_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne19_log_pf - p_log_pf - Na22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe19_log_pf_dT9 - dp_log_pf_dT9 - dNa22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 43.08404589973112 + -24.01421348166705 * tfactors.T9i + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 + + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 43.08404589973112 + -24.01421348166705 * tfactors.T9i + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 - + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.01421348166705 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i + + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.01421348166705 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i - + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ca40 --> He4 + Ar36 + // Ca40 --> He4 + Ar36 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lo18r + ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0 + ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from chw0 - ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // V47 + p --> He4 + Ti44 - // Cr48 --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; - // ReacLib set derived from ths8r - ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from chw0r + ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cr48 --> He4 + Ti44 - // Cr48 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nfisn - ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } - // ReacLib set derived from nfisn - ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - ln_set_rate += net_log_pf + log_scor; + // Cr48 --> p + V47 - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + rate = 0.0; + drate_dT = 0.0; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // Evaluate partition function terms - // ReacLib set derived from nfisn - ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + amrex::Real p_log_pf, dp_log_pf_dT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + amrex::Real V47_log_pf, dV47_log_pf_dT9; - // ReacLib set derived from nfisn - ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - ln_set_rate += net_log_pf + log_scor; + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // ReacLib set derived from nfisn + ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + ln_set_rate += net_log_pf + log_scor; -} + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // V47 + p --> He4 + Ti44 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // ReacLib set derived from nfisn + ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - // Evaluate partition function terms + ln_set_rate += net_log_pf + log_scor; - amrex::Real p_log_pf, dp_log_pf_dT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // ReacLib set derived from nfisn + ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; + // ReacLib set derived from nfisn + ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from chw0r - ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Mn51 + p --> He4 + Cr48 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Fe52 --> He4 + Cr48 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> He4 + Cr48 + // Fe52 --> p + Mn51 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Co55 + p --> He4 + Fe52 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Ni56 --> He4 + Fe52 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Co55 + p --> He4 + Fe52 + // Ni56 --> p + Co55 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - part_fun::pf_cache_t pf_cache{}; + part_fun::pf_cache_t pf_cache{}; - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - { - // N13_to_p_C12_derived + { + // N13_to_p_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // N14_to_p_C13_derived + { + // N14_to_p_C13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N14_to_p_C13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N14_to_p_C13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_to_p_C13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N14_to_p_C13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived) = drate_dT; + } } - } - { - // O14_to_p_N13_derived + { + // O14_to_p_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_p_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O14_to_p_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_p_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O14_to_p_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived) = drate_dT; + } } - } - { - // O15_to_p_N14_derived + { + // O15_to_p_N14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_p_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O15_to_p_N14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_p_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O15_to_p_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived) = drate_dT; + } } - } - { - // O16_to_p_N15_derived + { + // O16_to_p_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_p_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_p_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // F17_to_p_O16_derived + { + // F17_to_p_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_p_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F17_to_p_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_to_p_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_to_p_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived) = drate_dT; + } } - } - { - // F18_to_p_O17_derived + { + // F18_to_p_O17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F18_to_p_O17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F18_to_p_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived) = drate_dT; + } } - } - { - // F18_to_He4_N14_derived + { + // F18_to_He4_N14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_He4_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F18_to_He4_N14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_He4_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F18_to_He4_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = drate_dT; + } } - } - { - // F19_to_p_O18_derived + { + // F19_to_p_O18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F19_to_p_O18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F19_to_p_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived) = drate_dT; + } } - } - { - // F19_to_He4_N15_derived + { + // F19_to_He4_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_He4_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F19_to_He4_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_He4_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F19_to_He4_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived) = drate_dT; + } } - } - { - // Ne18_to_p_F17_derived + { + // Ne18_to_p_F17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_p_F17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne18_to_p_F17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_p_F17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne18_to_p_F17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived) = drate_dT; + } } - } - { - // Ne18_to_He4_O14_derived + { + // Ne18_to_He4_O14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne18_to_He4_O14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne18_to_He4_O14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived) = drate_dT; + } } - } - { - // Ne19_to_p_F18_derived + { + // Ne19_to_p_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne19_to_p_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne19_to_p_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived) = drate_dT; + } } - } - { - // Ne19_to_He4_O15_derived + { + // Ne19_to_He4_O15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_He4_O15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne19_to_He4_O15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_He4_O15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne19_to_He4_O15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived) = drate_dT; + } } - } - { - // Ne20_to_p_F19_derived + { + // Ne20_to_p_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_p_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_p_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Ne21_to_He4_O17_derived + { + // Ne21_to_He4_O17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne21_to_He4_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne21_to_He4_O17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne21_to_He4_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne21_to_He4_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_derived) = drate_dT; + } } - } - { - // Na22_to_p_Ne21_derived + { + // Na22_to_p_Ne21_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na22_to_p_Ne21_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na22_to_p_Ne21_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_to_p_Ne21_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na22_to_p_Ne21_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived) = drate_dT; + } } - } - { - // Na22_to_He4_F18_derived + { + // Na22_to_He4_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na22_to_He4_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na22_to_He4_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_to_He4_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na22_to_He4_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived) = drate_dT; + } } - } - { - // Na23_to_He4_F19_derived + { + // Na23_to_He4_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na23_to_He4_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na23_to_He4_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na23_to_He4_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na23_to_He4_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_derived) = drate_dT; + } } - } - { - // Mg22_to_He4_Ne18_derived + { + // Mg22_to_He4_Ne18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg22_to_He4_Ne18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg22_to_He4_Ne18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg22_to_He4_Ne18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg22_to_He4_Ne18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg22_to_He4_Ne18_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // He4_C12_to_p_N15_derived + { + // C12_He4_to_p_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_C12_to_p_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_derived) = drate_dT; + rate_C12_He4_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_He4_to_p_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_p_N15_derived) = drate_dT; + } } - } - { - // He4_N14_to_p_O17_derived + { + // N14_He4_to_p_O17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_N14_to_p_O17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_derived) = drate_dT; + rate_N14_He4_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N14_He4_to_p_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_p_O17_derived) = drate_dT; + } } - } - { - // He4_N15_to_p_O18_derived + { + // N15_He4_to_p_O18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_N15_to_p_O18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18_derived) = drate_dT; + rate_N15_He4_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N15_He4_to_p_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_p_O18_derived) = drate_dT; + } } - } - { - // He4_O15_to_p_F18_derived + { + // O15_He4_to_p_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_O15_to_p_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_derived) = drate_dT; + rate_O15_He4_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O15_He4_to_p_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_p_F18_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_O16_to_p_F19_derived + { + // O16_He4_to_p_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_O16_to_p_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19_derived) = drate_dT; + rate_O16_He4_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_He4_to_p_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_p_F19_derived) = drate_dT; + } } - } - { - // p_F17_to_He4_O14_derived + { + // F17_p_to_He4_O14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_F17_to_He4_O14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_derived) = drate_dT; + rate_F17_p_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_p_to_He4_O14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_He4_O14_derived) = drate_dT; + } } - } - { - // He4_F17_to_p_Ne20_derived + { + // F17_He4_to_p_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); - } + log_scor = rate_eval.log_screen(k_He4_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); + } #endif - rate_He4_F17_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived) = drate_dT; + rate_F17_He4_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_He4_to_p_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_He4_to_p_Ne20_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // p_Ne21_to_He4_F18_derived + { + // Ne21_p_to_He4_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); - } + log_scor = rate_eval.log_screen(k_p_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); + } #endif - rate_p_Ne21_to_He4_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_derived) = drate_dT; + rate_Ne21_p_to_He4_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne21_p_to_He4_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_p_to_He4_F18_derived) = drate_dT; + } } - } - { - // p_Na22_to_He4_Ne19_derived + { + // Na22_p_to_He4_Ne19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na22); - } + log_scor = rate_eval.log_screen(k_p_Na22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na22); + } #endif - rate_p_Na22_to_He4_Ne19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Na22_to_He4_Ne19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19_derived) = drate_dT; + rate_Na22_p_to_He4_Ne19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na22_p_to_He4_Ne19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_p_to_He4_Ne19_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // V47_p_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_V47_p_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } + + { + // Mn51_p_to_He4_Cr48_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; + rate_Mn51_p_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_derived + { + // Fe52_to_p_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } -#endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; - } } - } #endif diff --git a/networks/he-burn/cno-he-burn-33a/modified_rates.H b/networks/he-burn/cno-he-burn-33a/modified_rates.H index e63de5077..629772bb7 100644 --- a/networks/he-burn/cno-he-burn-33a/modified_rates.H +++ b/networks/he-burn/cno-he-burn-33a/modified_rates.H @@ -12,6 +12,9 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +22,7 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) + // represents the sequence: c12(c12,n)mg23(n,γ)mg24 rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -28,22 +32,24 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) + // represents the sequence: o16(o16,n)s31(n,γ)s32 rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) + // represents the sequence: o16(c12,n)si27(n,γ)si28 - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -89,7 +95,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -99,10 +105,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } diff --git a/networks/he-burn/cno-he-burn-33a/pynucastro-info.txt b/networks/he-burn/cno-he-burn-33a/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/he-burn/cno-he-burn-33a/pynucastro-info.txt +++ b/networks/he-burn/cno-he-burn-33a/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/cno-he-burn-33a/reaclib_rates.H b/networks/he-burn/cno-he-burn-33a/reaclib_rates.H index 0c057b279..720902eef 100644 --- a/networks/he-burn/cno-he-burn-33a/reaclib_rates.H +++ b/networks/he-burn/cno-he-burn-33a/reaclib_rates.H @@ -8,5694 +8,5697 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // N13 --> C13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_C13_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // N13 --> C13 - // wc12w - ln_set_rate = -6.7601; - amrex::ignore_unused(tfactors); + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + // wc12w + ln_set_rate = -6.7601; + amrex::ignore_unused(tfactors); - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_N14_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 --> N14 - // O14 --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -4.62354; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -4.62354; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_N15_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 --> N15 - // O15 --> N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -5.17053; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -5.17053; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + p --> N13 - // C12 + p --> N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_p_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C13_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + p --> N14 - // C13 + p --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_p_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N13_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + p --> O14 - // N13 + p --> O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lg06r + ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // lg06r - ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lg06n + ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lg06n - ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_p_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N14_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + p --> O15 - // N14 + p --> O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // im05r + ln_set_rate = 6.73578 + -4.891 * tfactors.T9i + + 0.0682 * tfactors.lnT9; - // im05r - ln_set_rate = 6.73578 + -4.891 * tfactors.T9i - + 0.0682 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i + + 0.0682 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i - + 0.0682 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05r + ln_set_rate = 7.65444 + -2.998 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // im05r - ln_set_rate = 7.65444 + -2.998 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // im05n - ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // im05n - ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> O16 - // N15 + p --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li10r + ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i + + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i - + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i + + 0.0459037 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i - + 0.0459037 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10r + ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10n + ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // li10n - ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + He4 --> F19 - // N15 + He4 --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> Ne18 - // O14 + He4 --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wh87n + ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // wh87n - ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -4.69948 + -12.159 * tfactors.T9i + + 5.0 * tfactors.lnT9; - // wh87r - ln_set_rate = -4.69948 + -12.159 * tfactors.T9i - + 5.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i + + 5.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i - + 5.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = 3.52636 + -22.61 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = 3.52636 + -22.61 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -2.15417 + -11.73 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = -2.15417 + -11.73 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + He4 --> Ne19 - // O15 + He4 --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // dc11r + ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11r + ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11n + ln_set_rate = 26.2914 + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // dc11n - ln_set_rate = 26.2914 + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> F18 - // O17 + p --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -13.077 + -0.746296 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.077 + -0.746296 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_He4_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O17_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + He4 --> Ne21 - // O17 + He4 --> Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // be13r + ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; - // be13r - ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; - // be13r - ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; - // be13r - ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> F19 - // O18 + p --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 19.917 + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.917 + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + p --> Ne18 - // F17 + p --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cb09 + ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; - // cb09 - ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cb09 + ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; - // cb09 - ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> Ne19 - // F18 + p --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_He4_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F18_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + He4 --> Na22 - // F18 + He4 --> Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; - // rpsmr - ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> Ne20 - // F19 + p --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_He4_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F19_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + He4 --> Na23 - // F19 + He4 --> Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 52.7856 + -2.11408 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 + + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 54.4823 * tfactors.lnT9; - // rpsmr - ln_set_rate = 52.7856 + -2.11408 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 - + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 54.4823 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11408 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i + + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 54.4823 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11408 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i - + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 54.4823 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_He4_to_Mg22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne18_to_Mg22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 + He4 --> Mg22 - // Ne18 + He4 --> Mg22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 32.8865 + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 + + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 32.8865 + -46.4859 * tfactors.T913i + 0.956741 * tfactors.T913 - + -0.914402 * tfactors.T9 + 0.0722478 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i + + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.4859 * tfactors.T943i + (1.0/3.0) * 0.956741 * tfactors.T923i - + -0.914402 + (5.0/3.0) * 0.0722478 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_p_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne21_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + p --> Na22 - // Ne21 + p --> Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> He4 + C12 - // N15 + p --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 20.8972 + -7.406 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 20.8972 + -7.406 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> p + F17 - // O14 + He4 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Ha96r + ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 18.6518 + -26.0 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 18.6518 + -26.0 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96n + ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // Ha96n - ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 16.3087 + -22.51 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 16.3087 + -22.51 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 11.1184 + -13.6 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 11.1184 + -13.6 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = -106.091 + -0.453036 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = -106.091 + -0.453036 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> He4 + N14 - // O17 + p --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.579 + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.579 + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> He4 + N15 - // O18 + p --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.2725 + -1.663 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.2725 + -1.663 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> He4 + O15 - // F18 + p --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_He4_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F18_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + He4 --> p + Ne21 - // F18 + He4 --> p + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; - // rpsmr - ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> He4 + O16 - // F19 + p --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 26.2916 + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 26.2916 + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 14.3586 + -3.286 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // nacrr - ln_set_rate = 14.3586 + -3.286 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 8.239 + -2.46828 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 8.239 + -2.46828 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_He4_to_p_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne19_to_p_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 + He4 --> p + Na22 - // Ne19 + He4 --> p + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 43.1874 + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 + + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 43.1874 + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 - + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i + + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i - + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_p_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne20_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + p --> He4 + F17 - // Ne20 + p --> He4 + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> n + S31 - // O16 + O16 --> n + S31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> n + Si27 - // O16 + C12 --> n + Si27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - ln_set_rate += log_scor; + // K39 + p --> Ca40 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; -} + ln_set_rate += log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - // K39 + p --> He4 + Ar36 + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p + Mn51 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> Fe52 - // Mn51 + p --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // N13_to_C13_reaclib + { + // N13_to_C13_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_C13_beta_pos_reaclib) = drate_dT; + } } - } - { - // O14_to_N14_reaclib + { + // O14_to_N14_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_N14_beta_pos_reaclib) = drate_dT; + } } - } - { - // O15_to_N15_reaclib + { + // O15_to_N15_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_N15_beta_pos_reaclib) = drate_dT; + } } - } - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // p_C13_to_N14_reaclib + { + // C13_p_to_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); - } + log_scor = rate_eval.log_screen(k_p_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); + } #endif - rate_p_C13_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_N14_reaclib) = drate_dT; + rate_C13_p_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_p_to_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_p_to_N14_reaclib) = drate_dT; + } } - } - { - // p_N13_to_O14_reaclib + { + // N13_p_to_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); - } + log_scor = rate_eval.log_screen(k_p_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); + } #endif - rate_p_N13_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N13_to_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N13_to_O14_reaclib) = drate_dT; + rate_N13_p_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_p_to_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_p_to_O14_reaclib) = drate_dT; + } } - } - { - // p_N14_to_O15_reaclib + { + // N14_p_to_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); - } + log_scor = rate_eval.log_screen(k_p_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); + } #endif - rate_p_N14_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N14_to_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N14_to_O15_reaclib) = drate_dT; + rate_N14_p_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_p_to_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_p_to_O15_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_N15_to_O16_reaclib + { + // N15_p_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_O16_reaclib) = drate_dT; + rate_N15_p_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_N15_to_F19_reaclib + { + // N15_He4_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N15_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_F19_reaclib) = drate_dT; + rate_N15_He4_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_He4_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_F19_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_Ne18_reaclib + { + // O14_He4_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18_reaclib) = drate_dT; + rate_O14_He4_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_Ne18_reaclib) = drate_dT; + } } - } - { - // He4_O15_to_Ne19_reaclib + { + // O15_He4_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O15_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19_reaclib) = drate_dT; + rate_O15_He4_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_He4_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_Ne19_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // p_O17_to_F18_reaclib + { + // O17_p_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_F18_reaclib) = drate_dT; + rate_O17_p_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_F18_reaclib) = drate_dT; + } } - } - { - // He4_O17_to_Ne21_reaclib + { + // O17_He4_to_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); - } + log_scor = rate_eval.log_screen(k_He4_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); + } #endif - rate_He4_O17_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O17_to_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21_reaclib) = drate_dT; + rate_O17_He4_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_He4_to_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_He4_to_Ne21_reaclib) = drate_dT; + } } - } - { - // p_O18_to_F19_reaclib + { + // O18_p_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_F19_reaclib) = drate_dT; + rate_O18_p_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_F19_reaclib) = drate_dT; + } } - } - { - // p_F17_to_Ne18_reaclib + { + // F17_p_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F17_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18_reaclib) = drate_dT; + rate_F17_p_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_p_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_Ne18_reaclib) = drate_dT; + } } - } - { - // p_F18_to_Ne19_reaclib + { + // F18_p_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19_reaclib) = drate_dT; + rate_F18_p_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_Ne19_reaclib) = drate_dT; + } } - } - { - // He4_F18_to_Na22_reaclib + { + // F18_He4_to_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); - } + log_scor = rate_eval.log_screen(k_He4_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); + } #endif - rate_He4_F18_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F18_to_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22_reaclib) = drate_dT; + rate_F18_He4_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_He4_to_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_He4_to_Na22_reaclib) = drate_dT; + } } - } - { - // p_F19_to_Ne20_reaclib + { + // F19_p_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20_reaclib) = drate_dT; + rate_F19_p_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_F19_to_Na23_reaclib + { + // F19_He4_to_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); - } + log_scor = rate_eval.log_screen(k_He4_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); + } #endif - rate_He4_F19_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F19_to_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F19_to_Na23_reaclib) = drate_dT; + rate_F19_He4_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_He4_to_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_He4_to_Na23_reaclib) = drate_dT; + } } - } - { - // He4_Ne18_to_Mg22_reaclib + { + // Ne18_He4_to_Mg22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne18); - } + log_scor = rate_eval.log_screen(k_He4_Ne18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne18); + } #endif - rate_He4_Ne18_to_Mg22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne18_to_Mg22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne18_to_Mg22_reaclib) = drate_dT; + rate_Ne18_He4_to_Mg22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_He4_to_Mg22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_He4_to_Mg22_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Ne21_to_Na22_reaclib + { + // Ne21_p_to_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); - } + log_scor = rate_eval.log_screen(k_p_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); + } #endif - rate_p_Ne21_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne21_to_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22_reaclib) = drate_dT; + rate_Ne21_p_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_p_to_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_p_to_Na22_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // p_N15_to_He4_C12_reaclib + { + // N15_p_to_He4_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_He4_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12_reaclib) = drate_dT; + rate_N15_p_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_He4_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_He4_C12_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_p_F17_reaclib + { + // O14_He4_to_p_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_p_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17_reaclib) = drate_dT; + rate_O14_He4_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_p_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_p_F17_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_O17_to_He4_N14_reaclib + { + // O17_p_to_He4_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_He4_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14_reaclib) = drate_dT; + rate_O17_p_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_He4_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_He4_N14_reaclib) = drate_dT; + } } - } - { - // p_O18_to_He4_N15_reaclib + { + // O18_p_to_He4_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_He4_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15_reaclib) = drate_dT; + rate_O18_p_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_He4_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_He4_N15_reaclib) = drate_dT; + } } - } - { - // p_F18_to_He4_O15_reaclib + { + // F18_p_to_He4_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_He4_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15_reaclib) = drate_dT; + rate_F18_p_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_He4_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_He4_O15_reaclib) = drate_dT; + } } - } - { - // He4_F18_to_p_Ne21_reaclib + { + // F18_He4_to_p_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); - } + log_scor = rate_eval.log_screen(k_He4_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); + } #endif - rate_He4_F18_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F18_to_p_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21_reaclib) = drate_dT; + rate_F18_He4_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_He4_to_p_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_He4_to_p_Ne21_reaclib) = drate_dT; + } } - } - { - // p_F19_to_He4_O16_reaclib + { + // F19_p_to_He4_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_He4_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16_reaclib) = drate_dT; + rate_F19_p_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_He4_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_He4_O16_reaclib) = drate_dT; + } } - } - { - // He4_Ne19_to_p_Na22_reaclib + { + // Ne19_He4_to_p_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne19); - } + log_scor = rate_eval.log_screen(k_He4_Ne19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne19); + } #endif - rate_He4_Ne19_to_p_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne19_to_p_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22_reaclib) = drate_dT; + rate_Ne19_He4_to_p_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_He4_to_p_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_He4_to_p_Na22_reaclib) = drate_dT; + } } - } - { - // p_Ne20_to_He4_F17_reaclib + { + // Ne20_p_to_He4_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); - } + log_scor = rate_eval.log_screen(k_p_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); + } #endif - rate_p_Ne20_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne20_to_He4_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17_reaclib) = drate_dT; + rate_Ne20_p_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_p_to_He4_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_p_to_He4_F17_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_n_S31_reaclib + { + // O16_O16_to_n_S31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_n_Si27_reaclib + { + // O16_C12_to_n_Si27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_Mn51_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_Fe52_reaclib + { + // Mn51_p_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/he-burn/cno-he-burn-33a/tabular_weak_rates.H b/networks/he-burn/cno-he-burn-33a/tabular_weak_rates.H new file mode 100644 index 000000000..d06093b4b --- /dev/null +++ b/networks/he-burn/cno-he-burn-33a/tabular_weak_rates.H @@ -0,0 +1,116 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F17_to_O17_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_O17_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); + + tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_O17_to_F17_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_to_F17_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F18_to_Ne18_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_Ne18_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F18_to_O18_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_O18_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne18_to_F18_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_F18_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_O18_to_F18_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_to_F18_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F19_to_Ne19_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_Ne19_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne19_to_F19_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_F19_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mg22_Na22_meta, j_Mg22_Na22_rhoy, j_Mg22_Na22_temp, j_Mg22_Na22_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mg22_to_Na22_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg22_to_Na22_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mg22) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Na22_Mg22_meta, j_Na22_Mg22_rhoy, j_Na22_Mg22_temp, j_Na22_Mg22_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Na22_to_Mg22_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_Mg22_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/he-burn/cno-he-burn-33a/temperature_table_rates.H b/networks/he-burn/cno-he-burn-33a/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/he-burn/cno-he-burn-33a/temperature_table_rates.H +++ b/networks/he-burn/cno-he-burn-33a/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/cno-he-burn-34am/Make.package b/networks/he-burn/cno-he-burn-34am/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/cno-he-burn-34am/Make.package +++ b/networks/he-burn/cno-he-burn-34am/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/cno-he-burn-34am/actual_network.H b/networks/he-burn/cno-he-burn-34am/actual_network.H index de56f1787..56719e770 100644 --- a/networks/he-burn/cno-he-burn-34am/actual_network.H +++ b/networks/he-burn/cno-he-burn-34am/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -300,100 +300,100 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_N13_to_C13_reaclib = 1, - k_O14_to_N14_reaclib = 2, - k_O15_to_N15_reaclib = 3, - k_p_C12_to_N13_reaclib = 4, - k_He4_C12_to_O16_reaclib = 5, - k_p_C13_to_N14_reaclib = 6, - k_p_N13_to_O14_reaclib = 7, - k_p_N14_to_O15_reaclib = 8, - k_He4_N14_to_F18_reaclib = 9, - k_p_N15_to_O16_reaclib = 10, - k_He4_N15_to_F19_reaclib = 11, - k_He4_O14_to_Ne18_reaclib = 12, - k_He4_O15_to_Ne19_reaclib = 13, - k_p_O16_to_F17_reaclib = 14, - k_He4_O16_to_Ne20_reaclib = 15, - k_p_O17_to_F18_reaclib = 16, - k_He4_O17_to_Ne21_reaclib = 17, - k_p_O18_to_F19_reaclib = 18, - k_He4_O18_to_Ne22_reaclib = 19, - k_p_F17_to_Ne18_reaclib = 20, - k_He4_F17_to_Na21_reaclib = 21, - k_p_F18_to_Ne19_reaclib = 22, - k_He4_F18_to_Na22_reaclib = 23, - k_p_F19_to_Ne20_reaclib = 24, - k_He4_F19_to_Na23_reaclib = 25, - k_p_Ne20_to_Na21_reaclib = 26, - k_He4_Ne20_to_Mg24_reaclib = 27, - k_p_Ne21_to_Na22_reaclib = 28, - k_p_Ne22_to_Na23_reaclib = 29, - k_p_Na23_to_Mg24_reaclib = 30, - k_He4_Na23_to_Al27_reaclib = 31, - k_He4_Mg24_to_Si28_reaclib = 32, - k_p_Al27_to_Si28_reaclib = 33, - k_He4_Al27_to_P31_reaclib = 34, - k_He4_Si28_to_S32_reaclib = 35, - k_p_P31_to_S32_reaclib = 36, + k_N13_to_C13_beta_pos_reaclib = 1, + k_O14_to_N14_beta_pos_reaclib = 2, + k_O15_to_N15_beta_pos_reaclib = 3, + k_C12_p_to_N13_reaclib = 4, + k_C12_He4_to_O16_reaclib = 5, + k_C13_p_to_N14_reaclib = 6, + k_N13_p_to_O14_reaclib = 7, + k_N14_p_to_O15_reaclib = 8, + k_N14_He4_to_F18_reaclib = 9, + k_N15_p_to_O16_reaclib = 10, + k_N15_He4_to_F19_reaclib = 11, + k_O14_He4_to_Ne18_reaclib = 12, + k_O15_He4_to_Ne19_reaclib = 13, + k_O16_p_to_F17_reaclib = 14, + k_O16_He4_to_Ne20_reaclib = 15, + k_O17_p_to_F18_reaclib = 16, + k_O17_He4_to_Ne21_reaclib = 17, + k_O18_p_to_F19_reaclib = 18, + k_O18_He4_to_Ne22_reaclib = 19, + k_F17_p_to_Ne18_reaclib = 20, + k_F17_He4_to_Na21_reaclib = 21, + k_F18_p_to_Ne19_reaclib = 22, + k_F18_He4_to_Na22_reaclib = 23, + k_F19_p_to_Ne20_reaclib = 24, + k_F19_He4_to_Na23_reaclib = 25, + k_Ne20_p_to_Na21_reaclib = 26, + k_Ne20_He4_to_Mg24_reaclib = 27, + k_Ne21_p_to_Na22_reaclib = 28, + k_Ne22_p_to_Na23_reaclib = 29, + k_Na23_p_to_Mg24_reaclib = 30, + k_Na23_He4_to_Al27_reaclib = 31, + k_Mg24_He4_to_Si28_reaclib = 32, + k_Al27_p_to_Si28_reaclib = 33, + k_Al27_He4_to_P31_reaclib = 34, + k_Si28_He4_to_S32_reaclib = 35, + k_P31_p_to_S32_reaclib = 36, k_C12_C12_to_p_Na23_reaclib = 37, k_C12_C12_to_He4_Ne20_reaclib = 38, - k_He4_N13_to_p_O16_reaclib = 39, - k_p_N15_to_He4_C12_reaclib = 40, - k_He4_O14_to_p_F17_reaclib = 41, - k_C12_O16_to_p_Al27_reaclib = 42, - k_C12_O16_to_He4_Mg24_reaclib = 43, + k_N13_He4_to_p_O16_reaclib = 39, + k_N15_p_to_He4_C12_reaclib = 40, + k_O14_He4_to_p_F17_reaclib = 41, + k_O16_C12_to_p_Al27_reaclib = 42, + k_O16_C12_to_He4_Mg24_reaclib = 43, k_O16_O16_to_p_P31_reaclib = 44, k_O16_O16_to_He4_Si28_reaclib = 45, - k_p_O17_to_He4_N14_reaclib = 46, - k_p_O18_to_He4_N15_reaclib = 47, - k_p_F18_to_He4_O15_reaclib = 48, - k_He4_F18_to_p_Ne21_reaclib = 49, - k_p_F19_to_He4_O16_reaclib = 50, - k_He4_F19_to_p_Ne22_reaclib = 51, - k_He4_Ne18_to_p_Na21_reaclib = 52, - k_He4_Ne19_to_p_Na22_reaclib = 53, - k_p_Ne20_to_He4_F17_reaclib = 54, - k_p_Na23_to_He4_Ne20_reaclib = 55, - k_p_Mg24_to_He4_Na21_reaclib = 56, - k_p_Al27_to_He4_Mg24_reaclib = 57, - k_p_P31_to_He4_Si28_reaclib = 58, + k_O17_p_to_He4_N14_reaclib = 46, + k_O18_p_to_He4_N15_reaclib = 47, + k_F18_p_to_He4_O15_reaclib = 48, + k_F18_He4_to_p_Ne21_reaclib = 49, + k_F19_p_to_He4_O16_reaclib = 50, + k_F19_He4_to_p_Ne22_reaclib = 51, + k_Ne18_He4_to_p_Na21_reaclib = 52, + k_Ne19_He4_to_p_Na22_reaclib = 53, + k_Ne20_p_to_He4_F17_reaclib = 54, + k_Na23_p_to_He4_Ne20_reaclib = 55, + k_Mg24_p_to_He4_Na21_reaclib = 56, + k_Al27_p_to_He4_Mg24_reaclib = 57, + k_P31_p_to_He4_Si28_reaclib = 58, k_He4_He4_He4_to_C12_reaclib = 59, k_C12_C12_to_n_Mg23_reaclib = 60, k_O16_O16_to_n_S31_reaclib = 61, - k_C12_O16_to_n_Si27_reaclib = 62, - k_He4_Na22_to_Al26_reaclib = 63, - k_p_Mg24_to_Al25_reaclib = 64, - k_He4_S32_to_Ar36_reaclib = 65, - k_p_Cl35_to_Ar36_reaclib = 66, - k_p_Cl35_to_He4_S32_reaclib = 67, - k_He4_Ar36_to_Ca40_reaclib = 68, - k_p_K39_to_Ca40_reaclib = 69, - k_p_K39_to_He4_Ar36_reaclib = 70, - k_He4_Ca40_to_Ti44_reaclib = 71, - k_p_Sc43_to_Ti44_reaclib = 72, - k_p_Sc43_to_He4_Ca40_reaclib = 73, - k_He4_Ti44_to_Cr48_reaclib = 74, - k_He4_Ti44_to_p_V47_reaclib = 75, - k_p_V47_to_Cr48_reaclib = 76, - k_He4_Cr48_to_Fe52_reaclib = 77, - k_He4_Cr48_to_p_Mn51_reaclib = 78, - k_p_Mn51_to_Fe52_reaclib = 79, - k_He4_Fe52_to_Ni56_reaclib = 80, - k_He4_Fe52_to_p_Co55_reaclib = 81, - k_p_Co55_to_Ni56_reaclib = 82, - k_F17_to_O17_weaktab = 83, - k_O17_to_F17_weaktab = 84, - k_F18_to_Ne18_weaktab = 85, - k_F18_to_O18_weaktab = 86, - k_Ne18_to_F18_weaktab = 87, - k_O18_to_F18_weaktab = 88, - k_F19_to_Ne19_weaktab = 89, - k_Ne19_to_F19_weaktab = 90, - k_Na21_to_Ne21_weaktab = 91, - k_Ne21_to_Na21_weaktab = 92, - k_Na22_to_Ne22_weaktab = 93, - k_Ne22_to_Na22_weaktab = 94, + k_O16_C12_to_n_Si27_reaclib = 62, + k_Na22_He4_to_Al26_reaclib = 63, + k_Mg24_p_to_Al25_reaclib = 64, + k_S32_He4_to_Ar36_reaclib = 65, + k_Cl35_p_to_He4_S32_reaclib = 66, + k_Cl35_p_to_Ar36_reaclib = 67, + k_Ar36_He4_to_Ca40_reaclib = 68, + k_K39_p_to_He4_Ar36_reaclib = 69, + k_K39_p_to_Ca40_reaclib = 70, + k_Ca40_He4_to_Ti44_reaclib = 71, + k_Sc43_p_to_He4_Ca40_reaclib = 72, + k_Sc43_p_to_Ti44_reaclib = 73, + k_Ti44_He4_to_p_V47_reaclib = 74, + k_Ti44_He4_to_Cr48_reaclib = 75, + k_V47_p_to_Cr48_reaclib = 76, + k_Cr48_He4_to_p_Mn51_reaclib = 77, + k_Cr48_He4_to_Fe52_reaclib = 78, + k_Mn51_p_to_Fe52_reaclib = 79, + k_Fe52_He4_to_p_Co55_reaclib = 80, + k_Fe52_He4_to_Ni56_reaclib = 81, + k_Co55_p_to_Ni56_reaclib = 82, + k_F17_to_O17_electron_capture_weaktab = 83, + k_O17_to_F17_beta_neg_weaktab = 84, + k_F18_to_Ne18_beta_neg_weaktab = 85, + k_F18_to_O18_electron_capture_weaktab = 86, + k_Ne18_to_F18_electron_capture_weaktab = 87, + k_O18_to_F18_beta_neg_weaktab = 88, + k_F19_to_Ne19_beta_neg_weaktab = 89, + k_Ne19_to_F19_electron_capture_weaktab = 90, + k_Na21_to_Ne21_electron_capture_weaktab = 91, + k_Ne21_to_Na21_beta_neg_weaktab = 92, + k_Na22_to_Ne22_electron_capture_weaktab = 93, + k_Ne22_to_Na22_beta_neg_weaktab = 94, k_S32_He4_to_Ar36_approx = 95, k_Ar36_to_S32_He4_approx = 96, k_Ar36_He4_to_Ca40_approx = 97, @@ -408,9 +408,9 @@ namespace Rates k_Ni56_to_Fe52_He4_approx = 106, k_C12_C12_to_Mg24_modified = 107, k_O16_O16_to_S32_modified = 108, - k_C12_O16_to_Si28_modified = 109, - k_He4_Na22_to_Si28_modified = 110, - k_p_Mg24_to_Na22_He4_modified = 111, + k_O16_C12_to_Si28_modified = 109, + k_Na22_1p5He4_to_Si28_modified = 110, + k_Mg24_p_p_to_Na22_He4_beta_pos_modified = 111, k_N13_to_p_C12_derived = 112, k_N14_to_p_C13_derived = 113, k_O14_to_p_N13_derived = 114, @@ -444,42 +444,42 @@ namespace Rates k_P31_to_He4_Al27_derived = 142, k_S32_to_p_P31_derived = 143, k_S32_to_He4_Si28_derived = 144, - k_C12_to_He4_He4_He4_derived = 145, - k_He4_C12_to_p_N15_derived = 146, - k_He4_N14_to_p_O17_derived = 147, - k_He4_N15_to_p_O18_derived = 148, - k_He4_O15_to_p_F18_derived = 149, - k_p_O16_to_He4_N13_derived = 150, - k_He4_O16_to_p_F19_derived = 151, - k_p_F17_to_He4_O14_derived = 152, - k_He4_F17_to_p_Ne20_derived = 153, - k_He4_Ne20_to_p_Na23_derived = 154, - k_p_Ne21_to_He4_F18_derived = 155, - k_p_Ne22_to_He4_F19_derived = 156, - k_p_Na21_to_He4_Ne18_derived = 157, - k_He4_Na21_to_p_Mg24_derived = 158, - k_p_Na22_to_He4_Ne19_derived = 159, - k_He4_Mg24_to_p_Al27_derived = 160, - k_He4_Si28_to_p_P31_derived = 161, - k_He4_S32_to_p_Cl35_derived = 162, + k_C12_to_3He4_derived = 145, + k_C12_He4_to_p_N15_derived = 146, + k_N14_He4_to_p_O17_derived = 147, + k_N15_He4_to_p_O18_derived = 148, + k_O15_He4_to_p_F18_derived = 149, + k_O16_p_to_He4_N13_derived = 150, + k_O16_He4_to_p_F19_derived = 151, + k_F17_p_to_He4_O14_derived = 152, + k_F17_He4_to_p_Ne20_derived = 153, + k_Ne20_He4_to_p_Na23_derived = 154, + k_Ne21_p_to_He4_F18_derived = 155, + k_Ne22_p_to_He4_F19_derived = 156, + k_Na21_p_to_He4_Ne18_derived = 157, + k_Na21_He4_to_p_Mg24_derived = 158, + k_Na22_p_to_He4_Ne19_derived = 159, + k_Mg24_He4_to_p_Al27_derived = 160, + k_Si28_He4_to_p_P31_derived = 161, + k_S32_He4_to_p_Cl35_derived = 162, k_Ar36_to_He4_S32_derived = 163, k_Ar36_to_p_Cl35_derived = 164, - k_He4_Ar36_to_p_K39_derived = 165, + k_Ar36_He4_to_p_K39_derived = 165, k_Ca40_to_He4_Ar36_derived = 166, k_Ca40_to_p_K39_derived = 167, - k_He4_Ca40_to_p_Sc43_derived = 168, + k_Ca40_He4_to_p_Sc43_derived = 168, k_Ti44_to_He4_Ca40_derived = 169, k_Ti44_to_p_Sc43_derived = 170, - k_Cr48_to_He4_Ti44_derived = 171, - k_Cr48_to_p_V47_derived = 172, - k_p_V47_to_He4_Ti44_derived = 173, - k_Fe52_to_He4_Cr48_derived = 174, - k_Fe52_to_p_Mn51_derived = 175, - k_p_Mn51_to_He4_Cr48_derived = 176, - k_Ni56_to_He4_Fe52_derived = 177, - k_Ni56_to_p_Co55_derived = 178, - k_p_Co55_to_He4_Fe52_derived = 179, - NumRates = k_p_Co55_to_He4_Fe52_derived + k_V47_p_to_He4_Ti44_derived = 171, + k_Cr48_to_He4_Ti44_derived = 172, + k_Cr48_to_p_V47_derived = 173, + k_Mn51_p_to_He4_Cr48_derived = 174, + k_Fe52_to_He4_Cr48_derived = 175, + k_Fe52_to_p_Mn51_derived = 176, + k_Co55_p_to_He4_Fe52_derived = 177, + k_Ni56_to_He4_Fe52_derived = 178, + k_Ni56_to_p_Co55_derived = 179, + NumRates = k_Ni56_to_p_Co55_derived }; enum ScreenPairs : @@ -552,100 +552,100 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "N13_to_C13_reaclib", // 1, - "O14_to_N14_reaclib", // 2, - "O15_to_N15_reaclib", // 3, - "p_C12_to_N13_reaclib", // 4, - "He4_C12_to_O16_reaclib", // 5, - "p_C13_to_N14_reaclib", // 6, - "p_N13_to_O14_reaclib", // 7, - "p_N14_to_O15_reaclib", // 8, - "He4_N14_to_F18_reaclib", // 9, - "p_N15_to_O16_reaclib", // 10, - "He4_N15_to_F19_reaclib", // 11, - "He4_O14_to_Ne18_reaclib", // 12, - "He4_O15_to_Ne19_reaclib", // 13, - "p_O16_to_F17_reaclib", // 14, - "He4_O16_to_Ne20_reaclib", // 15, - "p_O17_to_F18_reaclib", // 16, - "He4_O17_to_Ne21_reaclib", // 17, - "p_O18_to_F19_reaclib", // 18, - "He4_O18_to_Ne22_reaclib", // 19, - "p_F17_to_Ne18_reaclib", // 20, - "He4_F17_to_Na21_reaclib", // 21, - "p_F18_to_Ne19_reaclib", // 22, - "He4_F18_to_Na22_reaclib", // 23, - "p_F19_to_Ne20_reaclib", // 24, - "He4_F19_to_Na23_reaclib", // 25, - "p_Ne20_to_Na21_reaclib", // 26, - "He4_Ne20_to_Mg24_reaclib", // 27, - "p_Ne21_to_Na22_reaclib", // 28, - "p_Ne22_to_Na23_reaclib", // 29, - "p_Na23_to_Mg24_reaclib", // 30, - "He4_Na23_to_Al27_reaclib", // 31, - "He4_Mg24_to_Si28_reaclib", // 32, - "p_Al27_to_Si28_reaclib", // 33, - "He4_Al27_to_P31_reaclib", // 34, - "He4_Si28_to_S32_reaclib", // 35, - "p_P31_to_S32_reaclib", // 36, + "N13_to_C13_beta_pos_reaclib", // 1, + "O14_to_N14_beta_pos_reaclib", // 2, + "O15_to_N15_beta_pos_reaclib", // 3, + "C12_p_to_N13_reaclib", // 4, + "C12_He4_to_O16_reaclib", // 5, + "C13_p_to_N14_reaclib", // 6, + "N13_p_to_O14_reaclib", // 7, + "N14_p_to_O15_reaclib", // 8, + "N14_He4_to_F18_reaclib", // 9, + "N15_p_to_O16_reaclib", // 10, + "N15_He4_to_F19_reaclib", // 11, + "O14_He4_to_Ne18_reaclib", // 12, + "O15_He4_to_Ne19_reaclib", // 13, + "O16_p_to_F17_reaclib", // 14, + "O16_He4_to_Ne20_reaclib", // 15, + "O17_p_to_F18_reaclib", // 16, + "O17_He4_to_Ne21_reaclib", // 17, + "O18_p_to_F19_reaclib", // 18, + "O18_He4_to_Ne22_reaclib", // 19, + "F17_p_to_Ne18_reaclib", // 20, + "F17_He4_to_Na21_reaclib", // 21, + "F18_p_to_Ne19_reaclib", // 22, + "F18_He4_to_Na22_reaclib", // 23, + "F19_p_to_Ne20_reaclib", // 24, + "F19_He4_to_Na23_reaclib", // 25, + "Ne20_p_to_Na21_reaclib", // 26, + "Ne20_He4_to_Mg24_reaclib", // 27, + "Ne21_p_to_Na22_reaclib", // 28, + "Ne22_p_to_Na23_reaclib", // 29, + "Na23_p_to_Mg24_reaclib", // 30, + "Na23_He4_to_Al27_reaclib", // 31, + "Mg24_He4_to_Si28_reaclib", // 32, + "Al27_p_to_Si28_reaclib", // 33, + "Al27_He4_to_P31_reaclib", // 34, + "Si28_He4_to_S32_reaclib", // 35, + "P31_p_to_S32_reaclib", // 36, "C12_C12_to_p_Na23_reaclib", // 37, "C12_C12_to_He4_Ne20_reaclib", // 38, - "He4_N13_to_p_O16_reaclib", // 39, - "p_N15_to_He4_C12_reaclib", // 40, - "He4_O14_to_p_F17_reaclib", // 41, - "C12_O16_to_p_Al27_reaclib", // 42, - "C12_O16_to_He4_Mg24_reaclib", // 43, + "N13_He4_to_p_O16_reaclib", // 39, + "N15_p_to_He4_C12_reaclib", // 40, + "O14_He4_to_p_F17_reaclib", // 41, + "O16_C12_to_p_Al27_reaclib", // 42, + "O16_C12_to_He4_Mg24_reaclib", // 43, "O16_O16_to_p_P31_reaclib", // 44, "O16_O16_to_He4_Si28_reaclib", // 45, - "p_O17_to_He4_N14_reaclib", // 46, - "p_O18_to_He4_N15_reaclib", // 47, - "p_F18_to_He4_O15_reaclib", // 48, - "He4_F18_to_p_Ne21_reaclib", // 49, - "p_F19_to_He4_O16_reaclib", // 50, - "He4_F19_to_p_Ne22_reaclib", // 51, - "He4_Ne18_to_p_Na21_reaclib", // 52, - "He4_Ne19_to_p_Na22_reaclib", // 53, - "p_Ne20_to_He4_F17_reaclib", // 54, - "p_Na23_to_He4_Ne20_reaclib", // 55, - "p_Mg24_to_He4_Na21_reaclib", // 56, - "p_Al27_to_He4_Mg24_reaclib", // 57, - "p_P31_to_He4_Si28_reaclib", // 58, + "O17_p_to_He4_N14_reaclib", // 46, + "O18_p_to_He4_N15_reaclib", // 47, + "F18_p_to_He4_O15_reaclib", // 48, + "F18_He4_to_p_Ne21_reaclib", // 49, + "F19_p_to_He4_O16_reaclib", // 50, + "F19_He4_to_p_Ne22_reaclib", // 51, + "Ne18_He4_to_p_Na21_reaclib", // 52, + "Ne19_He4_to_p_Na22_reaclib", // 53, + "Ne20_p_to_He4_F17_reaclib", // 54, + "Na23_p_to_He4_Ne20_reaclib", // 55, + "Mg24_p_to_He4_Na21_reaclib", // 56, + "Al27_p_to_He4_Mg24_reaclib", // 57, + "P31_p_to_He4_Si28_reaclib", // 58, "He4_He4_He4_to_C12_reaclib", // 59, "C12_C12_to_n_Mg23_reaclib", // 60, "O16_O16_to_n_S31_reaclib", // 61, - "C12_O16_to_n_Si27_reaclib", // 62, - "He4_Na22_to_Al26_reaclib", // 63, - "p_Mg24_to_Al25_reaclib", // 64, - "He4_S32_to_Ar36_reaclib", // 65, - "p_Cl35_to_Ar36_reaclib", // 66, - "p_Cl35_to_He4_S32_reaclib", // 67, - "He4_Ar36_to_Ca40_reaclib", // 68, - "p_K39_to_Ca40_reaclib", // 69, - "p_K39_to_He4_Ar36_reaclib", // 70, - "He4_Ca40_to_Ti44_reaclib", // 71, - "p_Sc43_to_Ti44_reaclib", // 72, - "p_Sc43_to_He4_Ca40_reaclib", // 73, - "He4_Ti44_to_Cr48_reaclib", // 74, - "He4_Ti44_to_p_V47_reaclib", // 75, - "p_V47_to_Cr48_reaclib", // 76, - "He4_Cr48_to_Fe52_reaclib", // 77, - "He4_Cr48_to_p_Mn51_reaclib", // 78, - "p_Mn51_to_Fe52_reaclib", // 79, - "He4_Fe52_to_Ni56_reaclib", // 80, - "He4_Fe52_to_p_Co55_reaclib", // 81, - "p_Co55_to_Ni56_reaclib", // 82, - "F17_to_O17_weaktab", // 83, - "O17_to_F17_weaktab", // 84, - "F18_to_Ne18_weaktab", // 85, - "F18_to_O18_weaktab", // 86, - "Ne18_to_F18_weaktab", // 87, - "O18_to_F18_weaktab", // 88, - "F19_to_Ne19_weaktab", // 89, - "Ne19_to_F19_weaktab", // 90, - "Na21_to_Ne21_weaktab", // 91, - "Ne21_to_Na21_weaktab", // 92, - "Na22_to_Ne22_weaktab", // 93, - "Ne22_to_Na22_weaktab", // 94, + "O16_C12_to_n_Si27_reaclib", // 62, + "Na22_He4_to_Al26_reaclib", // 63, + "Mg24_p_to_Al25_reaclib", // 64, + "S32_He4_to_Ar36_reaclib", // 65, + "Cl35_p_to_He4_S32_reaclib", // 66, + "Cl35_p_to_Ar36_reaclib", // 67, + "Ar36_He4_to_Ca40_reaclib", // 68, + "K39_p_to_He4_Ar36_reaclib", // 69, + "K39_p_to_Ca40_reaclib", // 70, + "Ca40_He4_to_Ti44_reaclib", // 71, + "Sc43_p_to_He4_Ca40_reaclib", // 72, + "Sc43_p_to_Ti44_reaclib", // 73, + "Ti44_He4_to_p_V47_reaclib", // 74, + "Ti44_He4_to_Cr48_reaclib", // 75, + "V47_p_to_Cr48_reaclib", // 76, + "Cr48_He4_to_p_Mn51_reaclib", // 77, + "Cr48_He4_to_Fe52_reaclib", // 78, + "Mn51_p_to_Fe52_reaclib", // 79, + "Fe52_He4_to_p_Co55_reaclib", // 80, + "Fe52_He4_to_Ni56_reaclib", // 81, + "Co55_p_to_Ni56_reaclib", // 82, + "F17_to_O17_electron_capture_weaktab", // 83, + "O17_to_F17_beta_neg_weaktab", // 84, + "F18_to_Ne18_beta_neg_weaktab", // 85, + "F18_to_O18_electron_capture_weaktab", // 86, + "Ne18_to_F18_electron_capture_weaktab", // 87, + "O18_to_F18_beta_neg_weaktab", // 88, + "F19_to_Ne19_beta_neg_weaktab", // 89, + "Ne19_to_F19_electron_capture_weaktab", // 90, + "Na21_to_Ne21_electron_capture_weaktab", // 91, + "Ne21_to_Na21_beta_neg_weaktab", // 92, + "Na22_to_Ne22_electron_capture_weaktab", // 93, + "Ne22_to_Na22_beta_neg_weaktab", // 94, "S32_He4_to_Ar36_approx", // 95, "Ar36_to_S32_He4_approx", // 96, "Ar36_He4_to_Ca40_approx", // 97, @@ -660,9 +660,9 @@ namespace Rates "Ni56_to_Fe52_He4_approx", // 106, "C12_C12_to_Mg24_modified", // 107, "O16_O16_to_S32_modified", // 108, - "C12_O16_to_Si28_modified", // 109, - "He4_Na22_to_Si28_modified", // 110, - "p_Mg24_to_Na22_He4_modified", // 111, + "O16_C12_to_Si28_modified", // 109, + "Na22_1p5He4_to_Si28_modified", // 110, + "Mg24_p_p_to_Na22_He4_beta_pos_modified", // 111, "N13_to_p_C12_derived", // 112, "N14_to_p_C13_derived", // 113, "O14_to_p_N13_derived", // 114, @@ -696,41 +696,41 @@ namespace Rates "P31_to_He4_Al27_derived", // 142, "S32_to_p_P31_derived", // 143, "S32_to_He4_Si28_derived", // 144, - "C12_to_He4_He4_He4_derived", // 145, - "He4_C12_to_p_N15_derived", // 146, - "He4_N14_to_p_O17_derived", // 147, - "He4_N15_to_p_O18_derived", // 148, - "He4_O15_to_p_F18_derived", // 149, - "p_O16_to_He4_N13_derived", // 150, - "He4_O16_to_p_F19_derived", // 151, - "p_F17_to_He4_O14_derived", // 152, - "He4_F17_to_p_Ne20_derived", // 153, - "He4_Ne20_to_p_Na23_derived", // 154, - "p_Ne21_to_He4_F18_derived", // 155, - "p_Ne22_to_He4_F19_derived", // 156, - "p_Na21_to_He4_Ne18_derived", // 157, - "He4_Na21_to_p_Mg24_derived", // 158, - "p_Na22_to_He4_Ne19_derived", // 159, - "He4_Mg24_to_p_Al27_derived", // 160, - "He4_Si28_to_p_P31_derived", // 161, - "He4_S32_to_p_Cl35_derived", // 162, + "C12_to_3He4_derived", // 145, + "C12_He4_to_p_N15_derived", // 146, + "N14_He4_to_p_O17_derived", // 147, + "N15_He4_to_p_O18_derived", // 148, + "O15_He4_to_p_F18_derived", // 149, + "O16_p_to_He4_N13_derived", // 150, + "O16_He4_to_p_F19_derived", // 151, + "F17_p_to_He4_O14_derived", // 152, + "F17_He4_to_p_Ne20_derived", // 153, + "Ne20_He4_to_p_Na23_derived", // 154, + "Ne21_p_to_He4_F18_derived", // 155, + "Ne22_p_to_He4_F19_derived", // 156, + "Na21_p_to_He4_Ne18_derived", // 157, + "Na21_He4_to_p_Mg24_derived", // 158, + "Na22_p_to_He4_Ne19_derived", // 159, + "Mg24_He4_to_p_Al27_derived", // 160, + "Si28_He4_to_p_P31_derived", // 161, + "S32_He4_to_p_Cl35_derived", // 162, "Ar36_to_He4_S32_derived", // 163, "Ar36_to_p_Cl35_derived", // 164, - "He4_Ar36_to_p_K39_derived", // 165, + "Ar36_He4_to_p_K39_derived", // 165, "Ca40_to_He4_Ar36_derived", // 166, "Ca40_to_p_K39_derived", // 167, - "He4_Ca40_to_p_Sc43_derived", // 168, + "Ca40_He4_to_p_Sc43_derived", // 168, "Ti44_to_He4_Ca40_derived", // 169, "Ti44_to_p_Sc43_derived", // 170, - "Cr48_to_He4_Ti44_derived", // 171, - "Cr48_to_p_V47_derived", // 172, - "p_V47_to_He4_Ti44_derived", // 173, - "Fe52_to_He4_Cr48_derived", // 174, - "Fe52_to_p_Mn51_derived", // 175, - "p_Mn51_to_He4_Cr48_derived", // 176, - "Ni56_to_He4_Fe52_derived", // 177, - "Ni56_to_p_Co55_derived", // 178, - "p_Co55_to_He4_Fe52_derived" // 179, + "V47_p_to_He4_Ti44_derived", // 171, + "Cr48_to_He4_Ti44_derived", // 172, + "Cr48_to_p_V47_derived", // 173, + "Mn51_p_to_He4_Cr48_derived", // 174, + "Fe52_to_He4_Cr48_derived", // 175, + "Fe52_to_p_Mn51_derived", // 176, + "Co55_p_to_He4_Fe52_derived", // 177, + "Ni56_to_He4_Fe52_derived", // 178, + "Ni56_to_p_Co55_derived" // 179, }; template @@ -763,56 +763,56 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 56; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - H1, C13, -1, N14, -1, -1, C13, N14, k_p_C13_to_N14_reaclib, k_N14_to_p_C13_derived, - H1, N13, -1, O14, -1, -1, N13, O14, k_p_N13_to_O14_reaclib, k_O14_to_p_N13_derived, - H1, N14, -1, O15, -1, -1, N14, O15, k_p_N14_to_O15_reaclib, k_O15_to_p_N14_derived, - He4, N14, -1, F18, -1, -1, N14, F18, k_He4_N14_to_F18_reaclib, k_F18_to_He4_N14_derived, - H1, N15, -1, O16, -1, -1, N15, O16, k_p_N15_to_O16_reaclib, k_O16_to_p_N15_derived, - He4, N15, -1, F19, -1, -1, N15, F19, k_He4_N15_to_F19_reaclib, k_F19_to_He4_N15_derived, - He4, O14, -1, Ne18, -1, -1, O14, Ne18, k_He4_O14_to_Ne18_reaclib, k_Ne18_to_He4_O14_derived, - He4, O15, -1, Ne19, -1, -1, O15, Ne19, k_He4_O15_to_Ne19_reaclib, k_Ne19_to_He4_O15_derived, - H1, O16, -1, F17, -1, -1, O16, F17, k_p_O16_to_F17_reaclib, k_F17_to_p_O16_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - H1, O17, -1, F18, -1, -1, O17, F18, k_p_O17_to_F18_reaclib, k_F18_to_p_O17_derived, - He4, O17, -1, Ne21, -1, -1, O17, Ne21, k_He4_O17_to_Ne21_reaclib, k_Ne21_to_He4_O17_derived, - H1, O18, -1, F19, -1, -1, O18, F19, k_p_O18_to_F19_reaclib, k_F19_to_p_O18_derived, - He4, O18, -1, Ne22, -1, -1, O18, Ne22, k_He4_O18_to_Ne22_reaclib, k_Ne22_to_He4_O18_derived, - H1, F17, -1, Ne18, -1, -1, F17, Ne18, k_p_F17_to_Ne18_reaclib, k_Ne18_to_p_F17_derived, - He4, F17, -1, Na21, -1, -1, F17, Na21, k_He4_F17_to_Na21_reaclib, k_Na21_to_He4_F17_derived, - H1, F18, -1, Ne19, -1, -1, F18, Ne19, k_p_F18_to_Ne19_reaclib, k_Ne19_to_p_F18_derived, - He4, F18, -1, Na22, -1, -1, F18, Na22, k_He4_F18_to_Na22_reaclib, k_Na22_to_He4_F18_derived, - H1, F19, -1, Ne20, -1, -1, F19, Ne20, k_p_F19_to_Ne20_reaclib, k_Ne20_to_p_F19_derived, - He4, F19, -1, Na23, -1, -1, F19, Na23, k_He4_F19_to_Na23_reaclib, k_Na23_to_He4_F19_derived, - H1, Ne20, -1, Na21, -1, -1, Ne20, Na21, k_p_Ne20_to_Na21_reaclib, k_Na21_to_p_Ne20_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - H1, Ne21, -1, Na22, -1, -1, Ne21, Na22, k_p_Ne21_to_Na22_reaclib, k_Na22_to_p_Ne21_derived, - H1, Ne22, -1, Na23, -1, -1, Ne22, Na23, k_p_Ne22_to_Na23_reaclib, k_Na23_to_p_Ne22_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, - He4, Na23, -1, Al27, -1, -1, Na23, Al27, k_He4_Na23_to_Al27_reaclib, k_Al27_to_He4_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_derived, - He4, Al27, -1, P31, -1, -1, Al27, P31, k_He4_Al27_to_P31_reaclib, k_P31_to_He4_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, N15, -1, He4, C12, -1, N15, C12, k_p_N15_to_He4_C12_reaclib, k_He4_C12_to_p_N15_derived, - He4, O14, -1, H1, F17, -1, O14, F17, k_He4_O14_to_p_F17_reaclib, k_p_F17_to_He4_O14_derived, - H1, O17, -1, He4, N14, -1, O17, N14, k_p_O17_to_He4_N14_reaclib, k_He4_N14_to_p_O17_derived, - H1, O18, -1, He4, N15, -1, O18, N15, k_p_O18_to_He4_N15_reaclib, k_He4_N15_to_p_O18_derived, - H1, F18, -1, He4, O15, -1, F18, O15, k_p_F18_to_He4_O15_reaclib, k_He4_O15_to_p_F18_derived, - He4, F18, -1, H1, Ne21, -1, F18, Ne21, k_He4_F18_to_p_Ne21_reaclib, k_p_Ne21_to_He4_F18_derived, - H1, F19, -1, He4, O16, -1, F19, O16, k_p_F19_to_He4_O16_reaclib, k_He4_O16_to_p_F19_derived, - He4, F19, -1, H1, Ne22, -1, F19, Ne22, k_He4_F19_to_p_Ne22_reaclib, k_p_Ne22_to_He4_F19_derived, - He4, Ne18, -1, H1, Na21, -1, Ne18, Na21, k_He4_Ne18_to_p_Na21_reaclib, k_p_Na21_to_He4_Ne18_derived, - He4, Ne19, -1, H1, Na22, -1, Ne19, Na22, k_He4_Ne19_to_p_Na22_reaclib, k_p_Na22_to_He4_Ne19_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, - He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_He4_F17_to_p_Ne20_derived, k_p_Ne20_to_He4_F17_reaclib, - He4, Na21, -1, H1, Mg24, -1, Na21, Mg24, k_He4_Na21_to_p_Mg24_derived, k_p_Mg24_to_He4_Na21_reaclib, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + H1, C13, -1, N14, -1, -1, C13, N14, k_C13_p_to_N14_reaclib, k_N14_to_p_C13_derived, + H1, N13, -1, O14, -1, -1, N13, O14, k_N13_p_to_O14_reaclib, k_O14_to_p_N13_derived, + H1, N14, -1, O15, -1, -1, N14, O15, k_N14_p_to_O15_reaclib, k_O15_to_p_N14_derived, + He4, N14, -1, F18, -1, -1, N14, F18, k_N14_He4_to_F18_reaclib, k_F18_to_He4_N14_derived, + H1, N15, -1, O16, -1, -1, N15, O16, k_N15_p_to_O16_reaclib, k_O16_to_p_N15_derived, + He4, N15, -1, F19, -1, -1, N15, F19, k_N15_He4_to_F19_reaclib, k_F19_to_He4_N15_derived, + He4, O14, -1, Ne18, -1, -1, O14, Ne18, k_O14_He4_to_Ne18_reaclib, k_Ne18_to_He4_O14_derived, + He4, O15, -1, Ne19, -1, -1, O15, Ne19, k_O15_He4_to_Ne19_reaclib, k_Ne19_to_He4_O15_derived, + H1, O16, -1, F17, -1, -1, O16, F17, k_O16_p_to_F17_reaclib, k_F17_to_p_O16_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + H1, O17, -1, F18, -1, -1, O17, F18, k_O17_p_to_F18_reaclib, k_F18_to_p_O17_derived, + He4, O17, -1, Ne21, -1, -1, O17, Ne21, k_O17_He4_to_Ne21_reaclib, k_Ne21_to_He4_O17_derived, + H1, O18, -1, F19, -1, -1, O18, F19, k_O18_p_to_F19_reaclib, k_F19_to_p_O18_derived, + He4, O18, -1, Ne22, -1, -1, O18, Ne22, k_O18_He4_to_Ne22_reaclib, k_Ne22_to_He4_O18_derived, + H1, F17, -1, Ne18, -1, -1, F17, Ne18, k_F17_p_to_Ne18_reaclib, k_Ne18_to_p_F17_derived, + He4, F17, -1, Na21, -1, -1, F17, Na21, k_F17_He4_to_Na21_reaclib, k_Na21_to_He4_F17_derived, + H1, F18, -1, Ne19, -1, -1, F18, Ne19, k_F18_p_to_Ne19_reaclib, k_Ne19_to_p_F18_derived, + He4, F18, -1, Na22, -1, -1, F18, Na22, k_F18_He4_to_Na22_reaclib, k_Na22_to_He4_F18_derived, + H1, F19, -1, Ne20, -1, -1, F19, Ne20, k_F19_p_to_Ne20_reaclib, k_Ne20_to_p_F19_derived, + He4, F19, -1, Na23, -1, -1, F19, Na23, k_F19_He4_to_Na23_reaclib, k_Na23_to_He4_F19_derived, + H1, Ne20, -1, Na21, -1, -1, Ne20, Na21, k_Ne20_p_to_Na21_reaclib, k_Na21_to_p_Ne20_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + H1, Ne21, -1, Na22, -1, -1, Ne21, Na22, k_Ne21_p_to_Na22_reaclib, k_Na22_to_p_Ne21_derived, + H1, Ne22, -1, Na23, -1, -1, Ne22, Na23, k_Ne22_p_to_Na23_reaclib, k_Na23_to_p_Ne22_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, + He4, Na23, -1, Al27, -1, -1, Na23, Al27, k_Na23_He4_to_Al27_reaclib, k_Al27_to_He4_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_derived, + He4, Al27, -1, P31, -1, -1, Al27, P31, k_Al27_He4_to_P31_reaclib, k_P31_to_He4_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, N15, -1, He4, C12, -1, N15, C12, k_N15_p_to_He4_C12_reaclib, k_C12_He4_to_p_N15_derived, + He4, O14, -1, H1, F17, -1, O14, F17, k_O14_He4_to_p_F17_reaclib, k_F17_p_to_He4_O14_derived, + H1, O17, -1, He4, N14, -1, O17, N14, k_O17_p_to_He4_N14_reaclib, k_N14_He4_to_p_O17_derived, + H1, O18, -1, He4, N15, -1, O18, N15, k_O18_p_to_He4_N15_reaclib, k_N15_He4_to_p_O18_derived, + H1, F18, -1, He4, O15, -1, F18, O15, k_F18_p_to_He4_O15_reaclib, k_O15_He4_to_p_F18_derived, + He4, F18, -1, H1, Ne21, -1, F18, Ne21, k_F18_He4_to_p_Ne21_reaclib, k_Ne21_p_to_He4_F18_derived, + H1, F19, -1, He4, O16, -1, F19, O16, k_F19_p_to_He4_O16_reaclib, k_O16_He4_to_p_F19_derived, + He4, F19, -1, H1, Ne22, -1, F19, Ne22, k_F19_He4_to_p_Ne22_reaclib, k_Ne22_p_to_He4_F19_derived, + He4, Ne18, -1, H1, Na21, -1, Ne18, Na21, k_Ne18_He4_to_p_Na21_reaclib, k_Na21_p_to_He4_Ne18_derived, + He4, Ne19, -1, H1, Na22, -1, Ne19, Na22, k_Ne19_He4_to_p_Na22_reaclib, k_Na22_p_to_He4_Ne19_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, + He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_F17_He4_to_p_Ne20_derived, k_Ne20_p_to_He4_F17_reaclib, + He4, Na21, -1, H1, Mg24, -1, Na21, Mg24, k_Na21_He4_to_p_Mg24_derived, k_Mg24_p_to_He4_Na21_reaclib, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, Ca40, He4, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_approx, k_Ti44_to_Ca40_He4_approx, diff --git a/networks/he-burn/cno-he-burn-34am/actual_rhs.H b/networks/he-burn/cno-he-burn-34am/actual_rhs.H index 562e56f90..893697a6e 100644 --- a/networks/he-burn/cno-he-burn-34am/actual_rhs.H +++ b/networks/he-burn/cno-he-burn-34am/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -662,9 +659,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -676,7 +675,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -684,123 +685,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F17_to_O17_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_O17_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O17_to_F17_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O17_to_F17_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_Ne18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_Ne18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_O18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_O18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne18_to_F18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_F18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O18_to_F18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O18_to_F18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F19_to_Ne19_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_Ne19_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne19_to_F19_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_F19_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na21_Ne21_meta, j_Na21_Ne21_rhoy, j_Na21_Ne21_temp, j_Na21_Ne21_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na21_to_Ne21_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na21_to_Ne21_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Na21) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne21_Na21_meta, j_Ne21_Na21_rhoy, j_Ne21_Na21_temp, j_Ne21_Na21_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne21_to_Na21_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne21_to_Na21_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne21) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na22_Ne22_meta, j_Na22_Ne22_rhoy, j_Na22_Ne22_temp, j_Na22_Ne22_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na22_to_Ne22_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_Ne22_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne22_Na22_meta, j_Ne22_Na22_rhoy, j_Ne22_Na22_temp, j_Ne22_Na22_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne22_to_Na22_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne22_to_Na22_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne22) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -870,179 +768,117 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // N13_to_C13_reaclib + // N13_to_C13_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; + reaclib_rates::rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; } { - // O14_to_N14_reaclib + // O14_to_N14_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; + reaclib_rates::rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; } { - // O15_to_N15_reaclib + // O15_to_N15_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; + reaclib_rates::rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; } { - // p_Mg24_to_Na22_He4_modified + // Mg24_p_p_to_Na22_He4_beta_pos_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_Mg24); #endif - rate_p_Mg24_to_Na22_He4_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg24_to_Na22_He4_modified) = rate; + modified_rates::rate_Mg24_p_p_to_Na22_He4_beta_pos_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified) = rate; } - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F17_to_O17_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O17_to_F17_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_Ne18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_O18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne18_to_F18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_O18_to_F18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F19_to_Ne19_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne19_to_F19_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na21_Ne21_meta, j_Na21_Ne21_rhoy, j_Na21_Ne21_temp, j_Na21_Ne21_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na21_to_Ne21_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Na21) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne21_Na21_meta, j_Ne21_Na21_rhoy, j_Ne21_Na21_temp, j_Ne21_Na21_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne21_to_Na21_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne21) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na22_Ne22_meta, j_Na22_Ne22_rhoy, j_Na22_Ne22_temp, j_Na22_Ne22_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na22_to_Ne22_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne22_Na22_meta, j_Ne22_Na22_rhoy, j_Ne22_Na22_temp, j_Ne22_Na22_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne22_to_Na22_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne22) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(H1) = - -2.0*screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*Y(H1)*state.rho; + -2.0*screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*Y(H1)*state.rho; ydot_nuc(He4) = - screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*Y(H1)*state.rho; + screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*Y(H1)*state.rho; ydot_nuc(C12) = 0.0_rt; ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14); + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O16) = 0.0_rt; ydot_nuc(O17) = - (screened_rates(k_F17_to_O17_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(O18) = - (screened_rates(k_F18_to_O18_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_weaktab)*Y(O18)); + (screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)); ydot_nuc(F17) = - (-screened_rates(k_F17_to_O17_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (-screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(F18) = - (-screened_rates(k_F18_to_O18_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_weaktab)*Y(O18)) + - (screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (-screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)) + + (screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(F19) = - (screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne18) = - (-screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (-screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(Ne19) = - (-screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (-screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne20) = 0.0_rt; ydot_nuc(Ne21) = - (screened_rates(k_Na21_to_Ne21_weaktab)*Y(Na21) + -screened_rates(k_Ne21_to_Na21_weaktab)*Y(Ne21)); + (screened_rates(k_Na21_to_Ne21_electron_capture_weaktab)*Y(Na21) + -screened_rates(k_Ne21_to_Na21_beta_neg_weaktab)*Y(Ne21)); ydot_nuc(Ne22) = - (screened_rates(k_Na22_to_Ne22_weaktab)*Y(Na22) + -screened_rates(k_Ne22_to_Na22_weaktab)*Y(Ne22)); + (screened_rates(k_Na22_to_Ne22_electron_capture_weaktab)*Y(Na22) + -screened_rates(k_Ne22_to_Na22_beta_neg_weaktab)*Y(Ne22)); ydot_nuc(Na21) = - (-screened_rates(k_Na21_to_Ne21_weaktab)*Y(Na21) + screened_rates(k_Ne21_to_Na21_weaktab)*Y(Ne21)); + (-screened_rates(k_Na21_to_Ne21_electron_capture_weaktab)*Y(Na21) + screened_rates(k_Ne21_to_Na21_beta_neg_weaktab)*Y(Ne21)); ydot_nuc(Na22) = - screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*Y(H1)*state.rho + - (-screened_rates(k_Na22_to_Ne22_weaktab)*Y(Na22) + screened_rates(k_Ne22_to_Na22_weaktab)*Y(Ne22)); + screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*Y(H1)*state.rho + + (-screened_rates(k_Na22_to_Ne22_electron_capture_weaktab)*Y(Na22) + screened_rates(k_Ne22_to_Na22_beta_neg_weaktab)*Y(Ne22)); ydot_nuc(Na23) = 0.0_rt; ydot_nuc(Mg24) = - -screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*Y(H1)*state.rho; + -screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*Y(H1)*state.rho; ydot_nuc(Al27) = 0.0_rt; @@ -1073,88 +909,88 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + - (-screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (-screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (-screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_derived)*Y(Na21)) + - (-screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + - (-screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_derived)*Y(Na23)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + + (-screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_derived)*Y(Na21)) + + (-screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (-screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_derived)*Y(Na23)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (-screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(Na21)*Y(H1)*state.rho) + - (screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + - (screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + - -2.0*screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*Y(H1)*state.rho; + (-screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (-screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(Na21)*Y(H1)*state.rho) + + (screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + + -2.0*screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*Y(H1)*state.rho; ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (-screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (-screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (-screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + - (-screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + screened_rates(k_Ne22_to_He4_O18_derived)*Y(Ne22)) + - (-screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_derived)*Y(Na21)) + - (-screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + - (-screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Al27_to_He4_Na23_derived)*Y(Al27)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (-screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_derived)*Y(P31)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (-screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (-screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (-screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + screened_rates(k_Ne22_to_He4_O18_derived)*Y(Ne22)) + + (-screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_derived)*Y(Na21)) + + (-screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (-screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Al27_to_He4_Na23_derived)*Y(Al27)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_derived)*Y(P31)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (-screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (-screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(Ne22)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(Na21)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + - -1.5*screened_rates(k_He4_Na22_to_Si28_modified)*Y(He4)*Y(Na22)*state.rho + - screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*Y(H1)*state.rho + + (screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(Ne22)*Y(H1)*state.rho) + + (-screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(Na21)*Y(H1)*state.rho) + + (-screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + (-screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (-screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + + -1.5*screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(He4)*Y(Na22)*state.rho + + screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*Y(H1)*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + @@ -1163,197 +999,197 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_Fe52_He4_approx)*Y(Ni56)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + -screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + (screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + -screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - (-screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + (-screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived)*Y(N14)); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - (screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + - (-screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho); + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + (screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_derived)*Y(N14)) + + (-screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - (-screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (-screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + (-screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (-screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - (screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + - (-screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (-screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + (screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_derived)*Y(O14)) + + (-screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (-screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - (screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + - (-screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + (screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_derived)*Y(O15)) + + (-screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_derived)*Y(O16)) + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + -screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(O17) = - (-screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + - (-screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + - (screened_rates(k_F17_to_O17_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (-screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*Y(N14)*state.rho) + + (screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + -screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(O18) = - (-screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + screened_rates(k_Ne22_to_He4_O18_derived)*Y(Ne22)) + - (-screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_F18_to_O18_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_weaktab)*Y(O18)); + (-screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + screened_rates(k_Ne22_to_He4_O18_derived)*Y(Ne22)) + + (-screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + -screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)); ydot_nuc(F17) = - (screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + - (-screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (-screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_derived)*Y(Na21)) + - (screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + - (-screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + - (-screened_rates(k_F17_to_O17_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_weaktab)*Y(O17)); + (screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_derived)*Y(F17)) + + (-screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_derived)*Y(Na21)) + + (screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*Y(H1)*state.rho) + + (-screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (-screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17) + screened_rates(k_O17_to_F17_beta_neg_weaktab)*Y(O17)); ydot_nuc(F18) = - (screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + - (screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + - (-screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + - (-screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_F18_to_O18_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_weaktab)*Y(O18)) + - (screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_derived)*Y(F18)) + + (screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_derived)*Y(F18)) + + (-screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (-screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + screened_rates(k_O18_to_F18_beta_neg_weaktab)*Y(O18)) + + (screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + -screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(F19) = - (screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + - (screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + - (-screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (-screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + - (-screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_derived)*Y(F19)) + + (screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_derived)*Y(F19)) + + (-screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (-screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + -screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne18) = - (screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + - (screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + - (-screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(Na21)*Y(H1)*state.rho) + - (-screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_weaktab)*Y(F18)); + (screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_derived)*Y(Ne18)) + + (screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_derived)*Y(Ne18)) + + (-screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(Na21)*Y(H1)*state.rho) + + (-screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18) + screened_rates(k_F18_to_Ne18_beta_neg_weaktab)*Y(F18)); ydot_nuc(Ne19) = - (screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + - (screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + - (-screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + - (-screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_weaktab)*Y(F19)); + (screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_derived)*Y(Ne19)) + + (screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_derived)*Y(Ne19)) + + (-screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + (-screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19) + screened_rates(k_F19_to_Ne19_beta_neg_weaktab)*Y(F19)); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + - (-screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_derived)*Y(Na21)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_derived)*Y(Na21)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(Ne21) = - (screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + - (-screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + - (screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_Na21_to_Ne21_weaktab)*Y(Na21) + -screened_rates(k_Ne21_to_Na21_weaktab)*Y(Ne21)); + (screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne21_to_He4_O17_derived)*Y(Ne21)) + + (-screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_Na21_to_Ne21_electron_capture_weaktab)*Y(Na21) + -screened_rates(k_Ne21_to_Na21_beta_neg_weaktab)*Y(Ne21)); ydot_nuc(Ne22) = - (screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + -screened_rates(k_Ne22_to_He4_O18_derived)*Y(Ne22)) + - (-screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_derived)*Y(Na23)) + - (screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_Na22_to_Ne22_weaktab)*Y(Na22) + -screened_rates(k_Ne22_to_Na22_weaktab)*Y(Ne22)); + (screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + -screened_rates(k_Ne22_to_He4_O18_derived)*Y(Ne22)) + + (-screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_derived)*Y(Na23)) + + (screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Na22_to_Ne22_electron_capture_weaktab)*Y(Na22) + -screened_rates(k_Ne22_to_Na22_beta_neg_weaktab)*Y(Ne22)); ydot_nuc(Na21) = - (screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Na21_to_He4_F17_derived)*Y(Na21)) + - (screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + -screened_rates(k_Na21_to_p_Ne20_derived)*Y(Na21)) + - (screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(Na21)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + - (-screened_rates(k_Na21_to_Ne21_weaktab)*Y(Na21) + screened_rates(k_Ne21_to_Na21_weaktab)*Y(Ne21)); + (screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Na21_to_He4_F17_derived)*Y(Na21)) + + (screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + -screened_rates(k_Na21_to_p_Ne20_derived)*Y(Na21)) + + (screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(Na21)*Y(H1)*state.rho) + + (-screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + + (-screened_rates(k_Na21_to_Ne21_electron_capture_weaktab)*Y(Na21) + screened_rates(k_Ne21_to_Na21_beta_neg_weaktab)*Y(Ne21)); ydot_nuc(Na22) = - (screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + - (screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + - (screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + - -screened_rates(k_He4_Na22_to_Si28_modified)*Y(He4)*Y(Na22)*state.rho + - screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*Y(H1)*state.rho + - (-screened_rates(k_Na22_to_Ne22_weaktab)*Y(Na22) + screened_rates(k_Ne22_to_Na22_weaktab)*Y(Ne22)); + (screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18_derived)*Y(Na22)) + + (screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21_derived)*Y(Na22)) + + (screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*Y(H1)*state.rho) + + -screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(He4)*Y(Na22)*state.rho + + screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*Y(H1)*state.rho + + (-screened_rates(k_Na22_to_Ne22_electron_capture_weaktab)*Y(Na22) + screened_rates(k_Ne22_to_Na22_beta_neg_weaktab)*Y(Ne22)); ydot_nuc(Na23) = - (screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + - (screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + -screened_rates(k_Na23_to_p_Ne22_derived)*Y(Na23)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Al27_to_He4_Na23_derived)*Y(Al27)) + + (screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Na23_to_He4_F19_derived)*Y(Na23)) + + (screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + -screened_rates(k_Na23_to_p_Ne22_derived)*Y(Na23)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Al27_to_He4_Na23_derived)*Y(Al27)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + 0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + - -screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*Y(H1)*state.rho; + (screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + + -screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*Y(H1)*state.rho; ydot_nuc(Al27) = - (screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + -screened_rates(k_Al27_to_He4_Na23_derived)*Y(Al27)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_derived)*Y(P31)) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); + (screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + -screened_rates(k_Al27_to_He4_Na23_derived)*Y(Al27)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_derived)*Y(P31)) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + - screened_rates(k_He4_Na22_to_Si28_modified)*Y(He4)*Y(Na22)*state.rho; + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho + + screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(He4)*Y(Na22)*state.rho; ydot_nuc(P31) = - (screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + -screened_rates(k_P31_to_He4_Al27_derived)*Y(P31)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + -screened_rates(k_P31_to_He4_Al27_derived)*Y(P31)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -1434,90 +1270,92 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - 2.0*screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(Na21)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(Ne22)*state.rho - screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho - 2.0*screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*state.rho - screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(Na21)*state.rho - screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(Ne22)*state.rho - screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho + screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho + screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(Na21)*state.rho + screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(Ne18)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho + screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho + screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho + screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(Na21)*state.rho + screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(Ne18)*state.rho + screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, C13, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived) - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho + screened_rates(k_N14_to_p_C13_derived) - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_derived); jac.set(H1, N14, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(H1, N15, scratch); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_derived); + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_derived); jac.set(H1, O14, scratch); - scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14_derived); + scratch = screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14_derived); jac.set(H1, O15, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_p_N15_derived) - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_derived); jac.set(H1, O16, scratch); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, O17, scratch); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(H1, O18, scratch); - scratch = screened_rates(k_F17_to_p_O16_derived) + screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_derived); jac.set(H1, F17, scratch); - scratch = screened_rates(k_F18_to_p_O17_derived) + screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_derived); jac.set(H1, F18, scratch); - scratch = screened_rates(k_F19_to_p_O18_derived) + screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_derived); jac.set(H1, F19, scratch); - scratch = screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_p_F17_derived); + scratch = screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_p_F17_derived); jac.set(H1, Ne18, scratch); - scratch = screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_p_F18_derived); + scratch = screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_p_F18_derived); jac.set(H1, Ne19, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_p_F19_derived) - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_derived); jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho; jac.set(H1, Ne21, scratch); - scratch = -screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(H1)*state.rho - screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(H1)*state.rho; jac.set(H1, Ne22, scratch); - scratch = screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(He4)*state.rho + screened_rates(k_Na21_to_p_Ne20_derived) - screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(He4)*state.rho - screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_derived); jac.set(H1, Na21, scratch); - scratch = screened_rates(k_Na22_to_p_Ne21_derived) - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_derived); jac.set(H1, Na22, scratch); - scratch = screened_rates(k_Na23_to_p_Ne22_derived) - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_derived); jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived) - screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(H1)*state.rho - 2.0*screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - 2.0*screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(H1)*state.rho - screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1535,84 +1373,84 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(Na21)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(Ne22)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*state.rho + screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(Na21)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(Ne22)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(Na21)*state.rho - 1.5*screened_rates(k_He4_Na22_to_Si28_modified)*Y(Na22)*state.rho - screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(Na23)*state.rho - screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(Ne18)*state.rho - screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho - screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho - screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(O18)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(Na21)*state.rho - 1.5*screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(Na22)*state.rho - screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho - screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho - screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(O18)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); jac.set(He4, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(He4, N15, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(He4, O14, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho; jac.set(He4, O15, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(He4, O17, scratch); - scratch = -screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(He4, O18, scratch); - scratch = -screened_rates(k_He4_F17_to_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho + screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho + screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(He4, F17, scratch); - scratch = screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_He4_N14_derived); jac.set(He4, F18, scratch); - scratch = screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(He4)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(He4)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_He4_N15_derived); jac.set(He4, F19, scratch); - scratch = -screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived); + scratch = -screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14_derived); jac.set(He4, Ne18, scratch); - scratch = -screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived); + scratch = -screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_He4_O15_derived); jac.set(He4, Ne19, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived) + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_Ne21_to_He4_O17_derived) + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(H1)*state.rho + screened_rates(k_Ne21_to_He4_O17_derived); jac.set(He4, Ne21, scratch); - scratch = screened_rates(k_Ne22_to_He4_O18_derived) + screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(H1)*state.rho + screened_rates(k_Ne22_to_He4_O18_derived); jac.set(He4, Ne22, scratch); - scratch = -screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_derived) + screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(He4)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(H1)*state.rho + screened_rates(k_Na21_to_He4_F17_derived); jac.set(He4, Na21, scratch); - scratch = -1.5*screened_rates(k_He4_Na22_to_Si28_modified)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_derived) + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; + scratch = -1.5*screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(He4)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(H1)*state.rho + screened_rates(k_Na22_to_He4_F18_derived); jac.set(He4, Na22, scratch); - scratch = -screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_derived) + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho + screened_rates(k_Na23_to_He4_F19_derived); jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived) + screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(H1)*state.rho + screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_Al27_to_He4_Na23_derived) - screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho + screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho + screened_rates(k_Al27_to_He4_Na23_derived); jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_P31_to_He4_Al27_derived) + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho + screened_rates(k_P31_to_He4_Al27_derived); jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -1636,13 +1474,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni56_to_Fe52_He4_approx); jac.set(He4, Ni56, scratch); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); jac.set(C12, C13, 0.0); @@ -1652,14 +1490,14 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, N15, scratch); jac.set(C12, O14, 0.0); jac.set(C12, O15, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); jac.set(C12, O17, 0.0); @@ -1710,17 +1548,17 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ni56, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho; jac.set(C13, H1, scratch); jac.set(C13, He4, 0.0); jac.set(C13, C12, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(C13, C13, scratch); - scratch = screened_rates(k_N13_to_C13_reaclib); + scratch = screened_rates(k_N13_to_C13_beta_pos_reaclib); jac.set(C13, N13, scratch); scratch = screened_rates(k_N14_to_p_C13_derived); @@ -1782,18 +1620,18 @@ void jac_nuc(const burn_t& state, jac.set(C13, Ni56, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); jac.set(N13, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_reaclib) - screened_rates(k_N13_to_p_C12_derived) - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_N13_to_C13_beta_pos_reaclib) - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); @@ -1805,7 +1643,7 @@ void jac_nuc(const burn_t& state, jac.set(N13, O15, 0.0); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, O17, 0.0); @@ -1856,25 +1694,25 @@ void jac_nuc(const burn_t& state, jac.set(N13, Ni56, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(N14, H1, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, C12, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, C13, scratch); jac.set(N14, N13, 0.0); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_to_p_C13_derived) - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_N14_to_p_C13_derived); jac.set(N14, N14, scratch); jac.set(N14, N15, 0.0); - scratch = screened_rates(k_O14_to_N14_reaclib); + scratch = screened_rates(k_O14_to_N14_beta_pos_reaclib); jac.set(N14, O14, scratch); scratch = screened_rates(k_O15_to_p_N14_derived); @@ -1882,7 +1720,7 @@ void jac_nuc(const burn_t& state, jac.set(N14, O16, 0.0); - scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, O17, scratch); jac.set(N14, O18, 0.0); @@ -1932,13 +1770,13 @@ void jac_nuc(const burn_t& state, jac.set(N14, Ni56, 0.0); - scratch = -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(N15, H1, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(C12)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho; jac.set(N15, He4, scratch); - scratch = screened_rates(k_He4_C12_to_p_N15_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_derived)*Y(He4)*state.rho; jac.set(N15, C12, scratch); jac.set(N15, C13, 0.0); @@ -1947,12 +1785,12 @@ void jac_nuc(const burn_t& state, jac.set(N15, N14, 0.0); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(N15, N15, scratch); jac.set(N15, O14, 0.0); - scratch = screened_rates(k_O15_to_N15_reaclib); + scratch = screened_rates(k_O15_to_N15_beta_pos_reaclib); jac.set(N15, O15, scratch); scratch = screened_rates(k_O16_to_p_N15_derived); @@ -1960,7 +1798,7 @@ void jac_nuc(const burn_t& state, jac.set(N15, O17, 0.0); - scratch = screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(N15, O18, scratch); jac.set(N15, F17, 0.0); @@ -2008,24 +1846,24 @@ void jac_nuc(const burn_t& state, jac.set(N15, Ni56, 0.0); - scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho + screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho; jac.set(O14, H1, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(O14, He4, scratch); jac.set(O14, C12, 0.0); jac.set(O14, C13, 0.0); - scratch = screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho; jac.set(O14, N13, scratch); jac.set(O14, N14, 0.0); jac.set(O14, N15, 0.0); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_reaclib) - screened_rates(k_O14_to_p_N13_derived); + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_beta_pos_reaclib) - screened_rates(k_O14_to_p_N13_derived); jac.set(O14, O14, scratch); jac.set(O14, O15, 0.0); @@ -2036,7 +1874,7 @@ void jac_nuc(const burn_t& state, jac.set(O14, O18, 0.0); - scratch = screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho; jac.set(O14, F17, scratch); jac.set(O14, F18, 0.0); @@ -2082,10 +1920,10 @@ void jac_nuc(const burn_t& state, jac.set(O14, Ni56, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho; jac.set(O15, H1, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho; jac.set(O15, He4, scratch); jac.set(O15, C12, 0.0); @@ -2094,14 +1932,14 @@ void jac_nuc(const burn_t& state, jac.set(O15, N13, 0.0); - scratch = screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, N14, scratch); jac.set(O15, N15, 0.0); jac.set(O15, O14, 0.0); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_reaclib) - screened_rates(k_O15_to_p_N14_derived); + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_beta_pos_reaclib) - screened_rates(k_O15_to_p_N14_derived); jac.set(O15, O15, scratch); jac.set(O15, O16, 0.0); @@ -2112,7 +1950,7 @@ void jac_nuc(const burn_t& state, jac.set(O15, F17, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, F18, scratch); jac.set(O15, F19, 0.0); @@ -2156,30 +1994,30 @@ void jac_nuc(const burn_t& state, jac.set(O15, Ni56, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); jac.set(O16, C13, 0.0); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, N15, scratch); jac.set(O16, O14, 0.0); jac.set(O16, O15, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_O16_to_p_N15_derived) - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_O16_to_p_N15_derived); jac.set(O16, O16, scratch); jac.set(O16, O17, 0.0); @@ -2191,7 +2029,7 @@ void jac_nuc(const burn_t& state, jac.set(O16, F18, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, F19, scratch); jac.set(O16, Ne18, 0.0); @@ -2233,10 +2071,10 @@ void jac_nuc(const burn_t& state, jac.set(O16, Ni56, 0.0); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(O17, H1, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(N14)*state.rho - screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho; jac.set(O17, He4, scratch); jac.set(O17, C12, 0.0); @@ -2245,7 +2083,7 @@ void jac_nuc(const burn_t& state, jac.set(O17, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_p_O17_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_derived)*Y(He4)*state.rho; jac.set(O17, N14, scratch); jac.set(O17, N15, 0.0); @@ -2256,12 +2094,12 @@ void jac_nuc(const burn_t& state, jac.set(O17, O16, 0.0); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_to_F17_weaktab) - screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_to_F17_beta_neg_weaktab); jac.set(O17, O17, scratch); jac.set(O17, O18, 0.0); - scratch = screened_rates(k_F17_to_O17_weaktab); + scratch = screened_rates(k_F17_to_O17_electron_capture_weaktab); jac.set(O17, F17, scratch); scratch = screened_rates(k_F18_to_p_O17_derived); @@ -2308,10 +2146,10 @@ void jac_nuc(const burn_t& state, jac.set(O17, Ni56, 0.0); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(O18, H1, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(O18)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(N15)*state.rho - screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(O18)*state.rho; jac.set(O18, He4, scratch); jac.set(O18, C12, 0.0); @@ -2322,7 +2160,7 @@ void jac_nuc(const burn_t& state, jac.set(O18, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_p_O18_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_derived)*Y(He4)*state.rho; jac.set(O18, N15, scratch); jac.set(O18, O14, 0.0); @@ -2333,12 +2171,12 @@ void jac_nuc(const burn_t& state, jac.set(O18, O17, 0.0); - scratch = -screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_O18_to_F18_weaktab) - screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_to_F18_beta_neg_weaktab); jac.set(O18, O18, scratch); jac.set(O18, F17, 0.0); - scratch = screened_rates(k_F18_to_O18_weaktab); + scratch = screened_rates(k_F18_to_O18_electron_capture_weaktab); jac.set(O18, F18, scratch); scratch = screened_rates(k_F19_to_p_O18_derived); @@ -2383,10 +2221,10 @@ void jac_nuc(const burn_t& state, jac.set(O18, Ni56, 0.0); - scratch = -screened_rates(k_p_F17_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_F17_p_to_He4_O14_derived)*Y(F17)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho; jac.set(F17, H1, scratch); - scratch = -screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(F17, He4, scratch); jac.set(F17, C12, 0.0); @@ -2399,20 +2237,20 @@ void jac_nuc(const burn_t& state, jac.set(F17, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(F17, O14, scratch); jac.set(F17, O15, 0.0); - scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, O16, scratch); - scratch = screened_rates(k_O17_to_F17_weaktab); + scratch = screened_rates(k_O17_to_F17_beta_neg_weaktab); jac.set(F17, O17, scratch); jac.set(F17, O18, 0.0); - scratch = -screened_rates(k_F17_to_O17_weaktab) - screened_rates(k_F17_to_p_O16_derived) - screened_rates(k_He4_F17_to_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_p_F17_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho - screened_rates(k_F17_p_to_He4_O14_derived)*Y(H1)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho - screened_rates(k_F17_to_O17_electron_capture_weaktab) - screened_rates(k_F17_to_p_O16_derived); jac.set(F17, F17, scratch); jac.set(F17, F18, 0.0); @@ -2424,7 +2262,7 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ne19, 0.0); - scratch = screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, Ne20, scratch); jac.set(F17, Ne21, 0.0); @@ -2460,10 +2298,10 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ni56, 0.0); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*state.rho + screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho; jac.set(F18, H1, scratch); - scratch = -screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho + screened_rates(k_He4_O15_to_p_F18_derived)*Y(O15)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho + screened_rates(k_O15_He4_to_p_F18_derived)*Y(O15)*state.rho; jac.set(F18, He4, scratch); jac.set(F18, C12, 0.0); @@ -2472,32 +2310,32 @@ void jac_nuc(const burn_t& state, jac.set(F18, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho; jac.set(F18, N14, scratch); jac.set(F18, N15, 0.0); jac.set(F18, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_p_F18_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_p_F18_derived)*Y(He4)*state.rho; jac.set(F18, O15, scratch); jac.set(F18, O16, 0.0); - scratch = screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho; jac.set(F18, O17, scratch); - scratch = screened_rates(k_O18_to_F18_weaktab); + scratch = screened_rates(k_O18_to_F18_beta_neg_weaktab); jac.set(F18, O18, scratch); jac.set(F18, F17, 0.0); - scratch = -screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_F18_to_Ne18_weaktab) - screened_rates(k_F18_to_O18_weaktab) - screened_rates(k_F18_to_p_O17_derived) - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_to_He4_N14_derived) - screened_rates(k_F18_to_Ne18_beta_neg_weaktab) - screened_rates(k_F18_to_O18_electron_capture_weaktab) - screened_rates(k_F18_to_p_O17_derived); jac.set(F18, F18, scratch); jac.set(F18, F19, 0.0); - scratch = screened_rates(k_Ne18_to_F18_weaktab); + scratch = screened_rates(k_Ne18_to_F18_electron_capture_weaktab); jac.set(F18, Ne18, scratch); scratch = screened_rates(k_Ne19_to_p_F18_derived); @@ -2505,7 +2343,7 @@ void jac_nuc(const burn_t& state, jac.set(F18, Ne20, 0.0); - scratch = screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(H1)*state.rho; jac.set(F18, Ne21, scratch); jac.set(F18, Ne22, 0.0); @@ -2539,10 +2377,10 @@ void jac_nuc(const burn_t& state, jac.set(F18, Ni56, 0.0); - scratch = -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(Ne22)*state.rho + screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(Ne22)*state.rho + screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho; jac.set(F19, H1, scratch); - scratch = -screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho + screened_rates(k_He4_O16_to_p_F19_derived)*Y(O16)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho + screened_rates(k_O16_He4_to_p_F19_derived)*Y(O16)*state.rho; jac.set(F19, He4, scratch); jac.set(F19, C12, 0.0); @@ -2553,31 +2391,31 @@ void jac_nuc(const burn_t& state, jac.set(F19, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho; jac.set(F19, N15, scratch); jac.set(F19, O14, 0.0); jac.set(F19, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_p_F19_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_p_F19_derived)*Y(He4)*state.rho; jac.set(F19, O16, scratch); jac.set(F19, O17, 0.0); - scratch = screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho; jac.set(F19, O18, scratch); jac.set(F19, F17, 0.0); jac.set(F19, F18, 0.0); - scratch = -screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_F19_to_Ne19_weaktab) - screened_rates(k_F19_to_p_O18_derived) - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_to_He4_N15_derived) - screened_rates(k_F19_to_Ne19_beta_neg_weaktab) - screened_rates(k_F19_to_p_O18_derived); jac.set(F19, F19, scratch); jac.set(F19, Ne18, 0.0); - scratch = screened_rates(k_Ne19_to_F19_weaktab); + scratch = screened_rates(k_Ne19_to_F19_electron_capture_weaktab); jac.set(F19, Ne19, scratch); scratch = screened_rates(k_Ne20_to_p_F19_derived); @@ -2585,7 +2423,7 @@ void jac_nuc(const burn_t& state, jac.set(F19, Ne21, 0.0); - scratch = screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(H1)*state.rho; jac.set(F19, Ne22, scratch); jac.set(F19, Na21, 0.0); @@ -2617,10 +2455,10 @@ void jac_nuc(const burn_t& state, jac.set(F19, Ni56, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(Na21)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(Na21)*state.rho; jac.set(Ne18, H1, scratch); - scratch = -screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(Ne18)*state.rho + screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(Ne18)*state.rho + screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho; jac.set(Ne18, He4, scratch); jac.set(Ne18, C12, 0.0); @@ -2633,7 +2471,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho; jac.set(Ne18, O14, scratch); jac.set(Ne18, O15, 0.0); @@ -2644,15 +2482,15 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, O18, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho; jac.set(Ne18, F17, scratch); - scratch = screened_rates(k_F18_to_Ne18_weaktab); + scratch = screened_rates(k_F18_to_Ne18_beta_neg_weaktab); jac.set(Ne18, F18, scratch); jac.set(Ne18, F19, 0.0); - scratch = -screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_weaktab) - screened_rates(k_Ne18_to_He4_O14_derived) - screened_rates(k_Ne18_to_p_F17_derived); + scratch = -screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_electron_capture_weaktab) - screened_rates(k_Ne18_to_He4_O14_derived) - screened_rates(k_Ne18_to_p_F17_derived); jac.set(Ne18, Ne18, scratch); jac.set(Ne18, Ne19, 0.0); @@ -2663,7 +2501,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, Ne22, 0.0); - scratch = screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(H1)*state.rho; jac.set(Ne18, Na21, scratch); jac.set(Ne18, Na22, 0.0); @@ -2692,10 +2530,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, Ni56, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*state.rho; jac.set(Ne19, H1, scratch); - scratch = -screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho; + scratch = -screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho; jac.set(Ne19, He4, scratch); jac.set(Ne19, C12, 0.0); @@ -2710,7 +2548,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho; jac.set(Ne19, O15, scratch); jac.set(Ne19, O16, 0.0); @@ -2721,15 +2559,15 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, F17, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho; jac.set(Ne19, F18, scratch); - scratch = screened_rates(k_F19_to_Ne19_weaktab); + scratch = screened_rates(k_F19_to_Ne19_beta_neg_weaktab); jac.set(Ne19, F19, scratch); jac.set(Ne19, Ne18, 0.0); - scratch = -screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne19_to_F19_weaktab) - screened_rates(k_Ne19_to_He4_O15_derived) - screened_rates(k_Ne19_to_p_F18_derived); + scratch = -screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne19_to_F19_electron_capture_weaktab) - screened_rates(k_Ne19_to_He4_O15_derived) - screened_rates(k_Ne19_to_p_F18_derived); jac.set(Ne19, Ne19, scratch); jac.set(Ne19, Ne20, 0.0); @@ -2740,7 +2578,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, Na21, 0.0); - scratch = screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(H1)*state.rho; jac.set(Ne19, Na22, scratch); jac.set(Ne19, Na23, 0.0); @@ -2767,10 +2605,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, Ni56, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*state.rho; jac.set(Ne20, H1, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(F17)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -2788,26 +2626,26 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); jac.set(Ne20, O17, 0.0); jac.set(Ne20, O18, 0.0); - scratch = screened_rates(k_He4_F17_to_p_Ne20_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_derived)*Y(He4)*state.rho; jac.set(Ne20, F17, scratch); jac.set(Ne20, F18, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, F19, scratch); jac.set(Ne20, Ne18, 0.0); jac.set(Ne20, Ne19, 0.0); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived) - screened_rates(k_Ne20_to_p_F19_derived) - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived) - screened_rates(k_Ne20_to_p_F19_derived); jac.set(Ne20, Ne20, scratch); jac.set(Ne20, Ne21, 0.0); @@ -2819,7 +2657,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Na22, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); @@ -2845,10 +2683,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Ni56, 0.0); - scratch = -screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho; + scratch = -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(Ne21)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho; jac.set(Ne21, H1, scratch); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho; jac.set(Ne21, He4, scratch); jac.set(Ne21, C12, 0.0); @@ -2867,14 +2705,14 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, O16, 0.0); - scratch = screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, O17, scratch); jac.set(Ne21, O18, 0.0); jac.set(Ne21, F17, 0.0); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, F18, scratch); jac.set(Ne21, F19, 0.0); @@ -2885,12 +2723,12 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, Ne20, 0.0); - scratch = -screened_rates(k_Ne21_to_He4_O17_derived) - screened_rates(k_Ne21_to_Na21_weaktab) - screened_rates(k_p_Ne21_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne21_p_to_He4_F18_derived)*Y(H1)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne21_to_He4_O17_derived) - screened_rates(k_Ne21_to_Na21_beta_neg_weaktab); jac.set(Ne21, Ne21, scratch); jac.set(Ne21, Ne22, 0.0); - scratch = screened_rates(k_Na21_to_Ne21_weaktab); + scratch = screened_rates(k_Na21_to_Ne21_electron_capture_weaktab); jac.set(Ne21, Na21, scratch); scratch = screened_rates(k_Na22_to_p_Ne21_derived); @@ -2920,10 +2758,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, Ni56, 0.0); - scratch = -screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(Ne22)*state.rho - screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*state.rho; + scratch = -screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(Ne22)*state.rho - screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*state.rho; jac.set(Ne22, H1, scratch); - scratch = screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(O18)*state.rho; + scratch = screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(O18)*state.rho; jac.set(Ne22, He4, scratch); jac.set(Ne22, C12, 0.0); @@ -2944,14 +2782,14 @@ void jac_nuc(const burn_t& state, jac.set(Ne22, O17, 0.0); - scratch = screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*state.rho; jac.set(Ne22, O18, scratch); jac.set(Ne22, F17, 0.0); jac.set(Ne22, F18, 0.0); - scratch = screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(He4)*state.rho; jac.set(Ne22, F19, scratch); jac.set(Ne22, Ne18, 0.0); @@ -2962,12 +2800,12 @@ void jac_nuc(const burn_t& state, jac.set(Ne22, Ne21, 0.0); - scratch = -screened_rates(k_Ne22_to_He4_O18_derived) - screened_rates(k_Ne22_to_Na22_weaktab) - screened_rates(k_p_Ne22_to_He4_F19_derived)*Y(H1)*state.rho - screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne22_p_to_He4_F19_derived)*Y(H1)*state.rho - screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne22_to_He4_O18_derived) - screened_rates(k_Ne22_to_Na22_beta_neg_weaktab); jac.set(Ne22, Ne22, scratch); jac.set(Ne22, Na21, 0.0); - scratch = screened_rates(k_Na22_to_Ne22_weaktab); + scratch = screened_rates(k_Na22_to_Ne22_electron_capture_weaktab); jac.set(Ne22, Na22, scratch); scratch = screened_rates(k_Na23_to_p_Ne22_derived); @@ -2995,10 +2833,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne22, Ni56, 0.0); - scratch = screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(Na21)*state.rho + screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(Na21)*state.rho + screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*state.rho; jac.set(Na21, H1, scratch); - scratch = screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(Na21)*state.rho + screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(Ne18)*state.rho; + scratch = screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(Na21)*state.rho + screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(Ne18)*state.rho; jac.set(Na21, He4, scratch); jac.set(Na21, C12, 0.0); @@ -3021,34 +2859,34 @@ void jac_nuc(const burn_t& state, jac.set(Na21, O18, 0.0); - scratch = screened_rates(k_He4_F17_to_Na21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_Na21_reaclib)*Y(He4)*state.rho; jac.set(Na21, F17, scratch); jac.set(Na21, F18, 0.0); jac.set(Na21, F19, 0.0); - scratch = screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*state.rho; jac.set(Na21, Ne18, scratch); jac.set(Na21, Ne19, 0.0); - scratch = screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(H1)*state.rho; jac.set(Na21, Ne20, scratch); - scratch = screened_rates(k_Ne21_to_Na21_weaktab); + scratch = screened_rates(k_Ne21_to_Na21_beta_neg_weaktab); jac.set(Na21, Ne21, scratch); jac.set(Na21, Ne22, 0.0); - scratch = -screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(He4)*state.rho - screened_rates(k_Na21_to_He4_F17_derived) - screened_rates(k_Na21_to_Ne21_weaktab) - screened_rates(k_Na21_to_p_Ne20_derived) - screened_rates(k_p_Na21_to_He4_Ne18_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(He4)*state.rho - screened_rates(k_Na21_p_to_He4_Ne18_derived)*Y(H1)*state.rho - screened_rates(k_Na21_to_He4_F17_derived) - screened_rates(k_Na21_to_Ne21_electron_capture_weaktab) - screened_rates(k_Na21_to_p_Ne20_derived); jac.set(Na21, Na21, scratch); jac.set(Na21, Na22, 0.0); jac.set(Na21, Na23, 0.0); - scratch = screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(H1)*state.rho; jac.set(Na21, Mg24, scratch); jac.set(Na21, Al27, 0.0); @@ -3071,10 +2909,10 @@ void jac_nuc(const burn_t& state, jac.set(Na21, Ni56, 0.0); - scratch = screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho; + scratch = screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*state.rho - screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(Na22)*state.rho + screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho; jac.set(Na22, H1, scratch); - scratch = screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_Na22_to_Si28_modified)*Y(Na22)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho; + scratch = screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(Na22)*state.rho + screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho; jac.set(Na22, He4, scratch); jac.set(Na22, C12, 0.0); @@ -3099,32 +2937,32 @@ void jac_nuc(const burn_t& state, jac.set(Na22, F17, 0.0); - scratch = screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho; jac.set(Na22, F18, scratch); jac.set(Na22, F19, 0.0); jac.set(Na22, Ne18, 0.0); - scratch = screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho; jac.set(Na22, Ne19, scratch); jac.set(Na22, Ne20, 0.0); - scratch = screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho; jac.set(Na22, Ne21, scratch); - scratch = screened_rates(k_Ne22_to_Na22_weaktab); + scratch = screened_rates(k_Ne22_to_Na22_beta_neg_weaktab); jac.set(Na22, Ne22, scratch); jac.set(Na22, Na21, 0.0); - scratch = -screened_rates(k_He4_Na22_to_Si28_modified)*Y(He4)*state.rho - screened_rates(k_Na22_to_He4_F18_derived) - screened_rates(k_Na22_to_Ne22_weaktab) - screened_rates(k_Na22_to_p_Ne21_derived) - screened_rates(k_p_Na22_to_He4_Ne19_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(He4)*state.rho - screened_rates(k_Na22_p_to_He4_Ne19_derived)*Y(H1)*state.rho - screened_rates(k_Na22_to_He4_F18_derived) - screened_rates(k_Na22_to_Ne22_electron_capture_weaktab) - screened_rates(k_Na22_to_p_Ne21_derived); jac.set(Na22, Na22, scratch); jac.set(Na22, Na23, 0.0); - scratch = screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(H1)*state.rho; jac.set(Na22, Mg24, scratch); jac.set(Na22, Al27, 0.0); @@ -3147,10 +2985,10 @@ void jac_nuc(const burn_t& state, jac.set(Na22, Ni56, 0.0); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(Na23)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -3178,26 +3016,26 @@ void jac_nuc(const burn_t& state, jac.set(Na23, F18, 0.0); - scratch = screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho; jac.set(Na23, F19, scratch); jac.set(Na23, Ne18, 0.0); jac.set(Na23, Ne19, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); jac.set(Na23, Ne21, 0.0); - scratch = screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(H1)*state.rho; jac.set(Na23, Ne22, scratch); jac.set(Na23, Na21, 0.0); jac.set(Na23, Na22, 0.0); - scratch = -screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_to_He4_F19_derived) - screened_rates(k_Na23_to_p_Ne22_derived) - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_to_He4_F19_derived) - screened_rates(k_Na23_to_p_Ne22_derived); jac.set(Na23, Na23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_derived); @@ -3224,13 +3062,13 @@ void jac_nuc(const burn_t& state, jac.set(Na23, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(Mg24)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(Mg24)*state.rho - screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(Na21)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(Na21)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, C13, 0.0); @@ -3245,7 +3083,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); jac.set(Mg24, O17, 0.0); @@ -3262,25 +3100,25 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ne19, 0.0); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); jac.set(Mg24, Ne21, 0.0); jac.set(Mg24, Ne22, 0.0); - scratch = screened_rates(k_He4_Na21_to_p_Mg24_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Na21_He4_to_p_Mg24_derived)*Y(He4)*state.rho; jac.set(Mg24, Na21, scratch); jac.set(Mg24, Na22, 0.0); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived) - screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg24_to_Na22_He4_modified)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified)*Y(H1)*state.rho - screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -3302,13 +3140,13 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ni56, 0.0); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = -screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(Na23)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, C13, 0.0); @@ -3323,7 +3161,7 @@ void jac_nuc(const burn_t& state, jac.set(Al27, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, O17, 0.0); @@ -3350,13 +3188,13 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Na22, 0.0); - scratch = screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*state.rho; jac.set(Al27, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_Al27_to_He4_Na23_derived) - screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_to_He4_Na23_derived); jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -3379,13 +3217,13 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho + screened_rates(k_He4_Na22_to_Si28_modified)*Y(Na22)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(Na22)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, C13, 0.0); @@ -3400,7 +3238,7 @@ void jac_nuc(const burn_t& state, jac.set(Si28, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, O17, 0.0); @@ -3425,21 +3263,21 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Na21, 0.0); - scratch = screened_rates(k_He4_Na22_to_Si28_modified)*Y(He4)*state.rho; + scratch = screened_rates(k_Na22_1p5He4_to_Si28_modified)*Y(He4)*state.rho; jac.set(Si28, Na22, scratch); jac.set(Si28, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -3457,10 +3295,10 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Ni56, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -3508,13 +3346,13 @@ void jac_nuc(const burn_t& state, jac.set(P31, Mg24, 0.0); - scratch = screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho; jac.set(P31, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_P31_to_He4_Al27_derived) - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_to_He4_Al27_derived); jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -3532,10 +3370,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Ni56, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -3585,10 +3423,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_p_P31_derived); diff --git a/networks/he-burn/cno-he-burn-34am/approximate_rates.H b/networks/he-burn/cno-he-burn-34am/approximate_rates.H index cb7a05d24..147172f47 100644 --- a/networks/he-burn/cno-he-burn-34am/approximate_rates.H +++ b/networks/he-burn/cno-he-burn-34am/approximate_rates.H @@ -8,348 +8,350 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; + } + + rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; + } + + rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; + } + + rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; + } - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; } - - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; - } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; - } - - rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; - } - - rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; - } - - rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; - } - - } - #endif diff --git a/networks/he-burn/cno-he-burn-34am/branched_rates.H b/networks/he-burn/cno-he-burn-34am/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/cno-he-burn-34am/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/cno-he-burn-34am/derived_rates.H b/networks/he-burn/cno-he-burn-34am/derived_rates.H index e2b2a38fc..a915ea783 100644 --- a/networks/he-burn/cno-he-burn-34am/derived_rates.H +++ b/networks/he-burn/cno-he-burn-34am/derived_rates.H @@ -7,7059 +7,7061 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_to_p_C13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N14_to_p_C13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N14 --> p + C13 - // N14 --> p + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real C13_log_pf, dC13_log_pf_dT9; - amrex::Real C13_log_pf, dC13_log_pf_dT9; + // setting C13 log(partition function) to 0.0 by default, independent of T + C13_log_pf = 0.0_rt; + dC13_log_pf_dT9 = 0.0_rt; - // setting C13 log(partition function) to 0.0 by default, independent of T - C13_log_pf = 0.0_rt; - dC13_log_pf_dT9 = 0.0_rt; + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + C13_log_pf - N14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC13_log_pf_dT9 - dN14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C13_log_pf - N14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC13_log_pf_dT9 - dN14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrn + ln_set_rate = 41.72421240281699 + -87.62065170634826 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 41.72421240281699 + -87.62065170634826 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.62065170634826 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 87.62065170634826 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 37.17241240281699 + -93.40212170634825 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 37.17241240281699 + -93.40212170634825 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.40212170634825 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.40212170634825 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 38.39121240281698 + -101.17495170634825 * tfactors.T9i; - // ReacLib set derived from nacrr - ln_set_rate = 38.39121240281698 + -101.17495170634825 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.17495170634825 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.17495170634825 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_p_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_p_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O14 --> p + N13 - // O14 --> p + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N13_log_pf - O14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN13_log_pf_dT9 - dO14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N13_log_pf - O14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN13_log_pf_dT9 - dO14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lg06r + ln_set_rate = 35.3038971632548 + -59.81629660012578 * tfactors.T9i + 1.57122 * tfactors.T913i; - // ReacLib set derived from lg06r - ln_set_rate = 35.3038971632548 + -59.81629660012578 * tfactors.T9i + 1.57122 * tfactors.T913i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.81629660012578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.81629660012578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lg06n + ln_set_rate = 42.44239716325481 + -53.690276600125785 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from lg06n - ln_set_rate = 42.44239716325481 + -53.690276600125785 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.690276600125785 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.690276600125785 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_p_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_p_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O15 --> p + N14 - // O15 --> p + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N14_log_pf - O15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN14_log_pf_dT9 - dO15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N14_log_pf - O15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN14_log_pf_dT9 - dO15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from im05r + ln_set_rate = 30.76303704754867 + -89.56670699689953 * tfactors.T9i + + 1.5682 * tfactors.lnT9; - // ReacLib set derived from im05r - ln_set_rate = 30.76303704754867 + -89.56670699689953 * tfactors.T9i - + 1.5682 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.56670699689953 * tfactors.T9i * tfactors.T9i + + 1.5682 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.56670699689953 * tfactors.T9i * tfactors.T9i - + 1.5682 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05r + ln_set_rate = 31.68169704754867 + -87.67370699689953 * tfactors.T9i; - // ReacLib set derived from im05r - ln_set_rate = 31.68169704754867 + -87.67370699689953 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.67370699689953 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 87.67370699689953 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05n + ln_set_rate = 44.144157047548674 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.833333 * tfactors.lnT9; - // ReacLib set derived from im05n - ln_set_rate = 44.144157047548674 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from im05n + ln_set_rate = 41.03725704754867 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from im05n - ln_set_rate = 41.03725704754867 + -84.67570699689952 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.67570699689952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> p + N15 - // O16 --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + N15_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N15_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from li10r + ln_set_rate = 38.86679552635226 + -150.96226378057287 * tfactors.T9i + + 0.0459037 * tfactors.T9; - // ReacLib set derived from li10r - ln_set_rate = 38.86679552635226 + -150.96226378057287 * tfactors.T9i - + 0.0459037 * tfactors.T9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 150.96226378057287 * tfactors.T9i * tfactors.T9i + + 0.0459037; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 150.96226378057287 * tfactors.T9i * tfactors.T9i - + 0.0459037; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from li10r + ln_set_rate = 30.912955526352267 + -143.65591378057286 * tfactors.T9i; - // ReacLib set derived from li10r - ln_set_rate = 30.912955526352267 + -143.65591378057286 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 143.65591378057286 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 143.65591378057286 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from li10n + ln_set_rate = 44.33999552635227 + -140.73276378057287 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from li10n - ln_set_rate = 44.33999552635227 + -140.73276378057287 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 140.73276378057287 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 140.73276378057287 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_to_p_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F17_to_p_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 --> p + O16 - // F17 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O16_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO16_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O16_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO16_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ia08n + ln_set_rate = 40.93184403787935 + -6.965832070525503 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ia08n - ln_set_rate = 40.93184403787935 + -6.965832070525503 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.965832070525503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.965832070525503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F18 --> p + O17 - // F18 --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real O17_log_pf, dO17_log_pf_dT9; - amrex::Real O17_log_pf, dO17_log_pf_dT9; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); - // interpolating O17 partition function - get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O17_log_pf - F18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dF18_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O17_log_pf - F18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dF18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 33.72287495567065 + -71.29605321275191 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 33.72287495567065 + -71.29605321275191 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.29605321275191 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.29605321275191 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 11.255394955670651 + -65.81406921275192 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 11.255394955670651 + -65.81406921275192 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.81406921275192 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.81406921275192 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 40.22529495567065 + -65.06777321275192 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 40.22529495567065 + -65.06777321275192 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.06777321275192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.06777321275192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_He4_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_He4_N14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F18 --> He4 + N14 - // F18 --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N14_log_pf - F18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN14_log_pf_dT9 - dF18_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N14_log_pf - F18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN14_log_pf_dT9 - dF18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 38.61662473666887 + -62.20224752987261 * tfactors.T9i + -5.6227 * tfactors.T913i; - // ReacLib set derived from il10r - ln_set_rate = 38.61662473666887 + -62.20224752987261 * tfactors.T9i + -5.6227 * tfactors.T913i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 62.20224752987261 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 62.20224752987261 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 24.91396273666887 + -56.396987529872604 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 24.91396273666887 + -56.396987529872604 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 56.396987529872604 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 56.396987529872604 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.25102473666887 + -51.236647529872606 * tfactors.T9i + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.25102473666887 + -51.236647529872606 * tfactors.T9i + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 51.236647529872606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 51.236647529872606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F19 --> p + O18 - // F19 --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O18_log_pf, dO18_log_pf_dT9; - amrex::Real O18_log_pf, dO18_log_pf_dT9; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); - // interpolating O18 partition function - get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + O18_log_pf - F19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dF19_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O18_log_pf - F19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dF19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10n + ln_set_rate = 42.868088644181995 + -92.7618744782197 * tfactors.T9i + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 42.868088644181995 + -92.7618744782197 * tfactors.T9i + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.7618744782197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.7618744782197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 30.219848644181997 + -99.4871744782197 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 30.219848644181997 + -99.4871744782197 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.4871744782197 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.4871744782197 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 28.027568644181997 + -94.41868447821969 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 28.027568644181997 + -94.41868447821969 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.41868447821969 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.41868447821969 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -12.056811355818002 + -93.0066174782197 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -12.056811355818002 + -93.0066174782197 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.0066174782197 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.0066174782197 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_He4_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_He4_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F19 --> He4 + N15 - // F19 --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + N15_log_pf - F19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN15_log_pf_dT9 - dF19_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N15_log_pf - F19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN15_log_pf_dT9 - dF19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -4.0595772096034 + -50.77806404408662 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = -4.0595772096034 + -50.77806404408662 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.77806404408662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.77806404408662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 28.273522790396598 + -53.56282404408662 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 28.273522790396598 + -53.56282404408662 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 53.56282404408662 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 53.56282404408662 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 15.3204027903966 + -50.75615404408662 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 15.3204027903966 + -50.75615404408662 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.75615404408662 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.75615404408662 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 50.130922790396596 + -46.57820404408662 * tfactors.T9i + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 50.130922790396596 + -46.57820404408662 * tfactors.T9i + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.57820404408662 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.57820404408662 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_p_F17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_p_F17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne18 --> p + F17 - // Ne18 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F17_log_pf - Ne18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF17_log_pf_dT9 - dNe18_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F17_log_pf - Ne18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF17_log_pf_dT9 - dNe18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cb09 + ln_set_rate = 17.58370046698957 + -45.55769965436449 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.6337600000000001 * tfactors.lnT9; - // ReacLib set derived from cb09 - ln_set_rate = 17.58370046698957 + -45.55769965436449 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.6337600000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 45.55769965436449 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.6337600000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 45.55769965436449 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.6337600000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from cb09 + ln_set_rate = 53.00858046698957 + -50.485039254364494 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; - // ReacLib set derived from cb09 - ln_set_rate = 53.00858046698957 + -50.485039254364494 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 50.485039254364494 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 50.485039254364494 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne18 --> He4 + O14 - // Ne18 --> He4 + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O14_log_pf - Ne18_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dNe18_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O14_log_pf - Ne18_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dNe18_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from wh87n + ln_set_rate = 51.160347955038674 + -59.35823432141371 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from wh87n - ln_set_rate = 51.160347955038674 + -59.35823432141371 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.35823432141371 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.35823432141371 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 20.01796795503867 + -71.51723432141371 * tfactors.T9i + + 6.5 * tfactors.lnT9; - // ReacLib set derived from wh87r - ln_set_rate = 20.01796795503867 + -71.51723432141371 * tfactors.T9i - + 6.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.51723432141371 * tfactors.T9i * tfactors.T9i + + 6.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.51723432141371 * tfactors.T9i * tfactors.T9i - + 6.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 28.243807955038672 + -81.96823432141372 * tfactors.T9i; - // ReacLib set derived from wh87r - ln_set_rate = 28.243807955038672 + -81.96823432141372 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.96823432141372 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.96823432141372 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from wh87r + ln_set_rate = 22.56327795503867 + -71.08823432141371 * tfactors.T9i; - // ReacLib set derived from wh87r - ln_set_rate = 22.56327795503867 + -71.08823432141371 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 71.08823432141371 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 71.08823432141371 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne19 --> p + F18 - // Ne19 --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; - amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); - // interpolating Ne19 partition function - get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F18_log_pf - Ne19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dNe19_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F18_log_pf - Ne19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dNe19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 18.192220240787112 + -77.27667559674641 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 18.192220240787112 + -77.27667559674641 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.27667559674641 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.27667559674641 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -5.39950975921289 + -74.78415559674642 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = -5.39950975921289 + -74.78415559674642 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.78415559674642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.78415559674642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 81.45789024078711 + -74.38520559674642 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 81.45789024078711 + -74.38520559674642 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.38520559674642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.38520559674642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_He4_O15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_He4_O15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne19 --> He4 + O15 - // Ne19 --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; - amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); - // interpolating Ne19 partition function - get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O15_log_pf - Ne19_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO15_log_pf_dT9 - dNe19_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O15_log_pf - Ne19_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO15_log_pf_dT9 - dNe19_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from dc11r + ln_set_rate = -7.510242070092687 + -45.15053612970033 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; - // ReacLib set derived from dc11r - ln_set_rate = -7.510242070092687 + -45.15053612970033 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 45.15053612970033 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 45.15053612970033 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from dc11r + ln_set_rate = 24.694111429907313 + -46.83053612970032 * tfactors.T9i; - // ReacLib set derived from dc11r - ln_set_rate = 24.694111429907313 + -46.83053612970032 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.83053612970032 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.83053612970032 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from dc11n + ln_set_rate = 51.03075792990731 + -40.946146129700324 * tfactors.T9i + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from dc11n - ln_set_rate = 51.03075792990731 + -40.946146129700324 * tfactors.T9i + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.946146129700324 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.946146129700324 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> p + F19 - // Ne20 --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + F19_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F19_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrr + ln_set_rate = 18.711255537457795 + -156.78628300750532 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 18.711255537457795 + -156.78628300750532 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 156.78628300750532 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 156.78628300750532 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 36.72378553745779 + -150.75597300750533 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; - // ReacLib set derived from nacrr - ln_set_rate = 36.72378553745779 + -150.75597300750533 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 150.75597300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 150.75597300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrn + ln_set_rate = 42.62288553745779 + -149.04214300750533 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 42.62288553745779 + -149.04214300750533 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 149.04214300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 149.04214300750533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_to_He4_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne21_to_He4_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne21 --> He4 + O17 - // Ne21 --> He4 + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; - amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); - // interpolating Ne21 partition function - get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O17_log_pf, dO17_log_pf_dT9; - amrex::Real O17_log_pf, dO17_log_pf_dT9; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); - // interpolating O17 partition function - get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O17_log_pf - Ne21_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO17_log_pf_dT9 - dNe21_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O17_log_pf - Ne21_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO17_log_pf_dT9 - dNe21_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from be13r + ln_set_rate = 0.09298411543850094 + -90.7784662204353 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 83.7218 * tfactors.lnT9; - // ReacLib set derived from be13r - ln_set_rate = 0.09298411543850094 + -90.7784662204353 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 83.7218 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 90.7784662204353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 83.7218 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 90.7784662204353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 83.7218 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from be13r + ln_set_rate = -91.95121588456149 + -98.9451062204353 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -41.2753 * tfactors.lnT9; - // ReacLib set derived from be13r - ln_set_rate = -91.95121588456149 + -98.9451062204353 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -41.2753 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.9451062204353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -41.2753 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.9451062204353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -41.2753 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from be13r + ln_set_rate = 27.322784115438502 + -91.26872622043531 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 6.25778 * tfactors.lnT9; - // ReacLib set derived from be13r - ln_set_rate = 27.322784115438502 + -91.26872622043531 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 6.25778 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 91.26872622043531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 6.25778 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 91.26872622043531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 6.25778 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_to_He4_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne22_to_He4_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne22 --> He4 + O18 - // Ne22 --> He4 + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O18_log_pf, dO18_log_pf_dT9; - amrex::Real O18_log_pf, dO18_log_pf_dT9; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); - // interpolating O18 partition function - get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne22_log_pf, dNe22_log_pf_dT9; - amrex::Real Ne22_log_pf, dNe22_log_pf_dT9; + // interpolating Ne22 partition function + get_partition_function_cached(Ne22, tfactors.T9, pf_cache, Ne22_log_pf, dNe22_log_pf_dT9); - // interpolating Ne22 partition function - get_partition_function_cached(Ne22, tfactors.T9, pf_cache, Ne22_log_pf, dNe22_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O18_log_pf - Ne22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO18_log_pf_dT9 - dNe22_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O18_log_pf - Ne22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO18_log_pf_dT9 - dNe22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -7.119065921580848 + -114.18179645973349 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -7.119065921580848 + -114.18179645973349 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 114.18179645973349 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 114.18179645973349 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -56.510065921580846 + -112.85484845973349 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -56.510065921580846 + -112.85484845973349 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 112.85484845973349 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 112.85484845973349 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 39.76833407841915 + -143.2255364597335 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 39.76833407841915 + -143.2255364597335 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 143.2255364597335 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 143.2255364597335 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 106.99883407841915 + -113.76407645973349 * tfactors.T9i + -44.3823 * tfactors.T913i + -46.6617 * tfactors.T913 + + 7.88059 * tfactors.T9 + -0.590829 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 106.99883407841915 + -113.76407645973349 * tfactors.T9i + -44.3823 * tfactors.T913i + -46.6617 * tfactors.T913 - + 7.88059 * tfactors.T9 + -0.590829 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 113.76407645973349 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -44.3823 * tfactors.T943i + (1.0/3.0) * -46.6617 * tfactors.T923i + + 7.88059 + (5.0/3.0) * -0.590829 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 113.76407645973349 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -44.3823 * tfactors.T943i + (1.0/3.0) * -46.6617 * tfactors.T923i - + 7.88059 + (5.0/3.0) * -0.590829 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na21_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na21 --> p + Ne20 - // Na21 --> p + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Na21_log_pf, dNa21_log_pf_dT9; - amrex::Real Na21_log_pf, dNa21_log_pf_dT9; + // interpolating Na21 partition function + get_partition_function_cached(Na21, tfactors.T9, pf_cache, Na21_log_pf, dNa21_log_pf_dT9); - // interpolating Na21 partition function - get_partition_function_cached(Na21, tfactors.T9, pf_cache, Na21_log_pf, dNa21_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - Na21_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dNa21_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - Na21_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dNa21_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ly18 + ln_set_rate = 195319.2650977437 + -89.3610144370849 * tfactors.T9i + 21894.7 * tfactors.T913i + -319153.0 * tfactors.T913 + + 224369.0 * tfactors.T9 + -188049.0 * tfactors.T953 + 48704.9 * tfactors.lnT9; - // ReacLib set derived from ly18 - ln_set_rate = 195319.2650977437 + -89.3610144370849 * tfactors.T9i + 21894.7 * tfactors.T913i + -319153.0 * tfactors.T913 - + 224369.0 * tfactors.T9 + -188049.0 * tfactors.T953 + 48704.9 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.3610144370849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21894.7 * tfactors.T943i + (1.0/3.0) * -319153.0 * tfactors.T923i + + 224369.0 + (5.0/3.0) * -188049.0 * tfactors.T923 + 48704.9 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.3610144370849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21894.7 * tfactors.T943i + (1.0/3.0) * -319153.0 * tfactors.T923i - + 224369.0 + (5.0/3.0) * -188049.0 * tfactors.T923 + 48704.9 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from ly18 + ln_set_rate = 230.14209774368004 + -28.373725437084907 * tfactors.T9i + 15.325 * tfactors.T913i + -294.859 * tfactors.T913 + + 107.692 * tfactors.T9 + -46.2072 * tfactors.T953 + 59.3398 * tfactors.lnT9; - // ReacLib set derived from ly18 - ln_set_rate = 230.14209774368004 + -28.373725437084907 * tfactors.T9i + 15.325 * tfactors.T913i + -294.859 * tfactors.T913 - + 107.692 * tfactors.T9 + -46.2072 * tfactors.T953 + 59.3398 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 28.373725437084907 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.325 * tfactors.T943i + (1.0/3.0) * -294.859 * tfactors.T923i + + 107.692 + (5.0/3.0) * -46.2072 * tfactors.T923 + 59.3398 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 28.373725437084907 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.325 * tfactors.T943i + (1.0/3.0) * -294.859 * tfactors.T923i - + 107.692 + (5.0/3.0) * -46.2072 * tfactors.T923 + 59.3398 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from ly18 + ln_set_rate = 28.096127743680043 + -37.059014437084905 * tfactors.T9i + 20.5893 * tfactors.T913i + -17.5841 * tfactors.T913 + + 0.243226 * tfactors.T9 + -0.000231418 * tfactors.T953 + 14.3398 * tfactors.lnT9; - // ReacLib set derived from ly18 - ln_set_rate = 28.096127743680043 + -37.059014437084905 * tfactors.T9i + 20.5893 * tfactors.T913i + -17.5841 * tfactors.T913 - + 0.243226 * tfactors.T9 + -0.000231418 * tfactors.T953 + 14.3398 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 37.059014437084905 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 20.5893 * tfactors.T943i + (1.0/3.0) * -17.5841 * tfactors.T923i + + 0.243226 + (5.0/3.0) * -0.000231418 * tfactors.T923 + 14.3398 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 37.059014437084905 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 20.5893 * tfactors.T943i + (1.0/3.0) * -17.5841 * tfactors.T923i - + 0.243226 + (5.0/3.0) * -0.000231418 * tfactors.T923 + 14.3398 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from ly18 + ln_set_rate = 252.28409774368004 + -32.674594437084906 * tfactors.T9i + 258.57 * tfactors.T913i + -506.387 * tfactors.T913 + + 22.1576 * tfactors.T9 + -0.721182 * tfactors.T953 + 231.788 * tfactors.lnT9; - // ReacLib set derived from ly18 - ln_set_rate = 252.28409774368004 + -32.674594437084906 * tfactors.T9i + 258.57 * tfactors.T913i + -506.387 * tfactors.T913 - + 22.1576 * tfactors.T9 + -0.721182 * tfactors.T953 + 231.788 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 32.674594437084906 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 258.57 * tfactors.T943i + (1.0/3.0) * -506.387 * tfactors.T923i + + 22.1576 + (5.0/3.0) * -0.721182 * tfactors.T923 + 231.788 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 32.674594437084906 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 258.57 * tfactors.T943i + (1.0/3.0) * -506.387 * tfactors.T923i - + 22.1576 + (5.0/3.0) * -0.721182 * tfactors.T923 + 231.788 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_to_He4_F17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na21_to_He4_F17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na21 --> He4 + F17 - // Na21 --> He4 + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real Na21_log_pf, dNa21_log_pf_dT9; - amrex::Real Na21_log_pf, dNa21_log_pf_dT9; + // interpolating Na21 partition function + get_partition_function_cached(Na21, tfactors.T9, pf_cache, Na21_log_pf, dNa21_log_pf_dT9); - // interpolating Na21 partition function - get_partition_function_cached(Na21, tfactors.T9, pf_cache, Na21_log_pf, dNa21_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + F17_log_pf - Na21_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF17_log_pf_dT9 - dNa21_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + F17_log_pf - Na21_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF17_log_pf_dT9 - dNa21_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from rpsmr + ln_set_rate = 66.33566650730282 + -77.87093563755207 * tfactors.T9i + 15.559 * tfactors.T913i + -68.3231 * tfactors.T913 + + 2.54275 * tfactors.T9 + -0.0989207 * tfactors.T953 + 38.3877 * tfactors.lnT9; - // ReacLib set derived from rpsmr - ln_set_rate = 66.33566650730282 + -77.87093563755207 * tfactors.T9i + 15.559 * tfactors.T913i + -68.3231 * tfactors.T913 - + 2.54275 * tfactors.T9 + -0.0989207 * tfactors.T953 + 38.3877 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.87093563755207 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.559 * tfactors.T943i + (1.0/3.0) * -68.3231 * tfactors.T923i + + 2.54275 + (5.0/3.0) * -0.0989207 * tfactors.T923 + 38.3877 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.87093563755207 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.559 * tfactors.T943i + (1.0/3.0) * -68.3231 * tfactors.T923i - + 2.54275 + (5.0/3.0) * -0.0989207 * tfactors.T923 + 38.3877 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_to_p_Ne21_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na22_to_p_Ne21_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na22 --> p + Ne21 - // Na22 --> p + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; - amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); - // interpolating Ne21 partition function - get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Na22_log_pf, dNa22_log_pf_dT9; - amrex::Real Na22_log_pf, dNa22_log_pf_dT9; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); - // interpolating Na22 partition function - get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ne21_log_pf - Na22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe21_log_pf_dT9 - dNa22_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ne21_log_pf - Na22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe21_log_pf_dT9 - dNa22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10n + ln_set_rate = 42.165346980750385 + -78.19798607071328 * tfactors.T9i + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 42.165346980750385 + -78.19798607071328 * tfactors.T9i + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 78.19798607071328 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 78.19798607071328 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -16.390453019249613 + -82.41183607071328 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = -16.390453019249613 + -82.41183607071328 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 82.41183607071328 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 82.41183607071328 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 24.852786980750384 + -79.59755607071328 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 24.852786980750384 + -79.59755607071328 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 79.59755607071328 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 79.59755607071328 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -24.559653019249616 + -78.39416607071328 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -24.559653019249616 + -78.39416607071328 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 78.39416607071328 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 78.39416607071328 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_to_He4_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na22_to_He4_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na22 --> He4 + F18 - // Na22 --> He4 + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real Na22_log_pf, dNa22_log_pf_dT9; - amrex::Real Na22_log_pf, dNa22_log_pf_dT9; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); - // interpolating Na22 partition function - get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + F18_log_pf - Na22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF18_log_pf_dT9 - dNa22_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + F18_log_pf - Na22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF18_log_pf_dT9 - dNa22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from rpsmr + ln_set_rate = 59.32473614051823 + -100.22898907841348 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; - // ReacLib set derived from rpsmr - ln_set_rate = 59.32473614051823 + -100.22898907841348 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.22898907841348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.22898907841348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_to_p_Ne22_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na23_to_p_Ne22_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na23 --> p + Ne22 - // Na23 --> p + Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ne22_log_pf, dNe22_log_pf_dT9; - amrex::Real Ne22_log_pf, dNe22_log_pf_dT9; + // interpolating Ne22 partition function + get_partition_function_cached(Ne22, tfactors.T9, pf_cache, Ne22_log_pf, dNe22_log_pf_dT9); - // interpolating Ne22 partition function - get_partition_function_cached(Ne22, tfactors.T9, pf_cache, Ne22_log_pf, dNe22_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ne22_log_pf - Na23_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe22_log_pf_dT9 - dNa23_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ne22_log_pf - Na23_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe22_log_pf_dT9 - dNa23_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ke17r + ln_set_rate = 21.673073381706992 + -103.77146219384292 * tfactors.T9i + + 1.189235 * tfactors.lnT9; - // ReacLib set derived from ke17r - ln_set_rate = 21.673073381706992 + -103.77146219384292 * tfactors.T9i - + 1.189235 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 103.77146219384292 * tfactors.T9i * tfactors.T9i + + 1.189235 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 103.77146219384292 * tfactors.T9i * tfactors.T9i - + 1.189235 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from ke17r + ln_set_rate = 0.8379043817069913 + -102.46235419384291 * tfactors.T9i + + 0.009810000000000096 * tfactors.lnT9; - // ReacLib set derived from ke17r - ln_set_rate = 0.8379043817069913 + -102.46235419384291 * tfactors.T9i - + 0.009810000000000096 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.46235419384291 * tfactors.T9i * tfactors.T9i + + 0.009810000000000096 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.46235419384291 * tfactors.T9i * tfactors.T9i - + 0.009810000000000096 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from ke17r + ln_set_rate = 18.18205438170699 + -102.85114819384292 * tfactors.T9i + + 4.735580000000001 * tfactors.lnT9; - // ReacLib set derived from ke17r - ln_set_rate = 18.18205438170699 + -102.85114819384292 * tfactors.T9i - + 4.735580000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.85114819384292 * tfactors.T9i * tfactors.T9i + + 4.735580000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.85114819384292 * tfactors.T9i * tfactors.T9i - + 4.735580000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from ke17r + ln_set_rate = 36.30970438170699 + -110.77516219384292 * tfactors.T9i + + 0.732533 * tfactors.lnT9; - // ReacLib set derived from ke17r - ln_set_rate = 36.30970438170699 + -110.77516219384292 * tfactors.T9i - + 0.732533 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.77516219384292 * tfactors.T9i * tfactors.T9i + + 0.732533 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.77516219384292 * tfactors.T9i * tfactors.T9i - + 0.732533 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from ke17r + ln_set_rate = 33.91320438170699 + -106.65075219384292 * tfactors.T9i + + 1.656226 * tfactors.lnT9; - // ReacLib set derived from ke17r - ln_set_rate = 33.91320438170699 + -106.65075219384292 * tfactors.T9i - + 1.656226 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.65075219384292 * tfactors.T9i * tfactors.T9i + + 1.656226 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.65075219384292 * tfactors.T9i * tfactors.T9i - + 1.656226 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from ke17r + ln_set_rate = 18.266434381706993 + -104.66929219384292 * tfactors.T9i + + -2.79964 * tfactors.lnT9; - // ReacLib set derived from ke17r - ln_set_rate = 18.266434381706993 + -104.66929219384292 * tfactors.T9i - + -2.79964 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 104.66929219384292 * tfactors.T9i * tfactors.T9i + + -2.79964 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 104.66929219384292 * tfactors.T9i * tfactors.T9i - + -2.79964 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_to_He4_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na23_to_He4_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na23 --> He4 + F19 - // Na23 --> He4 + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + F19_log_pf - Na23_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF19_log_pf_dT9 - dNa23_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + F19_log_pf - Na23_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF19_log_pf_dT9 - dNa23_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from rpsmr + ln_set_rate = 76.90044981594414 + -123.58233417534949 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 + + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 55.9823 * tfactors.lnT9; - // ReacLib set derived from rpsmr - ln_set_rate = 76.90044981594414 + -123.58233417534949 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 - + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 55.9823 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 123.58233417534949 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i + + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 55.9823 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 123.58233417534949 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i - + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 55.9823 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_to_He4_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al27_to_He4_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Al27 --> He4 + Na23 - // Al27 --> He4 + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Na23_log_pf - Al27_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNa23_log_pf_dT9 - dAl27_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Na23_log_pf - Al27_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNa23_log_pf_dT9 - dAl27_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 69.2206963145215 + -117.11189602392653 * tfactors.T9i + -50.2042 * tfactors.T913i + -1.64239 * tfactors.T913 + + -1.59995 * tfactors.T9 + 0.184933 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 69.2206963145215 + -117.11189602392653 * tfactors.T9i + -50.2042 * tfactors.T913i + -1.64239 * tfactors.T913 - + -1.59995 * tfactors.T9 + 0.184933 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.11189602392653 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * -1.64239 * tfactors.T923i + + -1.59995 + (5.0/3.0) * 0.184933 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.11189602392653 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * -1.64239 * tfactors.T923i - + -1.59995 + (5.0/3.0) * 0.184933 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from st08r + ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - // ReacLib set derived from st08r - ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from st08r + ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // ReacLib set derived from st08r - ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_to_He4_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P31_to_He4_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // P31 --> He4 + Al27 - // P31 --> He4 + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Al27_log_pf - P31_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAl27_log_pf_dT9 - dP31_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Al27_log_pf - P31_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAl27_log_pf_dT9 - dP31_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.21877134266595 + -112.19944704325766 * tfactors.T9i + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 + + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.21877134266595 + -112.19944704325766 * tfactors.T9i + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 - + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 112.19944704325766 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i + + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 112.19944704325766 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i - + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_p_N15_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 + He4 --> p + N15 - // C12 + He4 --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + N15_log_pf - He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + N15_log_pf - He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dN15_log_pf_dT9 - dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacrn + ln_set_rate = 27.135846229234243 + -57.62215691264642 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacrn - ln_set_rate = 27.135846229234243 + -57.62215691264642 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 57.62215691264642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 57.62215691264642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = -6.915773770765759 + -58.78595691264642 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = -6.915773770765759 + -58.78595691264642 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 58.78595691264642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 58.78595691264642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 20.556646229234243 + -65.02815691264642 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = 20.556646229234243 + -65.02815691264642 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.02815691264642 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.02815691264642 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = -5.21402377076576 + -59.643326912646415 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = -5.21402377076576 + -59.643326912646415 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.643326912646415 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.643326912646415 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_p_O17_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N14 + He4 --> p + O17 - // N14 + He4 --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O17_log_pf, dO17_log_pf_dT9; - amrex::Real O17_log_pf, dO17_log_pf_dT9; + // interpolating O17 partition function + get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); - // interpolating O17 partition function - get_partition_function_cached(O17, tfactors.T9, pf_cache, O17_log_pf, dO17_log_pf_dT9); + amrex::Real N14_log_pf, dN14_log_pf_dT9; - amrex::Real N14_log_pf, dN14_log_pf_dT9; + // setting N14 log(partition function) to 0.0 by default, independent of T + N14_log_pf = 0.0_rt; + dN14_log_pf_dT9 = 0.0_rt; - // setting N14 log(partition function) to 0.0 by default, independent of T - N14_log_pf = 0.0_rt; - dN14_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + O17_log_pf - He4_log_pf - N14_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dHe4_log_pf_dT9 - dN14_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O17_log_pf - He4_log_pf - N14_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO17_log_pf_dT9 - dHe4_log_pf_dT9 - dN14_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -7.592359780998223 + -14.584520682879308 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -7.592359780998223 + -14.584520682879308 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.584520682879308 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.584520682879308 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.194270219001776 + -13.831125682879309 * tfactors.T9i + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.194270219001776 + -13.831125682879309 * tfactors.T9i + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 13.831125682879309 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 13.831125682879309 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 9.789270219001777 + -18.78977568287931 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 9.789270219001777 + -18.78977568287931 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.78977568287931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.78977568287931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 5.148870219001777 + -15.945895682879309 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 5.148870219001777 + -15.945895682879309 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 15.945895682879309 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 15.945895682879309 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_p_O18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // N15 + He4 --> p + O18 - // N15 + He4 --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O18_log_pf, dO18_log_pf_dT9; - amrex::Real O18_log_pf, dO18_log_pf_dT9; + // interpolating O18 partition function + get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); - // interpolating O18 partition function - get_partition_function_cached(O18, tfactors.T9, pf_cache, O18_log_pf, dO18_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N15_log_pf, dN15_log_pf_dT9; - amrex::Real N15_log_pf, dN15_log_pf_dT9; + // setting N15 log(partition function) to 0.0 by default, independent of T + N15_log_pf = 0.0_rt; + dN15_log_pf_dT9 = 0.0_rt; - // setting N15 log(partition function) to 0.0 by default, independent of T - N15_log_pf = 0.0_rt; - dN15_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + O18_log_pf - He4_log_pf - N15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dHe4_log_pf_dT9 - dN15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + O18_log_pf - He4_log_pf - N15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dO18_log_pf_dT9 - dHe4_log_pf_dT9 - dN15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -29.6926341462146 + -46.42955443414268 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -29.6926341462146 + -46.42955443414268 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.42955443414268 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.42955443414268 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 25.178865853785396 + -46.183670434142684 * tfactors.T9i + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 25.178865853785396 + -46.183670434142684 * tfactors.T9i + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.183670434142684 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.183670434142684 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 7.155285853785398 + -51.50702043414268 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 7.155285853785398 + -51.50702043414268 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 51.50702043414268 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 51.50702043414268 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 8.4842658537854 + -47.84667043414268 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 8.4842658537854 + -47.84667043414268 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 47.84667043414268 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 47.84667043414268 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_p_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O15 + He4 --> p + F18 - // O15 + He4 --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O15_log_pf, dO15_log_pf_dT9; - amrex::Real O15_log_pf, dO15_log_pf_dT9; + // interpolating O15 partition function + get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); - // interpolating O15 partition function - get_partition_function_cached(O15, tfactors.T9, pf_cache, O15_log_pf, dO15_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + F18_log_pf - He4_log_pf - O15_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dHe4_log_pf_dT9 - dO15_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F18_log_pf - He4_log_pf - O15_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF18_log_pf_dT9 - dHe4_log_pf_dT9 - dO15_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 1.0671723108797964 + -36.45580946704611 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 1.0671723108797964 + -36.45580946704611 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.45580946704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.45580946704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -32.4286676891202 + -33.81549146704611 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -32.4286676891202 + -33.81549146704611 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.81549146704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.81549146704611 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 61.315932310879795 + -33.43905946704611 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 61.315932310879795 + -33.43905946704611 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.43905946704611 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.43905946704611 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_p_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + He4 --> p + F19 - // O16 + He4 --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + F19_log_pf - He4_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dHe4_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + F19_log_pf - He4_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dF19_log_pf_dT9 - dHe4_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacr + ln_set_rate = -53.121227264044336 + -94.28220973651266 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = -53.121227264044336 + -94.28220973651266 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.28220973651266 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.28220973651266 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 25.874672735955667 + -94.15455973651265 * tfactors.T9i + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 25.874672735955667 + -94.15455973651265 * tfactors.T9i + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.15455973651265 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.15455973651265 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacrr + ln_set_rate = 13.941672735955667 + -97.44055973651265 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // ReacLib set derived from nacrr - ln_set_rate = 13.941672735955667 + -97.44055973651265 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 97.44055973651265 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 97.44055973651265 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 14.778572735955667 + -97.90640973651266 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 14.778572735955667 + -97.90640973651266 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 97.90640973651266 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 97.90640973651266 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nacr + ln_set_rate = 7.822072735955667 + -96.62283973651265 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 7.822072735955667 + -96.62283973651265 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 96.62283973651265 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 96.62283973651265 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_He4_O14_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 + p --> He4 + O14 - // F17 + p --> He4 + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O14_log_pf, dO14_log_pf_dT9; - amrex::Real O14_log_pf, dO14_log_pf_dT9; + // interpolating O14 partition function + get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); - // interpolating O14 partition function - get_partition_function_cached(O14, tfactors.T9, pf_cache, O14_log_pf, dO14_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O14_log_pf - p_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dp_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O14_log_pf - p_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO14_log_pf_dT9 - dp_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from Ha96r + ln_set_rate = 11.415567488049104 + -25.85518506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 11.415567488049104 + -25.85518506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.85518506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.85518506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 17.938467488049106 + -39.83288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 17.938467488049106 + -39.83288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 39.83288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 39.83288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96n + ln_set_rate = 40.122467488049104 + -13.83288506704921 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from Ha96n - ln_set_rate = 40.122467488049104 + -13.83288506704921 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 13.83288506704921 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 13.83288506704921 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 15.595367488049106 + -36.34288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 15.595367488049106 + -36.34288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.34288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.34288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = 10.405067488049104 + -27.43288506704921 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = 10.405067488049104 + -27.43288506704921 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.43288506704921 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.43288506704921 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from Ha96r + ln_set_rate = -106.80433251195089 + -14.285921067049209 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from Ha96r - ln_set_rate = -106.80433251195089 + -14.285921067049209 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.285921067049209 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.285921067049209 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_He4_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F17_to_p_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // F17 + He4 --> p + Ne20 - // F17 + He4 --> p + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real F17_log_pf, dF17_log_pf_dT9; - amrex::Real F17_log_pf, dF17_log_pf_dT9; + // interpolating F17 partition function + get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); - // interpolating F17 partition function - get_partition_function_cached(F17, tfactors.T9, pf_cache, F17_log_pf, dF17_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - He4_log_pf - F17_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dHe4_log_pf_dT9 - dF17_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ne20_log_pf - He4_log_pf - F17_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNe20_log_pf_dT9 - dHe4_log_pf_dT9 - dF17_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacr + ln_set_rate = 38.645331236377224 + -0.004848799532844339 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 38.645331236377224 + -0.004848799532844339 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 0.004848799532844339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 0.004848799532844339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_p_to_He4_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne21_to_He4_F18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne21 + p --> He4 + F18 - // Ne21 + p --> He4 + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; - amrex::Real Ne21_log_pf, dNe21_log_pf_dT9; + // interpolating Ne21 partition function + get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); - // interpolating Ne21 partition function - get_partition_function_cached(Ne21, tfactors.T9, pf_cache, Ne21_log_pf, dNe21_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real F18_log_pf, dF18_log_pf_dT9; - amrex::Real F18_log_pf, dF18_log_pf_dT9; + // interpolating F18 partition function + get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); - // interpolating F18 partition function - get_partition_function_cached(F18, tfactors.T9, pf_cache, F18_log_pf, dF18_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + F18_log_pf - p_log_pf - Ne21_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF18_log_pf_dT9 - dp_log_pf_dT9 - dNe21_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + F18_log_pf - p_log_pf - Ne21_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF18_log_pf_dT9 - dp_log_pf_dT9 - dNe21_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from rpsmr + ln_set_rate = 50.63668915976785 + -22.04702300768339 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; - // ReacLib set derived from rpsmr - ln_set_rate = 50.63668915976785 + -22.04702300768339 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.04702300768339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.04702300768339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne22_to_He4_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_p_to_He4_F19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Ne22 + p --> He4 + F19 + // Ne22 + p --> He4 + F19 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real F19_log_pf, dF19_log_pf_dT9; + amrex::Real F19_log_pf, dF19_log_pf_dT9; - // interpolating F19 partition function - get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); + // interpolating F19 partition function + get_partition_function_cached(F19, tfactors.T9, pf_cache, F19_log_pf, dF19_log_pf_dT9); - amrex::Real Ne22_log_pf, dNe22_log_pf_dT9; + amrex::Real Ne22_log_pf, dNe22_log_pf_dT9; - // interpolating Ne22 partition function - get_partition_function_cached(Ne22, tfactors.T9, pf_cache, Ne22_log_pf, dNe22_log_pf_dT9); + // interpolating Ne22 partition function + get_partition_function_cached(Ne22, tfactors.T9, pf_cache, Ne22_log_pf, dNe22_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + F19_log_pf - p_log_pf - Ne22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF19_log_pf_dT9 - dp_log_pf_dT9 - dNe22_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + F19_log_pf - p_log_pf - Ne22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dF19_log_pf_dT9 - dp_log_pf_dT9 - dNe22_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from da18r - ln_set_rate = 54.774145434237155 + -22.26126198150658 * tfactors.T9i + -38.7722 * tfactors.T913i + -13.3654 * tfactors.T913 - + 0.863648 * tfactors.T9 + -0.0451491 * tfactors.T953 + 1.33333 * tfactors.lnT9; + // ReacLib set derived from da18r + ln_set_rate = 54.774145434237155 + -22.26126198150658 * tfactors.T9i + -38.7722 * tfactors.T913i + -13.3654 * tfactors.T913 + + 0.863648 * tfactors.T9 + -0.0451491 * tfactors.T953 + 1.33333 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.26126198150658 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.7722 * tfactors.T943i + (1.0/3.0) * -13.3654 * tfactors.T923i - + 0.863648 + (5.0/3.0) * -0.0451491 * tfactors.T923 + 1.33333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.26126198150658 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.7722 * tfactors.T943i + (1.0/3.0) * -13.3654 * tfactors.T923i + + 0.863648 + (5.0/3.0) * -0.0451491 * tfactors.T923 + 1.33333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // ReacLib set derived from da18r - ln_set_rate = 53.51334543423716 + -65.19766198150657 * tfactors.T9i + -34.5008 * tfactors.T913i + 56.9316 * tfactors.T913 - + 2.09613 * tfactors.T9 + -32.496 * tfactors.T953 + 0.333333 * tfactors.lnT9; + // ReacLib set derived from da18r + ln_set_rate = 53.51334543423716 + -65.19766198150657 * tfactors.T9i + -34.5008 * tfactors.T913i + 56.9316 * tfactors.T913 + + 2.09613 * tfactors.T9 + -32.496 * tfactors.T953 + 0.333333 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.19766198150657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.5008 * tfactors.T943i + (1.0/3.0) * 56.9316 * tfactors.T923i - + 2.09613 + (5.0/3.0) * -32.496 * tfactors.T923 + 0.333333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.19766198150657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.5008 * tfactors.T943i + (1.0/3.0) * 56.9316 * tfactors.T923i + + 2.09613 + (5.0/3.0) * -32.496 * tfactors.T923 + 0.333333 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + + // ReacLib set derived from da18r + ln_set_rate = 29432.442445434237 + -152.44286198150658 * tfactors.T9i + 12625.1 * tfactors.T913i + -49107.1 * tfactors.T913 + + 9227.53 * tfactors.T9 + -2086.65 * tfactors.T953 + 14520.2 * tfactors.lnT9; - // ReacLib set derived from da18r - ln_set_rate = 29432.442445434237 + -152.44286198150658 * tfactors.T9i + 12625.1 * tfactors.T913i + -49107.1 * tfactors.T913 - + 9227.53 * tfactors.T9 + -2086.65 * tfactors.T953 + 14520.2 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 152.44286198150658 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 12625.1 * tfactors.T943i + (1.0/3.0) * -49107.1 * tfactors.T923i + + 9227.53 + (5.0/3.0) * -2086.65 * tfactors.T923 + 14520.2 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 152.44286198150658 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 12625.1 * tfactors.T943i + (1.0/3.0) * -49107.1 * tfactors.T923i - + 9227.53 + (5.0/3.0) * -2086.65 * tfactors.T923 + 14520.2 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_p_to_He4_Ne18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na21_to_He4_Ne18_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na21 + p --> He4 + Ne18 - // Na21 + p --> He4 + Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Na21_log_pf, dNa21_log_pf_dT9; - amrex::Real Na21_log_pf, dNa21_log_pf_dT9; + // interpolating Na21 partition function + get_partition_function_cached(Na21, tfactors.T9, pf_cache, Na21_log_pf, dNa21_log_pf_dT9); - // interpolating Na21 partition function - get_partition_function_cached(Na21, tfactors.T9, pf_cache, Na21_log_pf, dNa21_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; - amrex::Real Ne18_log_pf, dNe18_log_pf_dT9; + // interpolating Ne18 partition function + get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); - // interpolating Ne18 partition function - get_partition_function_cached(Ne18, tfactors.T9, pf_cache, Ne18_log_pf, dNe18_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne18_log_pf - p_log_pf - Na21_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe18_log_pf_dT9 - dp_log_pf_dT9 - dNa21_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne18_log_pf - p_log_pf - Na21_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe18_log_pf_dT9 - dp_log_pf_dT9 - dNa21_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from mo14r + ln_set_rate = -23.82911395968675 + -36.38615638318757 * tfactors.T9i + 8.5632e-08 * tfactors.T913i + 24.8579 * tfactors.T913 + + 0.0823845 * tfactors.T9 + -0.365374 * tfactors.T953 + -2.21415e-06 * tfactors.lnT9; - // ReacLib set derived from mo14r - ln_set_rate = -23.82911395968675 + -36.38615638318757 * tfactors.T9i + 8.5632e-08 * tfactors.T913i + 24.8579 * tfactors.T913 - + 0.0823845 * tfactors.T9 + -0.365374 * tfactors.T953 + -2.21415e-06 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.38615638318757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.5632e-08 * tfactors.T943i + (1.0/3.0) * 24.8579 * tfactors.T923i + + 0.0823845 + (5.0/3.0) * -0.365374 * tfactors.T923 + -2.21415e-06 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.38615638318757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.5632e-08 * tfactors.T943i + (1.0/3.0) * 24.8579 * tfactors.T923i - + 0.0823845 + (5.0/3.0) * -0.365374 * tfactors.T923 + -2.21415e-06 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from mo14r + ln_set_rate = -22.686913959686752 + -40.87721638318757 * tfactors.T9i + 4.73034e-07 * tfactors.T913i + 36.29 * tfactors.T913 + + -6.56565 * tfactors.T9 + -2.96287e-06 * tfactors.T953 + -9.00373e-07 * tfactors.lnT9; - // ReacLib set derived from mo14r - ln_set_rate = -22.686913959686752 + -40.87721638318757 * tfactors.T9i + 4.73034e-07 * tfactors.T913i + 36.29 * tfactors.T913 - + -6.56565 * tfactors.T9 + -2.96287e-06 * tfactors.T953 + -9.00373e-07 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87721638318757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.73034e-07 * tfactors.T943i + (1.0/3.0) * 36.29 * tfactors.T923i + + -6.56565 + (5.0/3.0) * -2.96287e-06 * tfactors.T923 + -9.00373e-07 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87721638318757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.73034e-07 * tfactors.T943i + (1.0/3.0) * 36.29 * tfactors.T923i - + -6.56565 + (5.0/3.0) * -2.96287e-06 * tfactors.T923 + -9.00373e-07 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from mo14r + ln_set_rate = -37.64591395968675 + -34.48551638318757 * tfactors.T9i + 7.09521e-06 * tfactors.T913i + 34.1789 * tfactors.T913 + + -1.72974 * tfactors.T9 + -0.0395081 * tfactors.T953 + -7.82759e-07 * tfactors.lnT9; - // ReacLib set derived from mo14r - ln_set_rate = -37.64591395968675 + -34.48551638318757 * tfactors.T9i + 7.09521e-06 * tfactors.T913i + 34.1789 * tfactors.T913 - + -1.72974 * tfactors.T9 + -0.0395081 * tfactors.T953 + -7.82759e-07 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 34.48551638318757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.09521e-06 * tfactors.T943i + (1.0/3.0) * 34.1789 * tfactors.T923i + + -1.72974 + (5.0/3.0) * -0.0395081 * tfactors.T923 + -7.82759e-07 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 34.48551638318757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.09521e-06 * tfactors.T943i + (1.0/3.0) * 34.1789 * tfactors.T923i - + -1.72974 + (5.0/3.0) * -0.0395081 * tfactors.T923 + -7.82759e-07 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_He4_to_p_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na21_to_p_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na21 + He4 --> p + Mg24 - // Na21 + He4 --> p + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na21_log_pf, dNa21_log_pf_dT9; - amrex::Real Na21_log_pf, dNa21_log_pf_dT9; + // interpolating Na21 partition function + get_partition_function_cached(Na21, tfactors.T9, pf_cache, Na21_log_pf, dNa21_log_pf_dT9); - // interpolating Na21 partition function - get_partition_function_cached(Na21, tfactors.T9, pf_cache, Na21_log_pf, dNa21_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Mg24_log_pf - He4_log_pf - Na21_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMg24_log_pf_dT9 - dHe4_log_pf_dT9 - dNa21_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mg24_log_pf - He4_log_pf - Na21_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMg24_log_pf_dT9 - dHe4_log_pf_dT9 - dNa21_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nacr + ln_set_rate = 39.83098890373066 + -0.00380570701699412 * tfactors.T9i + -49.9621 * tfactors.T913i + 5.90498 * tfactors.T913 + + -1.6598 * tfactors.T9 + 0.117817 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from nacr - ln_set_rate = 39.83098890373066 + -0.00380570701699412 * tfactors.T9i + -49.9621 * tfactors.T913i + 5.90498 * tfactors.T913 - + -1.6598 * tfactors.T9 + 0.117817 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 0.00380570701699412 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -49.9621 * tfactors.T943i + (1.0/3.0) * 5.90498 * tfactors.T923i + + -1.6598 + (5.0/3.0) * 0.117817 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 0.00380570701699412 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -49.9621 * tfactors.T943i + (1.0/3.0) * 5.90498 * tfactors.T923i - + -1.6598 + (5.0/3.0) * 0.117817 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_p_to_He4_Ne19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na22_to_He4_Ne19_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Na22 + p --> He4 + Ne19 - // Na22 + p --> He4 + Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Na22_log_pf, dNa22_log_pf_dT9; - amrex::Real Na22_log_pf, dNa22_log_pf_dT9; + // interpolating Na22 partition function + get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); - // interpolating Na22 partition function - get_partition_function_cached(Na22, tfactors.T9, pf_cache, Na22_log_pf, dNa22_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; - amrex::Real Ne19_log_pf, dNe19_log_pf_dT9; + // interpolating Ne19 partition function + get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); - // interpolating Ne19 partition function - get_partition_function_cached(Ne19, tfactors.T9, pf_cache, Ne19_log_pf, dNe19_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne19_log_pf - p_log_pf - Na22_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe19_log_pf_dT9 - dp_log_pf_dT9 - dNa22_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne19_log_pf - p_log_pf - Na22_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe19_log_pf_dT9 - dp_log_pf_dT9 - dNa22_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 43.08404589973112 + -24.01421348166705 * tfactors.T9i + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 + + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 43.08404589973112 + -24.01421348166705 * tfactors.T9i + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 - + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.01421348166705 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i + + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.01421348166705 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i - + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lo18r + ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0 + ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from chw0 - ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // V47 + p --> He4 + Ti44 - // Cr48 --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; - // ReacLib set derived from ths8r - ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from chw0r + ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cr48 --> He4 + Ti44 - // Cr48 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nfisn - ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } - // ReacLib set derived from nfisn - ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - - ln_set_rate += net_log_pf + log_scor; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + // Cr48 --> p + V47 - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + rate = 0.0; + drate_dT = 0.0; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // Evaluate partition function terms - // ReacLib set derived from nfisn - ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + amrex::Real p_log_pf, dp_log_pf_dT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + amrex::Real V47_log_pf, dV47_log_pf_dT9; - // ReacLib set derived from nfisn - ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - ln_set_rate += net_log_pf + log_scor; + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // ReacLib set derived from nfisn + ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + ln_set_rate += net_log_pf + log_scor; -} + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // V47 + p --> He4 + Ti44 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // ReacLib set derived from nfisn + ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - // Evaluate partition function terms + ln_set_rate += net_log_pf + log_scor; - amrex::Real p_log_pf, dp_log_pf_dT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // ReacLib set derived from nfisn + ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; + // ReacLib set derived from nfisn + ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from chw0r - ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Mn51 + p --> He4 + Cr48 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Fe52 --> He4 + Cr48 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> He4 + Cr48 + // Fe52 --> p + Mn51 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Co55 + p --> He4 + Fe52 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Ni56 --> He4 + Fe52 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Co55 + p --> He4 + Fe52 + // Ni56 --> p + Co55 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } -} - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + part_fun::pf_cache_t pf_cache{}; - part_fun::pf_cache_t pf_cache{}; + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + { + // N13_to_p_C12_derived - { - // N13_to_p_C12_derived - - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // N14_to_p_C13_derived + { + // N14_to_p_C13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N14_to_p_C13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N14_to_p_C13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_to_p_C13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N14_to_p_C13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_to_p_C13_derived) = drate_dT; + } } - } - { - // O14_to_p_N13_derived + { + // O14_to_p_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_p_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O14_to_p_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_p_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O14_to_p_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_p_N13_derived) = drate_dT; + } } - } - { - // O15_to_p_N14_derived + { + // O15_to_p_N14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_p_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O15_to_p_N14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_p_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O15_to_p_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_p_N14_derived) = drate_dT; + } } - } - { - // O16_to_p_N15_derived + { + // O16_to_p_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_p_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_p_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_p_N15_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // F17_to_p_O16_derived + { + // F17_to_p_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_p_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F17_to_p_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_to_p_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_to_p_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_p_O16_derived) = drate_dT; + } } - } - { - // F18_to_p_O17_derived + { + // F18_to_p_O17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F18_to_p_O17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F18_to_p_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_p_O17_derived) = drate_dT; + } } - } - { - // F18_to_He4_N14_derived + { + // F18_to_He4_N14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_He4_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F18_to_He4_N14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_He4_N14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F18_to_He4_N14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_derived) = drate_dT; + } } - } - { - // F19_to_p_O18_derived + { + // F19_to_p_O18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F19_to_p_O18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F19_to_p_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_p_O18_derived) = drate_dT; + } } - } - { - // F19_to_He4_N15_derived + { + // F19_to_He4_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_He4_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_F19_to_He4_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_He4_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F19_to_He4_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_derived) = drate_dT; + } } - } - { - // Ne18_to_p_F17_derived + { + // Ne18_to_p_F17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_p_F17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne18_to_p_F17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_p_F17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne18_to_p_F17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_derived) = drate_dT; + } } - } - { - // Ne18_to_He4_O14_derived + { + // Ne18_to_He4_O14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne18_to_He4_O14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne18_to_He4_O14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_derived) = drate_dT; + } } - } - { - // Ne19_to_p_F18_derived + { + // Ne19_to_p_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne19_to_p_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne19_to_p_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_derived) = drate_dT; + } } - } - { - // Ne19_to_He4_O15_derived + { + // Ne19_to_He4_O15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_He4_O15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne19_to_He4_O15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_He4_O15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne19_to_He4_O15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_derived) = drate_dT; + } } - } - { - // Ne20_to_p_F19_derived + { + // Ne20_to_p_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_p_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_p_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Ne21_to_He4_O17_derived + { + // Ne21_to_He4_O17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne21_to_He4_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne21_to_He4_O17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne21_to_He4_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne21_to_He4_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_derived) = drate_dT; + } } - } - { - // Ne22_to_He4_O18_derived + { + // Ne22_to_He4_O18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne22_to_He4_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne22_to_He4_O18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne22_to_He4_O18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne22_to_He4_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne22_to_He4_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_to_He4_O18_derived) = drate_dT; + } } - } - { - // Na21_to_p_Ne20_derived + { + // Na21_to_p_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na21_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na21_to_p_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na21_to_p_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na21_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na21_to_p_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_to_p_Ne20_derived) = drate_dT; + } } - } - { - // Na21_to_He4_F17_derived + { + // Na21_to_He4_F17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na21_to_He4_F17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na21_to_He4_F17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na21_to_He4_F17_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na21_to_He4_F17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na21_to_He4_F17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_to_He4_F17_derived) = drate_dT; + } } - } - { - // Na22_to_p_Ne21_derived + { + // Na22_to_p_Ne21_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na22_to_p_Ne21_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na22_to_p_Ne21_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_to_p_Ne21_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na22_to_p_Ne21_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_derived) = drate_dT; + } } - } - { - // Na22_to_He4_F18_derived + { + // Na22_to_He4_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na22_to_He4_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na22_to_He4_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_to_He4_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na22_to_He4_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_derived) = drate_dT; + } } - } - { - // Na23_to_p_Ne22_derived + { + // Na23_to_p_Ne22_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na23_to_p_Ne22_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na23_to_p_Ne22_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_p_Ne22_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na23_to_p_Ne22_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na23_to_p_Ne22_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_p_Ne22_derived) = drate_dT; + } } - } - { - // Na23_to_He4_F19_derived + { + // Na23_to_He4_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na23_to_He4_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Na23_to_He4_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na23_to_He4_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na23_to_He4_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // Al27_to_He4_Na23_derived + { + // Al27_to_He4_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al27_to_He4_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Al27_to_He4_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al27_to_He4_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al27_to_He4_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Al27_to_He4_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_to_He4_Na23_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // P31_to_He4_Al27_derived + { + // P31_to_He4_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P31_to_He4_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_P31_to_He4_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P31_to_He4_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P31_to_He4_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_P31_to_He4_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_to_He4_Al27_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // He4_C12_to_p_N15_derived + { + // C12_He4_to_p_N15_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_C12_to_p_N15_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_derived) = drate_dT; + rate_C12_He4_to_p_N15_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_He4_to_p_N15_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_p_N15_derived) = drate_dT; + } } - } - { - // He4_N14_to_p_O17_derived + { + // N14_He4_to_p_O17_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_N14_to_p_O17_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_derived) = drate_dT; + rate_N14_He4_to_p_O17_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N14_He4_to_p_O17_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_p_O17_derived) = drate_dT; + } } - } - { - // He4_N15_to_p_O18_derived + { + // N15_He4_to_p_O18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_N15_to_p_O18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18_derived) = drate_dT; + rate_N15_He4_to_p_O18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N15_He4_to_p_O18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_p_O18_derived) = drate_dT; + } } - } - { - // He4_O15_to_p_F18_derived + { + // O15_He4_to_p_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_O15_to_p_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_derived) = drate_dT; + rate_O15_He4_to_p_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O15_He4_to_p_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_p_F18_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_O16_to_p_F19_derived + { + // O16_He4_to_p_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_O16_to_p_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19_derived) = drate_dT; + rate_O16_He4_to_p_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_He4_to_p_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_p_F19_derived) = drate_dT; + } } - } - { - // p_F17_to_He4_O14_derived + { + // F17_p_to_He4_O14_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_F17_to_He4_O14_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_derived) = drate_dT; + rate_F17_p_to_He4_O14_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_p_to_He4_O14_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_He4_O14_derived) = drate_dT; + } } - } - { - // He4_F17_to_p_Ne20_derived + { + // F17_He4_to_p_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); - } + log_scor = rate_eval.log_screen(k_He4_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); + } #endif - rate_He4_F17_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_derived) = drate_dT; + rate_F17_He4_to_p_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_F17_He4_to_p_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_He4_to_p_Ne20_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // p_Ne21_to_He4_F18_derived + { + // Ne21_p_to_He4_F18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); - } + log_scor = rate_eval.log_screen(k_p_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); + } #endif - rate_p_Ne21_to_He4_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_derived) = drate_dT; + rate_Ne21_p_to_He4_F18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne21_p_to_He4_F18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_p_to_He4_F18_derived) = drate_dT; + } } - } - { - // p_Ne22_to_He4_F19_derived + { + // Ne22_p_to_He4_F19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); - } + log_scor = rate_eval.log_screen(k_p_Ne22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); + } #endif - rate_p_Ne22_to_He4_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Ne22_to_He4_F19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne22_to_He4_F19_derived) = drate_dT; + rate_Ne22_p_to_He4_F19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne22_p_to_He4_F19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_p_to_He4_F19_derived) = drate_dT; + } } - } - { - // p_Na21_to_He4_Ne18_derived + { + // Na21_p_to_He4_Ne18_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na21); - } + log_scor = rate_eval.log_screen(k_p_Na21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na21); + } #endif - rate_p_Na21_to_He4_Ne18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Na21_to_He4_Ne18_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na21_to_He4_Ne18_derived) = drate_dT; + rate_Na21_p_to_He4_Ne18_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na21_p_to_He4_Ne18_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_p_to_He4_Ne18_derived) = drate_dT; + } } - } - { - // He4_Na21_to_p_Mg24_derived + { + // Na21_He4_to_p_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na21); - } + log_scor = rate_eval.log_screen(k_He4_Na21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na21); + } #endif - rate_He4_Na21_to_p_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Na21_to_p_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na21_to_p_Mg24_derived) = drate_dT; + rate_Na21_He4_to_p_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na21_He4_to_p_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_He4_to_p_Mg24_derived) = drate_dT; + } } - } - { - // p_Na22_to_He4_Ne19_derived + { + // Na22_p_to_He4_Ne19_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na22); - } + log_scor = rate_eval.log_screen(k_p_Na22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na22); + } #endif - rate_p_Na22_to_He4_Ne19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Na22_to_He4_Ne19_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19_derived) = drate_dT; + rate_Na22_p_to_He4_Ne19_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Na22_p_to_He4_Ne19_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_p_to_He4_Ne19_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // V47_p_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_V47_p_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } + + { + // Mn51_p_to_He4_Cr48_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; + rate_Mn51_p_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_derived + { + // Fe52_to_p_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } -#endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; - } } - } #endif diff --git a/networks/he-burn/cno-he-burn-34am/modified_rates.H b/networks/he-burn/cno-he-burn-34am/modified_rates.H index 13c5468cd..94f471092 100644 --- a/networks/he-burn/cno-he-burn-34am/modified_rates.H +++ b/networks/he-burn/cno-he-burn-34am/modified_rates.H @@ -12,6 +12,9 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template @@ -19,6 +22,7 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) + // represents the sequence: c12(c12,n)mg23(n,γ)mg24 rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -28,40 +32,40 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) + // represents the sequence: o16(o16,n)s31(n,γ)s32 rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) + // represents the sequence: o16(c12,n)si27(n,γ)si28 - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_Na22_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Na22_1p5He4_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Na22 + 1.5 He4 --> Si28 (calls the underlying rate) - - rate_He4_Na22_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_Na22_He4_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_Mg24_to_Na22_He4_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_Mg24_p_p_to_Na22_He4_beta_pos_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // Mg24 + p + p --> Na22 + He4 (calls the underlying rate) - - rate_p_Mg24_to_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_Mg24_p_to_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -107,7 +111,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -117,15 +121,15 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } { - // He4_Na22_to_Si28_modified + // Na22_1p5He4_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -135,15 +139,15 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); } #endif - rate_He4_Na22_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na22_to_Si28_modified) = rate; + rate_Na22_1p5He4_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_1p5He4_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na22_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_Na22_1p5He4_to_Si28_modified) = drate_dT; } } { - // p_Mg24_to_Na22_He4_modified + // Mg24_p_p_to_Na22_He4_beta_pos_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -153,10 +157,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); } #endif - rate_p_Mg24_to_Na22_He4_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg24_to_Na22_He4_modified) = rate; + rate_Mg24_p_p_to_Na22_He4_beta_pos_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_p_p_to_Na22_He4_beta_pos_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg24_to_Na22_He4_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_Mg24_p_p_to_Na22_He4_beta_pos_modified) = drate_dT; } } diff --git a/networks/he-burn/cno-he-burn-34am/pynucastro-info.txt b/networks/he-burn/cno-he-burn-34am/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/he-burn/cno-he-burn-34am/pynucastro-info.txt +++ b/networks/he-burn/cno-he-burn-34am/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/cno-he-burn-34am/reaclib_rates.H b/networks/he-burn/cno-he-burn-34am/reaclib_rates.H index 345f1ba84..120426c10 100644 --- a/networks/he-burn/cno-he-burn-34am/reaclib_rates.H +++ b/networks/he-burn/cno-he-burn-34am/reaclib_rates.H @@ -8,6570 +8,6573 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // N13 --> C13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_C13_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // N13 --> C13 - // wc12w - ln_set_rate = -6.7601; - amrex::ignore_unused(tfactors); + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + // wc12w + ln_set_rate = -6.7601; + amrex::ignore_unused(tfactors); - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_N14_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 --> N14 - // O14 --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -4.62354; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -4.62354; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_N15_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 --> N15 - // O15 --> N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -5.17053; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -5.17053; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + p --> N13 - // C12 + p --> N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_p_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C13_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + p --> N14 - // C13 + p --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_p_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N13_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + p --> O14 - // N13 + p --> O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lg06r + ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // lg06r - ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lg06n + ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lg06n - ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_p_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N14_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + p --> O15 - // N14 + p --> O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // im05r + ln_set_rate = 6.73578 + -4.891 * tfactors.T9i + + 0.0682 * tfactors.lnT9; - // im05r - ln_set_rate = 6.73578 + -4.891 * tfactors.T9i - + 0.0682 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i + + 0.0682 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i - + 0.0682 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05r + ln_set_rate = 7.65444 + -2.998 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // im05r - ln_set_rate = 7.65444 + -2.998 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // im05n - ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // im05n - ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> O16 - // N15 + p --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li10r + ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i + + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i - + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i + + 0.0459037 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i - + 0.0459037 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10r + ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10n + ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // li10n - ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + He4 --> F19 - // N15 + He4 --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> Ne18 - // O14 + He4 --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wh87n + ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // wh87n - ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -4.69948 + -12.159 * tfactors.T9i + + 5.0 * tfactors.lnT9; - // wh87r - ln_set_rate = -4.69948 + -12.159 * tfactors.T9i - + 5.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i + + 5.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i - + 5.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = 3.52636 + -22.61 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = 3.52636 + -22.61 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -2.15417 + -11.73 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = -2.15417 + -11.73 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + He4 --> Ne19 - // O15 + He4 --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // dc11r + ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11r + ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11n + ln_set_rate = 26.2914 + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // dc11n - ln_set_rate = 26.2914 + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> F18 - // O17 + p --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -13.077 + -0.746296 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.077 + -0.746296 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_He4_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O17_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + He4 --> Ne21 - // O17 + He4 --> Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // be13r + ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; - // be13r - ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; - // be13r - ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; - // be13r - ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> F19 - // O18 + p --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 19.917 + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.917 + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_He4_to_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O18_to_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + He4 --> Ne22 - // O18 + He4 --> Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -31.9126 + -2.00306 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -31.9126 + -2.00306 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00306 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00306 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -81.3036 + -0.676112 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -81.3036 + -0.676112 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.676112 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.676112 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 14.9748 + -31.0468 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 14.9748 + -31.0468 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.0468 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.0468 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 82.2053 + -1.58534 * tfactors.T9i + -44.3823 * tfactors.T913i + -46.6617 * tfactors.T913 + + 7.88059 * tfactors.T9 + -0.590829 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 82.2053 + -1.58534 * tfactors.T9i + -44.3823 * tfactors.T913i + -46.6617 * tfactors.T913 - + 7.88059 * tfactors.T9 + -0.590829 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.58534 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -44.3823 * tfactors.T943i + (1.0/3.0) * -46.6617 * tfactors.T923i + + 7.88059 + (5.0/3.0) * -0.590829 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.58534 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -44.3823 * tfactors.T943i + (1.0/3.0) * -46.6617 * tfactors.T923i - + 7.88059 + (5.0/3.0) * -0.590829 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + p --> Ne18 - // F17 + p --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cb09 + ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; - // cb09 - ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cb09 + ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; - // cb09 - ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_He4_to_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F17_to_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + He4 --> Na21 - // F17 + He4 --> Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 41.1529 + -1.72817 * tfactors.T9i + 15.559 * tfactors.T913i + -68.3231 * tfactors.T913 + + 2.54275 * tfactors.T9 + -0.0989207 * tfactors.T953 + 36.8877 * tfactors.lnT9; - // rpsmr - ln_set_rate = 41.1529 + -1.72817 * tfactors.T9i + 15.559 * tfactors.T913i + -68.3231 * tfactors.T913 - + 2.54275 * tfactors.T9 + -0.0989207 * tfactors.T953 + 36.8877 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.72817 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.559 * tfactors.T943i + (1.0/3.0) * -68.3231 * tfactors.T923i + + 2.54275 + (5.0/3.0) * -0.0989207 * tfactors.T923 + 36.8877 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.72817 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.559 * tfactors.T943i + (1.0/3.0) * -68.3231 * tfactors.T923i - + 2.54275 + (5.0/3.0) * -0.0989207 * tfactors.T923 + 36.8877 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> Ne19 - // F18 + p --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_He4_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F18_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + He4 --> Na22 - // F18 + He4 --> Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; - // rpsmr - ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> Ne20 - // F19 + p --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_He4_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F19_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + He4 --> Na23 - // F19 + He4 --> Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 52.7856 + -2.11408 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 + + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 54.4823 * tfactors.lnT9; - // rpsmr - ln_set_rate = 52.7856 + -2.11408 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 - + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 54.4823 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11408 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i + + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 54.4823 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11408 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i - + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 54.4823 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_p_to_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne20_to_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + p --> Na21 - // Ne20 + p --> Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ly18 + ln_set_rate = 195297.0 + -61.14 * tfactors.T9i + 21894.7 * tfactors.T913i + -319153.0 * tfactors.T913 + + 224369.0 * tfactors.T9 + -188049.0 * tfactors.T953 + 48703.4 * tfactors.lnT9; - // ly18 - ln_set_rate = 195297.0 + -61.14 * tfactors.T9i + 21894.7 * tfactors.T913i + -319153.0 * tfactors.T913 - + 224369.0 * tfactors.T9 + -188049.0 * tfactors.T953 + 48703.4 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 61.14 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21894.7 * tfactors.T943i + (1.0/3.0) * -319153.0 * tfactors.T923i + + 224369.0 + (5.0/3.0) * -188049.0 * tfactors.T923 + 48703.4 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 61.14 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21894.7 * tfactors.T943i + (1.0/3.0) * -319153.0 * tfactors.T923i - + 224369.0 + (5.0/3.0) * -188049.0 * tfactors.T923 + 48703.4 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 207.877 + -0.152711 * tfactors.T9i + 15.325 * tfactors.T913i + -294.859 * tfactors.T913 + + 107.692 * tfactors.T9 + -46.2072 * tfactors.T953 + 57.8398 * tfactors.lnT9; - // ly18 - ln_set_rate = 207.877 + -0.152711 * tfactors.T9i + 15.325 * tfactors.T913i + -294.859 * tfactors.T913 - + 107.692 * tfactors.T9 + -46.2072 * tfactors.T953 + 57.8398 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.152711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.325 * tfactors.T943i + (1.0/3.0) * -294.859 * tfactors.T923i + + 107.692 + (5.0/3.0) * -46.2072 * tfactors.T923 + 57.8398 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.152711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.325 * tfactors.T943i + (1.0/3.0) * -294.859 * tfactors.T923i - + 107.692 + (5.0/3.0) * -46.2072 * tfactors.T923 + 57.8398 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 5.83103 + -8.838 * tfactors.T9i + 20.5893 * tfactors.T913i + -17.5841 * tfactors.T913 + + 0.243226 * tfactors.T9 + -0.000231418 * tfactors.T953 + 12.8398 * tfactors.lnT9; - // ly18 - ln_set_rate = 5.83103 + -8.838 * tfactors.T9i + 20.5893 * tfactors.T913i + -17.5841 * tfactors.T913 - + 0.243226 * tfactors.T9 + -0.000231418 * tfactors.T953 + 12.8398 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.838 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 20.5893 * tfactors.T943i + (1.0/3.0) * -17.5841 * tfactors.T923i + + 0.243226 + (5.0/3.0) * -0.000231418 * tfactors.T923 + 12.8398 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.838 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 20.5893 * tfactors.T943i + (1.0/3.0) * -17.5841 * tfactors.T923i - + 0.243226 + (5.0/3.0) * -0.000231418 * tfactors.T923 + 12.8398 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 230.019 + -4.45358 * tfactors.T9i + 258.57 * tfactors.T913i + -506.387 * tfactors.T913 + + 22.1576 * tfactors.T9 + -0.721182 * tfactors.T953 + 230.288 * tfactors.lnT9; - // ly18 - ln_set_rate = 230.019 + -4.45358 * tfactors.T9i + 258.57 * tfactors.T913i + -506.387 * tfactors.T913 - + 22.1576 * tfactors.T9 + -0.721182 * tfactors.T953 + 230.288 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.45358 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 258.57 * tfactors.T943i + (1.0/3.0) * -506.387 * tfactors.T923i + + 22.1576 + (5.0/3.0) * -0.721182 * tfactors.T923 + 230.288 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.45358 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 258.57 * tfactors.T943i + (1.0/3.0) * -506.387 * tfactors.T923i - + 22.1576 + (5.0/3.0) * -0.721182 * tfactors.T923 + 230.288 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_p_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne21_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + p --> Na22 - // Ne21 + p --> Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_p_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne22_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne22 + p --> Na23 - // Ne22 + p --> Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ke17r + ln_set_rate = -0.599331 + -1.72007 * tfactors.T9i + + -0.310765 * tfactors.lnT9; - // ke17r - ln_set_rate = -0.599331 + -1.72007 * tfactors.T9i - + -0.310765 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.72007 * tfactors.T9i * tfactors.T9i + + -0.310765 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.72007 * tfactors.T9i * tfactors.T9i - + -0.310765 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = -21.4345 + -0.410962 * tfactors.T9i + + -1.49019 * tfactors.lnT9; - // ke17r - ln_set_rate = -21.4345 + -0.410962 * tfactors.T9i - + -1.49019 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.410962 * tfactors.T9i * tfactors.T9i + + -1.49019 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.410962 * tfactors.T9i * tfactors.T9i - + -1.49019 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = -4.09035 + -0.799756 * tfactors.T9i + + 3.23558 * tfactors.lnT9; - // ke17r - ln_set_rate = -4.09035 + -0.799756 * tfactors.T9i - + 3.23558 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.799756 * tfactors.T9i * tfactors.T9i + + 3.23558 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.799756 * tfactors.T9i * tfactors.T9i - + 3.23558 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 14.0373 + -8.72377 * tfactors.T9i + + -0.767467 * tfactors.lnT9; - // ke17r - ln_set_rate = 14.0373 + -8.72377 * tfactors.T9i - + -0.767467 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.72377 * tfactors.T9i * tfactors.T9i + + -0.767467 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.72377 * tfactors.T9i * tfactors.T9i - + -0.767467 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 11.6408 + -4.59936 * tfactors.T9i + + 0.156226 * tfactors.lnT9; - // ke17r - ln_set_rate = 11.6408 + -4.59936 * tfactors.T9i - + 0.156226 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.59936 * tfactors.T9i * tfactors.T9i + + 0.156226 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.59936 * tfactors.T9i * tfactors.T9i - + 0.156226 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = -4.00597 + -2.6179 * tfactors.T9i + + -4.29964 * tfactors.lnT9; - // ke17r - ln_set_rate = -4.00597 + -2.6179 * tfactors.T9i - + -4.29964 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.6179 * tfactors.T9i * tfactors.T9i + + -4.29964 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.6179 * tfactors.T9i * tfactors.T9i - + -4.29964 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_He4_to_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na23_to_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + He4 --> Al27 - // Na23 + He4 --> Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 44.7724 + -50.2042 * tfactors.T913i + -1.64239 * tfactors.T913 + + -1.59995 * tfactors.T9 + 0.184933 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 44.7724 + -50.2042 * tfactors.T913i + -1.64239 * tfactors.T913 - + -1.59995 * tfactors.T9 + 0.184933 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * -1.64239 * tfactors.T923i + + -1.59995 + (5.0/3.0) * 0.184933 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * -1.64239 * tfactors.T923i - + -1.59995 + (5.0/3.0) * 0.184933 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_He4_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al27_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + He4 --> P31 - // Al27 + He4 --> P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.2333 + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 + + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.2333 + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 - + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i + + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i - + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> He4 + C12 - // N15 + p --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 20.8972 + -7.406 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 20.8972 + -7.406 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> p + F17 - // O14 + He4 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Ha96r + ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 18.6518 + -26.0 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 18.6518 + -26.0 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96n + ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // Ha96n - ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 16.3087 + -22.51 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 16.3087 + -22.51 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 11.1184 + -13.6 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 11.1184 + -13.6 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = -106.091 + -0.453036 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = -106.091 + -0.453036 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> He4 + N14 - // O17 + p --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.579 + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.579 + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> He4 + N15 - // O18 + p --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.2725 + -1.663 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.2725 + -1.663 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> He4 + O15 - // F18 + p --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_He4_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F18_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + He4 --> p + Ne21 - // F18 + He4 --> p + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; - // rpsmr - ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> He4 + O16 - // F19 + p --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 26.2916 + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 26.2916 + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 14.3586 + -3.286 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // nacrr - ln_set_rate = 14.3586 + -3.286 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 8.239 + -2.46828 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 8.239 + -2.46828 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_He4_to_p_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F19_to_p_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + He4 --> p + Ne22 - // F19 + He4 --> p + Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // da18r + ln_set_rate = 52.9317 + -2.8444 * tfactors.T9i + -38.7722 * tfactors.T913i + -13.3654 * tfactors.T913 + + 0.863648 * tfactors.T9 + -0.0451491 * tfactors.T953 + 1.33333 * tfactors.lnT9; - // da18r - ln_set_rate = 52.9317 + -2.8444 * tfactors.T9i + -38.7722 * tfactors.T913i + -13.3654 * tfactors.T913 - + 0.863648 * tfactors.T9 + -0.0451491 * tfactors.T953 + 1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.8444 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.7722 * tfactors.T943i + (1.0/3.0) * -13.3654 * tfactors.T923i + + 0.863648 + (5.0/3.0) * -0.0451491 * tfactors.T923 + 1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.8444 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.7722 * tfactors.T943i + (1.0/3.0) * -13.3654 * tfactors.T923i - + 0.863648 + (5.0/3.0) * -0.0451491 * tfactors.T923 + 1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // da18r + ln_set_rate = 51.6709 + -45.7808 * tfactors.T9i + -34.5008 * tfactors.T913i + 56.9316 * tfactors.T913 + + 2.09613 * tfactors.T9 + -32.496 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // da18r - ln_set_rate = 51.6709 + -45.7808 * tfactors.T9i + -34.5008 * tfactors.T913i + 56.9316 * tfactors.T913 - + 2.09613 * tfactors.T9 + -32.496 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 45.7808 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.5008 * tfactors.T943i + (1.0/3.0) * 56.9316 * tfactors.T923i + + 2.09613 + (5.0/3.0) * -32.496 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 45.7808 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.5008 * tfactors.T943i + (1.0/3.0) * 56.9316 * tfactors.T923i - + 2.09613 + (5.0/3.0) * -32.496 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // da18r + ln_set_rate = 29430.6 + -133.026 * tfactors.T9i + 12625.1 * tfactors.T913i + -49107.1 * tfactors.T913 + + 9227.53 * tfactors.T9 + -2086.65 * tfactors.T953 + 14520.2 * tfactors.lnT9; - // da18r - ln_set_rate = 29430.6 + -133.026 * tfactors.T9i + 12625.1 * tfactors.T913i + -49107.1 * tfactors.T913 - + 9227.53 * tfactors.T9 + -2086.65 * tfactors.T953 + 14520.2 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 133.026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 12625.1 * tfactors.T943i + (1.0/3.0) * -49107.1 * tfactors.T923i + + 9227.53 + (5.0/3.0) * -2086.65 * tfactors.T923 + 14520.2 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 133.026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 12625.1 * tfactors.T943i + (1.0/3.0) * -49107.1 * tfactors.T923i - + 9227.53 + (5.0/3.0) * -2086.65 * tfactors.T923 + 14520.2 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_He4_to_p_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne18_to_p_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 + He4 --> p + Na21 - // Ne18 + He4 --> p + Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mo14r + ln_set_rate = -23.5811 + -5.76874 * tfactors.T9i + 8.5632e-08 * tfactors.T913i + 24.8579 * tfactors.T913 + + 0.0823845 * tfactors.T9 + -0.365374 * tfactors.T953 + -2.21415e-06 * tfactors.lnT9; - // mo14r - ln_set_rate = -23.5811 + -5.76874 * tfactors.T9i + 8.5632e-08 * tfactors.T913i + 24.8579 * tfactors.T913 - + 0.0823845 * tfactors.T9 + -0.365374 * tfactors.T953 + -2.21415e-06 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.76874 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.5632e-08 * tfactors.T943i + (1.0/3.0) * 24.8579 * tfactors.T923i + + 0.0823845 + (5.0/3.0) * -0.365374 * tfactors.T923 + -2.21415e-06 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.76874 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.5632e-08 * tfactors.T943i + (1.0/3.0) * 24.8579 * tfactors.T923i - + 0.0823845 + (5.0/3.0) * -0.365374 * tfactors.T923 + -2.21415e-06 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // mo14r + ln_set_rate = -22.4389 + -10.2598 * tfactors.T9i + 4.73034e-07 * tfactors.T913i + 36.29 * tfactors.T913 + + -6.56565 * tfactors.T9 + -2.96287e-06 * tfactors.T953 + -9.00373e-07 * tfactors.lnT9; - // mo14r - ln_set_rate = -22.4389 + -10.2598 * tfactors.T9i + 4.73034e-07 * tfactors.T913i + 36.29 * tfactors.T913 - + -6.56565 * tfactors.T9 + -2.96287e-06 * tfactors.T953 + -9.00373e-07 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.2598 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.73034e-07 * tfactors.T943i + (1.0/3.0) * 36.29 * tfactors.T923i + + -6.56565 + (5.0/3.0) * -2.96287e-06 * tfactors.T923 + -9.00373e-07 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2598 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.73034e-07 * tfactors.T943i + (1.0/3.0) * 36.29 * tfactors.T923i - + -6.56565 + (5.0/3.0) * -2.96287e-06 * tfactors.T923 + -9.00373e-07 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // mo14r + ln_set_rate = -37.3979 + -3.8681 * tfactors.T9i + 7.09521e-06 * tfactors.T913i + 34.1789 * tfactors.T913 + + -1.72974 * tfactors.T9 + -0.0395081 * tfactors.T953 + -7.82759e-07 * tfactors.lnT9; - // mo14r - ln_set_rate = -37.3979 + -3.8681 * tfactors.T9i + 7.09521e-06 * tfactors.T913i + 34.1789 * tfactors.T913 - + -1.72974 * tfactors.T9 + -0.0395081 * tfactors.T953 + -7.82759e-07 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.8681 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.09521e-06 * tfactors.T943i + (1.0/3.0) * 34.1789 * tfactors.T923i + + -1.72974 + (5.0/3.0) * -0.0395081 * tfactors.T923 + -7.82759e-07 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.8681 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.09521e-06 * tfactors.T943i + (1.0/3.0) * 34.1789 * tfactors.T923i - + -1.72974 + (5.0/3.0) * -0.0395081 * tfactors.T923 + -7.82759e-07 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_He4_to_p_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne19_to_p_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 + He4 --> p + Na22 - // Ne19 + He4 --> p + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 43.1874 + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 + + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 43.1874 + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 - + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i + + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i - + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_p_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne20_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + p --> He4 + F17 - // Ne20 + p --> He4 + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_p_to_He4_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg24_to_He4_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + p --> He4 + Na21 - // Mg24 + p --> He4 + Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 42.3867 + -79.897 * tfactors.T9i + -49.9621 * tfactors.T913i + 5.90498 * tfactors.T913 + + -1.6598 * tfactors.T9 + 0.117817 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 42.3867 + -79.897 * tfactors.T9i + -49.9621 * tfactors.T913i + 5.90498 * tfactors.T913 - + -1.6598 * tfactors.T9 + 0.117817 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.897 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -49.9621 * tfactors.T943i + (1.0/3.0) * 5.90498 * tfactors.T923i + + -1.6598 + (5.0/3.0) * 0.117817 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.897 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -49.9621 * tfactors.T943i + (1.0/3.0) * 5.90498 * tfactors.T923i - + -1.6598 + (5.0/3.0) * 0.117817 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> n + S31 - // O16 + O16 --> n + S31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> n + Si27 - // O16 + C12 --> n + Si27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_He4_to_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na22_to_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + He4 --> Al26 - // Na22 + He4 --> Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.3797 + -50.0924 * tfactors.T913i + -0.390826 * tfactors.T913 + + -0.99531 * tfactors.T9 + 0.101354 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.3797 + -50.0924 * tfactors.T913i + -0.390826 * tfactors.T913 - + -0.99531 * tfactors.T9 + 0.101354 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * -0.390826 * tfactors.T923i + + -0.99531 + (5.0/3.0) * 0.101354 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * -0.390826 * tfactors.T923i - + -0.99531 + (5.0/3.0) * 0.101354 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_p_to_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg24_to_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + p --> Al25 - // Mg24 + p --> Al25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 8.24021 + -2.48451 * tfactors.T9i + -1.57811 * tfactors.T913 + + 1.52232 * tfactors.T9 + -0.183001 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 8.24021 + -2.48451 * tfactors.T9i + -1.57811 * tfactors.T913 - + 1.52232 * tfactors.T9 + -0.183001 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.48451 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.57811 * tfactors.T923i + + 1.52232 + (5.0/3.0) * -0.183001 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.48451 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.57811 * tfactors.T923i - + 1.52232 + (5.0/3.0) * -0.183001 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.8966 + -22.0227 * tfactors.T913i + 0.361297 * tfactors.T913 + + 2.61292 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.8966 + -22.0227 * tfactors.T913i + 0.361297 * tfactors.T913 - + 2.61292 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -22.0227 * tfactors.T943i + (1.0/3.0) * 0.361297 * tfactors.T923i + + 2.61292 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -22.0227 * tfactors.T943i + (1.0/3.0) * 0.361297 * tfactors.T923i - + 2.61292 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - ln_set_rate += log_scor; + // K39 + p --> Ca40 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; -} + ln_set_rate += log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - // K39 + p --> He4 + Ar36 + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p + Mn51 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> Fe52 - // Mn51 + p --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // N13_to_C13_reaclib + { + // N13_to_C13_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_C13_beta_pos_reaclib) = drate_dT; + } } - } - { - // O14_to_N14_reaclib + { + // O14_to_N14_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_N14_beta_pos_reaclib) = drate_dT; + } } - } - { - // O15_to_N15_reaclib + { + // O15_to_N15_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_N15_beta_pos_reaclib) = drate_dT; + } } - } - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // p_C13_to_N14_reaclib + { + // C13_p_to_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); - } + log_scor = rate_eval.log_screen(k_p_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); + } #endif - rate_p_C13_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_N14_reaclib) = drate_dT; + rate_C13_p_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_p_to_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_p_to_N14_reaclib) = drate_dT; + } } - } - { - // p_N13_to_O14_reaclib + { + // N13_p_to_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); - } + log_scor = rate_eval.log_screen(k_p_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); + } #endif - rate_p_N13_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N13_to_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N13_to_O14_reaclib) = drate_dT; + rate_N13_p_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_p_to_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_p_to_O14_reaclib) = drate_dT; + } } - } - { - // p_N14_to_O15_reaclib + { + // N14_p_to_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); - } + log_scor = rate_eval.log_screen(k_p_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); + } #endif - rate_p_N14_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N14_to_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N14_to_O15_reaclib) = drate_dT; + rate_N14_p_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_p_to_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_p_to_O15_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_N15_to_O16_reaclib + { + // N15_p_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_O16_reaclib) = drate_dT; + rate_N15_p_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_N15_to_F19_reaclib + { + // N15_He4_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N15_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_F19_reaclib) = drate_dT; + rate_N15_He4_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_He4_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_F19_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_Ne18_reaclib + { + // O14_He4_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18_reaclib) = drate_dT; + rate_O14_He4_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_Ne18_reaclib) = drate_dT; + } } - } - { - // He4_O15_to_Ne19_reaclib + { + // O15_He4_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O15_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19_reaclib) = drate_dT; + rate_O15_He4_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_He4_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_Ne19_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // p_O17_to_F18_reaclib + { + // O17_p_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_F18_reaclib) = drate_dT; + rate_O17_p_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_F18_reaclib) = drate_dT; + } } - } - { - // He4_O17_to_Ne21_reaclib + { + // O17_He4_to_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); - } + log_scor = rate_eval.log_screen(k_He4_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); + } #endif - rate_He4_O17_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O17_to_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21_reaclib) = drate_dT; + rate_O17_He4_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_He4_to_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_He4_to_Ne21_reaclib) = drate_dT; + } } - } - { - // p_O18_to_F19_reaclib + { + // O18_p_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_F19_reaclib) = drate_dT; + rate_O18_p_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_F19_reaclib) = drate_dT; + } } - } - { - // He4_O18_to_Ne22_reaclib + { + // O18_He4_to_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O18); - } + log_scor = rate_eval.log_screen(k_He4_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O18); + } #endif - rate_He4_O18_to_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O18_to_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O18_to_Ne22_reaclib) = drate_dT; + rate_O18_He4_to_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_He4_to_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_He4_to_Ne22_reaclib) = drate_dT; + } } - } - { - // p_F17_to_Ne18_reaclib + { + // F17_p_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F17_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18_reaclib) = drate_dT; + rate_F17_p_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_p_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_Ne18_reaclib) = drate_dT; + } } - } - { - // He4_F17_to_Na21_reaclib + { + // F17_He4_to_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); - } + log_scor = rate_eval.log_screen(k_He4_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); + } #endif - rate_He4_F17_to_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F17_to_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_Na21_reaclib) = drate_dT; + rate_F17_He4_to_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_He4_to_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_He4_to_Na21_reaclib) = drate_dT; + } } - } - { - // p_F18_to_Ne19_reaclib + { + // F18_p_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19_reaclib) = drate_dT; + rate_F18_p_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_Ne19_reaclib) = drate_dT; + } } - } - { - // He4_F18_to_Na22_reaclib + { + // F18_He4_to_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); - } + log_scor = rate_eval.log_screen(k_He4_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); + } #endif - rate_He4_F18_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F18_to_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22_reaclib) = drate_dT; + rate_F18_He4_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_He4_to_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_He4_to_Na22_reaclib) = drate_dT; + } } - } - { - // p_F19_to_Ne20_reaclib + { + // F19_p_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20_reaclib) = drate_dT; + rate_F19_p_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_F19_to_Na23_reaclib + { + // F19_He4_to_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); - } + log_scor = rate_eval.log_screen(k_He4_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); + } #endif - rate_He4_F19_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F19_to_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F19_to_Na23_reaclib) = drate_dT; + rate_F19_He4_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_He4_to_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_He4_to_Na23_reaclib) = drate_dT; + } } - } - { - // p_Ne20_to_Na21_reaclib + { + // Ne20_p_to_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); - } + log_scor = rate_eval.log_screen(k_p_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); + } #endif - rate_p_Ne20_to_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne20_to_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne20_to_Na21_reaclib) = drate_dT; + rate_Ne20_p_to_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_p_to_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_p_to_Na21_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Ne21_to_Na22_reaclib + { + // Ne21_p_to_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); - } + log_scor = rate_eval.log_screen(k_p_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); + } #endif - rate_p_Ne21_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne21_to_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22_reaclib) = drate_dT; + rate_Ne21_p_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_p_to_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_p_to_Na22_reaclib) = drate_dT; + } } - } - { - // p_Ne22_to_Na23_reaclib + { + // Ne22_p_to_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); - } + log_scor = rate_eval.log_screen(k_p_Ne22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); + } #endif - rate_p_Ne22_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne22_to_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne22_to_Na23_reaclib) = drate_dT; + rate_Ne22_p_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne22_p_to_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_p_to_Na23_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Na23_to_Al27_reaclib + { + // Na23_He4_to_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na23); - } + log_scor = rate_eval.log_screen(k_He4_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na23); + } #endif - rate_He4_Na23_to_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na23_to_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na23_to_Al27_reaclib) = drate_dT; + rate_Na23_He4_to_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_He4_to_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_He4_to_Al27_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Al27_to_P31_reaclib + { + // Al27_He4_to_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); - } + log_scor = rate_eval.log_screen(k_He4_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); + } #endif - rate_He4_Al27_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al27_to_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al27_to_P31_reaclib) = drate_dT; + rate_Al27_He4_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_He4_to_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_He4_to_P31_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // p_N15_to_He4_C12_reaclib + { + // N15_p_to_He4_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_He4_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12_reaclib) = drate_dT; + rate_N15_p_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_He4_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_He4_C12_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_p_F17_reaclib + { + // O14_He4_to_p_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_p_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17_reaclib) = drate_dT; + rate_O14_He4_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_p_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_p_F17_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_O17_to_He4_N14_reaclib + { + // O17_p_to_He4_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_He4_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14_reaclib) = drate_dT; + rate_O17_p_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_He4_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_He4_N14_reaclib) = drate_dT; + } } - } - { - // p_O18_to_He4_N15_reaclib + { + // O18_p_to_He4_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_He4_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15_reaclib) = drate_dT; + rate_O18_p_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_He4_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_He4_N15_reaclib) = drate_dT; + } } - } - { - // p_F18_to_He4_O15_reaclib + { + // F18_p_to_He4_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_He4_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15_reaclib) = drate_dT; + rate_F18_p_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_He4_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_He4_O15_reaclib) = drate_dT; + } } - } - { - // He4_F18_to_p_Ne21_reaclib + { + // F18_He4_to_p_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); - } + log_scor = rate_eval.log_screen(k_He4_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); + } #endif - rate_He4_F18_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F18_to_p_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21_reaclib) = drate_dT; + rate_F18_He4_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_He4_to_p_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_He4_to_p_Ne21_reaclib) = drate_dT; + } } - } - { - // p_F19_to_He4_O16_reaclib + { + // F19_p_to_He4_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_He4_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16_reaclib) = drate_dT; + rate_F19_p_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_He4_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_He4_O16_reaclib) = drate_dT; + } } - } - { - // He4_F19_to_p_Ne22_reaclib + { + // F19_He4_to_p_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); - } + log_scor = rate_eval.log_screen(k_He4_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); + } #endif - rate_He4_F19_to_p_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F19_to_p_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F19_to_p_Ne22_reaclib) = drate_dT; + rate_F19_He4_to_p_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_He4_to_p_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_He4_to_p_Ne22_reaclib) = drate_dT; + } } - } - { - // He4_Ne18_to_p_Na21_reaclib + { + // Ne18_He4_to_p_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne18); - } + log_scor = rate_eval.log_screen(k_He4_Ne18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne18); + } #endif - rate_He4_Ne18_to_p_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne18_to_p_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne18_to_p_Na21_reaclib) = drate_dT; + rate_Ne18_He4_to_p_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_He4_to_p_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_He4_to_p_Na21_reaclib) = drate_dT; + } } - } - { - // He4_Ne19_to_p_Na22_reaclib + { + // Ne19_He4_to_p_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne19); - } + log_scor = rate_eval.log_screen(k_He4_Ne19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne19); + } #endif - rate_He4_Ne19_to_p_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne19_to_p_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22_reaclib) = drate_dT; + rate_Ne19_He4_to_p_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_He4_to_p_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_He4_to_p_Na22_reaclib) = drate_dT; + } } - } - { - // p_Ne20_to_He4_F17_reaclib + { + // Ne20_p_to_He4_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); - } + log_scor = rate_eval.log_screen(k_p_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); + } #endif - rate_p_Ne20_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne20_to_He4_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17_reaclib) = drate_dT; + rate_Ne20_p_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_p_to_He4_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_p_to_He4_F17_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Mg24_to_He4_Na21_reaclib + { + // Mg24_p_to_He4_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); - } + log_scor = rate_eval.log_screen(k_p_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); + } #endif - rate_p_Mg24_to_He4_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg24_to_He4_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg24_to_He4_Na21_reaclib) = drate_dT; + rate_Mg24_p_to_He4_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_p_to_He4_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_p_to_He4_Na21_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_n_S31_reaclib + { + // O16_O16_to_n_S31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_n_Si27_reaclib + { + // O16_C12_to_n_Si27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_reaclib) = drate_dT; + } } - } - { - // He4_Na22_to_Al26_reaclib + { + // Na22_He4_to_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); - } + log_scor = rate_eval.log_screen(k_He4_Na22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); + } #endif - rate_He4_Na22_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na22_to_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na22_to_Al26_reaclib) = drate_dT; + rate_Na22_He4_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_He4_to_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_He4_to_Al26_reaclib) = drate_dT; + } } - } - { - // p_Mg24_to_Al25_reaclib + { + // Mg24_p_to_Al25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); - } + log_scor = rate_eval.log_screen(k_p_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); + } #endif - rate_p_Mg24_to_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg24_to_Al25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg24_to_Al25_reaclib) = drate_dT; + rate_Mg24_p_to_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_p_to_Al25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_p_to_Al25_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_Mn51_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_Fe52_reaclib + { + // Mn51_p_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/he-burn/cno-he-burn-34am/tabular_weak_rates.H b/networks/he-burn/cno-he-burn-34am/tabular_weak_rates.H new file mode 100644 index 000000000..cde040f68 --- /dev/null +++ b/networks/he-burn/cno-he-burn-34am/tabular_weak_rates.H @@ -0,0 +1,132 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F17_to_O17_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_O17_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); + + tabular_evaluate(j_O17_F17_meta, j_O17_F17_rhoy, j_O17_F17_temp, j_O17_F17_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_O17_to_F17_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_to_F17_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(O17) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F18_Ne18_meta, j_F18_Ne18_rhoy, j_F18_Ne18_temp, j_F18_Ne18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F18_to_Ne18_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_Ne18_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F18_to_O18_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_O18_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne18_to_F18_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_F18_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_O18_F18_meta, j_O18_F18_rhoy, j_O18_F18_temp, j_O18_F18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_O18_to_F18_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_to_F18_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(O18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F19_Ne19_meta, j_F19_Ne19_rhoy, j_F19_Ne19_temp, j_F19_Ne19_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F19_to_Ne19_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_Ne19_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F19) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne19_to_F19_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_F19_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Na21_Ne21_meta, j_Na21_Ne21_rhoy, j_Na21_Ne21_temp, j_Na21_Ne21_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Na21_to_Ne21_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_to_Ne21_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Na21) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne21_Na21_meta, j_Ne21_Na21_rhoy, j_Ne21_Na21_temp, j_Ne21_Na21_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne21_to_Na21_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_to_Na21_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne21) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Na22_Ne22_meta, j_Na22_Ne22_rhoy, j_Na22_Ne22_temp, j_Na22_Ne22_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Na22_to_Ne22_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_Ne22_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne22_Na22_meta, j_Ne22_Na22_rhoy, j_Ne22_Na22_temp, j_Ne22_Na22_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne22_to_Na22_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_to_Na22_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne22) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/he-burn/cno-he-burn-34am/temperature_table_rates.H b/networks/he-burn/cno-he-burn-34am/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/he-burn/cno-he-burn-34am/temperature_table_rates.H +++ b/networks/he-burn/cno-he-burn-34am/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/he-burn-19am/Make.package b/networks/he-burn/he-burn-19am/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/he-burn-19am/Make.package +++ b/networks/he-burn/he-burn-19am/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/he-burn-19am/_parameters b/networks/he-burn/he-burn-19am/_parameters index c878a50f5..78534a2de 100644 --- a/networks/he-burn/he-burn-19am/_parameters +++ b/networks/he-burn/he-burn-19am/_parameters @@ -1,4 +1,4 @@ @namespace: network -disable_p_C12_to_N13_reaclib int 0 -disable_He4_N13_to_p_O16_reaclib int 0 +disable_C12_p_to_N13_reaclib int 0 +disable_N13_He4_to_p_O16_reaclib int 0 diff --git a/networks/he-burn/he-burn-19am/actual_network.H b/networks/he-burn/he-burn-19am/actual_network.H index e286d657b..682f9cf7c 100644 --- a/networks/he-burn/he-burn-19am/actual_network.H +++ b/networks/he-burn/he-burn-19am/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -210,49 +210,49 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_p_C12_to_N13_reaclib = 1, - k_He4_C12_to_O16_reaclib = 2, - k_He4_O16_to_Ne20_reaclib = 3, - k_He4_Ne20_to_Mg24_reaclib = 4, - k_p_Na23_to_Mg24_reaclib = 5, - k_He4_Mg24_to_Si28_reaclib = 6, - k_p_Al27_to_Si28_reaclib = 7, - k_He4_Si28_to_S32_reaclib = 8, - k_p_P31_to_S32_reaclib = 9, + k_C12_p_to_N13_reaclib = 1, + k_C12_He4_to_O16_reaclib = 2, + k_O16_He4_to_Ne20_reaclib = 3, + k_Ne20_He4_to_Mg24_reaclib = 4, + k_Na23_p_to_Mg24_reaclib = 5, + k_Mg24_He4_to_Si28_reaclib = 6, + k_Al27_p_to_Si28_reaclib = 7, + k_Si28_He4_to_S32_reaclib = 8, + k_P31_p_to_S32_reaclib = 9, k_C12_C12_to_p_Na23_reaclib = 10, k_C12_C12_to_He4_Ne20_reaclib = 11, - k_He4_N13_to_p_O16_reaclib = 12, - k_C12_O16_to_p_Al27_reaclib = 13, - k_C12_O16_to_He4_Mg24_reaclib = 14, + k_N13_He4_to_p_O16_reaclib = 12, + k_O16_C12_to_p_Al27_reaclib = 13, + k_O16_C12_to_He4_Mg24_reaclib = 14, k_O16_O16_to_p_P31_reaclib = 15, k_O16_O16_to_He4_Si28_reaclib = 16, - k_p_Na23_to_He4_Ne20_reaclib = 17, - k_p_Al27_to_He4_Mg24_reaclib = 18, - k_p_P31_to_He4_Si28_reaclib = 19, + k_Na23_p_to_He4_Ne20_reaclib = 17, + k_Al27_p_to_He4_Mg24_reaclib = 18, + k_P31_p_to_He4_Si28_reaclib = 19, k_He4_He4_He4_to_C12_reaclib = 20, - k_He4_N14_to_F18_reaclib = 21, - k_p_O16_to_F17_reaclib = 22, + k_N14_He4_to_F18_reaclib = 21, + k_O16_p_to_F17_reaclib = 22, k_C12_C12_to_n_Mg23_reaclib = 23, k_O16_O16_to_n_S31_reaclib = 24, - k_C12_O16_to_n_Si27_reaclib = 25, - k_He4_S32_to_Ar36_reaclib = 26, - k_p_Cl35_to_Ar36_reaclib = 27, - k_p_Cl35_to_He4_S32_reaclib = 28, - k_He4_Ar36_to_Ca40_reaclib = 29, - k_p_K39_to_Ca40_reaclib = 30, - k_p_K39_to_He4_Ar36_reaclib = 31, - k_He4_Ca40_to_Ti44_reaclib = 32, - k_p_Sc43_to_Ti44_reaclib = 33, - k_p_Sc43_to_He4_Ca40_reaclib = 34, - k_He4_Ti44_to_Cr48_reaclib = 35, - k_He4_Ti44_to_p_V47_reaclib = 36, - k_p_V47_to_Cr48_reaclib = 37, - k_He4_Cr48_to_Fe52_reaclib = 38, - k_He4_Cr48_to_p_Mn51_reaclib = 39, - k_p_Mn51_to_Fe52_reaclib = 40, - k_He4_Fe52_to_Ni56_reaclib = 41, - k_He4_Fe52_to_p_Co55_reaclib = 42, - k_p_Co55_to_Ni56_reaclib = 43, + k_O16_C12_to_n_Si27_reaclib = 25, + k_S32_He4_to_Ar36_reaclib = 26, + k_Cl35_p_to_He4_S32_reaclib = 27, + k_Cl35_p_to_Ar36_reaclib = 28, + k_Ar36_He4_to_Ca40_reaclib = 29, + k_K39_p_to_He4_Ar36_reaclib = 30, + k_K39_p_to_Ca40_reaclib = 31, + k_Ca40_He4_to_Ti44_reaclib = 32, + k_Sc43_p_to_He4_Ca40_reaclib = 33, + k_Sc43_p_to_Ti44_reaclib = 34, + k_Ti44_He4_to_p_V47_reaclib = 35, + k_Ti44_He4_to_Cr48_reaclib = 36, + k_V47_p_to_Cr48_reaclib = 37, + k_Cr48_He4_to_p_Mn51_reaclib = 38, + k_Cr48_He4_to_Fe52_reaclib = 39, + k_Mn51_p_to_Fe52_reaclib = 40, + k_Fe52_He4_to_p_Co55_reaclib = 41, + k_Fe52_He4_to_Ni56_reaclib = 42, + k_Co55_p_to_Ni56_reaclib = 43, k_S32_He4_to_Ar36_approx = 44, k_Ar36_to_S32_He4_approx = 45, k_Ar36_He4_to_Ca40_approx = 46, @@ -265,11 +265,11 @@ namespace Rates k_Fe52_to_Cr48_He4_approx = 53, k_Fe52_He4_to_Ni56_approx = 54, k_Ni56_to_Fe52_He4_approx = 55, - k_He4_N14_to_Ne20_modified = 56, - k_p_O16_to_N14_He4_modified = 57, + k_N14_1p5He4_to_Ne20_modified = 56, + k_O16_p_p_to_N14_He4_beta_pos_modified = 57, k_C12_C12_to_Mg24_modified = 58, k_O16_O16_to_S32_modified = 59, - k_C12_O16_to_Si28_modified = 60, + k_O16_C12_to_Si28_modified = 60, k_N13_to_p_C12_derived = 61, k_O16_to_He4_C12_derived = 62, k_Ne20_to_He4_O16_derived = 63, @@ -279,30 +279,30 @@ namespace Rates k_Si28_to_He4_Mg24_derived = 67, k_S32_to_p_P31_derived = 68, k_S32_to_He4_Si28_derived = 69, - k_C12_to_He4_He4_He4_derived = 70, - k_p_O16_to_He4_N13_derived = 71, - k_He4_Ne20_to_p_Na23_derived = 72, - k_He4_Mg24_to_p_Al27_derived = 73, - k_He4_Si28_to_p_P31_derived = 74, - k_He4_S32_to_p_Cl35_derived = 75, + k_C12_to_3He4_derived = 70, + k_O16_p_to_He4_N13_derived = 71, + k_Ne20_He4_to_p_Na23_derived = 72, + k_Mg24_He4_to_p_Al27_derived = 73, + k_Si28_He4_to_p_P31_derived = 74, + k_S32_He4_to_p_Cl35_derived = 75, k_Ar36_to_He4_S32_derived = 76, k_Ar36_to_p_Cl35_derived = 77, - k_He4_Ar36_to_p_K39_derived = 78, + k_Ar36_He4_to_p_K39_derived = 78, k_Ca40_to_He4_Ar36_derived = 79, k_Ca40_to_p_K39_derived = 80, - k_He4_Ca40_to_p_Sc43_derived = 81, + k_Ca40_He4_to_p_Sc43_derived = 81, k_Ti44_to_He4_Ca40_derived = 82, k_Ti44_to_p_Sc43_derived = 83, - k_Cr48_to_He4_Ti44_derived = 84, - k_Cr48_to_p_V47_derived = 85, - k_p_V47_to_He4_Ti44_derived = 86, - k_Fe52_to_He4_Cr48_derived = 87, - k_Fe52_to_p_Mn51_derived = 88, - k_p_Mn51_to_He4_Cr48_derived = 89, - k_Ni56_to_He4_Fe52_derived = 90, - k_Ni56_to_p_Co55_derived = 91, - k_p_Co55_to_He4_Fe52_derived = 92, - NumRates = k_p_Co55_to_He4_Fe52_derived + k_V47_p_to_He4_Ti44_derived = 84, + k_Cr48_to_He4_Ti44_derived = 85, + k_Cr48_to_p_V47_derived = 86, + k_Mn51_p_to_He4_Cr48_derived = 87, + k_Fe52_to_He4_Cr48_derived = 88, + k_Fe52_to_p_Mn51_derived = 89, + k_Co55_p_to_He4_Fe52_derived = 90, + k_Ni56_to_He4_Fe52_derived = 91, + k_Ni56_to_p_Co55_derived = 92, + NumRates = k_Ni56_to_p_Co55_derived }; enum ScreenPairs : @@ -346,49 +346,49 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "p_C12_to_N13_reaclib", // 1, - "He4_C12_to_O16_reaclib", // 2, - "He4_O16_to_Ne20_reaclib", // 3, - "He4_Ne20_to_Mg24_reaclib", // 4, - "p_Na23_to_Mg24_reaclib", // 5, - "He4_Mg24_to_Si28_reaclib", // 6, - "p_Al27_to_Si28_reaclib", // 7, - "He4_Si28_to_S32_reaclib", // 8, - "p_P31_to_S32_reaclib", // 9, + "C12_p_to_N13_reaclib", // 1, + "C12_He4_to_O16_reaclib", // 2, + "O16_He4_to_Ne20_reaclib", // 3, + "Ne20_He4_to_Mg24_reaclib", // 4, + "Na23_p_to_Mg24_reaclib", // 5, + "Mg24_He4_to_Si28_reaclib", // 6, + "Al27_p_to_Si28_reaclib", // 7, + "Si28_He4_to_S32_reaclib", // 8, + "P31_p_to_S32_reaclib", // 9, "C12_C12_to_p_Na23_reaclib", // 10, "C12_C12_to_He4_Ne20_reaclib", // 11, - "He4_N13_to_p_O16_reaclib", // 12, - "C12_O16_to_p_Al27_reaclib", // 13, - "C12_O16_to_He4_Mg24_reaclib", // 14, + "N13_He4_to_p_O16_reaclib", // 12, + "O16_C12_to_p_Al27_reaclib", // 13, + "O16_C12_to_He4_Mg24_reaclib", // 14, "O16_O16_to_p_P31_reaclib", // 15, "O16_O16_to_He4_Si28_reaclib", // 16, - "p_Na23_to_He4_Ne20_reaclib", // 17, - "p_Al27_to_He4_Mg24_reaclib", // 18, - "p_P31_to_He4_Si28_reaclib", // 19, + "Na23_p_to_He4_Ne20_reaclib", // 17, + "Al27_p_to_He4_Mg24_reaclib", // 18, + "P31_p_to_He4_Si28_reaclib", // 19, "He4_He4_He4_to_C12_reaclib", // 20, - "He4_N14_to_F18_reaclib", // 21, - "p_O16_to_F17_reaclib", // 22, + "N14_He4_to_F18_reaclib", // 21, + "O16_p_to_F17_reaclib", // 22, "C12_C12_to_n_Mg23_reaclib", // 23, "O16_O16_to_n_S31_reaclib", // 24, - "C12_O16_to_n_Si27_reaclib", // 25, - "He4_S32_to_Ar36_reaclib", // 26, - "p_Cl35_to_Ar36_reaclib", // 27, - "p_Cl35_to_He4_S32_reaclib", // 28, - "He4_Ar36_to_Ca40_reaclib", // 29, - "p_K39_to_Ca40_reaclib", // 30, - "p_K39_to_He4_Ar36_reaclib", // 31, - "He4_Ca40_to_Ti44_reaclib", // 32, - "p_Sc43_to_Ti44_reaclib", // 33, - "p_Sc43_to_He4_Ca40_reaclib", // 34, - "He4_Ti44_to_Cr48_reaclib", // 35, - "He4_Ti44_to_p_V47_reaclib", // 36, - "p_V47_to_Cr48_reaclib", // 37, - "He4_Cr48_to_Fe52_reaclib", // 38, - "He4_Cr48_to_p_Mn51_reaclib", // 39, - "p_Mn51_to_Fe52_reaclib", // 40, - "He4_Fe52_to_Ni56_reaclib", // 41, - "He4_Fe52_to_p_Co55_reaclib", // 42, - "p_Co55_to_Ni56_reaclib", // 43, + "O16_C12_to_n_Si27_reaclib", // 25, + "S32_He4_to_Ar36_reaclib", // 26, + "Cl35_p_to_He4_S32_reaclib", // 27, + "Cl35_p_to_Ar36_reaclib", // 28, + "Ar36_He4_to_Ca40_reaclib", // 29, + "K39_p_to_He4_Ar36_reaclib", // 30, + "K39_p_to_Ca40_reaclib", // 31, + "Ca40_He4_to_Ti44_reaclib", // 32, + "Sc43_p_to_He4_Ca40_reaclib", // 33, + "Sc43_p_to_Ti44_reaclib", // 34, + "Ti44_He4_to_p_V47_reaclib", // 35, + "Ti44_He4_to_Cr48_reaclib", // 36, + "V47_p_to_Cr48_reaclib", // 37, + "Cr48_He4_to_p_Mn51_reaclib", // 38, + "Cr48_He4_to_Fe52_reaclib", // 39, + "Mn51_p_to_Fe52_reaclib", // 40, + "Fe52_He4_to_p_Co55_reaclib", // 41, + "Fe52_He4_to_Ni56_reaclib", // 42, + "Co55_p_to_Ni56_reaclib", // 43, "S32_He4_to_Ar36_approx", // 44, "Ar36_to_S32_He4_approx", // 45, "Ar36_He4_to_Ca40_approx", // 46, @@ -401,11 +401,11 @@ namespace Rates "Fe52_to_Cr48_He4_approx", // 53, "Fe52_He4_to_Ni56_approx", // 54, "Ni56_to_Fe52_He4_approx", // 55, - "He4_N14_to_Ne20_modified", // 56, - "p_O16_to_N14_He4_modified", // 57, + "N14_1p5He4_to_Ne20_modified", // 56, + "O16_p_p_to_N14_He4_beta_pos_modified", // 57, "C12_C12_to_Mg24_modified", // 58, "O16_O16_to_S32_modified", // 59, - "C12_O16_to_Si28_modified", // 60, + "O16_C12_to_Si28_modified", // 60, "N13_to_p_C12_derived", // 61, "O16_to_He4_C12_derived", // 62, "Ne20_to_He4_O16_derived", // 63, @@ -415,29 +415,29 @@ namespace Rates "Si28_to_He4_Mg24_derived", // 67, "S32_to_p_P31_derived", // 68, "S32_to_He4_Si28_derived", // 69, - "C12_to_He4_He4_He4_derived", // 70, - "p_O16_to_He4_N13_derived", // 71, - "He4_Ne20_to_p_Na23_derived", // 72, - "He4_Mg24_to_p_Al27_derived", // 73, - "He4_Si28_to_p_P31_derived", // 74, - "He4_S32_to_p_Cl35_derived", // 75, + "C12_to_3He4_derived", // 70, + "O16_p_to_He4_N13_derived", // 71, + "Ne20_He4_to_p_Na23_derived", // 72, + "Mg24_He4_to_p_Al27_derived", // 73, + "Si28_He4_to_p_P31_derived", // 74, + "S32_He4_to_p_Cl35_derived", // 75, "Ar36_to_He4_S32_derived", // 76, "Ar36_to_p_Cl35_derived", // 77, - "He4_Ar36_to_p_K39_derived", // 78, + "Ar36_He4_to_p_K39_derived", // 78, "Ca40_to_He4_Ar36_derived", // 79, "Ca40_to_p_K39_derived", // 80, - "He4_Ca40_to_p_Sc43_derived", // 81, + "Ca40_He4_to_p_Sc43_derived", // 81, "Ti44_to_He4_Ca40_derived", // 82, "Ti44_to_p_Sc43_derived", // 83, - "Cr48_to_He4_Ti44_derived", // 84, - "Cr48_to_p_V47_derived", // 85, - "p_V47_to_He4_Ti44_derived", // 86, - "Fe52_to_He4_Cr48_derived", // 87, - "Fe52_to_p_Mn51_derived", // 88, - "p_Mn51_to_He4_Cr48_derived", // 89, - "Ni56_to_He4_Fe52_derived", // 90, - "Ni56_to_p_Co55_derived", // 91, - "p_Co55_to_He4_Fe52_derived" // 92, + "V47_p_to_He4_Ti44_derived", // 84, + "Cr48_to_He4_Ti44_derived", // 85, + "Cr48_to_p_V47_derived", // 86, + "Mn51_p_to_He4_Cr48_derived", // 87, + "Fe52_to_He4_Cr48_derived", // 88, + "Fe52_to_p_Mn51_derived", // 89, + "Co55_p_to_He4_Fe52_derived", // 90, + "Ni56_to_He4_Fe52_derived", // 91, + "Ni56_to_p_Co55_derived" // 92, }; template @@ -470,20 +470,20 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 20; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, Ca40, He4, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_approx, k_Ti44_to_Ca40_He4_approx, diff --git a/networks/he-burn/he-burn-19am/actual_rhs.H b/networks/he-burn/he-burn-19am/actual_rhs.H index 5d80a360b..859628c07 100644 --- a/networks/he-burn/he-burn-19am/actual_rhs.H +++ b/networks/he-burn/he-burn-19am/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -372,9 +369,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -386,7 +385,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -394,17 +395,21 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); - if (disable_p_C12_to_N13_reaclib) { - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = 0.0; + if (disable_C12_p_to_N13_reaclib) { + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = 0.0; + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = 0.0; } rate_eval.screened_rates(k_N13_to_p_C12_derived) = 0.0; if constexpr (std::is_same_v) { @@ -412,28 +417,20 @@ void evaluate_rates(const burn_t& state, } } - if (disable_He4_N13_to_p_O16_reaclib) { - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = 0.0; + if (disable_N13_He4_to_p_O16_reaclib) { + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = 0.0; + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = 0.0; } - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = 0.0; + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = 0.0; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = 0.0; + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = 0.0; } } // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -503,35 +500,36 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // p_O16_to_N14_He4_modified + // O16_p_p_to_N14_He4_beta_pos_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_O16); #endif - rate_p_O16_to_N14_He4_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_N14_He4_modified) = rate; + modified_rates::rate_O16_p_p_to_N14_He4_beta_pos_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified) = rate; } + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(H1) = - -2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + -2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(He4) = - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(C12) = 0.0_rt; ydot_nuc(N13) = 0.0_rt; ydot_nuc(N14) = - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(O16) = - -screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(Ne20) = 0.0_rt; @@ -568,40 +566,40 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - -2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + -2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - -1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + -1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + @@ -610,77 +608,77 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_Fe52_He4_approx)*Y(Ni56)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + -screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + -screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(N13) = - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = - -screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - -screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + + -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho; + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho; ydot_nuc(Na23) = - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + 0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -761,44 +759,46 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - 2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - 2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); jac.set(H1, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho - 2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -816,40 +816,40 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - 1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_approx)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_approx)*Y(Fe52)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - 1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = -1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -873,13 +873,13 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni56_to_Fe52_He4_approx); jac.set(He4, Ni56, scratch); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); scratch = screened_rates(k_N13_to_p_C12_derived); @@ -887,7 +887,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); jac.set(C12, Ne20, 0.0); @@ -916,21 +916,21 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ni56, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, Ne20, 0.0); @@ -959,20 +959,20 @@ void jac_nuc(const burn_t& state, jac.set(N13, Ni56, 0.0); - scratch = screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho; jac.set(N14, H1, scratch); - scratch = -screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho; + scratch = -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, C12, 0.0); jac.set(N14, N13, 0.0); - scratch = -screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(N14, N14, scratch); - scratch = screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho; jac.set(N14, O16, scratch); jac.set(N14, Ne20, 0.0); @@ -1001,21 +1001,21 @@ void jac_nuc(const burn_t& state, jac.set(N14, Ni56, 0.0); - scratch = -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho; + scratch = -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived); jac.set(O16, O16, scratch); scratch = screened_rates(k_Ne20_to_He4_O16_derived); @@ -1045,10 +1045,10 @@ void jac_nuc(const burn_t& state, jac.set(O16, Ni56, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; jac.set(Ne20, H1, scratch); - scratch = screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -1056,16 +1056,16 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(Ne20, N14, scratch); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); jac.set(Ne20, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); @@ -1091,10 +1091,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Ni56, 0.0); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -1106,10 +1106,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, O16, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_derived); @@ -1135,32 +1135,32 @@ void jac_nuc(const burn_t& state, jac.set(Na23, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, N13, 0.0); jac.set(Mg24, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -1182,30 +1182,30 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ni56, 0.0); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, N13, 0.0); jac.set(Al27, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, Ne20, 0.0); jac.set(Al27, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -1227,36 +1227,36 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Ni56, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, N13, 0.0); jac.set(Si28, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, Ne20, 0.0); jac.set(Si28, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -1274,10 +1274,10 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Ni56, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -1297,10 +1297,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1318,10 +1318,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Ni56, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -1341,10 +1341,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_p_P31_derived); diff --git a/networks/he-burn/he-burn-19am/approximate_rates.H b/networks/he-burn/he-burn-19am/approximate_rates.H index cb7a05d24..147172f47 100644 --- a/networks/he-burn/he-burn-19am/approximate_rates.H +++ b/networks/he-burn/he-burn-19am/approximate_rates.H @@ -8,348 +8,350 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_Cr48_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_Fe52_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ni56_to_p_Co55_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; + } + + rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; + } + + rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; + } + + rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; + } - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; } - - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; - } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - rate_Cr48_He4_to_Fe52_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_He4_to_Fe52_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_approx) = drate_dT; - } - - rate_Fe52_to_Cr48_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_Cr48_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_Cr48_He4_approx) = drate_dT; - } - - rate_Fe52_He4_to_Ni56_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_He4_to_Ni56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_approx) = drate_dT; - } - - rate_Ni56_to_Fe52_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_Fe52_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Fe52_He4_approx) = drate_dT; - } - - } - #endif diff --git a/networks/he-burn/he-burn-19am/branched_rates.H b/networks/he-burn/he-burn-19am/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/he-burn-19am/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/he-burn-19am/derived_rates.H b/networks/he-burn/he-burn-19am/derived_rates.H index 6a433c8f4..5e0060c31 100644 --- a/networks/he-burn/he-burn-19am/derived_rates.H +++ b/networks/he-burn/he-burn-19am/derived_rates.H @@ -7,3030 +7,3032 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from st08r + ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - // ReacLib set derived from st08r - ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from st08r + ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // ReacLib set derived from st08r - ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lo18r + ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0 + ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from chw0 - ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // V47 + p --> He4 + Ti44 - // Cr48 --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; - // ReacLib set derived from ths8r - ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from chw0r + ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cr48 --> He4 + Ti44 - // Cr48 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from nfisn - ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } - // ReacLib set derived from nfisn - ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - ln_set_rate += net_log_pf + log_scor; + // Cr48 --> p + V47 - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // Evaluate partition function terms - // ReacLib set derived from nfisn - ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + amrex::Real p_log_pf, dp_log_pf_dT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + amrex::Real V47_log_pf, dV47_log_pf_dT9; - // ReacLib set derived from nfisn - ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - ln_set_rate += net_log_pf + log_scor; + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // ReacLib set derived from nfisn + ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + ln_set_rate += net_log_pf + log_scor; -} + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // V47 + p --> He4 + Ti44 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // ReacLib set derived from nfisn + ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - // Evaluate partition function terms + ln_set_rate += net_log_pf + log_scor; - amrex::Real p_log_pf, dp_log_pf_dT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // ReacLib set derived from nfisn + ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; + // ReacLib set derived from nfisn + ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from chw0r - ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Mn51 + p --> He4 + Cr48 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Fe52 --> He4 + Cr48 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Mn51 + p --> He4 + Cr48 + // Fe52 --> p + Mn51 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real p_log_pf, dp_log_pf_dT9; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from ths8r - ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -} + // Co55 + p --> He4 + Fe52 -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + rate = 0.0; + drate_dT = 0.0; - // Ni56 --> He4 + Fe52 + // Evaluate partition function terms - rate = 0.0; - drate_dT = 0.0; + amrex::Real p_log_pf, dp_log_pf_dT9; - // Evaluate partition function terms + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - ln_set_rate += net_log_pf + log_scor; + ln_set_rate += net_log_pf + log_scor; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> p + Co55 - // Co55 + p --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; - - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - part_fun::pf_cache_t pf_cache{}; + part_fun::pf_cache_t pf_cache{}; - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - { - // N13_to_p_C12_derived + { + // N13_to_p_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // V47_p_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_V47_p_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } + + { + // Mn51_p_to_He4_Cr48_derived + + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; + rate_Mn51_p_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_derived + { + // Fe52_to_p_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } -#endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; - } } - } #endif diff --git a/networks/he-burn/he-burn-19am/modified_rates.H b/networks/he-burn/he-burn-19am/modified_rates.H index e0ca08a1d..edbab795f 100644 --- a/networks/he-burn/he-burn-19am/modified_rates.H +++ b/networks/he-burn/he-burn-19am/modified_rates.H @@ -12,24 +12,29 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_N14_to_Ne20_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_N14_1p5He4_to_Ne20_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // N14 + 1.5 He4 --> Ne20 (calls the underlying rate) + // represents the sequence: N14 + 1.5α -> Ne20 - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_O16_to_N14_He4_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_p_p_to_N14_He4_beta_pos_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + p + p --> N14 + He4 (calls the underlying rate) + // represents the sequence: O16(p,γ)F17(e+ν)O17(p,α)N14 - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template @@ -37,6 +42,7 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) + // represents the sequence: c12(c12,n)mg23(n,γ)mg24 rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -46,22 +52,24 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) + // represents the sequence: o16(o16,n)s31(n,γ)s32 rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) + // represents the sequence: o16(c12,n)si27(n,γ)si28 - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -71,7 +79,7 @@ namespace modified_rates { [[maybe_unused]] amrex::Real drate_dT; { - // He4_N14_to_Ne20_modified + // N14_1p5He4_to_Ne20_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -81,15 +89,15 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); } #endif - rate_He4_N14_to_Ne20_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_Ne20_modified) = rate; + rate_N14_1p5He4_to_Ne20_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_1p5He4_to_Ne20_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_Ne20_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_N14_1p5He4_to_Ne20_modified) = drate_dT; } } { - // p_O16_to_N14_He4_modified + // O16_p_p_to_N14_He4_beta_pos_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -99,10 +107,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); } #endif - rate_p_O16_to_N14_He4_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_N14_He4_modified) = rate; + rate_O16_p_p_to_N14_He4_beta_pos_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_N14_He4_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_p_p_to_N14_He4_beta_pos_modified) = drate_dT; } } @@ -143,7 +151,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -153,10 +161,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } diff --git a/networks/he-burn/he-burn-19am/pynucastro-info.txt b/networks/he-burn/he-burn-19am/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/he-burn/he-burn-19am/pynucastro-info.txt +++ b/networks/he-burn/he-burn-19am/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/he-burn-19am/reaclib_rates.H b/networks/he-burn/he-burn-19am/reaclib_rates.H index 6503f44c6..a68f7c959 100644 --- a/networks/he-burn/he-burn-19am/reaclib_rates.H +++ b/networks/he-burn/he-burn-19am/reaclib_rates.H @@ -8,3078 +8,3081 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + p --> N13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + p --> N13 - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - ln_set_rate += log_scor; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> n + S31 - // O16 + O16 --> n + S31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> n + Si27 - // O16 + C12 --> n + Si27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - ln_set_rate += log_scor; + // K39 + p --> Ca40 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; -} + ln_set_rate += log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - // K39 + p --> He4 + Ar36 + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p + Mn51 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> Fe52 - // Mn51 + p --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_n_S31_reaclib + { + // O16_O16_to_n_S31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_n_Si27_reaclib + { + // O16_C12_to_n_Si27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_Mn51_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_Fe52_reaclib + { + // Mn51_p_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/he-burn/he-burn-19am/tabular_weak_rates.H b/networks/he-burn/he-burn-19am/tabular_weak_rates.H new file mode 100644 index 000000000..797530335 --- /dev/null +++ b/networks/he-burn/he-burn-19am/tabular_weak_rates.H @@ -0,0 +1,33 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + } + +} +#endif diff --git a/networks/he-burn/he-burn-19am/temperature_table_rates.H b/networks/he-burn/he-burn-19am/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/he-burn/he-burn-19am/temperature_table_rates.H +++ b/networks/he-burn/he-burn-19am/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/he-burn-28amnp/Make.package b/networks/he-burn/he-burn-28amnp/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/he-burn-28amnp/Make.package +++ b/networks/he-burn/he-burn-28amnp/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/he-burn-28amnp/actual_network.H b/networks/he-burn/he-burn-28amnp/actual_network.H index 71da1f36d..01e4f6c10 100644 --- a/networks/he-burn/he-burn-28amnp/actual_network.H +++ b/networks/he-burn/he-burn-28amnp/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -264,73 +264,73 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_p_C12_to_N13_reaclib = 1, - k_He4_C12_to_O16_reaclib = 2, - k_He4_O16_to_Ne20_reaclib = 3, - k_He4_Ne20_to_Mg24_reaclib = 4, - k_p_Na23_to_Mg24_reaclib = 5, - k_He4_Mg24_to_Si28_reaclib = 6, - k_p_Al27_to_Si28_reaclib = 7, - k_He4_Si28_to_S32_reaclib = 8, - k_p_P31_to_S32_reaclib = 9, - k_He4_Cr48_to_Fe52_reaclib = 10, - k_p_nse_Mn51_to_Fe52_reaclib = 11, - k_He4_Mn51_to_Co55_reaclib = 12, - k_He4_Fe52_to_Ni56_reaclib = 13, - k_p_nse_Co55_to_Ni56_reaclib = 14, + k_C12_p_to_N13_reaclib = 1, + k_C12_He4_to_O16_reaclib = 2, + k_O16_He4_to_Ne20_reaclib = 3, + k_Ne20_He4_to_Mg24_reaclib = 4, + k_Na23_p_to_Mg24_reaclib = 5, + k_Mg24_He4_to_Si28_reaclib = 6, + k_Al27_p_to_Si28_reaclib = 7, + k_Si28_He4_to_S32_reaclib = 8, + k_P31_p_to_S32_reaclib = 9, + k_Cr48_He4_to_Fe52_reaclib = 10, + k_Mn51_p_nse_to_Fe52_reaclib = 11, + k_Mn51_He4_to_Co55_reaclib = 12, + k_Fe52_He4_to_Ni56_reaclib = 13, + k_Co55_p_nse_to_Ni56_reaclib = 14, k_C12_C12_to_p_Na23_reaclib = 15, k_C12_C12_to_He4_Ne20_reaclib = 16, - k_He4_N13_to_p_O16_reaclib = 17, - k_C12_O16_to_p_Al27_reaclib = 18, - k_C12_O16_to_He4_Mg24_reaclib = 19, + k_N13_He4_to_p_O16_reaclib = 17, + k_O16_C12_to_p_Al27_reaclib = 18, + k_O16_C12_to_He4_Mg24_reaclib = 19, k_O16_O16_to_p_P31_reaclib = 20, k_O16_O16_to_He4_Si28_reaclib = 21, - k_p_Na23_to_He4_Ne20_reaclib = 22, - k_p_Al27_to_He4_Mg24_reaclib = 23, - k_p_P31_to_He4_Si28_reaclib = 24, - k_He4_Cr48_to_p_nse_Mn51_reaclib = 25, - k_He4_Fe52_to_p_nse_Co55_reaclib = 26, + k_Na23_p_to_He4_Ne20_reaclib = 22, + k_Al27_p_to_He4_Mg24_reaclib = 23, + k_P31_p_to_He4_Si28_reaclib = 24, + k_Cr48_He4_to_p_nse_Mn51_reaclib = 25, + k_Fe52_He4_to_p_nse_Co55_reaclib = 26, k_He4_He4_He4_to_C12_reaclib = 27, - k_He4_N14_to_F18_reaclib = 28, - k_p_O16_to_F17_reaclib = 29, + k_N14_He4_to_F18_reaclib = 28, + k_O16_p_to_F17_reaclib = 29, k_C12_C12_to_n_Mg23_reaclib = 30, k_O16_O16_to_n_S31_reaclib = 31, - k_C12_O16_to_n_Si27_reaclib = 32, - k_p_nse_Fe54_to_Co55_reaclib = 33, - k_He4_Fe54_to_Ni58_reaclib = 34, - k_p_nse_Fe56_to_Co57_reaclib = 35, - k_n_Co55_to_Co56_reaclib = 36, - k_n_Co56_to_Co57_reaclib = 37, - k_p_nse_Co57_to_Ni58_reaclib = 38, - k_He4_Mn51_to_p_nse_Fe54_reaclib = 39, - k_He4_Co55_to_p_nse_Ni58_reaclib = 40, - k_n_Co56_to_p_nse_Fe56_reaclib = 41, - k_p_nse_Co57_to_He4_Fe54_reaclib = 42, - k_n_Ni56_to_p_nse_Co56_reaclib = 43, - k_He4_S32_to_Ar36_reaclib = 44, - k_p_Cl35_to_Ar36_reaclib = 45, - k_p_Cl35_to_He4_S32_reaclib = 46, - k_He4_Ar36_to_Ca40_reaclib = 47, - k_p_K39_to_Ca40_reaclib = 48, - k_p_K39_to_He4_Ar36_reaclib = 49, - k_He4_Ca40_to_Ti44_reaclib = 50, - k_p_Sc43_to_Ti44_reaclib = 51, - k_p_Sc43_to_He4_Ca40_reaclib = 52, - k_He4_Ti44_to_Cr48_reaclib = 53, - k_He4_Ti44_to_p_V47_reaclib = 54, - k_p_V47_to_Cr48_reaclib = 55, - k_n_Fe52_to_Fe53_reaclib = 56, - k_n_Fe53_to_Fe54_reaclib = 57, - k_n_Fe54_to_Fe55_reaclib = 58, - k_n_Fe55_to_Fe56_reaclib = 59, - k_n_Ni56_to_Ni57_reaclib = 60, - k_n_Ni57_to_Ni58_reaclib = 61, - k_Co56_to_Fe56_weaktab = 62, - k_Co56_to_Ni56_weaktab = 63, - k_Fe56_to_Co56_weaktab = 64, - k_Ni56_to_Co56_weaktab = 65, - k_n_to_p_weaktab = 66, - k_p_to_n_weaktab = 67, + k_O16_C12_to_n_Si27_reaclib = 32, + k_Fe54_p_nse_to_Co55_reaclib = 33, + k_Fe54_He4_to_Ni58_reaclib = 34, + k_Fe56_p_nse_to_Co57_reaclib = 35, + k_Co55_n_to_Co56_reaclib = 36, + k_Co56_n_to_Co57_reaclib = 37, + k_Co57_p_nse_to_Ni58_reaclib = 38, + k_Mn51_He4_to_p_nse_Fe54_reaclib = 39, + k_Co55_He4_to_p_nse_Ni58_reaclib = 40, + k_Co56_n_to_p_nse_Fe56_reaclib = 41, + k_Co57_p_nse_to_He4_Fe54_reaclib = 42, + k_Ni56_n_to_p_nse_Co56_reaclib = 43, + k_S32_He4_to_Ar36_reaclib = 44, + k_Cl35_p_to_He4_S32_reaclib = 45, + k_Cl35_p_to_Ar36_reaclib = 46, + k_Ar36_He4_to_Ca40_reaclib = 47, + k_K39_p_to_He4_Ar36_reaclib = 48, + k_K39_p_to_Ca40_reaclib = 49, + k_Ca40_He4_to_Ti44_reaclib = 50, + k_Sc43_p_to_He4_Ca40_reaclib = 51, + k_Sc43_p_to_Ti44_reaclib = 52, + k_Ti44_He4_to_p_V47_reaclib = 53, + k_Ti44_He4_to_Cr48_reaclib = 54, + k_V47_p_to_Cr48_reaclib = 55, + k_Fe52_n_to_Fe53_reaclib = 56, + k_Fe53_n_to_Fe54_reaclib = 57, + k_Fe54_n_to_Fe55_reaclib = 58, + k_Fe55_n_to_Fe56_reaclib = 59, + k_Ni56_n_to_Ni57_reaclib = 60, + k_Ni57_n_to_Ni58_reaclib = 61, + k_Co56_to_Fe56_electron_capture_weaktab = 62, + k_Co56_to_Ni56_beta_neg_weaktab = 63, + k_Fe56_to_Co56_beta_neg_weaktab = 64, + k_Ni56_to_Co56_electron_capture_weaktab = 65, + k_n_to_p_beta_neg_weaktab = 66, + k_p_to_n_electron_capture_weaktab = 67, k_S32_He4_to_Ar36_approx = 68, k_Ar36_to_S32_He4_approx = 69, k_Ar36_He4_to_Ca40_approx = 70, @@ -345,11 +345,11 @@ namespace Rates k_Fe56_to_Fe54_n_n_approx = 79, k_Ni56_n_n_to_Ni58_approx = 80, k_Ni58_to_Ni56_n_n_approx = 81, - k_He4_N14_to_Ne20_modified = 82, - k_p_O16_to_N14_He4_modified = 83, + k_N14_1p5He4_to_Ne20_modified = 82, + k_O16_p_p_to_N14_He4_beta_pos_modified = 83, k_C12_C12_to_Mg24_modified = 84, k_O16_O16_to_S32_modified = 85, - k_C12_O16_to_Si28_modified = 86, + k_O16_C12_to_Si28_modified = 86, k_N13_to_p_C12_derived = 87, k_O16_to_He4_C12_derived = 88, k_Ne20_to_He4_O16_derived = 89, @@ -364,43 +364,43 @@ namespace Rates k_Co55_to_He4_Mn51_derived = 98, k_Ni56_to_p_nse_Co55_derived = 99, k_Ni56_to_He4_Fe52_derived = 100, - k_C12_to_He4_He4_He4_derived = 101, - k_p_O16_to_He4_N13_derived = 102, - k_He4_Ne20_to_p_Na23_derived = 103, - k_He4_Mg24_to_p_Al27_derived = 104, - k_He4_Si28_to_p_P31_derived = 105, - k_p_nse_Mn51_to_He4_Cr48_derived = 106, - k_p_nse_Co55_to_He4_Fe52_derived = 107, + k_C12_to_3He4_derived = 101, + k_O16_p_to_He4_N13_derived = 102, + k_Ne20_He4_to_p_Na23_derived = 103, + k_Mg24_He4_to_p_Al27_derived = 104, + k_Si28_He4_to_p_P31_derived = 105, + k_Mn51_p_nse_to_He4_Cr48_derived = 106, + k_Co55_p_nse_to_He4_Fe52_derived = 107, k_Co55_to_p_nse_Fe54_derived = 108, k_Co56_to_n_Co55_derived = 109, k_Co57_to_n_Co56_derived = 110, k_Co57_to_p_nse_Fe56_derived = 111, k_Ni58_to_p_nse_Co57_derived = 112, k_Ni58_to_He4_Fe54_derived = 113, - k_p_nse_Fe54_to_He4_Mn51_derived = 114, - k_He4_Fe54_to_p_nse_Co57_derived = 115, - k_p_nse_Fe56_to_n_Co56_derived = 116, - k_p_nse_Co56_to_n_Ni56_derived = 117, - k_p_nse_Ni58_to_He4_Co55_derived = 118, - k_He4_S32_to_p_Cl35_derived = 119, + k_Fe54_p_nse_to_He4_Mn51_derived = 114, + k_Fe54_He4_to_p_nse_Co57_derived = 115, + k_Fe56_p_nse_to_n_Co56_derived = 116, + k_Co56_p_nse_to_n_Ni56_derived = 117, + k_Ni58_p_nse_to_He4_Co55_derived = 118, + k_S32_He4_to_p_Cl35_derived = 119, k_Ar36_to_He4_S32_derived = 120, k_Ar36_to_p_Cl35_derived = 121, - k_He4_Ar36_to_p_K39_derived = 122, + k_Ar36_He4_to_p_K39_derived = 122, k_Ca40_to_He4_Ar36_derived = 123, k_Ca40_to_p_K39_derived = 124, - k_He4_Ca40_to_p_Sc43_derived = 125, + k_Ca40_He4_to_p_Sc43_derived = 125, k_Ti44_to_He4_Ca40_derived = 126, k_Ti44_to_p_Sc43_derived = 127, - k_Cr48_to_He4_Ti44_derived = 128, - k_Cr48_to_p_V47_derived = 129, - k_p_V47_to_He4_Ti44_derived = 130, - k_Fe54_to_n_Fe53_derived = 131, - k_Fe53_to_n_Fe52_derived = 132, - k_Fe56_to_n_Fe55_derived = 133, - k_Fe55_to_n_Fe54_derived = 134, - k_Ni58_to_n_Ni57_derived = 135, - k_Ni57_to_n_Ni56_derived = 136, - NumRates = k_Ni57_to_n_Ni56_derived + k_V47_p_to_He4_Ti44_derived = 128, + k_Cr48_to_He4_Ti44_derived = 129, + k_Cr48_to_p_V47_derived = 130, + k_Fe53_to_n_Fe52_derived = 131, + k_Fe54_to_n_Fe53_derived = 132, + k_Fe55_to_n_Fe54_derived = 133, + k_Fe56_to_n_Fe55_derived = 134, + k_Ni57_to_n_Ni56_derived = 135, + k_Ni58_to_n_Ni57_derived = 136, + NumRates = k_Ni58_to_n_Ni57_derived }; enum ScreenPairs : @@ -452,73 +452,73 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "p_C12_to_N13_reaclib", // 1, - "He4_C12_to_O16_reaclib", // 2, - "He4_O16_to_Ne20_reaclib", // 3, - "He4_Ne20_to_Mg24_reaclib", // 4, - "p_Na23_to_Mg24_reaclib", // 5, - "He4_Mg24_to_Si28_reaclib", // 6, - "p_Al27_to_Si28_reaclib", // 7, - "He4_Si28_to_S32_reaclib", // 8, - "p_P31_to_S32_reaclib", // 9, - "He4_Cr48_to_Fe52_reaclib", // 10, - "p_nse_Mn51_to_Fe52_reaclib", // 11, - "He4_Mn51_to_Co55_reaclib", // 12, - "He4_Fe52_to_Ni56_reaclib", // 13, - "p_nse_Co55_to_Ni56_reaclib", // 14, + "C12_p_to_N13_reaclib", // 1, + "C12_He4_to_O16_reaclib", // 2, + "O16_He4_to_Ne20_reaclib", // 3, + "Ne20_He4_to_Mg24_reaclib", // 4, + "Na23_p_to_Mg24_reaclib", // 5, + "Mg24_He4_to_Si28_reaclib", // 6, + "Al27_p_to_Si28_reaclib", // 7, + "Si28_He4_to_S32_reaclib", // 8, + "P31_p_to_S32_reaclib", // 9, + "Cr48_He4_to_Fe52_reaclib", // 10, + "Mn51_p_nse_to_Fe52_reaclib", // 11, + "Mn51_He4_to_Co55_reaclib", // 12, + "Fe52_He4_to_Ni56_reaclib", // 13, + "Co55_p_nse_to_Ni56_reaclib", // 14, "C12_C12_to_p_Na23_reaclib", // 15, "C12_C12_to_He4_Ne20_reaclib", // 16, - "He4_N13_to_p_O16_reaclib", // 17, - "C12_O16_to_p_Al27_reaclib", // 18, - "C12_O16_to_He4_Mg24_reaclib", // 19, + "N13_He4_to_p_O16_reaclib", // 17, + "O16_C12_to_p_Al27_reaclib", // 18, + "O16_C12_to_He4_Mg24_reaclib", // 19, "O16_O16_to_p_P31_reaclib", // 20, "O16_O16_to_He4_Si28_reaclib", // 21, - "p_Na23_to_He4_Ne20_reaclib", // 22, - "p_Al27_to_He4_Mg24_reaclib", // 23, - "p_P31_to_He4_Si28_reaclib", // 24, - "He4_Cr48_to_p_nse_Mn51_reaclib", // 25, - "He4_Fe52_to_p_nse_Co55_reaclib", // 26, + "Na23_p_to_He4_Ne20_reaclib", // 22, + "Al27_p_to_He4_Mg24_reaclib", // 23, + "P31_p_to_He4_Si28_reaclib", // 24, + "Cr48_He4_to_p_nse_Mn51_reaclib", // 25, + "Fe52_He4_to_p_nse_Co55_reaclib", // 26, "He4_He4_He4_to_C12_reaclib", // 27, - "He4_N14_to_F18_reaclib", // 28, - "p_O16_to_F17_reaclib", // 29, + "N14_He4_to_F18_reaclib", // 28, + "O16_p_to_F17_reaclib", // 29, "C12_C12_to_n_Mg23_reaclib", // 30, "O16_O16_to_n_S31_reaclib", // 31, - "C12_O16_to_n_Si27_reaclib", // 32, - "p_nse_Fe54_to_Co55_reaclib", // 33, - "He4_Fe54_to_Ni58_reaclib", // 34, - "p_nse_Fe56_to_Co57_reaclib", // 35, - "n_Co55_to_Co56_reaclib", // 36, - "n_Co56_to_Co57_reaclib", // 37, - "p_nse_Co57_to_Ni58_reaclib", // 38, - "He4_Mn51_to_p_nse_Fe54_reaclib", // 39, - "He4_Co55_to_p_nse_Ni58_reaclib", // 40, - "n_Co56_to_p_nse_Fe56_reaclib", // 41, - "p_nse_Co57_to_He4_Fe54_reaclib", // 42, - "n_Ni56_to_p_nse_Co56_reaclib", // 43, - "He4_S32_to_Ar36_reaclib", // 44, - "p_Cl35_to_Ar36_reaclib", // 45, - "p_Cl35_to_He4_S32_reaclib", // 46, - "He4_Ar36_to_Ca40_reaclib", // 47, - "p_K39_to_Ca40_reaclib", // 48, - "p_K39_to_He4_Ar36_reaclib", // 49, - "He4_Ca40_to_Ti44_reaclib", // 50, - "p_Sc43_to_Ti44_reaclib", // 51, - "p_Sc43_to_He4_Ca40_reaclib", // 52, - "He4_Ti44_to_Cr48_reaclib", // 53, - "He4_Ti44_to_p_V47_reaclib", // 54, - "p_V47_to_Cr48_reaclib", // 55, - "n_Fe52_to_Fe53_reaclib", // 56, - "n_Fe53_to_Fe54_reaclib", // 57, - "n_Fe54_to_Fe55_reaclib", // 58, - "n_Fe55_to_Fe56_reaclib", // 59, - "n_Ni56_to_Ni57_reaclib", // 60, - "n_Ni57_to_Ni58_reaclib", // 61, - "Co56_to_Fe56_weaktab", // 62, - "Co56_to_Ni56_weaktab", // 63, - "Fe56_to_Co56_weaktab", // 64, - "Ni56_to_Co56_weaktab", // 65, - "n_to_p_weaktab", // 66, - "p_to_n_weaktab", // 67, + "O16_C12_to_n_Si27_reaclib", // 32, + "Fe54_p_nse_to_Co55_reaclib", // 33, + "Fe54_He4_to_Ni58_reaclib", // 34, + "Fe56_p_nse_to_Co57_reaclib", // 35, + "Co55_n_to_Co56_reaclib", // 36, + "Co56_n_to_Co57_reaclib", // 37, + "Co57_p_nse_to_Ni58_reaclib", // 38, + "Mn51_He4_to_p_nse_Fe54_reaclib", // 39, + "Co55_He4_to_p_nse_Ni58_reaclib", // 40, + "Co56_n_to_p_nse_Fe56_reaclib", // 41, + "Co57_p_nse_to_He4_Fe54_reaclib", // 42, + "Ni56_n_to_p_nse_Co56_reaclib", // 43, + "S32_He4_to_Ar36_reaclib", // 44, + "Cl35_p_to_He4_S32_reaclib", // 45, + "Cl35_p_to_Ar36_reaclib", // 46, + "Ar36_He4_to_Ca40_reaclib", // 47, + "K39_p_to_He4_Ar36_reaclib", // 48, + "K39_p_to_Ca40_reaclib", // 49, + "Ca40_He4_to_Ti44_reaclib", // 50, + "Sc43_p_to_He4_Ca40_reaclib", // 51, + "Sc43_p_to_Ti44_reaclib", // 52, + "Ti44_He4_to_p_V47_reaclib", // 53, + "Ti44_He4_to_Cr48_reaclib", // 54, + "V47_p_to_Cr48_reaclib", // 55, + "Fe52_n_to_Fe53_reaclib", // 56, + "Fe53_n_to_Fe54_reaclib", // 57, + "Fe54_n_to_Fe55_reaclib", // 58, + "Fe55_n_to_Fe56_reaclib", // 59, + "Ni56_n_to_Ni57_reaclib", // 60, + "Ni57_n_to_Ni58_reaclib", // 61, + "Co56_to_Fe56_electron_capture_weaktab", // 62, + "Co56_to_Ni56_beta_neg_weaktab", // 63, + "Fe56_to_Co56_beta_neg_weaktab", // 64, + "Ni56_to_Co56_electron_capture_weaktab", // 65, + "n_to_p_beta_neg_weaktab", // 66, + "p_to_n_electron_capture_weaktab", // 67, "S32_He4_to_Ar36_approx", // 68, "Ar36_to_S32_He4_approx", // 69, "Ar36_He4_to_Ca40_approx", // 70, @@ -533,11 +533,11 @@ namespace Rates "Fe56_to_Fe54_n_n_approx", // 79, "Ni56_n_n_to_Ni58_approx", // 80, "Ni58_to_Ni56_n_n_approx", // 81, - "He4_N14_to_Ne20_modified", // 82, - "p_O16_to_N14_He4_modified", // 83, + "N14_1p5He4_to_Ne20_modified", // 82, + "O16_p_p_to_N14_He4_beta_pos_modified", // 83, "C12_C12_to_Mg24_modified", // 84, "O16_O16_to_S32_modified", // 85, - "C12_O16_to_Si28_modified", // 86, + "O16_C12_to_Si28_modified", // 86, "N13_to_p_C12_derived", // 87, "O16_to_He4_C12_derived", // 88, "Ne20_to_He4_O16_derived", // 89, @@ -552,42 +552,42 @@ namespace Rates "Co55_to_He4_Mn51_derived", // 98, "Ni56_to_p_nse_Co55_derived", // 99, "Ni56_to_He4_Fe52_derived", // 100, - "C12_to_He4_He4_He4_derived", // 101, - "p_O16_to_He4_N13_derived", // 102, - "He4_Ne20_to_p_Na23_derived", // 103, - "He4_Mg24_to_p_Al27_derived", // 104, - "He4_Si28_to_p_P31_derived", // 105, - "p_nse_Mn51_to_He4_Cr48_derived", // 106, - "p_nse_Co55_to_He4_Fe52_derived", // 107, + "C12_to_3He4_derived", // 101, + "O16_p_to_He4_N13_derived", // 102, + "Ne20_He4_to_p_Na23_derived", // 103, + "Mg24_He4_to_p_Al27_derived", // 104, + "Si28_He4_to_p_P31_derived", // 105, + "Mn51_p_nse_to_He4_Cr48_derived", // 106, + "Co55_p_nse_to_He4_Fe52_derived", // 107, "Co55_to_p_nse_Fe54_derived", // 108, "Co56_to_n_Co55_derived", // 109, "Co57_to_n_Co56_derived", // 110, "Co57_to_p_nse_Fe56_derived", // 111, "Ni58_to_p_nse_Co57_derived", // 112, "Ni58_to_He4_Fe54_derived", // 113, - "p_nse_Fe54_to_He4_Mn51_derived", // 114, - "He4_Fe54_to_p_nse_Co57_derived", // 115, - "p_nse_Fe56_to_n_Co56_derived", // 116, - "p_nse_Co56_to_n_Ni56_derived", // 117, - "p_nse_Ni58_to_He4_Co55_derived", // 118, - "He4_S32_to_p_Cl35_derived", // 119, + "Fe54_p_nse_to_He4_Mn51_derived", // 114, + "Fe54_He4_to_p_nse_Co57_derived", // 115, + "Fe56_p_nse_to_n_Co56_derived", // 116, + "Co56_p_nse_to_n_Ni56_derived", // 117, + "Ni58_p_nse_to_He4_Co55_derived", // 118, + "S32_He4_to_p_Cl35_derived", // 119, "Ar36_to_He4_S32_derived", // 120, "Ar36_to_p_Cl35_derived", // 121, - "He4_Ar36_to_p_K39_derived", // 122, + "Ar36_He4_to_p_K39_derived", // 122, "Ca40_to_He4_Ar36_derived", // 123, "Ca40_to_p_K39_derived", // 124, - "He4_Ca40_to_p_Sc43_derived", // 125, + "Ca40_He4_to_p_Sc43_derived", // 125, "Ti44_to_He4_Ca40_derived", // 126, "Ti44_to_p_Sc43_derived", // 127, - "Cr48_to_He4_Ti44_derived", // 128, - "Cr48_to_p_V47_derived", // 129, - "p_V47_to_He4_Ti44_derived", // 130, - "Fe54_to_n_Fe53_derived", // 131, - "Fe53_to_n_Fe52_derived", // 132, - "Fe56_to_n_Fe55_derived", // 133, - "Fe55_to_n_Fe54_derived", // 134, - "Ni58_to_n_Ni57_derived", // 135, - "Ni57_to_n_Ni56_derived" // 136, + "V47_p_to_He4_Ti44_derived", // 128, + "Cr48_to_He4_Ti44_derived", // 129, + "Cr48_to_p_V47_derived", // 130, + "Fe53_to_n_Fe52_derived", // 131, + "Fe54_to_n_Fe53_derived", // 132, + "Fe55_to_n_Fe54_derived", // 133, + "Fe56_to_n_Fe55_derived", // 134, + "Ni57_to_n_Ni56_derived", // 135, + "Ni58_to_n_Ni57_derived" // 136, }; template @@ -620,26 +620,26 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 24; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_derived, - He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_He4_Cr48_to_Fe52_reaclib, k_Fe52_to_He4_Cr48_derived, - He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_He4_Mn51_to_Co55_reaclib, k_Co55_to_He4_Mn51_derived, - He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_He4_Fe52_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, - He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_He4_Fe54_to_Ni58_reaclib, k_Ni58_to_He4_Fe54_derived, - N, Co55, -1, Co56, -1, -1, Co55, Co56, k_n_Co55_to_Co56_reaclib, k_Co56_to_n_Co55_derived, - N, Co56, -1, Co57, -1, -1, Co56, Co57, k_n_Co56_to_Co57_reaclib, k_Co57_to_n_Co56_derived, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_derived, + He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_Cr48_He4_to_Fe52_reaclib, k_Fe52_to_He4_Cr48_derived, + He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_Mn51_He4_to_Co55_reaclib, k_Co55_to_He4_Mn51_derived, + He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_Fe52_He4_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, + He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_Fe54_He4_to_Ni58_reaclib, k_Ni58_to_He4_Fe54_derived, + N, Co55, -1, Co56, -1, -1, Co55, Co56, k_Co55_n_to_Co56_reaclib, k_Co56_to_n_Co55_derived, + N, Co56, -1, Co57, -1, -1, Co56, Co57, k_Co56_n_to_Co57_reaclib, k_Co57_to_n_Co56_derived, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, Ca40, He4, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_approx, k_Ti44_to_Ca40_He4_approx, diff --git a/networks/he-burn/he-burn-28amnp/actual_rhs.H b/networks/he-burn/he-burn-28amnp/actual_rhs.H index b0f68982c..27d04ec42 100644 --- a/networks/he-burn/he-burn-28amnp/actual_rhs.H +++ b/networks/he-burn/he-burn-28amnp/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -452,9 +449,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -466,7 +465,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -474,75 +475,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_to_p_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_to_n_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -612,74 +558,42 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // p_O16_to_N14_He4_modified + // O16_p_p_to_N14_He4_beta_pos_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_O16); #endif - rate_p_O16_to_N14_He4_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_N14_He4_modified) = rate; + modified_rates::rate_O16_p_p_to_N14_He4_beta_pos_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified) = rate; } - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(N) = - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - -2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + -2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(P_nse) = 0.0_rt; ydot_nuc(He4) = - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(C12) = 0.0_rt; ydot_nuc(N13) = 0.0_rt; ydot_nuc(N14) = - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(O16) = - -screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(Ne20) = 0.0_rt; @@ -710,18 +624,18 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(Fe54) = 0.0_rt; ydot_nuc(Fe56) = - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Co55) = 0.0_rt; ydot_nuc(Co56) = - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = 0.0_rt; ydot_nuc(Ni56) = - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni58) = 0.0_rt; @@ -734,151 +648,151 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(N) = - (-screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(P_nse)*state.rho) + - (-screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(Co56)*Y(P_nse)*state.rho) + - (-2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + - (-2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + - (-2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(Fe56)*Y(P_nse)*state.rho) + + (-screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(Co56)*Y(P_nse)*state.rho) + + (-screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + + (-screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + + (-screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - -2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + -2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(P_nse) = - (-screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(P_nse)*state.rho + screened_rates(k_Fe52_to_p_nse_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(Co55)*Y(P_nse)*state.rho + screened_rates(k_Ni56_to_p_nse_Co55_derived)*Y(Ni56)) + - (screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(P_nse)*state.rho) + - (screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(P_nse)*state.rho) + - (-screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(P_nse)*state.rho + screened_rates(k_Co55_to_p_nse_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(P_nse)*state.rho + screened_rates(k_Co57_to_p_nse_Fe56_derived)*Y(Co57)) + - (-screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(Co57)*Y(P_nse)*state.rho + screened_rates(k_Ni58_to_p_nse_Co57_derived)*Y(Ni58)) + - (screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(P_nse)*state.rho) + - (screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(P_nse)*state.rho) + - (screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(P_nse)*state.rho) + - (-screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(P_nse)*state.rho + screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(Co56)*Y(P_nse)*state.rho); + (-screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(Mn51)*Y(P_nse)*state.rho + screened_rates(k_Fe52_to_p_nse_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(Co55)*Y(P_nse)*state.rho + screened_rates(k_Ni56_to_p_nse_Co55_derived)*Y(Ni56)) + + (screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(Mn51)*Y(P_nse)*state.rho) + + (screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(Co55)*Y(P_nse)*state.rho) + + (-screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(Fe54)*Y(P_nse)*state.rho + screened_rates(k_Co55_to_p_nse_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(Fe56)*Y(P_nse)*state.rho + screened_rates(k_Co57_to_p_nse_Fe56_derived)*Y(Co57)) + + (-screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(Co57)*Y(P_nse)*state.rho + screened_rates(k_Ni58_to_p_nse_Co57_derived)*Y(Ni58)) + + (screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(Fe54)*Y(P_nse)*state.rho) + + (screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(Ni58)*Y(P_nse)*state.rho) + + (screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(Fe56)*Y(P_nse)*state.rho) + + (-screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(Co57)*Y(P_nse)*state.rho + screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(Co56)*Y(P_nse)*state.rho); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (-screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (-screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(P_nse)*state.rho) + - (-screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(P_nse)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - -1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + - (-screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (-screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(P_nse)*state.rho) + - (-screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(P_nse)*state.rho) + - (screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(P_nse)*state.rho + -screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(Mn51)*Y(P_nse)*state.rho) + + (-screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(Co55)*Y(P_nse)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + -1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + + (-screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (-screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(Fe54)*Y(P_nse)*state.rho) + + (-screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(Ni58)*Y(P_nse)*state.rho) + + (screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(Co57)*Y(P_nse)*state.rho + -screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + -screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + -screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(N13) = - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = - -screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - -screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + + -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho; + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho; ydot_nuc(Na23) = - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + 0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -895,71 +809,71 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(Cr48) = - (-screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(P_nse)*state.rho) + + (-screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(Mn51)*Y(P_nse)*state.rho) + (screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + -screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(Mn51) = - (-screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(P_nse)*state.rho + screened_rates(k_Fe52_to_p_nse_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(P_nse)*state.rho) + - (-screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(P_nse)*state.rho); + (-screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(Mn51)*Y(P_nse)*state.rho + screened_rates(k_Fe52_to_p_nse_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(Mn51)*Y(P_nse)*state.rho) + + (-screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(Fe54)*Y(P_nse)*state.rho); ydot_nuc(Fe52) = - (screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(P_nse)*state.rho + -screened_rates(k_Fe52_to_p_nse_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(P_nse)*state.rho) + - (-screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)); + (screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(Mn51)*Y(P_nse)*state.rho + -screened_rates(k_Fe52_to_p_nse_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(Co55)*Y(P_nse)*state.rho) + + (-0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)); ydot_nuc(Fe54) = - (-screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(P_nse)*state.rho + screened_rates(k_Co55_to_p_nse_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(P_nse)*state.rho) + - (screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(P_nse)*state.rho + -screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + - (-screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)); + (-screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(Fe54)*Y(P_nse)*state.rho + screened_rates(k_Co55_to_p_nse_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(Fe54)*Y(P_nse)*state.rho) + + (screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(Co57)*Y(P_nse)*state.rho + -screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe54_to_Fe52_n_n_approx)*Y(Fe54)) + + (-0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)); ydot_nuc(Fe56) = - (-screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(P_nse)*state.rho + screened_rates(k_Co57_to_p_nse_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(P_nse)*state.rho) + - (screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (-screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(Fe56)*Y(P_nse)*state.rho + screened_rates(k_Co57_to_p_nse_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(Fe56)*Y(P_nse)*state.rho) + + (0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Fe56_to_Fe54_n_n_approx)*Y(Fe56)) + + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Co55) = - (screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (-screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(Co55)*Y(P_nse)*state.rho + screened_rates(k_Ni56_to_p_nse_Co55_derived)*Y(Ni56)) + - (screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(P_nse)*state.rho) + - (screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(P_nse)*state.rho + -screened_rates(k_Co55_to_p_nse_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(P_nse)*state.rho); + (screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(Co55)*Y(P_nse)*state.rho + screened_rates(k_Ni56_to_p_nse_Co55_derived)*Y(Ni56)) + + (screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(Co55)*Y(P_nse)*state.rho) + + (screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(Fe54)*Y(P_nse)*state.rho + -screened_rates(k_Co55_to_p_nse_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(Ni58)*Y(P_nse)*state.rho); ydot_nuc(Co56) = - (screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(P_nse)*state.rho) + - (screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(Co56)*Y(P_nse)*state.rho) + - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(Fe56)*Y(P_nse)*state.rho) + + (screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(Co56)*Y(P_nse)*state.rho) + + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = - (screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(P_nse)*state.rho + -screened_rates(k_Co57_to_p_nse_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(Co57)*Y(P_nse)*state.rho + screened_rates(k_Ni58_to_p_nse_Co57_derived)*Y(Ni58)) + - (-screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(P_nse)*state.rho + screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(Fe54)*Y(He4)*state.rho); + (screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(Fe56)*Y(P_nse)*state.rho + -screened_rates(k_Co57_to_p_nse_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(Co57)*Y(P_nse)*state.rho + screened_rates(k_Ni58_to_p_nse_Co57_derived)*Y(Ni58)) + + (-screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(Co57)*Y(P_nse)*state.rho + screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(Fe54)*Y(He4)*state.rho); ydot_nuc(Ni56) = - (screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(Co55)*Y(P_nse)*state.rho + -screened_rates(k_Ni56_to_p_nse_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(Co56)*Y(P_nse)*state.rho) + - (-screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(Co55)*Y(P_nse)*state.rho + -screened_rates(k_Ni56_to_p_nse_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(Co56)*Y(P_nse)*state.rho) + + (-0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)) + + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni58) = - (screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(Co57)*Y(P_nse)*state.rho + -screened_rates(k_Ni58_to_p_nse_Co57_derived)*Y(Ni58)) + - (screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(P_nse)*state.rho) + - (screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)); + (screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(Co57)*Y(P_nse)*state.rho + -screened_rates(k_Ni58_to_p_nse_Co57_derived)*Y(Ni58)) + + (screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(Ni58)*Y(P_nse)*state.rho) + + (0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Ni58_to_Ni56_n_n_approx)*Y(Ni58)); } @@ -1015,18 +929,20 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -4.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 4.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) - 4.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_to_p_weaktab); + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(Co56)*state.rho - 2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(N, N, scratch); - scratch = screened_rates(k_p_to_n_weaktab); + scratch = screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(N, H1, scratch); - scratch = screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + scratch = screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(Fe56)*state.rho; jac.set(N, P_nse, scratch); jac.set(N, He4, 0.0); @@ -1063,68 +979,68 @@ void jac_nuc(const burn_t& state, jac.set(N, Mn51, 0.0); - scratch = -2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(N, Fe52, scratch); - scratch = -2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx); + scratch = -screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Fe54_to_Fe52_n_n_approx); jac.set(N, Fe54, scratch); - scratch = 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx) + screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(P_nse)*state.rho + 2.0*screened_rates(k_Fe56_to_Fe54_n_n_approx); jac.set(N, Fe56, scratch); - scratch = -screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho; jac.set(N, Co55, scratch); - scratch = screened_rates(k_Co56_to_n_Co55_derived) - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(P_nse)*state.rho + screened_rates(k_Co56_to_n_Co55_derived); jac.set(N, Co56, scratch); scratch = screened_rates(k_Co57_to_n_Co56_derived); jac.set(N, Co57, scratch); - scratch = -2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(N)*state.rho; jac.set(N, Ni56, scratch); scratch = 2.0*screened_rates(k_Ni58_to_Ni56_n_n_approx); jac.set(N, Ni58, scratch); - scratch = screened_rates(k_n_to_p_weaktab); + scratch = screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(H1, N, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - 2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho - screened_rates(k_p_to_n_weaktab); + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - 2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho - screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(H1, H1, scratch); jac.set(H1, P_nse, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); jac.set(H1, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho - 2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1156,15 +1072,15 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ni58, 0.0); - scratch = screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(Ni56)*state.rho; jac.set(P_nse, N, scratch); jac.set(P_nse, H1, 0.0); - scratch = -screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho - screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho - screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(Mn51)*state.rho - screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(P_nse, P_nse, scratch); - scratch = screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(Mn51)*state.rho; jac.set(P_nse, He4, scratch); jac.set(P_nse, C12, 0.0); @@ -1195,75 +1111,75 @@ void jac_nuc(const burn_t& state, jac.set(P_nse, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(He4)*state.rho; jac.set(P_nse, Cr48, scratch); - scratch = screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(P_nse)*state.rho; jac.set(P_nse, Mn51, scratch); - scratch = screened_rates(k_Fe52_to_p_nse_Mn51_derived) + screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe52_to_p_nse_Mn51_derived); jac.set(P_nse, Fe52, scratch); - scratch = screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(He4)*state.rho - screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(P_nse)*state.rho; jac.set(P_nse, Fe54, scratch); - scratch = -screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(P_nse)*state.rho; jac.set(P_nse, Fe56, scratch); - scratch = screened_rates(k_Co55_to_p_nse_Fe54_derived) + screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(P_nse)*state.rho - screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(P_nse)*state.rho + screened_rates(k_Co55_to_p_nse_Fe54_derived); jac.set(P_nse, Co55, scratch); - scratch = screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(P_nse)*state.rho; jac.set(P_nse, Co56, scratch); - scratch = screened_rates(k_Co57_to_p_nse_Fe56_derived) - screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(P_nse)*state.rho + screened_rates(k_Co57_to_p_nse_Fe56_derived); jac.set(P_nse, Co57, scratch); - scratch = screened_rates(k_Ni56_to_p_nse_Co55_derived) + screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_to_p_nse_Co55_derived); jac.set(P_nse, Ni56, scratch); - scratch = screened_rates(k_Ni58_to_p_nse_Co57_derived) - screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(P_nse)*state.rho + screened_rates(k_Ni58_to_p_nse_Co57_derived); jac.set(P_nse, Ni58, scratch); jac.set(He4, N, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho + screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(Co57)*state.rho + screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(Mn51)*state.rho + screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(He4, P_nse, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(Fe54)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - 1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(Co55)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(Fe54)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - 1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = -1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -1278,45 +1194,45 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx); jac.set(He4, Ti44, scratch); - scratch = screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx); jac.set(He4, Cr48, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(P_nse)*state.rho; jac.set(He4, Mn51, scratch); - scratch = screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived); jac.set(He4, Fe52, scratch); - scratch = -screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(He4)*state.rho + screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(He4)*state.rho + screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(P_nse)*state.rho; jac.set(He4, Fe54, scratch); jac.set(He4, Fe56, 0.0); - scratch = screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(P_nse)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived); jac.set(He4, Co55, scratch); jac.set(He4, Co56, 0.0); - scratch = screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(P_nse)*state.rho; jac.set(He4, Co57, scratch); scratch = screened_rates(k_Ni56_to_He4_Fe52_derived); jac.set(He4, Ni56, scratch); - scratch = screened_rates(k_Ni58_to_He4_Fe54_derived) + screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(P_nse)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived); jac.set(He4, Ni58, scratch); jac.set(C12, N, 0.0); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho; jac.set(C12, H1, scratch); jac.set(C12, P_nse, 0.0); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); scratch = screened_rates(k_N13_to_p_C12_derived); @@ -1324,7 +1240,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); jac.set(C12, Ne20, 0.0); @@ -1369,23 +1285,23 @@ void jac_nuc(const burn_t& state, jac.set(N13, N, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); jac.set(N13, P_nse, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, Ne20, 0.0); @@ -1430,22 +1346,22 @@ void jac_nuc(const burn_t& state, jac.set(N14, N, 0.0); - scratch = screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho; jac.set(N14, H1, scratch); jac.set(N14, P_nse, 0.0); - scratch = -screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho; + scratch = -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, C12, 0.0); jac.set(N14, N13, 0.0); - scratch = -screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(N14, N14, scratch); - scratch = screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho; jac.set(N14, O16, scratch); jac.set(N14, Ne20, 0.0); @@ -1490,23 +1406,23 @@ void jac_nuc(const burn_t& state, jac.set(O16, N, 0.0); - scratch = -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho; + scratch = -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(O16, H1, scratch); jac.set(O16, P_nse, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived); jac.set(O16, O16, scratch); scratch = screened_rates(k_Ne20_to_He4_O16_derived); @@ -1552,12 +1468,12 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; jac.set(Ne20, H1, scratch); jac.set(Ne20, P_nse, 0.0); - scratch = screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -1565,16 +1481,16 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(Ne20, N14, scratch); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); jac.set(Ne20, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); @@ -1616,12 +1532,12 @@ void jac_nuc(const burn_t& state, jac.set(Na23, N, 0.0); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); jac.set(Na23, P_nse, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -1633,10 +1549,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, O16, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_derived); @@ -1678,34 +1594,34 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, N, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); jac.set(Mg24, P_nse, 0.0); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, N13, 0.0); jac.set(Mg24, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -1743,32 +1659,32 @@ void jac_nuc(const burn_t& state, jac.set(Al27, N, 0.0); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); jac.set(Al27, P_nse, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, N13, 0.0); jac.set(Al27, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, Ne20, 0.0); jac.set(Al27, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -1806,38 +1722,38 @@ void jac_nuc(const burn_t& state, jac.set(Si28, N, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); jac.set(Si28, P_nse, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, N13, 0.0); jac.set(Si28, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, Ne20, 0.0); jac.set(Si28, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -1871,12 +1787,12 @@ void jac_nuc(const burn_t& state, jac.set(P31, N, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); jac.set(P31, P_nse, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -1896,10 +1812,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1933,12 +1849,12 @@ void jac_nuc(const burn_t& state, jac.set(S32, N, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); jac.set(S32, P_nse, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -1958,10 +1874,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_p_P31_derived); @@ -2178,10 +2094,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, H1, 0.0); - scratch = screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(Mn51)*state.rho; jac.set(Cr48, P_nse, scratch); - scratch = -screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(Cr48, He4, scratch); jac.set(Cr48, C12, 0.0); @@ -2213,10 +2129,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho; jac.set(Cr48, Ti44, scratch); - scratch = -screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_to_Ti44_He4_approx); jac.set(Cr48, Cr48, scratch); - scratch = screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(P_nse)*state.rho; jac.set(Cr48, Mn51, scratch); scratch = screened_rates(k_Fe52_to_He4_Cr48_derived); @@ -2240,10 +2156,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, H1, 0.0); - scratch = screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(Mn51)*state.rho; jac.set(Mn51, P_nse, scratch); - scratch = screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(Mn51)*state.rho; jac.set(Mn51, He4, scratch); jac.set(Mn51, C12, 0.0); @@ -2274,16 +2190,16 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib)*Y(He4)*state.rho; jac.set(Mn51, Cr48, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived)*Y(P_nse)*state.rho; jac.set(Mn51, Mn51, scratch); scratch = screened_rates(k_Fe52_to_p_nse_Mn51_derived); jac.set(Mn51, Fe52, scratch); - scratch = screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(P_nse)*state.rho; jac.set(Mn51, Fe54, scratch); jac.set(Mn51, Fe56, 0.0); @@ -2299,15 +2215,15 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Ni58, 0.0); - scratch = -2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = -1.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe52, N, scratch); jac.set(Fe52, H1, 0.0); - scratch = screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(Mn51)*state.rho; jac.set(Fe52, P_nse, scratch); - scratch = screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(Fe52)*state.rho; jac.set(Fe52, He4, scratch); jac.set(Fe52, C12, 0.0); @@ -2338,13 +2254,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho; jac.set(Fe52, Cr48, scratch); - scratch = screened_rates(k_p_nse_Mn51_to_Fe52_reaclib)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Mn51_p_nse_to_Fe52_reaclib)*Y(P_nse)*state.rho; jac.set(Fe52, Mn51, scratch); - scratch = -screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_nse_Mn51_derived) - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(He4)*state.rho - 0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_nse_Mn51_derived); jac.set(Fe52, Fe52, scratch); scratch = screened_rates(k_Fe54_to_Fe52_n_n_approx); @@ -2352,7 +2268,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Fe56, 0.0); - scratch = screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(P_nse)*state.rho; jac.set(Fe52, Co55, scratch); jac.set(Fe52, Co56, 0.0); @@ -2364,15 +2280,15 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Ni58, 0.0); - scratch = 2.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = 1.0*screened_rates(k_Fe52_n_n_to_Fe54_approx)*Y(Fe52)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe54, N, scratch); jac.set(Fe54, H1, 0.0); - scratch = screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(Fe54)*state.rho; jac.set(Fe54, P_nse, scratch); - scratch = -screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(Mn51)*state.rho; jac.set(Fe54, He4, scratch); jac.set(Fe54, C12, 0.0); @@ -2405,13 +2321,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Cr48, 0.0); - scratch = screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib)*Y(He4)*state.rho; jac.set(Fe54, Mn51, scratch); - scratch = screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Fe52_n_n_to_Fe54_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Fe54, Fe52, scratch); - scratch = -screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe54_to_Fe52_n_n_approx) - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(He4)*state.rho - 0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived)*Y(P_nse)*state.rho - screened_rates(k_Fe54_to_Fe52_n_n_approx); jac.set(Fe54, Fe54, scratch); scratch = screened_rates(k_Fe56_to_Fe54_n_n_approx); @@ -2422,7 +2338,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Co56, 0.0); - scratch = screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(P_nse)*state.rho; jac.set(Fe54, Co57, scratch); jac.set(Fe54, Ni56, 0.0); @@ -2430,12 +2346,12 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni58_to_He4_Fe54_derived); jac.set(Fe54, Ni58, scratch); - scratch = 2.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(Co56)*state.rho + 1.0*screened_rates(k_Fe54_n_n_to_Fe56_approx)*Y(Fe54)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Fe56, N, scratch); jac.set(Fe56, H1, 0.0); - scratch = -screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(Fe56)*state.rho; jac.set(Fe56, P_nse, scratch); jac.set(Fe56, He4, 0.0); @@ -2474,15 +2390,15 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Fe52, 0.0); - scratch = screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Fe54_n_n_to_Fe56_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Fe56, Fe54, scratch); - scratch = -screened_rates(k_Fe56_to_Co56_weaktab) - screened_rates(k_Fe56_to_Fe54_n_n_approx) - screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(P_nse)*state.rho - screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) - screened_rates(k_Fe56_to_Fe54_n_n_approx); jac.set(Fe56, Fe56, scratch); jac.set(Fe56, Co55, 0.0); - scratch = screened_rates(k_Co56_to_Fe56_weaktab) + screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_to_Fe56_electron_capture_weaktab); jac.set(Fe56, Co56, scratch); scratch = screened_rates(k_Co57_to_p_nse_Fe56_derived); @@ -2492,15 +2408,15 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Ni58, 0.0); - scratch = -screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho; + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho; jac.set(Co55, N, scratch); jac.set(Co55, H1, 0.0); - scratch = -screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(Co55, P_nse, scratch); - scratch = -screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho; jac.set(Co55, He4, scratch); jac.set(Co55, C12, 0.0); @@ -2533,18 +2449,18 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Cr48, 0.0); - scratch = screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Mn51, scratch); - scratch = screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Fe52, scratch); - scratch = screened_rates(k_p_nse_Fe54_to_Co55_reaclib)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Fe54_p_nse_to_Co55_reaclib)*Y(P_nse)*state.rho; jac.set(Co55, Fe54, scratch); jac.set(Co55, Fe56, 0.0); - scratch = -screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_nse_Fe54_derived) - screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_p_nse_Co55_to_He4_Fe52_derived)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_p_nse_to_He4_Fe52_derived)*Y(P_nse)*state.rho - screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_nse_Fe54_derived); jac.set(Co55, Co55, scratch); scratch = screened_rates(k_Co56_to_n_Co55_derived); @@ -2555,15 +2471,15 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni56_to_p_nse_Co55_derived); jac.set(Co55, Ni56, scratch); - scratch = screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(P_nse)*state.rho; jac.set(Co55, Ni58, scratch); - scratch = screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(Ni56)*state.rho; jac.set(Co56, N, scratch); jac.set(Co56, H1, 0.0); - scratch = -screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(Fe56)*state.rho; jac.set(Co56, P_nse, scratch); jac.set(Co56, He4, 0.0); @@ -2604,32 +2520,32 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Fe54, 0.0); - scratch = screened_rates(k_Fe56_to_Co56_weaktab) + screened_rates(k_p_nse_Fe56_to_n_Co56_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Fe56_p_nse_to_n_Co56_derived)*Y(P_nse)*state.rho + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab); jac.set(Co56, Fe56, scratch); - scratch = screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho; jac.set(Co56, Co55, scratch); - scratch = -screened_rates(k_Co56_to_Fe56_weaktab) - screened_rates(k_Co56_to_Ni56_weaktab) - screened_rates(k_Co56_to_n_Co55_derived) - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(P_nse)*state.rho - screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) - screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) - screened_rates(k_Co56_to_n_Co55_derived); jac.set(Co56, Co56, scratch); scratch = screened_rates(k_Co57_to_n_Co56_derived); jac.set(Co56, Co57, scratch); - scratch = screened_rates(k_Ni56_to_Co56_weaktab) + screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_to_Co56_electron_capture_weaktab); jac.set(Co56, Ni56, scratch); jac.set(Co56, Ni58, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho; jac.set(Co57, N, scratch); jac.set(Co57, H1, 0.0); - scratch = -screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(Co57)*state.rho + screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(Fe56)*state.rho; jac.set(Co57, P_nse, scratch); - scratch = screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(Fe54)*state.rho; jac.set(Co57, He4, scratch); jac.set(Co57, C12, 0.0); @@ -2666,18 +2582,18 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe54_to_p_nse_Co57_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_nse_Co57_derived)*Y(He4)*state.rho; jac.set(Co57, Fe54, scratch); - scratch = screened_rates(k_p_nse_Fe56_to_Co57_reaclib)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Fe56_p_nse_to_Co57_reaclib)*Y(P_nse)*state.rho; jac.set(Co57, Fe56, scratch); jac.set(Co57, Co55, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho; jac.set(Co57, Co56, scratch); - scratch = -screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_nse_Fe56_derived) - screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib)*Y(P_nse)*state.rho - screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(P_nse)*state.rho - screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_nse_Fe56_derived); jac.set(Co57, Co57, scratch); jac.set(Co57, Ni56, 0.0); @@ -2685,15 +2601,15 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ni58_to_p_nse_Co57_derived); jac.set(Co57, Ni58, scratch); - scratch = -2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(Ni56)*state.rho; + scratch = -1.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(Ni56)*state.rho; jac.set(Ni56, N, scratch); jac.set(Ni56, H1, 0.0); - scratch = screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(Co56)*state.rho; jac.set(Ni56, P_nse, scratch); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho; jac.set(Ni56, He4, scratch); jac.set(Ni56, C12, 0.0); @@ -2728,36 +2644,36 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Mn51, 0.0); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho; jac.set(Ni56, Fe52, scratch); jac.set(Ni56, Fe54, 0.0); jac.set(Ni56, Fe56, 0.0); - scratch = screened_rates(k_p_nse_Co55_to_Ni56_reaclib)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Co55_p_nse_to_Ni56_reaclib)*Y(P_nse)*state.rho; jac.set(Ni56, Co55, scratch); - scratch = screened_rates(k_Co56_to_Ni56_weaktab) + screened_rates(k_p_nse_Co56_to_n_Ni56_derived)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Co56_p_nse_to_n_Ni56_derived)*Y(P_nse)*state.rho + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab); jac.set(Ni56, Co56, scratch); jac.set(Ni56, Co57, 0.0); - scratch = -screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_to_Co56_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_nse_Co55_derived) - screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib)*Y(N)*state.rho; + scratch = -0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_nse_Co55_derived); jac.set(Ni56, Ni56, scratch); scratch = screened_rates(k_Ni58_to_Ni56_n_n_approx); jac.set(Ni56, Ni58, scratch); - scratch = 2.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho); + scratch = 1.0*screened_rates(k_Ni56_n_n_to_Ni58_approx)*Y(Ni56)*Y(N)*amrex::Math::powi<2>(state.rho); jac.set(Ni58, N, scratch); jac.set(Ni58, H1, 0.0); - scratch = screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(Ni58, P_nse, scratch); - scratch = screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho; jac.set(Ni58, He4, scratch); jac.set(Ni58, C12, 0.0); @@ -2794,23 +2710,23 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Fe54, scratch); jac.set(Ni58, Fe56, 0.0); - scratch = screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Co55, scratch); jac.set(Ni58, Co56, 0.0); - scratch = screened_rates(k_p_nse_Co57_to_Ni58_reaclib)*Y(P_nse)*state.rho; + scratch = screened_rates(k_Co57_p_nse_to_Ni58_reaclib)*Y(P_nse)*state.rho; jac.set(Ni58, Co57, scratch); - scratch = screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); + scratch = 0.5*screened_rates(k_Ni56_n_n_to_Ni58_approx)*amrex::Math::powi<2>(Y(N))*amrex::Math::powi<2>(state.rho); jac.set(Ni58, Ni56, scratch); - scratch = -screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_Ni56_n_n_approx) - screened_rates(k_Ni58_to_p_nse_Co57_derived) - screened_rates(k_p_nse_Ni58_to_He4_Co55_derived)*Y(P_nse)*state.rho; + scratch = -screened_rates(k_Ni58_p_nse_to_He4_Co55_derived)*Y(P_nse)*state.rho - screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_Ni56_n_n_approx) - screened_rates(k_Ni58_to_p_nse_Co57_derived); jac.set(Ni58, Ni58, scratch); diff --git a/networks/he-burn/he-burn-28amnp/approximate_rates.H b/networks/he-burn/he-burn-28amnp/approximate_rates.H index 317921baf..7b1d48afa 100644 --- a/networks/he-burn/he-burn-28amnp/approximate_rates.H +++ b/networks/he-burn/he-burn-28amnp/approximate_rates.H @@ -8,384 +8,386 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_n_n_to_Fe54_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Fe52_to_Fe53_reaclib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe53_to_Fe54_reaclib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_reaclib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_reaclib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_n_to_Fe54_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Fe52_n_to_Fe53_reaclib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe53_n_to_Fe54_reaclib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Fe52_n_to_Fe53_reaclib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_reaclib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_Fe52_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe53_to_Fe54_reaclib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_reaclib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_Fe52_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe53_n_to_Fe54_reaclib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_reaclib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_n_n_to_Fe56_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Fe54_to_Fe55_reaclib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe55_to_Fe56_reaclib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_reaclib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_reaclib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_n_to_Fe56_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Fe54_n_to_Fe55_reaclib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe55_n_to_Fe56_reaclib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Fe54_n_to_Fe55_reaclib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_reaclib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_Fe54_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Fe55_to_Fe56_reaclib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_reaclib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_Fe54_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Fe55_n_to_Fe56_reaclib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_reaclib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_n_n_to_Ni58_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_ng = rate_eval.screened_rates(k_n_Ni56_to_Ni57_reaclib); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Ni57_to_Ni58_reaclib); - amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_ng * r2_ng * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_reaclib); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_reaclib); - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); - drate_dT = dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_n_to_Ni58_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_ng = rate_eval.screened_rates(k_Ni56_n_to_Ni57_reaclib); + amrex::Real r2_ng = rate_eval.screened_rates(k_Ni57_n_to_Ni58_reaclib); + amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = 2.0_rt * r1_ng * r2_ng * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_ng = rate_eval.dscreened_rates_dT(k_Ni56_n_to_Ni57_reaclib); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_reaclib); + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); + drate_dT = 2.0_rt * (dr1dT_ng * r2_ng * dd + r1_ng * dr2dT_ng * dd - r1_ng * r2_ng * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn)); + } } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_Ni56_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real Yn = Y(N); - amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); - amrex::Real r2_gn = rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived); - amrex::Real r2_ng = rate_eval.screened_rates(k_n_Ni57_to_Ni58_reaclib); - amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); - rate = r1_gn * r2_gn * dd; - if constexpr (std::is_same_v) { - amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); - amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived); - amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_reaclib); - drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_Ni56_n_n_approx(const T& rate_eval, const amrex::Real rho, const amrex::Array1D& Y, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real Yn = Y(N); + amrex::Real r1_gn = rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived); + amrex::Real r2_gn = rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived); + amrex::Real r2_ng = rate_eval.screened_rates(k_Ni57_n_to_Ni58_reaclib); + amrex::Real dd = 1.0_rt / (rho * Yn * r2_ng + r1_gn); + rate = r1_gn * r2_gn * dd; + if constexpr (std::is_same_v) { + amrex::Real dr1dT_gn = rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived); + amrex::Real dr2dT_gn = rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived); + amrex::Real dr2dT_ng = rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_reaclib); + drate_dT = dr1dT_gn * r2_gn * dd + r1_gn * dr2dT_gn * dd - r1_gn * r2_gn * dd * dd * (rho * Yn * dr2dT_ng + dr1dT_gn); + } } -} -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } + + rate_Fe52_n_n_to_Fe54_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_n_to_Fe54_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_n_to_Fe54_approx) = drate_dT; + } + + rate_Fe54_to_Fe52_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_to_Fe52_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_Fe52_n_n_approx) = drate_dT; + } + + rate_Fe54_n_n_to_Fe56_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_n_to_Fe56_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_n_to_Fe56_approx) = drate_dT; + } + + rate_Fe56_to_Fe54_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_to_Fe54_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Fe54_n_n_approx) = drate_dT; + } + + rate_Ni56_n_n_to_Ni58_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_n_to_Ni58_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_n_to_Ni58_approx) = drate_dT; + } + + rate_Ni58_to_Ni56_n_n_approx(rate_eval, rho, Y, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_to_Ni56_n_n_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_Ni56_n_n_approx) = drate_dT; + } - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - rate_Fe52_n_n_to_Fe54_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_n_n_to_Fe54_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_n_n_to_Fe54_approx) = drate_dT; - } - - rate_Fe54_to_Fe52_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_to_Fe52_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_Fe52_n_n_approx) = drate_dT; - } - - rate_Fe54_n_n_to_Fe56_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_n_n_to_Fe56_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_n_n_to_Fe56_approx) = drate_dT; - } - - rate_Fe56_to_Fe54_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Fe56_to_Fe54_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_Fe54_n_n_approx) = drate_dT; - } - - rate_Ni56_n_n_to_Ni58_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_n_n_to_Ni58_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_n_n_to_Ni58_approx) = drate_dT; - } - - rate_Ni58_to_Ni56_n_n_approx(rate_eval, rho, Y, rate, drate_dT); - rate_eval.screened_rates(k_Ni58_to_Ni56_n_n_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_Ni56_n_n_approx) = drate_dT; - } - - } - #endif diff --git a/networks/he-burn/he-burn-28amnp/branched_rates.H b/networks/he-burn/he-burn-28amnp/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/he-burn-28amnp/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/he-burn-28amnp/derived_rates.H b/networks/he-burn/he-burn-28amnp/derived_rates.H index c2745e456..d56bf9724 100644 --- a/networks/he-burn/he-burn-28amnp/derived_rates.H +++ b/networks/he-burn/he-burn-28amnp/derived_rates.H @@ -7,4332 +7,4334 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from st08r + ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - // ReacLib set derived from st08r - ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from st08r + ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // ReacLib set derived from st08r - ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_nse_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_nse_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> p_nse + Mn51 - // Fe52 --> p_nse + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 --> He4 + Mn51 - // Co55 --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.61473213109255 + -95.29300562248025 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 90.61473213109255 + -95.29300562248025 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 - + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 95.29300562248025 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 95.29300562248025 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i - + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_nse_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_nse_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> p_nse + Co55 - // Ni56 --> p_nse + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_nse_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mn51 + p_nse --> He4 + Cr48 - // Mn51 + p_nse --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_nse_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 + p_nse --> He4 + Fe52 - // Co55 + p_nse --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_p_nse_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_p_nse_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 --> p_nse + Fe54 - // Co55 --> p_nse + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe54_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe54_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe54_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe54_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 57.84851844810452 + -58.76958578644693 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 57.84851844810452 + -58.76958578644693 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 - + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 58.76958578644693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 58.76958578644693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i - + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 --> n + Co55 - // Co56 --> n + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co55_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co55_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 40.647564333711024 + -116.994640839646 * tfactors.T9i + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 40.647564333711024 + -116.994640839646 * tfactors.T9i + -1.86357 * tfactors.T913 - + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 116.994640839646 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 116.994640839646 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i - + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 --> n + Co56 - // Co57 --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co56_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co56_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dCo57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 41.17386809654295 + -132.01901045161702 * tfactors.T9i + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 41.17386809654295 + -132.01901045161702 * tfactors.T9i + -1.37855 * tfactors.T913 - + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 132.01901045161702 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 132.01901045161702 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i - + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_p_nse_Fe56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_p_nse_Fe56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 --> p_nse + Fe56 - // Co57 --> p_nse + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe56_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe56_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe56_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe56_log_pf_dT9 - dCo57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 57.68564187237867 + -69.94636137001572 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 57.68564187237867 + -69.94636137001572 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 - + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 69.94636137001572 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 69.94636137001572 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i - + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_p_nse_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_p_nse_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> p_nse + Co57 - // Ni58 --> p_nse + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co57_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co57_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.794489871251855 + -94.83410720454592 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.794489871251855 + -94.83410720454592 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 - + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.83410720454592 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.83410720454592 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i - + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> He4 + Fe54 - // Ni58 --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe54_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe54_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe54_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe54_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 85.23428031558652 + -74.25981652709197 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 85.23428031558652 + -74.25981652709197 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 - + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.25981652709197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.25981652709197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i - + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_nse_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Fe54_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + p_nse --> He4 + Mn51 - // Fe54 + p_nse --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - p_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dp_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - p_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dp_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 65.35241368298804 + -36.52341983603332 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 65.35241368298804 + -36.52341983603332 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 - + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.52341983603332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.52341983603332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i - + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_p_nse_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_p_nse_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + He4 --> p_nse + Co57 - // Fe54 + He4 --> p_nse + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co57_log_pf - He4_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co57_log_pf - He4_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = -1.404090444334669 + -20.574290677453938 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = -1.404090444334669 + -20.574290677453938 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 - + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 20.574290677453938 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 20.574290677453938 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i - + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_nse_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Fe56_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 + p_nse --> n + Co56 - // Fe56 + p_nse --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co56_log_pf - p_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dp_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co56_log_pf - p_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dp_log_pf_dT9 - dFe56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 22.653426224164285 + -62.07264908160129 * tfactors.T9i + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 22.653426224164285 + -62.07264908160129 * tfactors.T9i + -1.13331 * tfactors.T913 - + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 62.07264908160129 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 62.07264908160129 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i - + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_nse_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Co56_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 + p_nse --> n + Ni56 - // Co56 + p_nse --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - p_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - p_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 13.374260291785419 + -33.830037058152215 * tfactors.T9i + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 13.374260291785419 + -33.830037058152215 * tfactors.T9i + 1.76846 * tfactors.T913 - + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.830037058152215 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.830037058152215 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i - + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_nse_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Ni58_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 + p_nse --> He4 + Co55 - // Ni58 + p_nse --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - p_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - p_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 63.596461867482006 + -15.490230740645051 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.596461867482006 + -15.490230740645051 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 - + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 15.490230740645051 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 15.490230740645051 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i - + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lo18r + ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0 + ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from chw0 - ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // V47 + p --> He4 + Ti44 - // Cr48 --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; - // ReacLib set derived from ths8r - ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from chw0r + ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } -} + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + } - // Cr48 --> p + V47 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // Cr48 --> He4 + Ti44 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // Evaluate partition function terms - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - // ReacLib set derived from nfisn - ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ths8r + ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from nfisn - ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // Cr48 --> p + V47 - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + rate = 0.0; + drate_dT = 0.0; - // ReacLib set derived from nfisn - ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; + // Evaluate partition function terms - ln_set_rate += net_log_pf + log_scor; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + amrex::Real p_log_pf, dp_log_pf_dT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // ReacLib set derived from nfisn - ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nfisn + ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; -} + ln_set_rate += net_log_pf + log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; - // V47 + p --> He4 + Ti44 + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // Evaluate partition function terms + // ReacLib set derived from nfisn + ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // ReacLib set derived from nfisn + ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + ln_set_rate += net_log_pf + log_scor; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nfisn + ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - // ReacLib set derived from chw0r - ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_to_n_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_n_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe53 --> n + Fe52 - // Fe54 --> n + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe52_log_pf - Fe53_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe52_log_pf_dT9 - dFe53_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe53_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe53_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 37.50789742709652 + -124.01421385132892 * tfactors.T9i + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 42.23234536763494 + -155.25009527915816 * tfactors.T9i + -1.10421 * tfactors.T913 - + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 124.01421385132892 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 155.25009527915816 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i - + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_n_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe53_to_n_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 --> n + Fe53 - // Fe53 --> n + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe53_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe53_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe52_log_pf - Fe53_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe52_log_pf_dT9 - dFe53_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 42.23234536763494 + -155.25009527915816 * tfactors.T9i + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 37.50789742709652 + -124.01421385132892 * tfactors.T9i + -0.344319 * tfactors.T913 - + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 155.25009527915816 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 124.01421385132892 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i - + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_to_n_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe55 --> n + Fe54 - // Fe56 --> n + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe54_log_pf - Fe55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe54_log_pf_dT9 - dFe55_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dFe56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ks03 + ln_set_rate = 21.50487677145662 + -107.84100838776591 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; - // ReacLib set derived from ks03 - ln_set_rate = 46.806892234523204 + -130.0322634199283 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 - + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 107.84100838776591 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 130.0322634199283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i - + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe55_to_n_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 --> n + Fe55 - // Fe55 --> n + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe54_log_pf - Fe55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe54_log_pf_dT9 - dFe55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ks03 + ln_set_rate = 46.806892234523204 + -130.0322634199283 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; - // ReacLib set derived from ks03 - ln_set_rate = 21.50487677145662 + -107.84100838776591 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 - + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 130.0322634199283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 107.84100838776591 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i - + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni57 --> n + Ni56 - // Ni58 --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - Ni57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dNi57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 38.391039283996996 + -118.91983039605458 * tfactors.T9i + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 42.36077897558323 + -141.76332431826057 * tfactors.T9i + -1.90814 * tfactors.T913 - + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 118.91983039605458 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 141.76332431826057 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i - + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> n + Ni57 - // Ni57 --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - Ni57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dNi57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 42.36077897558323 + -141.76332431826057 * tfactors.T9i + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 38.391039283996996 + -118.91983039605458 * tfactors.T9i + -1.19665 * tfactors.T913 - + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 141.76332431826057 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 118.91983039605458 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i - + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + part_fun::pf_cache_t pf_cache{}; - part_fun::pf_cache_t pf_cache{}; + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + { + // N13_to_p_C12_derived - { - // N13_to_p_C12_derived - - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // Fe52_to_p_nse_Mn51_derived + { + // Fe52_to_p_nse_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_nse_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_nse_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_nse_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_nse_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_nse_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_nse_Mn51_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Co55_to_He4_Mn51_derived + { + // Co55_to_He4_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + } } - } - { - // Ni56_to_p_nse_Co55_derived + { + // Ni56_to_p_nse_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_nse_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_nse_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_nse_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_nse_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_nse_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_nse_Co55_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // p_nse_Mn51_to_He4_Cr48_derived + { + // Mn51_p_nse_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Mn51); - } + log_scor = rate_eval.log_screen(k_p_nse_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Mn51); + } #endif - rate_p_nse_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_nse_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Mn51_p_nse_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_nse_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_nse_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // p_nse_Co55_to_He4_Fe52_derived + { + // Co55_p_nse_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co55); - } + log_scor = rate_eval.log_screen(k_p_nse_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co55); + } #endif - rate_p_nse_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_nse_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Co55_to_He4_Fe52_derived) = drate_dT; + rate_Co55_p_nse_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_nse_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_nse_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Co55_to_p_nse_Fe54_derived + { + // Co55_to_p_nse_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_p_nse_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co55_to_p_nse_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_p_nse_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_p_nse_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_to_p_nse_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_p_nse_Fe54_derived) = drate_dT; + } } - } - { - // Co56_to_n_Co55_derived + { + // Co56_to_n_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co56_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + } } - } - { - // Co57_to_n_Co56_derived + { + // Co57_to_n_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + } } - } - { - // Co57_to_p_nse_Fe56_derived + { + // Co57_to_p_nse_Fe56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_p_nse_Fe56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co57_to_p_nse_Fe56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_p_nse_Fe56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_p_nse_Fe56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_to_p_nse_Fe56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_p_nse_Fe56_derived) = drate_dT; + } } - } - { - // Ni58_to_p_nse_Co57_derived + { + // Ni58_to_p_nse_Co57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_p_nse_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_p_nse_Co57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_p_nse_Co57_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_p_nse_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_p_nse_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_p_nse_Co57_derived) = drate_dT; + } } - } - { - // Ni58_to_He4_Fe54_derived + { + // Ni58_to_He4_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_He4_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_He4_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + } } - } - { - // p_nse_Fe54_to_He4_Mn51_derived + { + // Fe54_p_nse_to_He4_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Fe54); - } + log_scor = rate_eval.log_screen(k_p_nse_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Fe54); + } #endif - rate_p_nse_Fe54_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_nse_Fe54_to_He4_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Fe54_to_He4_Mn51_derived) = drate_dT; + rate_Fe54_p_nse_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_p_nse_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_nse_to_He4_Mn51_derived) = drate_dT; + } } - } - { - // He4_Fe54_to_p_nse_Co57_derived + { + // Fe54_He4_to_p_nse_Co57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_p_nse_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Fe54_to_p_nse_Co57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_p_nse_Co57_derived) = drate_dT; + rate_Fe54_He4_to_p_nse_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_He4_to_p_nse_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_p_nse_Co57_derived) = drate_dT; + } } - } - { - // p_nse_Fe56_to_n_Co56_derived + { + // Fe56_p_nse_to_n_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Fe56); - } + log_scor = rate_eval.log_screen(k_p_nse_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Fe56); + } #endif - rate_p_nse_Fe56_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_nse_Fe56_to_n_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Fe56_to_n_Co56_derived) = drate_dT; + rate_Fe56_p_nse_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_p_nse_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_nse_to_n_Co56_derived) = drate_dT; + } } - } - { - // p_nse_Co56_to_n_Ni56_derived + { + // Co56_p_nse_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co56); - } + log_scor = rate_eval.log_screen(k_p_nse_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co56); + } #endif - rate_p_nse_Co56_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_nse_Co56_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Co56_to_n_Ni56_derived) = drate_dT; + rate_Co56_p_nse_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_p_nse_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_nse_to_n_Ni56_derived) = drate_dT; + } } - } - { - // p_nse_Ni58_to_He4_Co55_derived + { + // Ni58_p_nse_to_He4_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Ni58); - } + log_scor = rate_eval.log_screen(k_p_nse_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Ni58); + } #endif - rate_p_nse_Ni58_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_nse_Ni58_to_He4_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Ni58_to_He4_Co55_derived) = drate_dT; + rate_Ni58_p_nse_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_p_nse_to_He4_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_nse_to_He4_Co55_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // V47_p_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_V47_p_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } -#endif - rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; - } - } - { - // Fe54_to_n_Fe53_derived + { + // Fe53_to_n_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe54_to_n_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_to_n_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; + } } - } - { - // Fe53_to_n_Fe52_derived + { + // Fe54_to_n_Fe53_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe53_to_n_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_to_n_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; + } } - } - { - // Fe56_to_n_Fe55_derived + { + // Fe55_to_n_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe56_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_to_n_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; + } } - } - { - // Fe55_to_n_Fe54_derived + { + // Fe56_to_n_Fe55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe55_to_n_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; + } } - } - { - // Ni58_to_n_Ni57_derived + { + // Ni57_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; + } } - } - { - // Ni57_to_n_Ni56_derived + { + // Ni58_to_n_Ni57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived) = drate_dT; + } } - } + } + } #endif diff --git a/networks/he-burn/he-burn-28amnp/modified_rates.H b/networks/he-burn/he-burn-28amnp/modified_rates.H index e0ca08a1d..edbab795f 100644 --- a/networks/he-burn/he-burn-28amnp/modified_rates.H +++ b/networks/he-burn/he-burn-28amnp/modified_rates.H @@ -12,24 +12,29 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_N14_to_Ne20_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_N14_1p5He4_to_Ne20_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // N14 + 1.5 He4 --> Ne20 (calls the underlying rate) + // represents the sequence: N14 + 1.5α -> Ne20 - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_O16_to_N14_He4_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_p_p_to_N14_He4_beta_pos_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + p + p --> N14 + He4 (calls the underlying rate) + // represents the sequence: O16(p,γ)F17(e+ν)O17(p,α)N14 - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template @@ -37,6 +42,7 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) + // represents the sequence: c12(c12,n)mg23(n,γ)mg24 rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -46,22 +52,24 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) + // represents the sequence: o16(o16,n)s31(n,γ)s32 rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) + // represents the sequence: o16(c12,n)si27(n,γ)si28 - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -71,7 +79,7 @@ namespace modified_rates { [[maybe_unused]] amrex::Real drate_dT; { - // He4_N14_to_Ne20_modified + // N14_1p5He4_to_Ne20_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -81,15 +89,15 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); } #endif - rate_He4_N14_to_Ne20_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_Ne20_modified) = rate; + rate_N14_1p5He4_to_Ne20_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_1p5He4_to_Ne20_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_Ne20_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_N14_1p5He4_to_Ne20_modified) = drate_dT; } } { - // p_O16_to_N14_He4_modified + // O16_p_p_to_N14_He4_beta_pos_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -99,10 +107,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); } #endif - rate_p_O16_to_N14_He4_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_N14_He4_modified) = rate; + rate_O16_p_p_to_N14_He4_beta_pos_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_N14_He4_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_p_p_to_N14_He4_beta_pos_modified) = drate_dT; } } @@ -143,7 +151,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -153,10 +161,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } diff --git a/networks/he-burn/he-burn-28amnp/pynucastro-info.txt b/networks/he-burn/he-burn-28amnp/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/he-burn/he-burn-28amnp/pynucastro-info.txt +++ b/networks/he-burn/he-burn-28amnp/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/he-burn-28amnp/reaclib_rates.H b/networks/he-burn/he-burn-28amnp/reaclib_rates.H index 4d3222ff2..d6f5e79fe 100644 --- a/networks/he-burn/he-burn-28amnp/reaclib_rates.H +++ b/networks/he-burn/he-burn-28amnp/reaclib_rates.H @@ -8,3990 +8,3993 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + p --> N13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + p --> N13 - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - ln_set_rate += log_scor; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + ln_set_rate += log_scor; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_nse_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p_nse --> Fe52 - // Mn51 + p_nse --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> Co55 - // Mn51 + He4 --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 - + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i - + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_nse_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p_nse --> Ni56 - // Co55 + p_nse --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_nse_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_nse_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p_nse + Mn51 - // Cr48 + He4 --> p_nse + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_nse_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_nse_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p_nse + Co55 - // Fe52 + He4 --> p_nse + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> n + S31 - // O16 + O16 --> n + S31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> n + Si27 - // O16 + C12 --> n + Si27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_nse_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Fe54_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + p_nse --> Co55 - // Fe54 + p_nse --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 - + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i - + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + He4 --> Ni58 - // Fe54 + He4 --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 - + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i - + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_nse_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Fe56_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + p_nse --> Co57 - // Fe56 + p_nse --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 - + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i - + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_n_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co55_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + n --> Co56 - // Co55 + n --> Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.065 + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; - // ths8r - ln_set_rate = 17.065 + -1.86357 * tfactors.T913 - + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i - + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> Co57 - // Co56 + n --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.3552 + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; - // ths8r - ln_set_rate = 17.3552 + -1.37855 * tfactors.T913 - + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i - + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_nse_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Co57_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p_nse --> Ni58 - // Co57 + p_nse --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 - + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i - + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_p_nse_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_p_nse_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> p_nse + Fe54 - // Mn51 + He4 --> p_nse + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 - + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i - + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_He4_to_p_nse_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co55_to_p_nse_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + He4 --> p_nse + Ni58 - // Co55 + He4 --> p_nse + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 - + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i - + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_p_nse_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_p_nse_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> p_nse + Fe56 - // Co56 + n --> p_nse + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.4539 + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; - // ths8r - ln_set_rate = 20.4539 + -1.13331 * tfactors.T913 - + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i - + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_nse_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_nse_Co57_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p_nse --> He4 + Fe54 - // Co57 + p_nse --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 - + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i - + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_p_nse_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_p_nse_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> p_nse + Co56 - // Ni56 + n --> p_nse + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.5693 + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; - // ths8r - ln_set_rate = 15.5693 + 1.76846 * tfactors.T913 - + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i - + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - ln_set_rate += log_scor; + // K39 + p --> Ca40 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; -} + ln_set_rate += log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - // K39 + p --> He4 + Ar36 + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe52_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + n --> Fe53 - // Fe52 + n --> Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.8885 + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; - // ths8r - ln_set_rate = 15.8885 + -0.344319 * tfactors.T913 - + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i - + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_n_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe53_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + n --> Fe54 - // Fe53 + n --> Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4534 + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; - // ths8r - ln_set_rate = 16.4534 + -1.10421 * tfactors.T913 - + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i - + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe54_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + n --> Fe55 - // Fe54 + n --> Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; - // ks03 - ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 - + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i - + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_n_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe55_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + n --> Fe56 - // Fe55 + n --> Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; - // ks03 - ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 - + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i - + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> Ni57 - // Ni56 + n --> Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.0765 + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; - // ths8r - ln_set_rate = 16.0765 + -1.19665 * tfactors.T913 - + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i - + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_n_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni57_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + n --> Ni58 - // Ni57 + n --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.2731 + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; - // ths8r - ln_set_rate = 17.2731 + -1.90814 * tfactors.T913 - + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i - + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // p_nse_Mn51_to_Fe52_reaclib + { + // Mn51_p_nse_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Mn51); - } + log_scor = rate_eval.log_screen(k_p_nse_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Mn51); + } #endif - rate_p_nse_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_nse_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_nse_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_nse_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_nse_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_Co55_reaclib + { + // Mn51_He4_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_Co55_reaclib) = drate_dT; + rate_Mn51_He4_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_nse_Co55_to_Ni56_reaclib + { + // Co55_p_nse_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co55); - } + log_scor = rate_eval.log_screen(k_p_nse_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co55); + } #endif - rate_p_nse_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_nse_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_nse_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_nse_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_nse_to_Ni56_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_nse_Mn51_reaclib + { + // Cr48_He4_to_p_nse_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_nse_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_nse_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_nse_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_p_nse_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_nse_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_nse_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_nse_Co55_reaclib + { + // Fe52_He4_to_p_nse_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_nse_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_nse_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_nse_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_p_nse_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_nse_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_nse_Co55_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_n_S31_reaclib + { + // O16_O16_to_n_S31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_n_Si27_reaclib + { + // O16_C12_to_n_Si27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_reaclib) = drate_dT; + } } - } - { - // p_nse_Fe54_to_Co55_reaclib + { + // Fe54_p_nse_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Fe54); - } + log_scor = rate_eval.log_screen(k_p_nse_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Fe54); + } #endif - rate_p_nse_Fe54_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_nse_Fe54_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Fe54_to_Co55_reaclib) = drate_dT; + rate_Fe54_p_nse_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_p_nse_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_nse_to_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe54_to_Ni58_reaclib + { + // Fe54_He4_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe54_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_Ni58_reaclib) = drate_dT; + rate_Fe54_He4_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_He4_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_Ni58_reaclib) = drate_dT; + } } - } - { - // p_nse_Fe56_to_Co57_reaclib + { + // Fe56_p_nse_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Fe56); - } + log_scor = rate_eval.log_screen(k_p_nse_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Fe56); + } #endif - rate_p_nse_Fe56_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_nse_Fe56_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Fe56_to_Co57_reaclib) = drate_dT; + rate_Fe56_p_nse_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_p_nse_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_nse_to_Co57_reaclib) = drate_dT; + } } - } - { - // n_Co55_to_Co56_reaclib + { + // Co55_n_to_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co55_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co55_to_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co55_to_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_n_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_n_to_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_n_to_Co56_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_Co57_reaclib + { + // Co56_n_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_Co57_reaclib) = drate_dT; + } } - } - { - // p_nse_Co57_to_Ni58_reaclib + { + // Co57_p_nse_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co57); - } + log_scor = rate_eval.log_screen(k_p_nse_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co57); + } #endif - rate_p_nse_Co57_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_nse_Co57_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Co57_to_Ni58_reaclib) = drate_dT; + rate_Co57_p_nse_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_nse_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_nse_to_Ni58_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_p_nse_Fe54_reaclib + { + // Mn51_He4_to_p_nse_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_p_nse_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_p_nse_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_p_nse_Fe54_reaclib) = drate_dT; + rate_Mn51_He4_to_p_nse_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_p_nse_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_p_nse_Fe54_reaclib) = drate_dT; + } } - } - { - // He4_Co55_to_p_nse_Ni58_reaclib + { + // Co55_He4_to_p_nse_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); - } + log_scor = rate_eval.log_screen(k_He4_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); + } #endif - rate_He4_Co55_to_p_nse_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_p_nse_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_p_nse_Ni58_reaclib) = drate_dT; + rate_Co55_He4_to_p_nse_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_p_nse_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_He4_to_p_nse_Ni58_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_p_nse_Fe56_reaclib + { + // Co56_n_to_p_nse_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_p_nse_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_p_nse_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_p_nse_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_p_nse_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_p_nse_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_p_nse_Fe56_reaclib) = drate_dT; + } } - } - { - // p_nse_Co57_to_He4_Fe54_reaclib + { + // Co57_p_nse_to_He4_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_nse_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co57); - } + log_scor = rate_eval.log_screen(k_p_nse_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_nse_Co57); + } #endif - rate_p_nse_Co57_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_nse_Co57_to_He4_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_nse_Co57_to_He4_Fe54_reaclib) = drate_dT; + rate_Co57_p_nse_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_nse_to_He4_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_nse_to_He4_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_p_nse_Co56_reaclib + { + // Ni56_n_to_p_nse_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_p_nse_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_p_nse_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_p_nse_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_p_nse_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_p_nse_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_p_nse_Co56_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } - { - // n_Fe52_to_Fe53_reaclib + { + // Fe52_n_to_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe52_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe52_to_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_n_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_to_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_to_Fe53_reaclib) = drate_dT; + } } - } - { - // n_Fe53_to_Fe54_reaclib + { + // Fe53_n_to_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe53_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe53_to_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_n_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_n_to_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Fe54_to_Fe55_reaclib + { + // Fe54_n_to_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe54_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe54_to_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_n_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_to_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_to_Fe55_reaclib) = drate_dT; + } } - } - { - // n_Fe55_to_Fe56_reaclib + { + // Fe55_n_to_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe55_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe55_to_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_n_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_n_to_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_Ni57_reaclib + { + // Ni56_n_to_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_Ni57_reaclib) = drate_dT; + } } - } - { - // n_Ni57_to_Ni58_reaclib + { + // Ni57_n_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_n_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/he-burn/he-burn-28amnp/tabular_weak_rates.H b/networks/he-burn/he-burn-28amnp/tabular_weak_rates.H new file mode 100644 index 000000000..774628385 --- /dev/null +++ b/networks/he-burn/he-burn-28amnp/tabular_weak_rates.H @@ -0,0 +1,84 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_to_n_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/he-burn/he-burn-28amnp/temperature_table_rates.H b/networks/he-burn/he-burn-28amnp/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/he-burn/he-burn-28amnp/temperature_table_rates.H +++ b/networks/he-burn/he-burn-28amnp/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/he-burn-33am/Make.package b/networks/he-burn/he-burn-33am/Make.package index 35413fdcf..e66796431 100644 --- a/networks/he-burn/he-burn-33am/Make.package +++ b/networks/he-burn/he-burn-33am/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/he-burn/he-burn-33am/actual_network.H b/networks/he-burn/he-burn-33am/actual_network.H index 0caef1a66..d8368d5f6 100644 --- a/networks/he-burn/he-burn-33am/actual_network.H +++ b/networks/he-burn/he-burn-33am/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -294,97 +294,97 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_p_C12_to_N13_reaclib = 1, - k_He4_C12_to_O16_reaclib = 2, - k_He4_O16_to_Ne20_reaclib = 3, - k_He4_Ne20_to_Mg24_reaclib = 4, - k_p_Na23_to_Mg24_reaclib = 5, - k_He4_Mg24_to_Si28_reaclib = 6, - k_p_Al27_to_Si28_reaclib = 7, - k_He4_Si28_to_S32_reaclib = 8, - k_p_P31_to_S32_reaclib = 9, - k_He4_Cr48_to_Fe52_reaclib = 10, - k_p_Mn51_to_Fe52_reaclib = 11, - k_He4_Mn51_to_Co55_reaclib = 12, - k_He4_Fe52_to_Ni56_reaclib = 13, - k_p_Co55_to_Ni56_reaclib = 14, - k_He4_Co55_to_Cu59_reaclib = 15, - k_He4_Ni56_to_Zn60_reaclib = 16, - k_p_Cu59_to_Zn60_reaclib = 17, + k_C12_p_to_N13_reaclib = 1, + k_C12_He4_to_O16_reaclib = 2, + k_O16_He4_to_Ne20_reaclib = 3, + k_Ne20_He4_to_Mg24_reaclib = 4, + k_Na23_p_to_Mg24_reaclib = 5, + k_Mg24_He4_to_Si28_reaclib = 6, + k_Al27_p_to_Si28_reaclib = 7, + k_Si28_He4_to_S32_reaclib = 8, + k_P31_p_to_S32_reaclib = 9, + k_Cr48_He4_to_Fe52_reaclib = 10, + k_Mn51_p_to_Fe52_reaclib = 11, + k_Mn51_He4_to_Co55_reaclib = 12, + k_Fe52_He4_to_Ni56_reaclib = 13, + k_Co55_p_to_Ni56_reaclib = 14, + k_Co55_He4_to_Cu59_reaclib = 15, + k_Ni56_He4_to_Zn60_reaclib = 16, + k_Cu59_p_to_Zn60_reaclib = 17, k_C12_C12_to_p_Na23_reaclib = 18, k_C12_C12_to_He4_Ne20_reaclib = 19, - k_He4_N13_to_p_O16_reaclib = 20, - k_C12_O16_to_p_Al27_reaclib = 21, - k_C12_O16_to_He4_Mg24_reaclib = 22, + k_N13_He4_to_p_O16_reaclib = 20, + k_O16_C12_to_p_Al27_reaclib = 21, + k_O16_C12_to_He4_Mg24_reaclib = 22, k_O16_O16_to_p_P31_reaclib = 23, k_O16_O16_to_He4_Si28_reaclib = 24, - k_p_Na23_to_He4_Ne20_reaclib = 25, - k_p_Al27_to_He4_Mg24_reaclib = 26, - k_p_P31_to_He4_Si28_reaclib = 27, - k_He4_Cr48_to_p_Mn51_reaclib = 28, - k_He4_Fe52_to_p_Co55_reaclib = 29, - k_p_Cu59_to_He4_Ni56_reaclib = 30, + k_Na23_p_to_He4_Ne20_reaclib = 25, + k_Al27_p_to_He4_Mg24_reaclib = 26, + k_P31_p_to_He4_Si28_reaclib = 27, + k_Cr48_He4_to_p_Mn51_reaclib = 28, + k_Fe52_He4_to_p_Co55_reaclib = 29, + k_Cu59_p_to_He4_Ni56_reaclib = 30, k_He4_He4_He4_to_C12_reaclib = 31, - k_He4_N14_to_F18_reaclib = 32, - k_p_O16_to_F17_reaclib = 33, + k_N14_He4_to_F18_reaclib = 32, + k_O16_p_to_F17_reaclib = 33, k_C12_C12_to_n_Mg23_reaclib = 34, k_O16_O16_to_n_S31_reaclib = 35, - k_C12_O16_to_n_Si27_reaclib = 36, - k_p_Mn55_to_Fe56_reaclib = 37, - k_n_Fe52_to_Fe53_reaclib = 38, - k_n_Fe53_to_Fe54_reaclib = 39, - k_He4_Fe53_to_Ni57_reaclib = 40, - k_n_Fe54_to_Fe55_reaclib = 41, - k_p_Fe54_to_Co55_reaclib = 42, - k_He4_Fe54_to_Ni58_reaclib = 43, - k_n_Fe55_to_Fe56_reaclib = 44, - k_p_Fe55_to_Co56_reaclib = 45, - k_p_Fe56_to_Co57_reaclib = 46, - k_n_Co55_to_Co56_reaclib = 47, - k_n_Co56_to_Co57_reaclib = 48, - k_p_Co56_to_Ni57_reaclib = 49, - k_p_Co57_to_Ni58_reaclib = 50, - k_n_Ni56_to_Ni57_reaclib = 51, - k_n_Ni57_to_Ni58_reaclib = 52, - k_p_Ni58_to_Cu59_reaclib = 53, - k_He4_Mn51_to_p_Fe54_reaclib = 54, - k_He4_Fe53_to_p_Co56_reaclib = 55, - k_n_Fe55_to_p_Mn55_reaclib = 56, - k_n_Co55_to_p_Fe55_reaclib = 57, - k_He4_Co55_to_p_Ni58_reaclib = 58, - k_n_Co56_to_p_Fe56_reaclib = 59, - k_p_Co57_to_He4_Fe54_reaclib = 60, - k_n_Ni56_to_p_Co56_reaclib = 61, - k_n_Ni56_to_He4_Fe53_reaclib = 62, - k_n_Ni57_to_p_Co57_reaclib = 63, - k_n_Ni57_to_He4_Fe54_reaclib = 64, - k_n_Ni58_to_He4_Fe55_reaclib = 65, - k_n_Cu59_to_He4_Co56_reaclib = 66, - k_n_Zn60_to_He4_Ni57_reaclib = 67, - k_He4_S32_to_Ar36_reaclib = 68, - k_p_Cl35_to_Ar36_reaclib = 69, - k_p_Cl35_to_He4_S32_reaclib = 70, - k_He4_Ar36_to_Ca40_reaclib = 71, - k_p_K39_to_Ca40_reaclib = 72, - k_p_K39_to_He4_Ar36_reaclib = 73, - k_He4_Ca40_to_Ti44_reaclib = 74, - k_p_Sc43_to_Ti44_reaclib = 75, - k_p_Sc43_to_He4_Ca40_reaclib = 76, - k_He4_Ti44_to_Cr48_reaclib = 77, - k_He4_Ti44_to_p_V47_reaclib = 78, - k_p_V47_to_Cr48_reaclib = 79, - k_Co55_to_Fe55_weaktab = 80, - k_Fe55_to_Co55_weaktab = 81, - k_Fe55_to_Mn55_weaktab = 82, - k_Mn55_to_Fe55_weaktab = 83, - k_Co56_to_Fe56_weaktab = 84, - k_Co56_to_Ni56_weaktab = 85, - k_Fe56_to_Co56_weaktab = 86, - k_Ni56_to_Co56_weaktab = 87, - k_Co57_to_Ni57_weaktab = 88, - k_Ni57_to_Co57_weaktab = 89, - k_n_to_p_weaktab = 90, - k_p_to_n_weaktab = 91, + k_O16_C12_to_n_Si27_reaclib = 36, + k_Mn55_p_to_Fe56_reaclib = 37, + k_Fe52_n_to_Fe53_reaclib = 38, + k_Fe53_n_to_Fe54_reaclib = 39, + k_Fe53_He4_to_Ni57_reaclib = 40, + k_Fe54_n_to_Fe55_reaclib = 41, + k_Fe54_p_to_Co55_reaclib = 42, + k_Fe54_He4_to_Ni58_reaclib = 43, + k_Fe55_n_to_Fe56_reaclib = 44, + k_Fe55_p_to_Co56_reaclib = 45, + k_Fe56_p_to_Co57_reaclib = 46, + k_Co55_n_to_Co56_reaclib = 47, + k_Co56_n_to_Co57_reaclib = 48, + k_Co56_p_to_Ni57_reaclib = 49, + k_Co57_p_to_Ni58_reaclib = 50, + k_Ni56_n_to_Ni57_reaclib = 51, + k_Ni57_n_to_Ni58_reaclib = 52, + k_Ni58_p_to_Cu59_reaclib = 53, + k_Mn51_He4_to_p_Fe54_reaclib = 54, + k_Fe53_He4_to_p_Co56_reaclib = 55, + k_Fe55_n_to_p_Mn55_reaclib = 56, + k_Co55_n_to_p_Fe55_reaclib = 57, + k_Co55_He4_to_p_Ni58_reaclib = 58, + k_Co56_n_to_p_Fe56_reaclib = 59, + k_Co57_p_to_He4_Fe54_reaclib = 60, + k_Ni56_n_to_p_Co56_reaclib = 61, + k_Ni56_n_to_He4_Fe53_reaclib = 62, + k_Ni57_n_to_p_Co57_reaclib = 63, + k_Ni57_n_to_He4_Fe54_reaclib = 64, + k_Ni58_n_to_He4_Fe55_reaclib = 65, + k_Cu59_n_to_He4_Co56_reaclib = 66, + k_Zn60_n_to_He4_Ni57_reaclib = 67, + k_S32_He4_to_Ar36_reaclib = 68, + k_Cl35_p_to_He4_S32_reaclib = 69, + k_Cl35_p_to_Ar36_reaclib = 70, + k_Ar36_He4_to_Ca40_reaclib = 71, + k_K39_p_to_He4_Ar36_reaclib = 72, + k_K39_p_to_Ca40_reaclib = 73, + k_Ca40_He4_to_Ti44_reaclib = 74, + k_Sc43_p_to_He4_Ca40_reaclib = 75, + k_Sc43_p_to_Ti44_reaclib = 76, + k_Ti44_He4_to_p_V47_reaclib = 77, + k_Ti44_He4_to_Cr48_reaclib = 78, + k_V47_p_to_Cr48_reaclib = 79, + k_Co55_to_Fe55_electron_capture_weaktab = 80, + k_Fe55_to_Co55_beta_neg_weaktab = 81, + k_Fe55_to_Mn55_electron_capture_weaktab = 82, + k_Mn55_to_Fe55_beta_neg_weaktab = 83, + k_Co56_to_Fe56_electron_capture_weaktab = 84, + k_Co56_to_Ni56_beta_neg_weaktab = 85, + k_Fe56_to_Co56_beta_neg_weaktab = 86, + k_Ni56_to_Co56_electron_capture_weaktab = 87, + k_Co57_to_Ni57_beta_neg_weaktab = 88, + k_Ni57_to_Co57_electron_capture_weaktab = 89, + k_n_to_p_beta_neg_weaktab = 90, + k_p_to_n_electron_capture_weaktab = 91, k_S32_He4_to_Ar36_approx = 92, k_Ar36_to_S32_He4_approx = 93, k_Ar36_He4_to_Ca40_approx = 94, @@ -393,11 +393,11 @@ namespace Rates k_Ti44_to_Ca40_He4_approx = 97, k_Ti44_He4_to_Cr48_approx = 98, k_Cr48_to_Ti44_He4_approx = 99, - k_He4_N14_to_Ne20_modified = 100, - k_p_O16_to_N14_He4_modified = 101, + k_N14_1p5He4_to_Ne20_modified = 100, + k_O16_p_p_to_N14_He4_beta_pos_modified = 101, k_C12_C12_to_Mg24_modified = 102, k_O16_O16_to_S32_modified = 103, - k_C12_O16_to_Si28_modified = 104, + k_O16_C12_to_Si28_modified = 104, k_N13_to_p_C12_derived = 105, k_O16_to_He4_C12_derived = 106, k_Ne20_to_He4_O16_derived = 107, @@ -415,14 +415,14 @@ namespace Rates k_Cu59_to_He4_Co55_derived = 119, k_Zn60_to_p_Cu59_derived = 120, k_Zn60_to_He4_Ni56_derived = 121, - k_C12_to_He4_He4_He4_derived = 122, - k_p_O16_to_He4_N13_derived = 123, - k_He4_Ne20_to_p_Na23_derived = 124, - k_He4_Mg24_to_p_Al27_derived = 125, - k_He4_Si28_to_p_P31_derived = 126, - k_p_Mn51_to_He4_Cr48_derived = 127, - k_p_Co55_to_He4_Fe52_derived = 128, - k_He4_Ni56_to_p_Cu59_derived = 129, + k_C12_to_3He4_derived = 122, + k_O16_p_to_He4_N13_derived = 123, + k_Ne20_He4_to_p_Na23_derived = 124, + k_Mg24_He4_to_p_Al27_derived = 125, + k_Si28_He4_to_p_P31_derived = 126, + k_Mn51_p_to_He4_Cr48_derived = 127, + k_Co55_p_to_He4_Fe52_derived = 128, + k_Ni56_He4_to_p_Cu59_derived = 129, k_Fe53_to_n_Fe52_derived = 130, k_Fe54_to_n_Fe53_derived = 131, k_Fe55_to_n_Fe54_derived = 132, @@ -440,33 +440,33 @@ namespace Rates k_Ni58_to_p_Co57_derived = 144, k_Ni58_to_He4_Fe54_derived = 145, k_Cu59_to_p_Ni58_derived = 146, - k_p_Mn55_to_n_Fe55_derived = 147, - k_He4_Fe53_to_n_Ni56_derived = 148, - k_p_Fe54_to_He4_Mn51_derived = 149, - k_He4_Fe54_to_n_Ni57_derived = 150, - k_He4_Fe54_to_p_Co57_derived = 151, - k_p_Fe55_to_n_Co55_derived = 152, - k_He4_Fe55_to_n_Ni58_derived = 153, - k_p_Fe56_to_n_Co56_derived = 154, - k_p_Co56_to_n_Ni56_derived = 155, - k_p_Co56_to_He4_Fe53_derived = 156, - k_He4_Co56_to_n_Cu59_derived = 157, - k_p_Co57_to_n_Ni57_derived = 158, - k_He4_Ni57_to_n_Zn60_derived = 159, - k_p_Ni58_to_He4_Co55_derived = 160, - k_He4_S32_to_p_Cl35_derived = 161, + k_Mn55_p_to_n_Fe55_derived = 147, + k_Fe53_He4_to_n_Ni56_derived = 148, + k_Fe54_p_to_He4_Mn51_derived = 149, + k_Fe54_He4_to_n_Ni57_derived = 150, + k_Fe54_He4_to_p_Co57_derived = 151, + k_Fe55_p_to_n_Co55_derived = 152, + k_Fe55_He4_to_n_Ni58_derived = 153, + k_Fe56_p_to_n_Co56_derived = 154, + k_Co56_p_to_n_Ni56_derived = 155, + k_Co56_p_to_He4_Fe53_derived = 156, + k_Co56_He4_to_n_Cu59_derived = 157, + k_Co57_p_to_n_Ni57_derived = 158, + k_Ni57_He4_to_n_Zn60_derived = 159, + k_Ni58_p_to_He4_Co55_derived = 160, + k_S32_He4_to_p_Cl35_derived = 161, k_Ar36_to_He4_S32_derived = 162, k_Ar36_to_p_Cl35_derived = 163, - k_He4_Ar36_to_p_K39_derived = 164, + k_Ar36_He4_to_p_K39_derived = 164, k_Ca40_to_He4_Ar36_derived = 165, k_Ca40_to_p_K39_derived = 166, - k_He4_Ca40_to_p_Sc43_derived = 167, + k_Ca40_He4_to_p_Sc43_derived = 167, k_Ti44_to_He4_Ca40_derived = 168, k_Ti44_to_p_Sc43_derived = 169, - k_Cr48_to_He4_Ti44_derived = 170, - k_Cr48_to_p_V47_derived = 171, - k_p_V47_to_He4_Ti44_derived = 172, - NumRates = k_p_V47_to_He4_Ti44_derived + k_V47_p_to_He4_Ti44_derived = 170, + k_Cr48_to_He4_Ti44_derived = 171, + k_Cr48_to_p_V47_derived = 172, + NumRates = k_Cr48_to_p_V47_derived }; enum ScreenPairs : @@ -526,97 +526,97 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "p_C12_to_N13_reaclib", // 1, - "He4_C12_to_O16_reaclib", // 2, - "He4_O16_to_Ne20_reaclib", // 3, - "He4_Ne20_to_Mg24_reaclib", // 4, - "p_Na23_to_Mg24_reaclib", // 5, - "He4_Mg24_to_Si28_reaclib", // 6, - "p_Al27_to_Si28_reaclib", // 7, - "He4_Si28_to_S32_reaclib", // 8, - "p_P31_to_S32_reaclib", // 9, - "He4_Cr48_to_Fe52_reaclib", // 10, - "p_Mn51_to_Fe52_reaclib", // 11, - "He4_Mn51_to_Co55_reaclib", // 12, - "He4_Fe52_to_Ni56_reaclib", // 13, - "p_Co55_to_Ni56_reaclib", // 14, - "He4_Co55_to_Cu59_reaclib", // 15, - "He4_Ni56_to_Zn60_reaclib", // 16, - "p_Cu59_to_Zn60_reaclib", // 17, + "C12_p_to_N13_reaclib", // 1, + "C12_He4_to_O16_reaclib", // 2, + "O16_He4_to_Ne20_reaclib", // 3, + "Ne20_He4_to_Mg24_reaclib", // 4, + "Na23_p_to_Mg24_reaclib", // 5, + "Mg24_He4_to_Si28_reaclib", // 6, + "Al27_p_to_Si28_reaclib", // 7, + "Si28_He4_to_S32_reaclib", // 8, + "P31_p_to_S32_reaclib", // 9, + "Cr48_He4_to_Fe52_reaclib", // 10, + "Mn51_p_to_Fe52_reaclib", // 11, + "Mn51_He4_to_Co55_reaclib", // 12, + "Fe52_He4_to_Ni56_reaclib", // 13, + "Co55_p_to_Ni56_reaclib", // 14, + "Co55_He4_to_Cu59_reaclib", // 15, + "Ni56_He4_to_Zn60_reaclib", // 16, + "Cu59_p_to_Zn60_reaclib", // 17, "C12_C12_to_p_Na23_reaclib", // 18, "C12_C12_to_He4_Ne20_reaclib", // 19, - "He4_N13_to_p_O16_reaclib", // 20, - "C12_O16_to_p_Al27_reaclib", // 21, - "C12_O16_to_He4_Mg24_reaclib", // 22, + "N13_He4_to_p_O16_reaclib", // 20, + "O16_C12_to_p_Al27_reaclib", // 21, + "O16_C12_to_He4_Mg24_reaclib", // 22, "O16_O16_to_p_P31_reaclib", // 23, "O16_O16_to_He4_Si28_reaclib", // 24, - "p_Na23_to_He4_Ne20_reaclib", // 25, - "p_Al27_to_He4_Mg24_reaclib", // 26, - "p_P31_to_He4_Si28_reaclib", // 27, - "He4_Cr48_to_p_Mn51_reaclib", // 28, - "He4_Fe52_to_p_Co55_reaclib", // 29, - "p_Cu59_to_He4_Ni56_reaclib", // 30, + "Na23_p_to_He4_Ne20_reaclib", // 25, + "Al27_p_to_He4_Mg24_reaclib", // 26, + "P31_p_to_He4_Si28_reaclib", // 27, + "Cr48_He4_to_p_Mn51_reaclib", // 28, + "Fe52_He4_to_p_Co55_reaclib", // 29, + "Cu59_p_to_He4_Ni56_reaclib", // 30, "He4_He4_He4_to_C12_reaclib", // 31, - "He4_N14_to_F18_reaclib", // 32, - "p_O16_to_F17_reaclib", // 33, + "N14_He4_to_F18_reaclib", // 32, + "O16_p_to_F17_reaclib", // 33, "C12_C12_to_n_Mg23_reaclib", // 34, "O16_O16_to_n_S31_reaclib", // 35, - "C12_O16_to_n_Si27_reaclib", // 36, - "p_Mn55_to_Fe56_reaclib", // 37, - "n_Fe52_to_Fe53_reaclib", // 38, - "n_Fe53_to_Fe54_reaclib", // 39, - "He4_Fe53_to_Ni57_reaclib", // 40, - "n_Fe54_to_Fe55_reaclib", // 41, - "p_Fe54_to_Co55_reaclib", // 42, - "He4_Fe54_to_Ni58_reaclib", // 43, - "n_Fe55_to_Fe56_reaclib", // 44, - "p_Fe55_to_Co56_reaclib", // 45, - "p_Fe56_to_Co57_reaclib", // 46, - "n_Co55_to_Co56_reaclib", // 47, - "n_Co56_to_Co57_reaclib", // 48, - "p_Co56_to_Ni57_reaclib", // 49, - "p_Co57_to_Ni58_reaclib", // 50, - "n_Ni56_to_Ni57_reaclib", // 51, - "n_Ni57_to_Ni58_reaclib", // 52, - "p_Ni58_to_Cu59_reaclib", // 53, - "He4_Mn51_to_p_Fe54_reaclib", // 54, - "He4_Fe53_to_p_Co56_reaclib", // 55, - "n_Fe55_to_p_Mn55_reaclib", // 56, - "n_Co55_to_p_Fe55_reaclib", // 57, - "He4_Co55_to_p_Ni58_reaclib", // 58, - "n_Co56_to_p_Fe56_reaclib", // 59, - "p_Co57_to_He4_Fe54_reaclib", // 60, - "n_Ni56_to_p_Co56_reaclib", // 61, - "n_Ni56_to_He4_Fe53_reaclib", // 62, - "n_Ni57_to_p_Co57_reaclib", // 63, - "n_Ni57_to_He4_Fe54_reaclib", // 64, - "n_Ni58_to_He4_Fe55_reaclib", // 65, - "n_Cu59_to_He4_Co56_reaclib", // 66, - "n_Zn60_to_He4_Ni57_reaclib", // 67, - "He4_S32_to_Ar36_reaclib", // 68, - "p_Cl35_to_Ar36_reaclib", // 69, - "p_Cl35_to_He4_S32_reaclib", // 70, - "He4_Ar36_to_Ca40_reaclib", // 71, - "p_K39_to_Ca40_reaclib", // 72, - "p_K39_to_He4_Ar36_reaclib", // 73, - "He4_Ca40_to_Ti44_reaclib", // 74, - "p_Sc43_to_Ti44_reaclib", // 75, - "p_Sc43_to_He4_Ca40_reaclib", // 76, - "He4_Ti44_to_Cr48_reaclib", // 77, - "He4_Ti44_to_p_V47_reaclib", // 78, - "p_V47_to_Cr48_reaclib", // 79, - "Co55_to_Fe55_weaktab", // 80, - "Fe55_to_Co55_weaktab", // 81, - "Fe55_to_Mn55_weaktab", // 82, - "Mn55_to_Fe55_weaktab", // 83, - "Co56_to_Fe56_weaktab", // 84, - "Co56_to_Ni56_weaktab", // 85, - "Fe56_to_Co56_weaktab", // 86, - "Ni56_to_Co56_weaktab", // 87, - "Co57_to_Ni57_weaktab", // 88, - "Ni57_to_Co57_weaktab", // 89, - "n_to_p_weaktab", // 90, - "p_to_n_weaktab", // 91, + "O16_C12_to_n_Si27_reaclib", // 36, + "Mn55_p_to_Fe56_reaclib", // 37, + "Fe52_n_to_Fe53_reaclib", // 38, + "Fe53_n_to_Fe54_reaclib", // 39, + "Fe53_He4_to_Ni57_reaclib", // 40, + "Fe54_n_to_Fe55_reaclib", // 41, + "Fe54_p_to_Co55_reaclib", // 42, + "Fe54_He4_to_Ni58_reaclib", // 43, + "Fe55_n_to_Fe56_reaclib", // 44, + "Fe55_p_to_Co56_reaclib", // 45, + "Fe56_p_to_Co57_reaclib", // 46, + "Co55_n_to_Co56_reaclib", // 47, + "Co56_n_to_Co57_reaclib", // 48, + "Co56_p_to_Ni57_reaclib", // 49, + "Co57_p_to_Ni58_reaclib", // 50, + "Ni56_n_to_Ni57_reaclib", // 51, + "Ni57_n_to_Ni58_reaclib", // 52, + "Ni58_p_to_Cu59_reaclib", // 53, + "Mn51_He4_to_p_Fe54_reaclib", // 54, + "Fe53_He4_to_p_Co56_reaclib", // 55, + "Fe55_n_to_p_Mn55_reaclib", // 56, + "Co55_n_to_p_Fe55_reaclib", // 57, + "Co55_He4_to_p_Ni58_reaclib", // 58, + "Co56_n_to_p_Fe56_reaclib", // 59, + "Co57_p_to_He4_Fe54_reaclib", // 60, + "Ni56_n_to_p_Co56_reaclib", // 61, + "Ni56_n_to_He4_Fe53_reaclib", // 62, + "Ni57_n_to_p_Co57_reaclib", // 63, + "Ni57_n_to_He4_Fe54_reaclib", // 64, + "Ni58_n_to_He4_Fe55_reaclib", // 65, + "Cu59_n_to_He4_Co56_reaclib", // 66, + "Zn60_n_to_He4_Ni57_reaclib", // 67, + "S32_He4_to_Ar36_reaclib", // 68, + "Cl35_p_to_He4_S32_reaclib", // 69, + "Cl35_p_to_Ar36_reaclib", // 70, + "Ar36_He4_to_Ca40_reaclib", // 71, + "K39_p_to_He4_Ar36_reaclib", // 72, + "K39_p_to_Ca40_reaclib", // 73, + "Ca40_He4_to_Ti44_reaclib", // 74, + "Sc43_p_to_He4_Ca40_reaclib", // 75, + "Sc43_p_to_Ti44_reaclib", // 76, + "Ti44_He4_to_p_V47_reaclib", // 77, + "Ti44_He4_to_Cr48_reaclib", // 78, + "V47_p_to_Cr48_reaclib", // 79, + "Co55_to_Fe55_electron_capture_weaktab", // 80, + "Fe55_to_Co55_beta_neg_weaktab", // 81, + "Fe55_to_Mn55_electron_capture_weaktab", // 82, + "Mn55_to_Fe55_beta_neg_weaktab", // 83, + "Co56_to_Fe56_electron_capture_weaktab", // 84, + "Co56_to_Ni56_beta_neg_weaktab", // 85, + "Fe56_to_Co56_beta_neg_weaktab", // 86, + "Ni56_to_Co56_electron_capture_weaktab", // 87, + "Co57_to_Ni57_beta_neg_weaktab", // 88, + "Ni57_to_Co57_electron_capture_weaktab", // 89, + "n_to_p_beta_neg_weaktab", // 90, + "p_to_n_electron_capture_weaktab", // 91, "S32_He4_to_Ar36_approx", // 92, "Ar36_to_S32_He4_approx", // 93, "Ar36_He4_to_Ca40_approx", // 94, @@ -625,11 +625,11 @@ namespace Rates "Ti44_to_Ca40_He4_approx", // 97, "Ti44_He4_to_Cr48_approx", // 98, "Cr48_to_Ti44_He4_approx", // 99, - "He4_N14_to_Ne20_modified", // 100, - "p_O16_to_N14_He4_modified", // 101, + "N14_1p5He4_to_Ne20_modified", // 100, + "O16_p_p_to_N14_He4_beta_pos_modified", // 101, "C12_C12_to_Mg24_modified", // 102, "O16_O16_to_S32_modified", // 103, - "C12_O16_to_Si28_modified", // 104, + "O16_C12_to_Si28_modified", // 104, "N13_to_p_C12_derived", // 105, "O16_to_He4_C12_derived", // 106, "Ne20_to_He4_O16_derived", // 107, @@ -647,14 +647,14 @@ namespace Rates "Cu59_to_He4_Co55_derived", // 119, "Zn60_to_p_Cu59_derived", // 120, "Zn60_to_He4_Ni56_derived", // 121, - "C12_to_He4_He4_He4_derived", // 122, - "p_O16_to_He4_N13_derived", // 123, - "He4_Ne20_to_p_Na23_derived", // 124, - "He4_Mg24_to_p_Al27_derived", // 125, - "He4_Si28_to_p_P31_derived", // 126, - "p_Mn51_to_He4_Cr48_derived", // 127, - "p_Co55_to_He4_Fe52_derived", // 128, - "He4_Ni56_to_p_Cu59_derived", // 129, + "C12_to_3He4_derived", // 122, + "O16_p_to_He4_N13_derived", // 123, + "Ne20_He4_to_p_Na23_derived", // 124, + "Mg24_He4_to_p_Al27_derived", // 125, + "Si28_He4_to_p_P31_derived", // 126, + "Mn51_p_to_He4_Cr48_derived", // 127, + "Co55_p_to_He4_Fe52_derived", // 128, + "Ni56_He4_to_p_Cu59_derived", // 129, "Fe53_to_n_Fe52_derived", // 130, "Fe54_to_n_Fe53_derived", // 131, "Fe55_to_n_Fe54_derived", // 132, @@ -672,32 +672,32 @@ namespace Rates "Ni58_to_p_Co57_derived", // 144, "Ni58_to_He4_Fe54_derived", // 145, "Cu59_to_p_Ni58_derived", // 146, - "p_Mn55_to_n_Fe55_derived", // 147, - "He4_Fe53_to_n_Ni56_derived", // 148, - "p_Fe54_to_He4_Mn51_derived", // 149, - "He4_Fe54_to_n_Ni57_derived", // 150, - "He4_Fe54_to_p_Co57_derived", // 151, - "p_Fe55_to_n_Co55_derived", // 152, - "He4_Fe55_to_n_Ni58_derived", // 153, - "p_Fe56_to_n_Co56_derived", // 154, - "p_Co56_to_n_Ni56_derived", // 155, - "p_Co56_to_He4_Fe53_derived", // 156, - "He4_Co56_to_n_Cu59_derived", // 157, - "p_Co57_to_n_Ni57_derived", // 158, - "He4_Ni57_to_n_Zn60_derived", // 159, - "p_Ni58_to_He4_Co55_derived", // 160, - "He4_S32_to_p_Cl35_derived", // 161, + "Mn55_p_to_n_Fe55_derived", // 147, + "Fe53_He4_to_n_Ni56_derived", // 148, + "Fe54_p_to_He4_Mn51_derived", // 149, + "Fe54_He4_to_n_Ni57_derived", // 150, + "Fe54_He4_to_p_Co57_derived", // 151, + "Fe55_p_to_n_Co55_derived", // 152, + "Fe55_He4_to_n_Ni58_derived", // 153, + "Fe56_p_to_n_Co56_derived", // 154, + "Co56_p_to_n_Ni56_derived", // 155, + "Co56_p_to_He4_Fe53_derived", // 156, + "Co56_He4_to_n_Cu59_derived", // 157, + "Co57_p_to_n_Ni57_derived", // 158, + "Ni57_He4_to_n_Zn60_derived", // 159, + "Ni58_p_to_He4_Co55_derived", // 160, + "S32_He4_to_p_Cl35_derived", // 161, "Ar36_to_He4_S32_derived", // 162, "Ar36_to_p_Cl35_derived", // 163, - "He4_Ar36_to_p_K39_derived", // 164, + "Ar36_He4_to_p_K39_derived", // 164, "Ca40_to_He4_Ar36_derived", // 165, "Ca40_to_p_K39_derived", // 166, - "He4_Ca40_to_p_Sc43_derived", // 167, + "Ca40_He4_to_p_Sc43_derived", // 167, "Ti44_to_He4_Ca40_derived", // 168, "Ti44_to_p_Sc43_derived", // 169, - "Cr48_to_He4_Ti44_derived", // 170, - "Cr48_to_p_V47_derived", // 171, - "p_V47_to_He4_Ti44_derived" // 172, + "V47_p_to_He4_Ti44_derived", // 170, + "Cr48_to_He4_Ti44_derived", // 171, + "Cr48_to_p_V47_derived" // 172, }; template @@ -730,62 +730,62 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 60; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_derived, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_derived, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_derived, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_derived, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_derived, - He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_He4_Cr48_to_Fe52_reaclib, k_Fe52_to_He4_Cr48_derived, - H1, Mn51, -1, Fe52, -1, -1, Mn51, Fe52, k_p_Mn51_to_Fe52_reaclib, k_Fe52_to_p_Mn51_derived, - He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_He4_Mn51_to_Co55_reaclib, k_Co55_to_He4_Mn51_derived, - He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_He4_Fe52_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_derived, - H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_p_Co55_to_Ni56_reaclib, k_Ni56_to_p_Co55_derived, - He4, Co55, -1, Cu59, -1, -1, Co55, Cu59, k_He4_Co55_to_Cu59_reaclib, k_Cu59_to_He4_Co55_derived, - He4, Ni56, -1, Zn60, -1, -1, Ni56, Zn60, k_He4_Ni56_to_Zn60_reaclib, k_Zn60_to_He4_Ni56_derived, - H1, Cu59, -1, Zn60, -1, -1, Cu59, Zn60, k_p_Cu59_to_Zn60_reaclib, k_Zn60_to_p_Cu59_derived, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_derived, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_derived, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_derived, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_derived, - He4, Cr48, -1, H1, Mn51, -1, Cr48, Mn51, k_He4_Cr48_to_p_Mn51_reaclib, k_p_Mn51_to_He4_Cr48_derived, - He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_He4_Fe52_to_p_Co55_reaclib, k_p_Co55_to_He4_Fe52_derived, - H1, Cu59, -1, He4, Ni56, -1, Cu59, Ni56, k_p_Cu59_to_He4_Ni56_reaclib, k_He4_Ni56_to_p_Cu59_derived, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_derived, - H1, Mn55, -1, Fe56, -1, -1, Mn55, Fe56, k_p_Mn55_to_Fe56_reaclib, k_Fe56_to_p_Mn55_derived, - N, Fe52, -1, Fe53, -1, -1, Fe52, Fe53, k_n_Fe52_to_Fe53_reaclib, k_Fe53_to_n_Fe52_derived, - N, Fe53, -1, Fe54, -1, -1, Fe53, Fe54, k_n_Fe53_to_Fe54_reaclib, k_Fe54_to_n_Fe53_derived, - He4, Fe53, -1, Ni57, -1, -1, Fe53, Ni57, k_He4_Fe53_to_Ni57_reaclib, k_Ni57_to_He4_Fe53_derived, - N, Fe54, -1, Fe55, -1, -1, Fe54, Fe55, k_n_Fe54_to_Fe55_reaclib, k_Fe55_to_n_Fe54_derived, - H1, Fe54, -1, Co55, -1, -1, Fe54, Co55, k_p_Fe54_to_Co55_reaclib, k_Co55_to_p_Fe54_derived, - He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_He4_Fe54_to_Ni58_reaclib, k_Ni58_to_He4_Fe54_derived, - N, Fe55, -1, Fe56, -1, -1, Fe55, Fe56, k_n_Fe55_to_Fe56_reaclib, k_Fe56_to_n_Fe55_derived, - H1, Fe55, -1, Co56, -1, -1, Fe55, Co56, k_p_Fe55_to_Co56_reaclib, k_Co56_to_p_Fe55_derived, - H1, Fe56, -1, Co57, -1, -1, Fe56, Co57, k_p_Fe56_to_Co57_reaclib, k_Co57_to_p_Fe56_derived, - N, Co55, -1, Co56, -1, -1, Co55, Co56, k_n_Co55_to_Co56_reaclib, k_Co56_to_n_Co55_derived, - N, Co56, -1, Co57, -1, -1, Co56, Co57, k_n_Co56_to_Co57_reaclib, k_Co57_to_n_Co56_derived, - H1, Co56, -1, Ni57, -1, -1, Co56, Ni57, k_p_Co56_to_Ni57_reaclib, k_Ni57_to_p_Co56_derived, - H1, Co57, -1, Ni58, -1, -1, Co57, Ni58, k_p_Co57_to_Ni58_reaclib, k_Ni58_to_p_Co57_derived, - N, Ni56, -1, Ni57, -1, -1, Ni56, Ni57, k_n_Ni56_to_Ni57_reaclib, k_Ni57_to_n_Ni56_derived, - N, Ni57, -1, Ni58, -1, -1, Ni57, Ni58, k_n_Ni57_to_Ni58_reaclib, k_Ni58_to_n_Ni57_derived, - H1, Ni58, -1, Cu59, -1, -1, Ni58, Cu59, k_p_Ni58_to_Cu59_reaclib, k_Cu59_to_p_Ni58_derived, - He4, Mn51, -1, H1, Fe54, -1, Mn51, Fe54, k_He4_Mn51_to_p_Fe54_reaclib, k_p_Fe54_to_He4_Mn51_derived, - He4, Fe53, -1, H1, Co56, -1, Fe53, Co56, k_He4_Fe53_to_p_Co56_reaclib, k_p_Co56_to_He4_Fe53_derived, - N, Fe55, -1, H1, Mn55, -1, Fe55, Mn55, k_n_Fe55_to_p_Mn55_reaclib, k_p_Mn55_to_n_Fe55_derived, - N, Co55, -1, H1, Fe55, -1, Co55, Fe55, k_n_Co55_to_p_Fe55_reaclib, k_p_Fe55_to_n_Co55_derived, - He4, Co55, -1, H1, Ni58, -1, Co55, Ni58, k_He4_Co55_to_p_Ni58_reaclib, k_p_Ni58_to_He4_Co55_derived, - N, Co56, -1, H1, Fe56, -1, Co56, Fe56, k_n_Co56_to_p_Fe56_reaclib, k_p_Fe56_to_n_Co56_derived, - H1, Co57, -1, He4, Fe54, -1, Co57, Fe54, k_p_Co57_to_He4_Fe54_reaclib, k_He4_Fe54_to_p_Co57_derived, - N, Ni56, -1, H1, Co56, -1, Ni56, Co56, k_n_Ni56_to_p_Co56_reaclib, k_p_Co56_to_n_Ni56_derived, - N, Ni56, -1, He4, Fe53, -1, Ni56, Fe53, k_n_Ni56_to_He4_Fe53_reaclib, k_He4_Fe53_to_n_Ni56_derived, - N, Ni57, -1, H1, Co57, -1, Ni57, Co57, k_n_Ni57_to_p_Co57_reaclib, k_p_Co57_to_n_Ni57_derived, - N, Ni57, -1, He4, Fe54, -1, Ni57, Fe54, k_n_Ni57_to_He4_Fe54_reaclib, k_He4_Fe54_to_n_Ni57_derived, - N, Ni58, -1, He4, Fe55, -1, Ni58, Fe55, k_n_Ni58_to_He4_Fe55_reaclib, k_He4_Fe55_to_n_Ni58_derived, - N, Cu59, -1, He4, Co56, -1, Cu59, Co56, k_n_Cu59_to_He4_Co56_reaclib, k_He4_Co56_to_n_Cu59_derived, - N, Zn60, -1, He4, Ni57, -1, Zn60, Ni57, k_n_Zn60_to_He4_Ni57_reaclib, k_He4_Ni57_to_n_Zn60_derived, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_derived, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_derived, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_derived, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_derived, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_derived, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_derived, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_derived, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_derived, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_derived, + He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_Cr48_He4_to_Fe52_reaclib, k_Fe52_to_He4_Cr48_derived, + H1, Mn51, -1, Fe52, -1, -1, Mn51, Fe52, k_Mn51_p_to_Fe52_reaclib, k_Fe52_to_p_Mn51_derived, + He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_Mn51_He4_to_Co55_reaclib, k_Co55_to_He4_Mn51_derived, + He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_Fe52_He4_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_derived, + H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_Co55_p_to_Ni56_reaclib, k_Ni56_to_p_Co55_derived, + He4, Co55, -1, Cu59, -1, -1, Co55, Cu59, k_Co55_He4_to_Cu59_reaclib, k_Cu59_to_He4_Co55_derived, + He4, Ni56, -1, Zn60, -1, -1, Ni56, Zn60, k_Ni56_He4_to_Zn60_reaclib, k_Zn60_to_He4_Ni56_derived, + H1, Cu59, -1, Zn60, -1, -1, Cu59, Zn60, k_Cu59_p_to_Zn60_reaclib, k_Zn60_to_p_Cu59_derived, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_derived, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_derived, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_derived, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_derived, + He4, Cr48, -1, H1, Mn51, -1, Cr48, Mn51, k_Cr48_He4_to_p_Mn51_reaclib, k_Mn51_p_to_He4_Cr48_derived, + He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_Fe52_He4_to_p_Co55_reaclib, k_Co55_p_to_He4_Fe52_derived, + H1, Cu59, -1, He4, Ni56, -1, Cu59, Ni56, k_Cu59_p_to_He4_Ni56_reaclib, k_Ni56_He4_to_p_Cu59_derived, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_derived, + H1, Mn55, -1, Fe56, -1, -1, Mn55, Fe56, k_Mn55_p_to_Fe56_reaclib, k_Fe56_to_p_Mn55_derived, + N, Fe52, -1, Fe53, -1, -1, Fe52, Fe53, k_Fe52_n_to_Fe53_reaclib, k_Fe53_to_n_Fe52_derived, + N, Fe53, -1, Fe54, -1, -1, Fe53, Fe54, k_Fe53_n_to_Fe54_reaclib, k_Fe54_to_n_Fe53_derived, + He4, Fe53, -1, Ni57, -1, -1, Fe53, Ni57, k_Fe53_He4_to_Ni57_reaclib, k_Ni57_to_He4_Fe53_derived, + N, Fe54, -1, Fe55, -1, -1, Fe54, Fe55, k_Fe54_n_to_Fe55_reaclib, k_Fe55_to_n_Fe54_derived, + H1, Fe54, -1, Co55, -1, -1, Fe54, Co55, k_Fe54_p_to_Co55_reaclib, k_Co55_to_p_Fe54_derived, + He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_Fe54_He4_to_Ni58_reaclib, k_Ni58_to_He4_Fe54_derived, + N, Fe55, -1, Fe56, -1, -1, Fe55, Fe56, k_Fe55_n_to_Fe56_reaclib, k_Fe56_to_n_Fe55_derived, + H1, Fe55, -1, Co56, -1, -1, Fe55, Co56, k_Fe55_p_to_Co56_reaclib, k_Co56_to_p_Fe55_derived, + H1, Fe56, -1, Co57, -1, -1, Fe56, Co57, k_Fe56_p_to_Co57_reaclib, k_Co57_to_p_Fe56_derived, + N, Co55, -1, Co56, -1, -1, Co55, Co56, k_Co55_n_to_Co56_reaclib, k_Co56_to_n_Co55_derived, + N, Co56, -1, Co57, -1, -1, Co56, Co57, k_Co56_n_to_Co57_reaclib, k_Co57_to_n_Co56_derived, + H1, Co56, -1, Ni57, -1, -1, Co56, Ni57, k_Co56_p_to_Ni57_reaclib, k_Ni57_to_p_Co56_derived, + H1, Co57, -1, Ni58, -1, -1, Co57, Ni58, k_Co57_p_to_Ni58_reaclib, k_Ni58_to_p_Co57_derived, + N, Ni56, -1, Ni57, -1, -1, Ni56, Ni57, k_Ni56_n_to_Ni57_reaclib, k_Ni57_to_n_Ni56_derived, + N, Ni57, -1, Ni58, -1, -1, Ni57, Ni58, k_Ni57_n_to_Ni58_reaclib, k_Ni58_to_n_Ni57_derived, + H1, Ni58, -1, Cu59, -1, -1, Ni58, Cu59, k_Ni58_p_to_Cu59_reaclib, k_Cu59_to_p_Ni58_derived, + He4, Mn51, -1, H1, Fe54, -1, Mn51, Fe54, k_Mn51_He4_to_p_Fe54_reaclib, k_Fe54_p_to_He4_Mn51_derived, + He4, Fe53, -1, H1, Co56, -1, Fe53, Co56, k_Fe53_He4_to_p_Co56_reaclib, k_Co56_p_to_He4_Fe53_derived, + N, Fe55, -1, H1, Mn55, -1, Fe55, Mn55, k_Fe55_n_to_p_Mn55_reaclib, k_Mn55_p_to_n_Fe55_derived, + N, Co55, -1, H1, Fe55, -1, Co55, Fe55, k_Co55_n_to_p_Fe55_reaclib, k_Fe55_p_to_n_Co55_derived, + He4, Co55, -1, H1, Ni58, -1, Co55, Ni58, k_Co55_He4_to_p_Ni58_reaclib, k_Ni58_p_to_He4_Co55_derived, + N, Co56, -1, H1, Fe56, -1, Co56, Fe56, k_Co56_n_to_p_Fe56_reaclib, k_Fe56_p_to_n_Co56_derived, + H1, Co57, -1, He4, Fe54, -1, Co57, Fe54, k_Co57_p_to_He4_Fe54_reaclib, k_Fe54_He4_to_p_Co57_derived, + N, Ni56, -1, H1, Co56, -1, Ni56, Co56, k_Ni56_n_to_p_Co56_reaclib, k_Co56_p_to_n_Ni56_derived, + N, Ni56, -1, He4, Fe53, -1, Ni56, Fe53, k_Ni56_n_to_He4_Fe53_reaclib, k_Fe53_He4_to_n_Ni56_derived, + N, Ni57, -1, H1, Co57, -1, Ni57, Co57, k_Ni57_n_to_p_Co57_reaclib, k_Co57_p_to_n_Ni57_derived, + N, Ni57, -1, He4, Fe54, -1, Ni57, Fe54, k_Ni57_n_to_He4_Fe54_reaclib, k_Fe54_He4_to_n_Ni57_derived, + N, Ni58, -1, He4, Fe55, -1, Ni58, Fe55, k_Ni58_n_to_He4_Fe55_reaclib, k_Fe55_He4_to_n_Ni58_derived, + N, Cu59, -1, He4, Co56, -1, Cu59, Co56, k_Cu59_n_to_He4_Co56_reaclib, k_Co56_He4_to_n_Cu59_derived, + N, Zn60, -1, He4, Ni57, -1, Zn60, Ni57, k_Zn60_n_to_He4_Ni57_reaclib, k_Ni57_He4_to_n_Zn60_derived, S32, He4, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_approx, k_Ar36_to_S32_He4_approx, Ar36, He4, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_approx, k_Ca40_to_Ar36_He4_approx, Ca40, He4, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_approx, k_Ti44_to_Ca40_He4_approx, diff --git a/networks/he-burn/he-burn-33am/actual_rhs.H b/networks/he-burn/he-burn-33am/actual_rhs.H index bbff4072b..40a19ac33 100644 --- a/networks/he-burn/he-burn-33am/actual_rhs.H +++ b/networks/he-burn/he-burn-33am/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -532,9 +529,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -546,7 +545,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -554,123 +555,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Co55_Fe55_meta, j_Co55_Fe55_rhoy, j_Co55_Fe55_temp, j_Co55_Fe55_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co55_to_Fe55_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_Fe55_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe55_Co55_meta, j_Fe55_Co55_rhoy, j_Fe55_Co55_temp, j_Fe55_Co55_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe55_to_Co55_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_Co55_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe55_Mn55_meta, j_Fe55_Mn55_rhoy, j_Fe55_Mn55_temp, j_Fe55_Mn55_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe55_to_Mn55_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_Mn55_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn55_Fe55_meta, j_Mn55_Fe55_rhoy, j_Mn55_Fe55_temp, j_Mn55_Fe55_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn55_to_Fe55_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn55_to_Fe55_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co57_Ni57_meta, j_Co57_Ni57_rhoy, j_Co57_Ni57_temp, j_Co57_Ni57_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co57_to_Ni57_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_Ni57_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni57_Co57_meta, j_Ni57_Co57_rhoy, j_Ni57_Co57_temp, j_Ni57_Co57_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni57_to_Co57_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_Co57_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_to_p_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_to_n_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -740,102 +638,40 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // p_O16_to_N14_He4_modified + // O16_p_p_to_N14_He4_beta_pos_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_O16); #endif - rate_p_O16_to_N14_He4_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_N14_He4_modified) = rate; + modified_rates::rate_O16_p_p_to_N14_He4_beta_pos_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified) = rate; } - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Co55_Fe55_meta, j_Co55_Fe55_rhoy, j_Co55_Fe55_temp, j_Co55_Fe55_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co55_to_Fe55_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe55_Co55_meta, j_Fe55_Co55_rhoy, j_Fe55_Co55_temp, j_Fe55_Co55_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe55_to_Co55_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe55_Mn55_meta, j_Fe55_Mn55_rhoy, j_Fe55_Mn55_temp, j_Fe55_Mn55_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe55_to_Mn55_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn55_Fe55_meta, j_Mn55_Fe55_rhoy, j_Mn55_Fe55_temp, j_Mn55_Fe55_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn55_to_Fe55_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co57_Ni57_meta, j_Co57_Ni57_rhoy, j_Co57_Ni57_temp, j_Co57_Ni57_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co57_to_Ni57_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni57_Co57_meta, j_Ni57_Co57_rhoy, j_Ni57_Co57_temp, j_Ni57_Co57_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni57_to_Co57_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(N) = - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - -2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + -2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(C12) = 0.0_rt; ydot_nuc(N13) = 0.0_rt; ydot_nuc(N14) = - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(O16) = - -screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(Ne20) = 0.0_rt; @@ -862,7 +698,7 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(Mn51) = 0.0_rt; ydot_nuc(Mn55) = - (screened_rates(k_Fe55_to_Mn55_weaktab)*Y(Fe55) + -screened_rates(k_Mn55_to_Fe55_weaktab)*Y(Mn55)); + (screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab)*Y(Fe55) + -screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab)*Y(Mn55)); ydot_nuc(Fe52) = 0.0_rt; @@ -871,27 +707,27 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(Fe54) = 0.0_rt; ydot_nuc(Fe55) = - (screened_rates(k_Co55_to_Fe55_weaktab)*Y(Co55) + -screened_rates(k_Fe55_to_Co55_weaktab)*Y(Fe55)) + - (-screened_rates(k_Fe55_to_Mn55_weaktab)*Y(Fe55) + screened_rates(k_Mn55_to_Fe55_weaktab)*Y(Mn55)); + (screened_rates(k_Co55_to_Fe55_electron_capture_weaktab)*Y(Co55) + -screened_rates(k_Fe55_to_Co55_beta_neg_weaktab)*Y(Fe55)) + + (-screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab)*Y(Fe55) + screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab)*Y(Mn55)); ydot_nuc(Fe56) = - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Co55) = - (-screened_rates(k_Co55_to_Fe55_weaktab)*Y(Co55) + screened_rates(k_Fe55_to_Co55_weaktab)*Y(Fe55)); + (-screened_rates(k_Co55_to_Fe55_electron_capture_weaktab)*Y(Co55) + screened_rates(k_Fe55_to_Co55_beta_neg_weaktab)*Y(Fe55)); ydot_nuc(Co56) = - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = - (screened_rates(k_Ni57_to_Co57_weaktab)*Y(Ni57) + -screened_rates(k_Co57_to_Ni57_weaktab)*Y(Co57)); + (screened_rates(k_Ni57_to_Co57_electron_capture_weaktab)*Y(Ni57) + -screened_rates(k_Co57_to_Ni57_beta_neg_weaktab)*Y(Co57)); ydot_nuc(Ni56) = - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni57) = - (-screened_rates(k_Ni57_to_Co57_weaktab)*Y(Ni57) + screened_rates(k_Co57_to_Ni57_weaktab)*Y(Co57)); + (-screened_rates(k_Ni57_to_Co57_electron_capture_weaktab)*Y(Ni57) + screened_rates(k_Co57_to_Ni57_beta_neg_weaktab)*Y(Co57)); ydot_nuc(Ni58) = 0.0_rt; @@ -908,180 +744,180 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(N) = - (-screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_derived)*Y(Fe53)) + - (-screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_derived)*Y(Fe54)) + - (-screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Fe55_to_n_Fe54_derived)*Y(Fe55)) + - (-screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Fe56_to_n_Fe55_derived)*Y(Fe56)) + - (-screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_derived)*Y(Ni57)) + - (-screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_derived)*Y(Ni58)) + - (-screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(Mn55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(Fe55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(Fe53)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(Co57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(Fe55)*Y(He4)*state.rho) + - (-screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + - (-screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(He4)*Y(Ni57)*state.rho) + - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_derived)*Y(Fe53)) + + (-screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_derived)*Y(Fe54)) + + (-screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Fe55_to_n_Fe54_derived)*Y(Fe55)) + + (-screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Fe56_to_n_Fe55_derived)*Y(Fe56)) + + (-screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_derived)*Y(Ni57)) + + (-screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_derived)*Y(Ni58)) + + (-screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(Mn55)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(Fe55)*Y(H1)*state.rho) + + (-screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(Fe53)*Y(He4)*state.rho) + + (-screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(Co57)*Y(H1)*state.rho) + + (-screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (-screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(Fe55)*Y(He4)*state.rho) + + (-screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(He4)*Y(Ni57)*state.rho) + + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + - (-screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - -2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + - (-screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_derived)*Y(Fe56)) + - (-screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_derived)*Y(Co56)) + - (-screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (-screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_derived)*Y(Ni57)) + - (-screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + - (-screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(Mn55)*Y(H1)*state.rho) + - (screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(Fe55)*Y(H1)*state.rho) + - (screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(Co57)*Y(H1)*state.rho) + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + -2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + + (-screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_derived)*Y(Fe56)) + + (-screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_derived)*Y(Co56)) + + (-screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (-screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_derived)*Y(Ni57)) + + (-screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (-screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(Mn55)*Y(H1)*state.rho) + + (screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(Fe55)*Y(H1)*state.rho) + + (screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(Co57)*Y(H1)*state.rho) + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (-screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (-screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (-screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (-screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - (-screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + - -1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + - (-screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_derived)*Y(Ni57)) + - (-screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (-screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(Fe53)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(Fe55)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(He4)*Y(Ni57)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + (-screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_derived)*Y(C12)) + + -1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + + (-screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_derived)*Y(Ni57)) + + (-screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (-screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(Fe53)*Y(He4)*state.rho) + + (screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(Fe55)*Y(He4)*state.rho) + + (screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(He4)*Y(Ni57)*state.rho) + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)) + (-screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_Ar36_He4_approx)*Y(Ca40)) + (-screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx)*Y(Ti44)) + (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(C12) = - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + -screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_derived)*Y(C12)) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_derived)*Y(C12)) + -screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(N13) = - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_derived)*Y(N13)) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = - -screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho; + -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho; ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + - -screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_derived)*Y(O16)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*Y(H1)*state.rho) + + -screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - -screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*Y(H1)*state.rho + + -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + - -screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + -screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_derived)*Y(Ne20)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + - screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho; + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho) + + screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*Y(N14)*state.rho; ydot_nuc(Na23) = - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_derived)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_derived)*Y(Mg24)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho) + 0.5*screened_rates(k_C12_C12_to_Mg24_modified)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(Al27) = - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_derived)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_derived)*Y(Si28)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho) + + screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*Y(O16)*state.rho; ydot_nuc(P31) = - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_derived)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_derived)*Y(S32)) + 0.5*screened_rates(k_O16_O16_to_S32_modified)*amrex::Math::powi<2>(Y(O16))*state.rho + (-screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_S32_He4_approx)*Y(Ar36)); @@ -1098,131 +934,131 @@ void rhs_nuc(const burn_t& state, (-screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(Cr48) = - (-screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (-screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + (screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*Y(Ti44)*state.rho + -screened_rates(k_Cr48_to_Ti44_He4_approx)*Y(Cr48)); ydot_nuc(Mn51) = - (-screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho); + (-screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho); ydot_nuc(Mn55) = - (-screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_derived)*Y(Fe56)) + - (screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(Mn55)*Y(H1)*state.rho) + - (screened_rates(k_Fe55_to_Mn55_weaktab)*Y(Fe55) + -screened_rates(k_Mn55_to_Fe55_weaktab)*Y(Mn55)); + (-screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_derived)*Y(Fe56)) + + (screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(Mn55)*Y(H1)*state.rho) + + (screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab)*Y(Fe55) + -screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab)*Y(Mn55)); ydot_nuc(Fe52) = - (screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + - (screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_derived)*Y(Fe53)); + (screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_derived)*Y(Fe52)) + + (screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_derived)*Y(Fe52)) + + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_derived)*Y(Fe53)); ydot_nuc(Fe53) = - (screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_Fe53_to_n_Fe52_derived)*Y(Fe53)) + - (-screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_derived)*Y(Fe54)) + - (-screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_derived)*Y(Ni57)) + - (-screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(Fe53)*Y(He4)*state.rho); + (screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_Fe53_to_n_Fe52_derived)*Y(Fe53)) + + (-screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_derived)*Y(Fe54)) + + (-screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_derived)*Y(Ni57)) + + (-screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(Fe53)*Y(He4)*state.rho); ydot_nuc(Fe54) = - (screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_Fe54_to_n_Fe53_derived)*Y(Fe54)) + - (-screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Fe55_to_n_Fe54_derived)*Y(Fe55)) + - (-screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(Fe54)*Y(He4)*state.rho); + (screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_Fe54_to_n_Fe53_derived)*Y(Fe54)) + + (-screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Fe55_to_n_Fe54_derived)*Y(Fe55)) + + (-screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(Fe54)*Y(He4)*state.rho); ydot_nuc(Fe55) = - (screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_Fe55_to_n_Fe54_derived)*Y(Fe55)) + - (-screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Fe56_to_n_Fe55_derived)*Y(Fe56)) + - (-screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_derived)*Y(Co56)) + - (-screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(Mn55)*Y(H1)*state.rho) + - (screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(Fe55)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(Fe55)*Y(He4)*state.rho) + - (screened_rates(k_Co55_to_Fe55_weaktab)*Y(Co55) + -screened_rates(k_Fe55_to_Co55_weaktab)*Y(Fe55)) + - (-screened_rates(k_Fe55_to_Mn55_weaktab)*Y(Fe55) + screened_rates(k_Mn55_to_Fe55_weaktab)*Y(Mn55)); + (screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_Fe55_to_n_Fe54_derived)*Y(Fe55)) + + (-screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Fe56_to_n_Fe55_derived)*Y(Fe56)) + + (-screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_derived)*Y(Co56)) + + (-screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(Mn55)*Y(H1)*state.rho) + + (screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(Fe55)*Y(H1)*state.rho) + + (screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(Fe55)*Y(He4)*state.rho) + + (screened_rates(k_Co55_to_Fe55_electron_capture_weaktab)*Y(Co55) + -screened_rates(k_Fe55_to_Co55_beta_neg_weaktab)*Y(Fe55)) + + (-screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab)*Y(Fe55) + screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab)*Y(Mn55)); ydot_nuc(Fe56) = - (screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + -screened_rates(k_Fe56_to_p_Mn55_derived)*Y(Fe56)) + - (screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Fe56_to_n_Fe55_derived)*Y(Fe56)) + - (-screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + -screened_rates(k_Fe56_to_p_Mn55_derived)*Y(Fe56)) + + (screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Fe56_to_n_Fe55_derived)*Y(Fe56)) + + (-screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Co55) = - (screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + - (-screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + - (screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + - (-screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(Fe55)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (-screened_rates(k_Co55_to_Fe55_weaktab)*Y(Co55) + screened_rates(k_Fe55_to_Co55_weaktab)*Y(Fe55)); + (screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_derived)*Y(Co55)) + + (-screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho) + + (screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_derived)*Y(Co55)) + + (-screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(Fe55)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_to_Fe55_electron_capture_weaktab)*Y(Co55) + screened_rates(k_Fe55_to_Co55_beta_neg_weaktab)*Y(Fe55)); ydot_nuc(Co56) = - (screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + -screened_rates(k_Co56_to_p_Fe55_derived)*Y(Co56)) + - (screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_derived)*Y(Ni57)) + - (screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + -screened_rates(k_Co56_to_p_Fe55_derived)*Y(Co56)) + + (screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_derived)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_derived)*Y(Ni57)) + + (screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = - (screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + - (screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + - (-screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + - (-screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(Co57)*Y(H1)*state.rho) + - (screened_rates(k_Ni57_to_Co57_weaktab)*Y(Ni57) + -screened_rates(k_Co57_to_Ni57_weaktab)*Y(Co57)); + (screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_derived)*Y(Co57)) + + (screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_derived)*Y(Co57)) + + (-screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (-screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(Co57)*Y(H1)*state.rho) + + (screened_rates(k_Ni57_to_Co57_electron_capture_weaktab)*Y(Ni57) + -screened_rates(k_Co57_to_Ni57_beta_neg_weaktab)*Y(Co57)); ydot_nuc(Ni56) = - (screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + - (screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_derived)*Y(Ni57)) + - (-screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(Fe53)*Y(He4)*state.rho) + - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (-screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_derived)*Y(Ni57)) + + (-screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(Fe53)*Y(He4)*state.rho) + + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni57) = - (screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_Ni57_to_He4_Fe53_derived)*Y(Ni57)) + - (screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + -screened_rates(k_Ni57_to_p_Co56_derived)*Y(Ni57)) + - (screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Ni57_to_n_Ni56_derived)*Y(Ni57)) + - (-screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_derived)*Y(Ni58)) + - (-screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(Co57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(He4)*Y(Ni57)*state.rho) + - (-screened_rates(k_Ni57_to_Co57_weaktab)*Y(Ni57) + screened_rates(k_Co57_to_Ni57_weaktab)*Y(Co57)); + (screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_Ni57_to_He4_Fe53_derived)*Y(Ni57)) + + (screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + -screened_rates(k_Ni57_to_p_Co56_derived)*Y(Ni57)) + + (screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Ni57_to_n_Ni56_derived)*Y(Ni57)) + + (-screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_derived)*Y(Ni58)) + + (-screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(Co57)*Y(H1)*state.rho) + + (-screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(He4)*Y(Ni57)*state.rho) + + (-screened_rates(k_Ni57_to_Co57_electron_capture_weaktab)*Y(Ni57) + screened_rates(k_Co57_to_Ni57_beta_neg_weaktab)*Y(Co57)); ydot_nuc(Ni58) = - (screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + - (screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + - (screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Ni58_to_n_Ni57_derived)*Y(Ni58)) + - (-screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(Fe55)*Y(He4)*state.rho); + (screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_derived)*Y(Ni58)) + + (screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_derived)*Y(Ni58)) + + (screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Ni58_to_n_Ni57_derived)*Y(Ni58)) + + (-screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*Y(H1)*state.rho) + + (-screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(Fe55)*Y(He4)*state.rho); ydot_nuc(Cu59) = - (screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + - (-screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + - (-screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + - (screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + -screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + - (-screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho); + (screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Cu59_to_He4_Co55_derived)*Y(Cu59)) + + (-screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + + (-screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*Y(Ni56)*state.rho) + + (screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + -screened_rates(k_Cu59_to_p_Ni58_derived)*Y(Cu59)) + + (-screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*Y(He4)*state.rho); ydot_nuc(Zn60) = - (screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + -screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + - (screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + - (-screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(He4)*Y(Ni57)*state.rho); + (screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + -screened_rates(k_Zn60_to_He4_Ni56_derived)*Y(Zn60)) + + (screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Zn60_to_p_Cu59_derived)*Y(Zn60)) + + (-screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(He4)*Y(Ni57)*state.rho); } @@ -1278,18 +1114,20 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho - screened_rates(k_n_to_p_weaktab); + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho - screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho - screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(N, N, scratch); - scratch = screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(Co57)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(Fe55)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(Mn55)*state.rho + screened_rates(k_p_to_n_weaktab); + scratch = screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(Co57)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(Fe55)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(Mn55)*state.rho + screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(N, H1, scratch); - scratch = screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(Fe53)*state.rho + screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(Fe55)*state.rho + screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(Fe53)*state.rho + screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(Fe54)*state.rho + screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(Fe55)*state.rho + screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(Ni57)*state.rho; jac.set(N, He4, scratch); jac.set(N, C12, 0.0); @@ -1324,84 +1162,84 @@ void jac_nuc(const burn_t& state, jac.set(N, Mn51, 0.0); - scratch = screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(H1)*state.rho; jac.set(N, Mn55, scratch); - scratch = -screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(N)*state.rho; jac.set(N, Fe52, scratch); - scratch = screened_rates(k_Fe53_to_n_Fe52_derived) + screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(He4)*state.rho - screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(He4)*state.rho - screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_derived); jac.set(N, Fe53, scratch); - scratch = screened_rates(k_Fe54_to_n_Fe53_derived) + screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(He4)*state.rho - screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(He4)*state.rho - screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_derived); jac.set(N, Fe54, scratch); - scratch = screened_rates(k_Fe55_to_n_Fe54_derived) + screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(He4)*state.rho - screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(He4)*state.rho - screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(N)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(H1)*state.rho + screened_rates(k_Fe55_to_n_Fe54_derived); jac.set(N, Fe55, scratch); - scratch = screened_rates(k_Fe56_to_n_Fe55_derived) + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho + screened_rates(k_Fe56_to_n_Fe55_derived); jac.set(N, Fe56, scratch); - scratch = -screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(N)*state.rho; jac.set(N, Co55, scratch); - scratch = screened_rates(k_Co56_to_n_Co55_derived) + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho + screened_rates(k_Co56_to_n_Co55_derived); jac.set(N, Co56, scratch); - scratch = screened_rates(k_Co57_to_n_Co56_derived) + screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(H1)*state.rho + screened_rates(k_Co57_to_n_Co56_derived); jac.set(N, Co57, scratch); - scratch = -screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho; jac.set(N, Ni56, scratch); - scratch = screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(He4)*state.rho + screened_rates(k_Ni57_to_n_Ni56_derived) - screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(He4)*state.rho - screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_derived); jac.set(N, Ni57, scratch); - scratch = screened_rates(k_Ni58_to_n_Ni57_derived) - screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_derived); jac.set(N, Ni58, scratch); - scratch = -screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho; jac.set(N, Cu59, scratch); - scratch = -screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(N)*state.rho; jac.set(N, Zn60, scratch); - scratch = screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho + screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_n_to_p_weaktab); + scratch = screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(H1, N, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho - screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(Co56)*state.rho - screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(Co57)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(Fe55)*state.rho - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho - screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*state.rho - screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(Mn55)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - 2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho - screened_rates(k_p_to_n_weaktab); + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(Co56)*state.rho - screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho - screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(Co57)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(Fe55)*state.rho - screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho - screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(Mn55)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho - 2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho - screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho + screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho + screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_derived); jac.set(H1, N13, scratch); jac.set(H1, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho - 2.0*screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_derived); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_derived); jac.set(H1, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(H1, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -1413,91 +1251,91 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho; jac.set(H1, Cr48, scratch); - scratch = screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(H1, Mn51, scratch); - scratch = -screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(H1)*state.rho; jac.set(H1, Mn55, scratch); - scratch = screened_rates(k_Fe52_to_p_Mn51_derived) + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe52_to_p_Mn51_derived); jac.set(H1, Fe52, scratch); - scratch = screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(He4)*state.rho; jac.set(H1, Fe53, scratch); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(H1, Fe54, scratch); - scratch = screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(H1)*state.rho; jac.set(H1, Fe55, scratch); - scratch = screened_rates(k_Fe56_to_p_Mn55_derived) - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_derived); jac.set(H1, Fe56, scratch); - scratch = screened_rates(k_Co55_to_p_Fe54_derived) + screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_derived); jac.set(H1, Co55, scratch); - scratch = screened_rates(k_Co56_to_p_Fe55_derived) + screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(H1)*state.rho - screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(H1)*state.rho - screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_derived); jac.set(H1, Co56, scratch); - scratch = screened_rates(k_Co57_to_p_Fe56_derived) - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_derived); jac.set(H1, Co57, scratch); - scratch = screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived) + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived); jac.set(H1, Ni56, scratch); - scratch = screened_rates(k_Ni57_to_p_Co56_derived) + screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(N)*state.rho + screened_rates(k_Ni57_to_p_Co56_derived); jac.set(H1, Ni57, scratch); - scratch = screened_rates(k_Ni58_to_p_Co57_derived) - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_derived); jac.set(H1, Ni58, scratch); - scratch = screened_rates(k_Cu59_to_p_Ni58_derived) - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_derived); jac.set(H1, Cu59, scratch); scratch = screened_rates(k_Zn60_to_p_Cu59_derived); jac.set(H1, Zn60, scratch); - scratch = screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho + screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho + screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho + screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho; jac.set(He4, N, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(Co56)*state.rho + screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(Co56)*state.rho + screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(Fe55)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - 1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(Ni57)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_approx)*Y(Ar36)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_approx)*Y(Ca40)*state.rho - screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(Fe53)*state.rho - screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho - screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(Fe55)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho - screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - 1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho - screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho - screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(Ni57)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho + 3.0*screened_rates(k_C12_to_3He4_derived) + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -1.5*screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = -1.5*screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_derived) + screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_derived); jac.set(He4, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_derived); jac.set(He4, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_derived); jac.set(He4, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(He4, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_derived); @@ -1512,61 +1350,61 @@ void jac_nuc(const burn_t& state, scratch = -screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho + screened_rates(k_Ti44_to_Ca40_He4_approx); jac.set(He4, Ti44, scratch); - scratch = screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr48_to_Ti44_He4_approx); jac.set(He4, Cr48, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(He4, Mn51, scratch); jac.set(He4, Mn55, 0.0); - scratch = screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_derived); jac.set(He4, Fe52, scratch); - scratch = -screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(He4)*state.rho - screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(He4)*state.rho - screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(He4)*state.rho; jac.set(He4, Fe53, scratch); - scratch = -screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(He4, Fe54, scratch); - scratch = -screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(He4)*state.rho; jac.set(He4, Fe55, scratch); jac.set(He4, Fe56, 0.0); - scratch = screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho + screened_rates(k_Co55_to_He4_Mn51_derived); jac.set(He4, Co55, scratch); - scratch = -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(H1)*state.rho; jac.set(He4, Co56, scratch); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho; jac.set(He4, Co57, scratch); - scratch = -screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived) + screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho + screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived); jac.set(He4, Ni56, scratch); - scratch = -screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_derived) + screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(He4)*state.rho + screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(N)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_derived); jac.set(He4, Ni57, scratch); - scratch = screened_rates(k_Ni58_to_He4_Fe54_derived) + screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_derived); jac.set(He4, Ni58, scratch); - scratch = screened_rates(k_Cu59_to_He4_Co55_derived) + screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_He4_Co55_derived); jac.set(He4, Cu59, scratch); - scratch = screened_rates(k_Zn60_to_He4_Ni56_derived) + screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(N)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_derived); jac.set(He4, Zn60, scratch); jac.set(C12, N, 0.0); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_derived) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_derived) - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); scratch = screened_rates(k_N13_to_p_C12_derived); @@ -1574,7 +1412,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_derived); jac.set(C12, O16, scratch); jac.set(C12, Ne20, 0.0); @@ -1631,21 +1469,21 @@ void jac_nuc(const burn_t& state, jac.set(N13, N, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_p_C12_derived); jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); - scratch = screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, Ne20, 0.0); @@ -1702,20 +1540,20 @@ void jac_nuc(const burn_t& state, jac.set(N14, N, 0.0); - scratch = screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho; jac.set(N14, H1, scratch); - scratch = -screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho; + scratch = -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, C12, 0.0); jac.set(N14, N13, 0.0); - scratch = -screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = -screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(N14, N14, scratch); - scratch = screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho; jac.set(N14, O16, scratch); jac.set(N14, Ne20, 0.0); @@ -1772,21 +1610,21 @@ void jac_nuc(const burn_t& state, jac.set(O16, N, 0.0); - scratch = -screened_rates(k_p_O16_to_He4_N13_derived)*Y(O16)*state.rho - screened_rates(k_p_O16_to_N14_He4_modified)*Y(O16)*state.rho; + scratch = -screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(O16)*state.rho; jac.set(O16, H1, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_derived) - screened_rates(k_p_O16_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_p_O16_to_N14_He4_modified)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_S32_modified)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_derived)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_derived); jac.set(O16, O16, scratch); scratch = screened_rates(k_Ne20_to_He4_O16_derived); @@ -1844,10 +1682,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; jac.set(Ne20, H1, scratch); - scratch = screened_rates(k_He4_N14_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(N14)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -1855,16 +1693,16 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_Ne20_modified)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_1p5He4_to_Ne20_modified)*Y(He4)*state.rho; jac.set(Ne20, N14, scratch); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_derived); jac.set(Ne20, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_derived); @@ -1918,10 +1756,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, N, 0.0); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -1933,10 +1771,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, O16, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_derived)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Na23, Na23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_derived); @@ -1990,32 +1828,32 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, N, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_Mg24_modified)*Y(C12)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, N13, 0.0); jac.set(Mg24, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); + scratch = -screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_derived) - screened_rates(k_Mg24_to_p_Na23_derived); jac.set(Mg24, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_derived); @@ -2065,30 +1903,30 @@ void jac_nuc(const burn_t& state, jac.set(Al27, N, 0.0); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho; jac.set(Al27, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(Mg24)*state.rho; jac.set(Al27, He4, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, N13, 0.0); jac.set(Al27, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, Ne20, 0.0); jac.set(Al27, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_derived)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); - scratch = -screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_derived); @@ -2138,36 +1976,36 @@ void jac_nuc(const burn_t& state, jac.set(Si28, N, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho; jac.set(Si28, H1, scratch); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(O16)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, N13, 0.0); jac.set(Si28, N14, 0.0); - scratch = screened_rates(k_C12_O16_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_Si28_modified)*Y(C12)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho; jac.set(Si28, O16, scratch); jac.set(Si28, Ne20, 0.0); jac.set(Si28, Na23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); + scratch = -screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_derived) - screened_rates(k_Si28_to_p_Al27_derived); jac.set(Si28, Si28, scratch); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); scratch = screened_rates(k_S32_to_He4_Si28_derived); @@ -2213,10 +2051,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, N, 0.0); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(P31, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(Si28)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, C12, 0.0); @@ -2236,10 +2074,10 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_p_P31_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_derived)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); - scratch = -screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(P31, P31, scratch); scratch = screened_rates(k_S32_to_p_P31_derived); @@ -2285,10 +2123,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, N, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho; jac.set(S32, H1, scratch); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, C12, 0.0); @@ -2308,10 +2146,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); scratch = -screened_rates(k_S32_He4_to_Ar36_approx)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_derived) - screened_rates(k_S32_to_p_P31_derived); @@ -2568,10 +2406,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, N, 0.0); - scratch = screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho; jac.set(Cr48, H1, scratch); - scratch = -screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(Ti44)*state.rho; jac.set(Cr48, He4, scratch); jac.set(Cr48, C12, 0.0); @@ -2603,10 +2441,10 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_Ti44_He4_to_Cr48_approx)*Y(He4)*state.rho; jac.set(Cr48, Ti44, scratch); - scratch = -screened_rates(k_Cr48_to_Ti44_He4_approx) - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_to_Ti44_He4_approx); jac.set(Cr48, Cr48, scratch); - scratch = screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(Cr48, Mn51, scratch); jac.set(Cr48, Mn55, 0.0); @@ -2640,10 +2478,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, N, 0.0); - scratch = screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(Mn51)*state.rho; jac.set(Mn51, H1, scratch); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; jac.set(Mn51, He4, scratch); jac.set(Mn51, C12, 0.0); @@ -2674,10 +2512,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho; jac.set(Mn51, Cr48, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_derived)*Y(H1)*state.rho; jac.set(Mn51, Mn51, scratch); jac.set(Mn51, Mn55, 0.0); @@ -2687,7 +2525,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Fe53, 0.0); - scratch = screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho; jac.set(Mn51, Fe54, scratch); jac.set(Mn51, Fe55, 0.0); @@ -2711,10 +2549,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Zn60, 0.0); - scratch = screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*state.rho; + scratch = screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*state.rho; jac.set(Mn55, N, scratch); - scratch = -screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*state.rho - screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(Mn55)*state.rho; + scratch = -screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(Mn55)*state.rho; jac.set(Mn55, H1, scratch); jac.set(Mn55, He4, 0.0); @@ -2751,7 +2589,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Mn51, 0.0); - scratch = -screened_rates(k_Mn55_to_Fe55_weaktab) - screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(H1)*state.rho - screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab); jac.set(Mn55, Mn55, scratch); jac.set(Mn55, Fe52, 0.0); @@ -2760,7 +2598,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Fe54, 0.0); - scratch = screened_rates(k_Fe55_to_Mn55_weaktab) + screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(N)*state.rho + screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab); jac.set(Mn55, Fe55, scratch); scratch = screened_rates(k_Fe56_to_p_Mn55_derived); @@ -2782,13 +2620,13 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Zn60, 0.0); - scratch = -screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*state.rho; + scratch = -screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*state.rho; jac.set(Fe52, N, scratch); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho + screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho; jac.set(Fe52, H1, scratch); - scratch = screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho; jac.set(Fe52, He4, scratch); jac.set(Fe52, C12, 0.0); @@ -2819,15 +2657,15 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Ti44, 0.0); - scratch = screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho; jac.set(Fe52, Cr48, scratch); - scratch = screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho; jac.set(Fe52, Mn51, scratch); jac.set(Fe52, Mn55, 0.0); - scratch = -screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_Mn51_derived) - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_Fe52_to_He4_Cr48_derived) - screened_rates(k_Fe52_to_p_Mn51_derived); jac.set(Fe52, Fe52, scratch); scratch = screened_rates(k_Fe53_to_n_Fe52_derived); @@ -2839,7 +2677,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Fe56, 0.0); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho; jac.set(Fe52, Co55, scratch); jac.set(Fe52, Co56, 0.0); @@ -2857,13 +2695,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Zn60, 0.0); - scratch = screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*state.rho + screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho; jac.set(Fe53, N, scratch); - scratch = screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(Co56)*state.rho; + scratch = screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(Co56)*state.rho; jac.set(Fe53, H1, scratch); - scratch = -screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*state.rho; + scratch = -screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(Fe53)*state.rho - screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*state.rho; jac.set(Fe53, He4, scratch); jac.set(Fe53, C12, 0.0); @@ -2900,10 +2738,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Mn55, 0.0); - scratch = screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(N)*state.rho; jac.set(Fe53, Fe52, scratch); - scratch = -screened_rates(k_Fe53_to_n_Fe52_derived) - screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(He4)*state.rho - screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(He4)*state.rho - screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_Fe53_to_n_Fe52_derived); jac.set(Fe53, Fe53, scratch); scratch = screened_rates(k_Fe54_to_n_Fe53_derived); @@ -2915,12 +2753,12 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Co55, 0.0); - scratch = screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(H1)*state.rho; jac.set(Fe53, Co56, scratch); jac.set(Fe53, Co57, 0.0); - scratch = screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(N)*state.rho; jac.set(Fe53, Ni56, scratch); scratch = screened_rates(k_Ni57_to_He4_Fe53_derived); @@ -2932,13 +2770,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Zn60, 0.0); - scratch = screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho; jac.set(Fe54, N, scratch); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(Fe54)*state.rho; jac.set(Fe54, H1, scratch); - scratch = -screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho + screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; jac.set(Fe54, He4, scratch); jac.set(Fe54, C12, 0.0); @@ -2971,17 +2809,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Cr48, 0.0); - scratch = screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho; jac.set(Fe54, Mn51, scratch); jac.set(Fe54, Mn55, 0.0); jac.set(Fe54, Fe52, 0.0); - scratch = screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(N)*state.rho; jac.set(Fe54, Fe53, scratch); - scratch = -screened_rates(k_Fe54_to_n_Fe53_derived) - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho - screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_derived)*Y(H1)*state.rho - screened_rates(k_Fe54_to_n_Fe53_derived); jac.set(Fe54, Fe54, scratch); scratch = screened_rates(k_Fe55_to_n_Fe54_derived); @@ -2994,12 +2832,12 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Co56, 0.0); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho; jac.set(Fe54, Co57, scratch); jac.set(Fe54, Ni56, 0.0); - scratch = screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(N)*state.rho; jac.set(Fe54, Ni57, scratch); scratch = screened_rates(k_Ni58_to_He4_Fe54_derived); @@ -3009,13 +2847,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Zn60, 0.0); - scratch = screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho; jac.set(Fe55, N, scratch); - scratch = -screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(Fe55)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(Mn55)*state.rho; + scratch = -screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(Fe55)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(Mn55)*state.rho; jac.set(Fe55, H1, scratch); - scratch = -screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(Fe55)*state.rho; + scratch = -screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(Fe55)*state.rho; jac.set(Fe55, He4, scratch); jac.set(Fe55, C12, 0.0); @@ -3050,23 +2888,23 @@ void jac_nuc(const burn_t& state, jac.set(Fe55, Mn51, 0.0); - scratch = screened_rates(k_Mn55_to_Fe55_weaktab) + screened_rates(k_p_Mn55_to_n_Fe55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn55_p_to_n_Fe55_derived)*Y(H1)*state.rho + screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab); jac.set(Fe55, Mn55, scratch); jac.set(Fe55, Fe52, 0.0); jac.set(Fe55, Fe53, 0.0); - scratch = screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(N)*state.rho; jac.set(Fe55, Fe54, scratch); - scratch = -screened_rates(k_Fe55_to_Co55_weaktab) - screened_rates(k_Fe55_to_Mn55_weaktab) - screened_rates(k_Fe55_to_n_Fe54_derived) - screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(He4)*state.rho - screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(He4)*state.rho - screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(H1)*state.rho - screened_rates(k_Fe55_to_Co55_beta_neg_weaktab) - screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab) - screened_rates(k_Fe55_to_n_Fe54_derived); jac.set(Fe55, Fe55, scratch); scratch = screened_rates(k_Fe56_to_n_Fe55_derived); jac.set(Fe55, Fe56, scratch); - scratch = screened_rates(k_Co55_to_Fe55_weaktab) + screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_Co55_to_Fe55_electron_capture_weaktab); jac.set(Fe55, Co55, scratch); scratch = screened_rates(k_Co56_to_p_Fe55_derived); @@ -3078,17 +2916,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe55, Ni57, 0.0); - scratch = screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(N)*state.rho; jac.set(Fe55, Ni58, scratch); jac.set(Fe55, Cu59, 0.0); jac.set(Fe55, Zn60, 0.0); - scratch = screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*state.rho; jac.set(Fe56, N, scratch); - scratch = -screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho + screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*state.rho; jac.set(Fe56, H1, scratch); jac.set(Fe56, He4, 0.0); @@ -3125,7 +2963,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Mn51, 0.0); - scratch = screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(H1)*state.rho; jac.set(Fe56, Mn55, scratch); jac.set(Fe56, Fe52, 0.0); @@ -3134,15 +2972,15 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Fe54, 0.0); - scratch = screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(N)*state.rho; jac.set(Fe56, Fe55, scratch); - scratch = -screened_rates(k_Fe56_to_Co56_weaktab) - screened_rates(k_Fe56_to_n_Fe55_derived) - screened_rates(k_Fe56_to_p_Mn55_derived) - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho - screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) - screened_rates(k_Fe56_to_n_Fe55_derived) - screened_rates(k_Fe56_to_p_Mn55_derived); jac.set(Fe56, Fe56, scratch); jac.set(Fe56, Co55, 0.0); - scratch = screened_rates(k_Co56_to_Fe56_weaktab) + screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_to_Fe56_electron_capture_weaktab); jac.set(Fe56, Co56, scratch); scratch = screened_rates(k_Co57_to_p_Fe56_derived); @@ -3158,13 +2996,13 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Zn60, 0.0); - scratch = -screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*state.rho; + scratch = -screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*state.rho; jac.set(Co55, N, scratch); - scratch = -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(Fe55)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(Fe55)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(Co55, H1, scratch); - scratch = -screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho; jac.set(Co55, He4, scratch); jac.set(Co55, C12, 0.0); @@ -3197,25 +3035,25 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Cr48, 0.0); - scratch = screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Mn51, scratch); jac.set(Co55, Mn55, 0.0); - scratch = screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Fe52, scratch); jac.set(Co55, Fe53, 0.0); - scratch = screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho; jac.set(Co55, Fe54, scratch); - scratch = screened_rates(k_Fe55_to_Co55_weaktab) + screened_rates(k_p_Fe55_to_n_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_p_to_n_Co55_derived)*Y(H1)*state.rho + screened_rates(k_Fe55_to_Co55_beta_neg_weaktab); jac.set(Co55, Fe55, scratch); jac.set(Co55, Fe56, 0.0); - scratch = -screened_rates(k_Co55_to_Fe55_weaktab) - screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_Fe54_derived) - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Co55_to_Fe55_electron_capture_weaktab) - screened_rates(k_Co55_to_He4_Mn51_derived) - screened_rates(k_Co55_to_p_Fe54_derived); jac.set(Co55, Co55, scratch); scratch = screened_rates(k_Co56_to_n_Co55_derived); @@ -3228,7 +3066,7 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Ni57, 0.0); - scratch = screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho; jac.set(Co55, Ni58, scratch); scratch = screened_rates(k_Cu59_to_He4_Co55_derived); @@ -3236,13 +3074,13 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Zn60, 0.0); - scratch = screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho; jac.set(Co56, N, scratch); - scratch = -screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(Co56)*state.rho - screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(Co56)*state.rho - screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(Fe56)*state.rho; jac.set(Co56, H1, scratch); - scratch = -screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*state.rho; jac.set(Co56, He4, scratch); jac.set(Co56, C12, 0.0); @@ -3281,27 +3119,27 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(He4)*state.rho; jac.set(Co56, Fe53, scratch); jac.set(Co56, Fe54, 0.0); - scratch = screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(H1)*state.rho; jac.set(Co56, Fe55, scratch); - scratch = screened_rates(k_Fe56_to_Co56_weaktab) + screened_rates(k_p_Fe56_to_n_Co56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_n_Co56_derived)*Y(H1)*state.rho + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab); jac.set(Co56, Fe56, scratch); - scratch = screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho; jac.set(Co56, Co55, scratch); - scratch = -screened_rates(k_Co56_to_Fe56_weaktab) - screened_rates(k_Co56_to_Ni56_weaktab) - screened_rates(k_Co56_to_n_Co55_derived) - screened_rates(k_Co56_to_p_Fe55_derived) - screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co56_to_He4_Fe53_derived)*Y(H1)*state.rho - screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_p_to_He4_Fe53_derived)*Y(H1)*state.rho - screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho - screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) - screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) - screened_rates(k_Co56_to_n_Co55_derived) - screened_rates(k_Co56_to_p_Fe55_derived); jac.set(Co56, Co56, scratch); scratch = screened_rates(k_Co57_to_n_Co56_derived); jac.set(Co56, Co57, scratch); - scratch = screened_rates(k_Ni56_to_Co56_weaktab) + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_to_Co56_electron_capture_weaktab); jac.set(Co56, Ni56, scratch); scratch = screened_rates(k_Ni57_to_p_Co56_derived); @@ -3309,18 +3147,18 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Ni58, 0.0); - scratch = screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho; jac.set(Co56, Cu59, scratch); jac.set(Co56, Zn60, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho + screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*state.rho; jac.set(Co57, N, scratch); - scratch = -screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(Co57)*state.rho + screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(Co57)*state.rho + screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho; jac.set(Co57, H1, scratch); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(Fe54)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(Fe54)*state.rho; jac.set(Co57, He4, scratch); jac.set(Co57, C12, 0.0); @@ -3361,25 +3199,25 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Fe53, 0.0); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_derived)*Y(He4)*state.rho; jac.set(Co57, Fe54, scratch); jac.set(Co57, Fe55, 0.0); - scratch = screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho; jac.set(Co57, Fe56, scratch); jac.set(Co57, Co55, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho; jac.set(Co57, Co56, scratch); - scratch = -screened_rates(k_Co57_to_Ni57_weaktab) - screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_Fe56_derived) - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(H1)*state.rho - screened_rates(k_Co57_to_Ni57_beta_neg_weaktab) - screened_rates(k_Co57_to_n_Co56_derived) - screened_rates(k_Co57_to_p_Fe56_derived); jac.set(Co57, Co57, scratch); jac.set(Co57, Ni56, 0.0); - scratch = screened_rates(k_Ni57_to_Co57_weaktab) + screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(N)*state.rho + screened_rates(k_Ni57_to_Co57_electron_capture_weaktab); jac.set(Co57, Ni57, scratch); scratch = screened_rates(k_Ni58_to_p_Co57_derived); @@ -3389,13 +3227,13 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Zn60, 0.0); - scratch = -screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho; + scratch = -screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho; jac.set(Ni56, N, scratch); - scratch = screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(Co56)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho; jac.set(Ni56, H1, scratch); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(Fe53)*state.rho - screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(Fe53)*state.rho - screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho; jac.set(Ni56, He4, scratch); jac.set(Ni56, C12, 0.0); @@ -3432,10 +3270,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Mn55, 0.0); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho; jac.set(Ni56, Fe52, scratch); - scratch = screened_rates(k_He4_Fe53_to_n_Ni56_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_n_Ni56_derived)*Y(He4)*state.rho; jac.set(Ni56, Fe53, scratch); jac.set(Ni56, Fe54, 0.0); @@ -3444,15 +3282,15 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Fe56, 0.0); - scratch = screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho; jac.set(Ni56, Co55, scratch); - scratch = screened_rates(k_Co56_to_Ni56_weaktab) + screened_rates(k_p_Co56_to_n_Ni56_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_p_to_n_Ni56_derived)*Y(H1)*state.rho + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab); jac.set(Ni56, Co56, scratch); jac.set(Ni56, Co57, 0.0); - scratch = -screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Ni56_to_Co56_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_Co55_derived) - screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho - screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_Co55_derived); jac.set(Ni56, Ni56, scratch); scratch = screened_rates(k_Ni57_to_n_Ni56_derived); @@ -3460,19 +3298,19 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Ni58, 0.0); - scratch = screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho; jac.set(Ni56, Cu59, scratch); scratch = screened_rates(k_Zn60_to_He4_Ni56_derived); jac.set(Ni56, Zn60, scratch); - scratch = screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho; jac.set(Ni57, N, scratch); - scratch = screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(Co57)*state.rho; + scratch = screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(Co57)*state.rho; jac.set(Ni57, H1, scratch); - scratch = screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*state.rho + screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(Fe54)*state.rho - screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(Fe54)*state.rho - screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(Ni57)*state.rho; jac.set(Ni57, He4, scratch); jac.set(Ni57, C12, 0.0); @@ -3511,10 +3349,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(He4)*state.rho; jac.set(Ni57, Fe53, scratch); - scratch = screened_rates(k_He4_Fe54_to_n_Ni57_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_n_Ni57_derived)*Y(He4)*state.rho; jac.set(Ni57, Fe54, scratch); jac.set(Ni57, Fe55, 0.0); @@ -3523,16 +3361,16 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Co55, 0.0); - scratch = screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(H1)*state.rho; jac.set(Ni57, Co56, scratch); - scratch = screened_rates(k_Co57_to_Ni57_weaktab) + screened_rates(k_p_Co57_to_n_Ni57_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_n_Ni57_derived)*Y(H1)*state.rho + screened_rates(k_Co57_to_Ni57_beta_neg_weaktab); jac.set(Ni57, Co57, scratch); - scratch = screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(N)*state.rho; jac.set(Ni57, Ni56, scratch); - scratch = -screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(He4)*state.rho - screened_rates(k_Ni57_to_Co57_weaktab) - screened_rates(k_Ni57_to_He4_Fe53_derived) - screened_rates(k_Ni57_to_n_Ni56_derived) - screened_rates(k_Ni57_to_p_Co56_derived) - screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(He4)*state.rho - screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_to_Co57_electron_capture_weaktab) - screened_rates(k_Ni57_to_He4_Fe53_derived) - screened_rates(k_Ni57_to_n_Ni56_derived) - screened_rates(k_Ni57_to_p_Co56_derived); jac.set(Ni57, Ni57, scratch); scratch = screened_rates(k_Ni58_to_n_Ni57_derived); @@ -3540,16 +3378,16 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Cu59, 0.0); - scratch = screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(N)*state.rho; jac.set(Ni57, Zn60, scratch); - scratch = screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho; jac.set(Ni58, N, scratch); - scratch = screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(Ni58)*state.rho; jac.set(Ni58, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho + screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(Fe55)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(Fe55)*state.rho; jac.set(Ni58, He4, scratch); jac.set(Ni58, C12, 0.0); @@ -3590,28 +3428,28 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Fe53, 0.0); - scratch = screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Fe54, scratch); - scratch = screened_rates(k_He4_Fe55_to_n_Ni58_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe55_He4_to_n_Ni58_derived)*Y(He4)*state.rho; jac.set(Ni58, Fe55, scratch); jac.set(Ni58, Fe56, 0.0); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Co55, scratch); jac.set(Ni58, Co56, 0.0); - scratch = screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho; jac.set(Ni58, Co57, scratch); jac.set(Ni58, Ni56, 0.0); - scratch = screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(N)*state.rho; jac.set(Ni58, Ni57, scratch); - scratch = -screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_n_Ni57_derived) - screened_rates(k_Ni58_to_p_Co57_derived) - screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_derived)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_derived)*Y(H1)*state.rho - screened_rates(k_Ni58_to_He4_Fe54_derived) - screened_rates(k_Ni58_to_n_Ni57_derived) - screened_rates(k_Ni58_to_p_Co57_derived); jac.set(Ni58, Ni58, scratch); scratch = screened_rates(k_Cu59_to_p_Ni58_derived); @@ -3619,13 +3457,13 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Zn60, 0.0); - scratch = -screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho; jac.set(Cu59, N, scratch); - scratch = -screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho; jac.set(Cu59, H1, scratch); - scratch = screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(Co56)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(Ni56)*state.rho; jac.set(Cu59, He4, scratch); jac.set(Cu59, C12, 0.0); @@ -3672,35 +3510,35 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Fe56, 0.0); - scratch = screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho; jac.set(Cu59, Co55, scratch); - scratch = screened_rates(k_He4_Co56_to_n_Cu59_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_derived)*Y(He4)*state.rho; jac.set(Cu59, Co56, scratch); jac.set(Cu59, Co57, 0.0); - scratch = screened_rates(k_He4_Ni56_to_p_Cu59_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_p_Cu59_derived)*Y(He4)*state.rho; jac.set(Cu59, Ni56, scratch); jac.set(Cu59, Ni57, 0.0); - scratch = screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho; jac.set(Cu59, Ni58, scratch); - scratch = -screened_rates(k_Cu59_to_He4_Co55_derived) - screened_rates(k_Cu59_to_p_Ni58_derived) - screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_to_He4_Co55_derived) - screened_rates(k_Cu59_to_p_Ni58_derived); jac.set(Cu59, Cu59, scratch); scratch = screened_rates(k_Zn60_to_p_Cu59_derived); jac.set(Cu59, Zn60, scratch); - scratch = -screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho; + scratch = -screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho; jac.set(Zn60, N, scratch); - scratch = screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho; + scratch = screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho; jac.set(Zn60, H1, scratch); - scratch = screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho + screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(Ni57)*state.rho; jac.set(Zn60, He4, scratch); jac.set(Zn60, C12, 0.0); @@ -3753,18 +3591,18 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, Co57, 0.0); - scratch = screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho; jac.set(Zn60, Ni56, scratch); - scratch = screened_rates(k_He4_Ni57_to_n_Zn60_derived)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni57_He4_to_n_Zn60_derived)*Y(He4)*state.rho; jac.set(Zn60, Ni57, scratch); jac.set(Zn60, Ni58, 0.0); - scratch = screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho; jac.set(Zn60, Cu59, scratch); - scratch = -screened_rates(k_Zn60_to_He4_Ni56_derived) - screened_rates(k_Zn60_to_p_Cu59_derived) - screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_Zn60_to_He4_Ni56_derived) - screened_rates(k_Zn60_to_p_Cu59_derived); jac.set(Zn60, Zn60, scratch); diff --git a/networks/he-burn/he-burn-33am/approximate_rates.H b/networks/he-burn/he-burn-33am/approximate_rates.H index 6bdb7d077..fdc0037db 100644 --- a/networks/he-burn/he-burn-33am/approximate_rates.H +++ b/networks/he-burn/he-burn-33am/approximate_rates.H @@ -8,240 +8,242 @@ #include #include -using namespace Rates; -using namespace Species; - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); - } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); - } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); - } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); - } -} +namespace approximate_rates { + + using namespace Rates; + using namespace Species; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_S32_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ar36_to_He4_S32_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_Ar36_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ca40_to_p_K39_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ag = rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real r_ap = rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib); + rate = r_ag + r_ap * r_pg * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib); + amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } + } + + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { + + amrex::Real r_pg = rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib); + amrex::Real r_pa = rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived); + amrex::Real r_pY = 0.0_rt; + amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); + amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); + amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); + rate = r_ga + r_gp * r_pa * dd; + if constexpr (std::is_same_v) { + amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); + amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived); + amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); + amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib); + amrex::Real drdT_pY = 0.0_rt; + drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); + } + } + + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; + + rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; + } + + rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; + } + + rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; + } + + rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; + } + + rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; + } + + rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; + } + + rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; + } + + rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; + } -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_He4_to_Ti44_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); - } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_Ca40_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); - } -} -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_He4_to_Cr48_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ag = rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real r_ap = rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib); - rate = r_ag + r_ap * r_pg * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ag = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib); - amrex::Real drdT_ap = rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ag + drdT_ap * r_pg * dd + r_ap * drdT_pg * dd - r_ap * r_pg * dd * dd * (drdT_pg + drdT_pa + drdT_pY); } } - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_Ti44_He4_approx(const T& rate_eval, amrex::Real& rate, amrex::Real& drate_dT) { - - amrex::Real r_pg = rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib); - amrex::Real r_pa = rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived); - amrex::Real r_pY = 0.0_rt; - amrex::Real dd = 1.0_rt / (r_pg + r_pa + r_pY); - amrex::Real r_ga = rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived); - amrex::Real r_gp = rate_eval.screened_rates(k_Cr48_to_p_V47_derived); - rate = r_ga + r_gp * r_pa * dd; - if constexpr (std::is_same_v) { - amrex::Real drdT_ga = rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived); - amrex::Real drdT_pa = rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived); - amrex::Real drdT_gp = rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived); - amrex::Real drdT_pg = rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib); - amrex::Real drdT_pY = 0.0_rt; - drate_dT = drdT_ga + drdT_gp * r_pa * dd + r_gp * drdT_pa * dd - r_gp * r_pa * dd * dd * (drdT_pg + drdT_pa + drdT_pY); - } -} - - - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; - - rate_S32_He4_to_Ar36_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_S32_He4_to_Ar36_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_approx) = drate_dT; - } - - rate_Ar36_to_S32_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_S32_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_S32_He4_approx) = drate_dT; - } - - rate_Ar36_He4_to_Ca40_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_He4_to_Ca40_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_approx) = drate_dT; - } - - rate_Ca40_to_Ar36_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_Ar36_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_Ar36_He4_approx) = drate_dT; - } - - rate_Ca40_He4_to_Ti44_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_He4_to_Ti44_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_approx) = drate_dT; - } - - rate_Ti44_to_Ca40_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_Ca40_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Ca40_He4_approx) = drate_dT; - } - - rate_Ti44_He4_to_Cr48_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_He4_to_Cr48_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_approx) = drate_dT; - } - - rate_Cr48_to_Ti44_He4_approx(rate_eval, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_Ti44_He4_approx) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_Ti44_He4_approx) = drate_dT; - } - - -} - #endif diff --git a/networks/he-burn/he-burn-33am/branched_rates.H b/networks/he-burn/he-burn-33am/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/he-burn/he-burn-33am/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/he-burn/he-burn-33am/derived_rates.H b/networks/he-burn/he-burn-33am/derived_rates.H index 13824ccd3..20d36f675 100644 --- a/networks/he-burn/he-burn-33am/derived_rates.H +++ b/networks/he-burn/he-burn-33am/derived_rates.H @@ -7,5694 +7,5696 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // N13 --> p + C12 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // N13 --> p + C12 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // Evaluate partition function terms - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = p_log_pf + C12_log_pf - N13_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dC12_log_pf_dT9 - dN13_log_pf_dT9; - // ReacLib set derived from ls09n - ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09n + ln_set_rate = 40.059128683693466 + -22.553277271250543 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.553277271250543 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from ls09r - ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ls09r + ln_set_rate = 40.45372868369347 + -26.331767271250545 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 26.331767271250545 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + C12_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dC12_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from nac2 + ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 279.29694929711803 + -84.95157686791683 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.95157686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from nac2 + ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // ReacLib set derived from nac2 - ln_set_rate = 94.31554929711803 + -84.50314686791683 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.50314686791683 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + O16_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dO16_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from co10r + ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; - // ReacLib set derived from co10r - ln_set_rate = 28.644822801502126 + -65.24608327101186 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 65.24608327101186 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10n + ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from co10n - ln_set_rate = 48.662112801502126 + -54.887583271011856 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 54.887583271011856 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from co10r + ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // ReacLib set derived from co10r - ln_set_rate = 34.267592801502126 + -67.65188327101185 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.65188327101185 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 34.107544561463015 + -138.96838756220697 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 138.96838756220697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 20.02229456146302 + -137.30028756220696 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 137.30028756220696 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.95564456146302 + -135.68809756220696 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 135.68809756220696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ne20_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNe20_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 16.022538839949377 + -120.89510873006793 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 120.89510873006793 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 26.803878839949377 + -117.33446873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 117.33446873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -13.884691160050625 + -110.62025873006793 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 110.62025873006793 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 49.32660883994937 + -108.11420873006793 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 108.11420873006793 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 11.796402252999236 + -136.3412367256539 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 136.3412367256539 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 111.48620225299923 + -134.8245897256539 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.8245897256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 46.569302252999236 + -134.4372767256539 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 134.4372767256539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mg24_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMg24_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from st08r + ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; - // ReacLib set derived from st08r - ln_set_rate = 32.902724006057724 + -131.4900751873663 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 131.4900751873663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from st08r + ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // ReacLib set derived from st08r - ln_set_rate = -25.68644599394228 + -128.6942751873663 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 128.6942751873663 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 25.192389422303183 + -106.63906812813134 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 106.63906812813134 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 21.702443422303183 + -105.12160812813134 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 105.12160812813134 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 43.630433422303184 + -102.86202812813134 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.86202812813134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Si28_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dSi28_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 72.8147025119699 + -80.62419844573513 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 80.62419844573513 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> p + Mn51 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn51_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn51_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.74743132228039 + -85.61663846070292 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.61663846070292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe52 --> He4 + Cr48 - // Fe52 --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - Fe52_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dFe52_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 90.149113992515 + -92.09363997638769 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.09363997638769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 --> He4 + Mn51 - // Co55 --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.61473213109255 + -95.29300562248025 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 90.61473213109255 + -95.29300562248025 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 - + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 95.29300562248025 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 95.29300562248025 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i - + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> p + Co55 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> He4 + Fe52 - // Ni56 --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cu59 --> He4 + Co55 - // Cu59 --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - Cu59_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dCu59_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - Cu59_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dCu59_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 90.97354557942113 + -55.1611006026015 * tfactors.T9i + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 + + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 90.97354557942113 + -55.1611006026015 * tfactors.T9i + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 - + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 55.1611006026015 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i + + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 55.1611006026015 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i - + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Zn60 --> p + Cu59 - // Zn60 --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; - amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; + // interpolating Zn60 partition function + get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); - // interpolating Zn60 partition function - get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - Zn60_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dZn60_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - Zn60_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dZn60_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.31218638341413 + -59.240729222177784 * tfactors.T9i + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 + + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.31218638341413 + -59.240729222177784 * tfactors.T9i + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 - + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.240729222177784 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i + + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.240729222177784 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i - + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_He4_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_He4_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Zn60 --> He4 + Ni56 - // Zn60 --> He4 + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; - amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; + // interpolating Zn60 partition function + get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); - // interpolating Zn60 partition function - get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ni56_log_pf - Zn60_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNi56_log_pf_dT9 - dZn60_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ni56_log_pf - Zn60_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dNi56_log_pf_dT9 - dZn60_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 86.06332792090964 + -31.2372260432927 * tfactors.T9i + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 + + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 86.06332792090964 + -31.2372260432927 * tfactors.T9i + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 - + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 31.2372260432927 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i + + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 31.2372260432927 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i - + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real C12_log_pf, dC12_log_pf_dT9; - amrex::Real C12_log_pf, dC12_log_pf_dT9; + // setting C12 log(partition function) to 0.0 by default, independent of T + C12_log_pf = 0.0_rt; + dC12_log_pf_dT9 = 0.0_rt; - // setting C12 log(partition function) to 0.0 by default, independent of T - C12_log_pf = 0.0_rt; - dC12_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + He4_log_pf + He4_log_pf - C12_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dHe4_log_pf_dT9 + dHe4_log_pf_dT9 - dC12_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from fy05r + ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 34.96090397991297 + -85.44440046993657 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.8333300000000001 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.44440046993657 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.8333300000000001 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05n + ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // ReacLib set derived from fy05n - ln_set_rate = 45.77825197991297 + -84.41994046993656 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 84.41994046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from fy05r + ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // ReacLib set derived from fy05r - ln_set_rate = 22.398803979912973 + -88.54650046993656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 88.54650046993656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real O16_log_pf, dO16_log_pf_dT9; - amrex::Real O16_log_pf, dO16_log_pf_dT9; + // interpolating O16 partition function + get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); - // interpolating O16 partition function - get_partition_function_cached(O16, tfactors.T9, pf_cache, O16_log_pf, dO16_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real N13_log_pf, dN13_log_pf_dT9; - amrex::Real N13_log_pf, dN13_log_pf_dT9; + // setting N13 log(partition function) to 0.0 by default, independent of T + N13_log_pf = 0.0_rt; + dN13_log_pf_dT9 = 0.0_rt; - // setting N13 log(partition function) to 0.0 by default, independent of T - N13_log_pf = 0.0_rt; - dN13_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + N13_log_pf - p_log_pf - O16_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dN13_log_pf_dT9 - dp_log_pf_dT9 - dO16_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from cf88n + ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from cf88n - ln_set_rate = 42.21642061342456 + -60.557329596678294 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 60.557329596678294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Na23_log_pf, dNa23_log_pf_dT9; - amrex::Real Na23_log_pf, dNa23_log_pf_dT9; + // interpolating Na23 partition function + get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); - // interpolating Na23 partition function - get_partition_function_cached(Na23, tfactors.T9, pf_cache, Na23_log_pf, dNa23_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; - amrex::Real Ne20_log_pf, dNe20_log_pf_dT9; + // interpolating Ne20 partition function + get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); - // interpolating Ne20 partition function - get_partition_function_cached(Ne20, tfactors.T9, pf_cache, Ne20_log_pf, dNe20_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Na23_log_pf - He4_log_pf - Ne20_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNa23_log_pf_dT9 - dHe4_log_pf_dT9 - dNe20_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.360024278486355 + -29.889658832139027 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.889658832139027 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 0.24516522151364528 + -29.434918832139026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 29.434918832139026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 19.202935721513644 + -27.573888832139026 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.573888832139026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Al27_log_pf, dAl27_log_pf_dT9; - amrex::Real Al27_log_pf, dAl27_log_pf_dT9; + // interpolating Al27 partition function + get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); - // interpolating Al27 partition function - get_partition_function_cached(Al27, tfactors.T9, pf_cache, Al27_log_pf, dAl27_log_pf_dT9); + amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; - amrex::Real Mg24_log_pf, dMg24_log_pf_dT9; + // interpolating Mg24 partition function + get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); - // interpolating Mg24 partition function - get_partition_function_cached(Mg24, tfactors.T9, pf_cache, Mg24_log_pf, dMg24_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Al27_log_pf - He4_log_pf - Mg24_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dAl27_log_pf_dT9 - dHe4_log_pf_dT9 - dMg24_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -6.4280417530584835 + -22.818701538287602 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.818701538287602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -26.268451753058486 + -19.5392135382876 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 19.5392135382876 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 30.057448246941515 + -18.576201538287602 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 18.576201538287602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real P31_log_pf, dP31_log_pf_dT9; - amrex::Real P31_log_pf, dP31_log_pf_dT9; + // interpolating P31 partition function + get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); - // interpolating P31 partition function - get_partition_function_cached(P31, tfactors.T9, pf_cache, P31_log_pf, dP31_log_pf_dT9); + amrex::Real Si28_log_pf, dSi28_log_pf_dT9; - amrex::Real Si28_log_pf, dSi28_log_pf_dT9; + // interpolating Si28 partition function + get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); - // interpolating Si28 partition function - get_partition_function_cached(Si28, tfactors.T9, pf_cache, Si28_log_pf, dSi28_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + P31_log_pf - He4_log_pf - Si28_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dP31_log_pf_dT9 - dHe4_log_pf_dT9 - dSi28_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -11.415669089666713 + -25.663579682396225 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.663579682396225 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -13.441669089666712 + -24.114989682396224 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 24.114989682396224 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.360230910333286 + -22.237829682396224 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.237829682396224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mn51 + p --> He4 + Cr48 - // Mn51 + p --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Cr48_log_pf - p_log_pf - Mn51_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCr48_log_pf_dT9 - dp_log_pf_dT9 - dMn51_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 58.71348267023461 + -6.47700151570639 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.47700151570639 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 + p --> He4 + Fe52 - // Co55 + p --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_He4_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni56_to_p_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 + He4 --> p + Cu59 - // Ni56 + He4 --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - He4_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cu59_log_pf - He4_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.864958462504486 + -28.003503178913892 * tfactors.T9i + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 + + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.864958462504486 + -28.003503178913892 * tfactors.T9i + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 - + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 28.003503178913892 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i + + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 28.003503178913892 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i - + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_to_n_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe53_to_n_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe53 --> n + Fe52 - // Fe53 --> n + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe52_log_pf - Fe53_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe52_log_pf_dT9 - dFe53_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe52_log_pf - Fe53_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe52_log_pf_dT9 - dFe53_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 37.50789742709652 + -124.01421385132892 * tfactors.T9i + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 37.50789742709652 + -124.01421385132892 * tfactors.T9i + -0.344319 * tfactors.T913 - + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 124.01421385132892 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 124.01421385132892 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i - + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_n_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_n_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 --> n + Fe53 - // Fe54 --> n + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe53_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe53_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe53_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe53_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 42.23234536763494 + -155.25009527915816 * tfactors.T9i + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 42.23234536763494 + -155.25009527915816 * tfactors.T9i + -1.10421 * tfactors.T913 - + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 155.25009527915816 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 155.25009527915816 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i - + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_to_n_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe55_to_n_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe55 --> n + Fe54 - // Fe55 --> n + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe54_log_pf - Fe55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe54_log_pf_dT9 - dFe55_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe54_log_pf - Fe55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe54_log_pf_dT9 - dFe55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ks03 + ln_set_rate = 21.50487677145662 + -107.84100838776591 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; - // ReacLib set derived from ks03 - ln_set_rate = 21.50487677145662 + -107.84100838776591 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 - + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 107.84100838776591 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 107.84100838776591 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i - + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 --> n + Fe55 - // Fe56 --> n + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dFe56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ks03 + ln_set_rate = 46.806892234523204 + -130.0322634199283 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; - // ReacLib set derived from ks03 - ln_set_rate = 46.806892234523204 + -130.0322634199283 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 - + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 130.0322634199283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 130.0322634199283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i - + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_p_Mn55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_p_Mn55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 --> p + Mn55 - // Fe56 --> p + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Mn55_log_pf, dMn55_log_pf_dT9; - amrex::Real Mn55_log_pf, dMn55_log_pf_dT9; + // interpolating Mn55 partition function + get_partition_function_cached(Mn55, tfactors.T9, pf_cache, Mn55_log_pf, dMn55_log_pf_dT9); - // interpolating Mn55 partition function - get_partition_function_cached(Mn55, tfactors.T9, pf_cache, Mn55_log_pf, dMn55_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Mn55_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn55_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Mn55_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dMn55_log_pf_dT9 - dFe56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.67886351114045 + -118.17566704462678 * tfactors.T9i + -36.1995 * tfactors.T913i + 1.15346 * tfactors.T913 + + -1.94437 * tfactors.T9 + 0.218429 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.67886351114045 + -118.17566704462678 * tfactors.T9i + -36.1995 * tfactors.T913i + 1.15346 * tfactors.T913 - + -1.94437 * tfactors.T9 + 0.218429 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 118.17566704462678 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 1.15346 * tfactors.T923i + + -1.94437 + (5.0/3.0) * 0.218429 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 118.17566704462678 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 1.15346 * tfactors.T923i - + -1.94437 + (5.0/3.0) * 0.218429 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_p_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_p_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 --> p + Fe54 - // Co55 --> p + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe54_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe54_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe54_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe54_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 57.84851844810452 + -58.76958578644693 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 57.84851844810452 + -58.76958578644693 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 - + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 58.76958578644693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 58.76958578644693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i - + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co56_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 --> n + Co55 - // Co56 --> n + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co55_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co55_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 40.647564333711024 + -116.994640839646 * tfactors.T9i + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 40.647564333711024 + -116.994640839646 * tfactors.T9i + -1.86357 * tfactors.T913 - + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 116.994640839646 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 116.994640839646 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i - + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_to_p_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co56_to_p_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 --> p + Fe55 - // Co56 --> p + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe55_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe55_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe55_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe55_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 58.620466010358925 + -67.86404663834863 * tfactors.T9i + -37.1585 * tfactors.T913i + 1.66198 * tfactors.T913 + + -1.60842 * tfactors.T9 + 0.148916 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 58.620466010358925 + -67.86404663834863 * tfactors.T9i + -37.1585 * tfactors.T913i + 1.66198 * tfactors.T913 - + -1.60842 * tfactors.T9 + 0.148916 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.86404663834863 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1585 * tfactors.T943i + (1.0/3.0) * 1.66198 * tfactors.T923i + + -1.60842 + (5.0/3.0) * 0.148916 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.86404663834863 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1585 * tfactors.T943i + (1.0/3.0) * 1.66198 * tfactors.T923i - + -1.60842 + (5.0/3.0) * 0.148916 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 --> n + Co56 - // Co57 --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co56_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co56_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dCo57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 41.17386809654295 + -132.01901045161702 * tfactors.T9i + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 41.17386809654295 + -132.01901045161702 * tfactors.T9i + -1.37855 * tfactors.T913 - + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 132.01901045161702 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 132.01901045161702 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i - + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_p_Fe56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_p_Fe56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 --> p + Fe56 - // Co57 --> p + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Fe56_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe56_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Fe56_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dFe56_log_pf_dT9 - dCo57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 57.68564187237867 + -69.94636137001572 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 57.68564187237867 + -69.94636137001572 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 - + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 69.94636137001572 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 69.94636137001572 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i - + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni57 --> n + Ni56 - // Ni57 --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - Ni57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dNi57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - Ni57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dNi57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 38.391039283996996 + -118.91983039605458 * tfactors.T9i + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 38.391039283996996 + -118.91983039605458 * tfactors.T9i + -1.19665 * tfactors.T913 - + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 118.91983039605458 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 118.91983039605458 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i - + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_p_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_p_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni57 --> p + Co56 - // Ni57 --> p + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co56_log_pf - Ni57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo56_log_pf_dT9 - dNi57_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co56_log_pf - Ni57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo56_log_pf_dT9 - dNi57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 60.10327899221158 + -85.08979333790236 * tfactors.T9i + -38.1094 * tfactors.T913i + 2.57091 * tfactors.T913 + + -2.07795 * tfactors.T9 + 0.20757 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 60.10327899221158 + -85.08979333790236 * tfactors.T9i + -38.1094 * tfactors.T913i + 2.57091 * tfactors.T913 - + -2.07795 * tfactors.T9 + 0.20757 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 85.08979333790236 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1094 * tfactors.T943i + (1.0/3.0) * 2.57091 * tfactors.T923i + + -2.07795 + (5.0/3.0) * 0.20757 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 85.08979333790236 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1094 * tfactors.T943i + (1.0/3.0) * 2.57091 * tfactors.T923i - + -2.07795 + (5.0/3.0) * 0.20757 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_He4_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_He4_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni57 --> He4 + Fe53 - // Ni57 --> He4 + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe53_log_pf - Ni57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe53_log_pf_dT9 - dNi57_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe53_log_pf - Ni57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe53_log_pf_dT9 - dNi57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 94.74134670763823 + -87.74658748798956 * tfactors.T9i + -91.7231 * tfactors.T913i + -10.1816 * tfactors.T913 + + -0.0406303 * tfactors.T9 + 0.0345056 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 94.74134670763823 + -87.74658748798956 * tfactors.T9i + -91.7231 * tfactors.T913i + -10.1816 * tfactors.T913 - + -0.0406303 * tfactors.T9 + 0.0345056 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.74658748798956 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * -10.1816 * tfactors.T923i + + -0.0406303 + (5.0/3.0) * 0.0345056 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 87.74658748798956 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * -10.1816 * tfactors.T923i - + -0.0406303 + (5.0/3.0) * 0.0345056 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> n + Ni57 - // Ni58 --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 42.36077897558323 + -141.76332431826057 * tfactors.T9i + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 42.36077897558323 + -141.76332431826057 * tfactors.T9i + -1.90814 * tfactors.T913 - + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 141.76332431826057 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 141.76332431826057 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i - + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> p + Co57 - // Ni58 --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co57_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co57_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.794489871251855 + -94.83410720454592 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.794489871251855 + -94.83410720454592 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 - + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.83410720454592 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.83410720454592 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i - + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_He4_Fe54_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 --> He4 + Fe54 - // Ni58 --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe54_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe54_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe54_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe54_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 85.23428031558652 + -74.25981652709197 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 85.23428031558652 + -74.25981652709197 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 - + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 74.25981652709197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 74.25981652709197 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i - + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_p_Ni58_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_p_Ni58_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Cu59 --> p + Ni58 - // Cu59 --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Ni58_log_pf - Cu59_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNi58_log_pf_dT9 - dCu59_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Ni58_log_pf - Cu59_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dNi58_log_pf_dT9 - dCu59_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from si13n + ln_set_rate = 58.97928371193912 + -39.67086986195644 * tfactors.T9i + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 + + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from si13n - ln_set_rate = 58.97928371193912 + -39.67086986195644 * tfactors.T9i + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 - + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 39.67086986195644 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i + + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 39.67086986195644 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i - + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_p_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn55_to_n_Fe55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Mn55 + p --> n + Fe55 - // Mn55 + p --> n + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real Mn55_log_pf, dMn55_log_pf_dT9; - amrex::Real Mn55_log_pf, dMn55_log_pf_dT9; + // interpolating Mn55 partition function + get_partition_function_cached(Mn55, tfactors.T9, pf_cache, Mn55_log_pf, dMn55_log_pf_dT9); - // interpolating Mn55 partition function - get_partition_function_cached(Mn55, tfactors.T9, pf_cache, Mn55_log_pf, dMn55_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - p_log_pf - Mn55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dp_log_pf_dT9 - dMn55_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Fe55_log_pf - p_log_pf - Mn55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dFe55_log_pf_dT9 - dp_log_pf_dT9 - dMn55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 4.303018723382757 + -11.761028675301535 * tfactors.T9i + 7.03052 * tfactors.T913 + + 0.260509 * tfactors.T9 + -0.0813397 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 4.303018723382757 + -11.761028675301535 * tfactors.T9i + 7.03052 * tfactors.T913 - + 0.260509 * tfactors.T9 + -0.0813397 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 11.761028675301535 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.03052 * tfactors.T923i + + 0.260509 + (5.0/3.0) * -0.0813397 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 11.761028675301535 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.03052 * tfactors.T923i - + 0.260509 + (5.0/3.0) * -0.0813397 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_He4_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe53_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe53 + He4 --> n + Ni56 - // Fe53 + He4 --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - He4_log_pf - Fe53_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dHe4_log_pf_dT9 - dFe53_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - He4_log_pf - Fe53_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dHe4_log_pf_dT9 - dFe53_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = -11.207137423641244 + -31.17324290806502 * tfactors.T9i + 6.43259 * tfactors.T913 + + 2.29591 * tfactors.T9 + -0.254724 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = -11.207137423641244 + -31.17324290806502 * tfactors.T9i + 6.43259 * tfactors.T913 - + 2.29591 * tfactors.T9 + -0.254724 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 31.17324290806502 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.43259 * tfactors.T923i + + 2.29591 + (5.0/3.0) * -0.254724 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 31.17324290806502 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.43259 * tfactors.T923i - + 2.29591 + (5.0/3.0) * -0.254724 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe54_to_He4_Mn51_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + p --> He4 + Mn51 - // Fe54 + p --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; - amrex::Real Mn51_log_pf, dMn51_log_pf_dT9; + // interpolating Mn51 partition function + get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); - // interpolating Mn51 partition function - get_partition_function_cached(Mn51, tfactors.T9, pf_cache, Mn51_log_pf, dMn51_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - p_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dp_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Mn51_log_pf - p_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dMn51_log_pf_dT9 - dp_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 65.35241368298804 + -36.52341983603332 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 65.35241368298804 + -36.52341983603332 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 - + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 36.52341983603332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 36.52341983603332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i - + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + He4 --> n + Ni57 - // Fe54 + He4 --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - He4_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - He4_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 14.633898659996703 + -67.50350779116859 * tfactors.T9i + 0.48562 * tfactors.T913 + + -0.0249302 * tfactors.T9 + 0.0509605 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 14.633898659996703 + -67.50350779116859 * tfactors.T9i + 0.48562 * tfactors.T913 - + -0.0249302 * tfactors.T9 + 0.0509605 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 67.50350779116859 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.48562 * tfactors.T923i + + -0.0249302 + (5.0/3.0) * 0.0509605 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 67.50350779116859 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.48562 * tfactors.T923i - + -0.0249302 + (5.0/3.0) * 0.0509605 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_p_Co57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe54 + He4 --> p + Co57 - // Fe54 + He4 --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; - amrex::Real Fe54_log_pf, dFe54_log_pf_dT9; + // interpolating Fe54 partition function + get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); - // interpolating Fe54 partition function - get_partition_function_cached(Fe54, tfactors.T9, pf_cache, Fe54_log_pf, dFe54_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co57_log_pf - He4_log_pf - Fe54_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co57_log_pf - He4_log_pf - Fe54_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo57_log_pf_dT9 - dHe4_log_pf_dT9 - dFe54_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = -1.404090444334669 + -20.574290677453938 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = -1.404090444334669 + -20.574290677453938 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 - + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 20.574290677453938 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 20.574290677453938 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i - + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_p_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe55_to_n_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe55 + p --> n + Co55 - // Fe55 + p --> n + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co55_log_pf - p_log_pf - Fe55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dFe55_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co55_log_pf - p_log_pf - Fe55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dFe55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 21.4351983233521 + -49.13059420131897 * tfactors.T9i + -1.62382 * tfactors.T913 + + 0.58115 * tfactors.T9 + -0.0537057 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 21.4351983233521 + -49.13059420131897 * tfactors.T9i + -1.62382 * tfactors.T913 - + 0.58115 * tfactors.T9 + -0.0537057 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 49.13059420131897 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.62382 * tfactors.T923i + + 0.58115 + (5.0/3.0) * -0.0537057 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 49.13059420131897 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.62382 * tfactors.T923i - + 0.58115 + (5.0/3.0) * -0.0537057 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_He4_to_n_Ni58_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe55_to_n_Ni58_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe55 + He4 --> n + Ni58 - // Fe55 + He4 --> n + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; - amrex::Real Fe55_log_pf, dFe55_log_pf_dT9; + // interpolating Fe55 partition function + get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); - // interpolating Fe55 partition function - get_partition_function_cached(Fe55, tfactors.T9, pf_cache, Fe55_log_pf, dFe55_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni58_log_pf - He4_log_pf - Fe55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi58_log_pf_dT9 - dHe4_log_pf_dT9 - dFe55_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni58_log_pf - He4_log_pf - Fe55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi58_log_pf_dT9 - dHe4_log_pf_dT9 - dFe55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = -4.711973544129908 + -33.64036346067392 * tfactors.T9i + 3.44996 * tfactors.T913 + + 2.98226 * tfactors.T9 + -0.387699 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = -4.711973544129908 + -33.64036346067392 * tfactors.T9i + 3.44996 * tfactors.T913 - + 2.98226 * tfactors.T9 + -0.387699 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.64036346067392 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.44996 * tfactors.T923i + + 2.98226 + (5.0/3.0) * -0.387699 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.64036346067392 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.44996 * tfactors.T923i - + 2.98226 + (5.0/3.0) * -0.387699 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe56_to_n_Co56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Fe56 + p --> n + Co56 - // Fe56 + p --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; - amrex::Real Fe56_log_pf, dFe56_log_pf_dT9; + // interpolating Fe56 partition function + get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); - // interpolating Fe56 partition function - get_partition_function_cached(Fe56, tfactors.T9, pf_cache, Fe56_log_pf, dFe56_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Co56_log_pf - p_log_pf - Fe56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dp_log_pf_dT9 - dFe56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Co56_log_pf - p_log_pf - Fe56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCo56_log_pf_dT9 - dp_log_pf_dT9 - dFe56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 22.653426224164285 + -62.07264908160129 * tfactors.T9i + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 22.653426224164285 + -62.07264908160129 * tfactors.T9i + -1.13331 * tfactors.T913 - + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 62.07264908160129 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 62.07264908160129 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i - + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co56_to_n_Ni56_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 + p --> n + Ni56 - // Co56 + p --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - p_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni56_log_pf - p_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi56_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 13.374260291785419 + -33.830037058152215 * tfactors.T9i + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 13.374260291785419 + -33.830037058152215 * tfactors.T9i + 1.76846 * tfactors.T913 - + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 33.830037058152215 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 33.830037058152215 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i - + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_to_He4_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co56_to_He4_Fe53_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 + p --> He4 + Fe53 - // Co56 + p --> He4 + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; - amrex::Real Fe53_log_pf, dFe53_log_pf_dT9; + // interpolating Fe53 partition function + get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); - // interpolating Fe53 partition function - get_partition_function_cached(Fe53, tfactors.T9, pf_cache, Fe53_log_pf, dFe53_log_pf_dT9); + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe53_log_pf - p_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe53_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe53_log_pf - p_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe53_log_pf_dT9 - dp_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 56.029567715426666 + -2.6567941500871917 * tfactors.T9i + -91.7231 * tfactors.T913i + 10.052 * tfactors.T913 + + -3.86332 * tfactors.T9 + 0.391105 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 56.029567715426666 + -2.6567941500871917 * tfactors.T9i + -91.7231 * tfactors.T913i + 10.052 * tfactors.T913 - + -3.86332 * tfactors.T9 + 0.391105 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 2.6567941500871917 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * 10.052 * tfactors.T923i + + -3.86332 + (5.0/3.0) * 0.391105 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 2.6567941500871917 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * 10.052 * tfactors.T923i - + -3.86332 + (5.0/3.0) * 0.391105 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_He4_to_n_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co56_to_n_Cu59_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co56 + He4 --> n + Cu59 - // Co56 + He4 --> n + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; - amrex::Real Cu59_log_pf, dCu59_log_pf_dT9; + // interpolating Cu59 partition function + get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); - // interpolating Cu59 partition function - get_partition_function_cached(Cu59, tfactors.T9, pf_cache, Cu59_log_pf, dCu59_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co56_log_pf, dCo56_log_pf_dT9; - amrex::Real Co56_log_pf, dCo56_log_pf_dT9; + // interpolating Co56 partition function + get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); - // interpolating Co56 partition function - get_partition_function_cached(Co56, tfactors.T9, pf_cache, Co56_log_pf, dCo56_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Cu59_log_pf - He4_log_pf - Co56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dCo56_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Cu59_log_pf - He4_log_pf - Co56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dCu59_log_pf_dT9 - dHe4_log_pf_dT9 - dCo56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 8.911918754289905 + -61.8335402370445 * tfactors.T9i + -1.00882 * tfactors.T913 + + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 8.911918754289905 + -61.8335402370445 * tfactors.T9i + -1.00882 * tfactors.T913 - + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 61.8335402370445 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.00882 * tfactors.T923i + + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 61.8335402370445 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.00882 * tfactors.T923i - + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co57_to_n_Ni57_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co57 + p --> n + Ni57 - // Co57 + p --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real Co57_log_pf, dCo57_log_pf_dT9; - amrex::Real Co57_log_pf, dCo57_log_pf_dT9; + // interpolating Co57 partition function + get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); - // interpolating Co57 partition function - get_partition_function_cached(Co57, tfactors.T9, pf_cache, Co57_log_pf, dCo57_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - p_log_pf - Co57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dp_log_pf_dT9 - dCo57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Ni57_log_pf - p_log_pf - Co57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dNi57_log_pf_dT9 - dp_log_pf_dT9 - dCo57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 19.30298910433137 + -46.92921711371466 * tfactors.T9i + -1.13177 * tfactors.T913 + + 0.56875 * tfactors.T9 + -0.0579913 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 19.30298910433137 + -46.92921711371466 * tfactors.T9i + -1.13177 * tfactors.T913 - + 0.56875 * tfactors.T9 + -0.0579913 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 46.92921711371466 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13177 * tfactors.T923i + + 0.56875 + (5.0/3.0) * -0.0579913 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 46.92921711371466 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13177 * tfactors.T923i - + 0.56875 + (5.0/3.0) * -0.0579913 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_He4_to_n_Zn60_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni57_to_n_Zn60_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni57 + He4 --> n + Zn60 - // Ni57 + He4 --> n + Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real n_log_pf, dn_log_pf_dT9; - amrex::Real n_log_pf, dn_log_pf_dT9; + // setting n log(partition function) to 0.0 by default, independent of T + n_log_pf = 0.0_rt; + dn_log_pf_dT9 = 0.0_rt; - // setting n log(partition function) to 0.0 by default, independent of T - n_log_pf = 0.0_rt; - dn_log_pf_dT9 = 0.0_rt; + amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; - amrex::Real Ni57_log_pf, dNi57_log_pf_dT9; + // interpolating Ni57 partition function + get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); - // interpolating Ni57 partition function - get_partition_function_cached(Ni57, tfactors.T9, pf_cache, Ni57_log_pf, dNi57_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; - amrex::Real Zn60_log_pf, dZn60_log_pf_dT9; + // interpolating Zn60 partition function + get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); - // interpolating Zn60 partition function - get_partition_function_cached(Zn60, tfactors.T9, pf_cache, Zn60_log_pf, dZn60_log_pf_dT9); + amrex::Real net_log_pf = n_log_pf + Zn60_log_pf - He4_log_pf - Ni57_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dZn60_log_pf_dT9 - dHe4_log_pf_dT9 - dNi57_log_pf_dT9; - amrex::Real net_log_pf = n_log_pf + Zn60_log_pf - He4_log_pf - Ni57_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dn_log_pf_dT9 + dZn60_log_pf_dT9 - dHe4_log_pf_dT9 - dNi57_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 9.748611363087353 + -87.68260435279066 * tfactors.T9i + 5.43552 * tfactors.T913 + + -1.25169 * tfactors.T9 + 0.148383 * tfactors.T953; - // ReacLib set derived from ths8r - ln_set_rate = 9.748611363087353 + -87.68260435279066 * tfactors.T9i + 5.43552 * tfactors.T913 - + -1.25169 * tfactors.T9 + 0.148383 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 87.68260435279066 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.43552 * tfactors.T923i + + -1.25169 + (5.0/3.0) * 0.148383 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 87.68260435279066 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.43552 * tfactors.T923i - + -1.25169 + (5.0/3.0) * 0.148383 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni58_to_He4_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni58 + p --> He4 + Co55 - // Ni58 + p --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; - amrex::Real Ni58_log_pf, dNi58_log_pf_dT9; + // interpolating Ni58 partition function + get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); - // interpolating Ni58 partition function - get_partition_function_cached(Ni58, tfactors.T9, pf_cache, Ni58_log_pf, dNi58_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - p_log_pf - Ni58_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dNi58_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Co55_log_pf - p_log_pf - Ni58_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCo55_log_pf_dT9 - dp_log_pf_dT9 - dNi58_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 63.596461867482006 + -15.490230740645051 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.596461867482006 + -15.490230740645051 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 - + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 15.490230740645051 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 15.490230740645051 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i - + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - He4_log_pf - S32_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dHe4_log_pf_dT9 - dS32_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -0.8597847344696254 + -25.589703706656966 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 25.589703706656966 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = -57.37716473446963 + -22.187684706656967 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 22.187684706656967 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 32.27223526553037 + -21.654753706656965 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 21.654753706656965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ReacLib set derived from il10r - ln_set_rate = 2.4434452655303747 + -27.664513706656965 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 27.664513706656965 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real S32_log_pf, dS32_log_pf_dT9; - amrex::Real S32_log_pf, dS32_log_pf_dT9; + // interpolating S32 partition function + get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); - // interpolating S32 partition function - get_partition_function_cached(S32, tfactors.T9, pf_cache, S32_log_pf, dS32_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + S32_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dS32_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 73.81807507159112 + -77.06468541928012 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 77.06468541928012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; - amrex::Real Cl35_log_pf, dCl35_log_pf_dT9; + // interpolating Cl35 partition function + get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); - // interpolating Cl35 partition function - get_partition_function_cached(Cl35, tfactors.T9, pf_cache, Cl35_log_pf, dCl35_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Cl35_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCl35_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from il10r + ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = -17.455589662878502 + -99.28409012589869 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.28409012589869 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10n + ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from il10n - ln_set_rate = 60.7561103371215 + -98.71943912589869 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.71943912589869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // ReacLib set derived from il10r - ln_set_rate = 17.222320337121502 + -102.37035912589869 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 102.37035912589869 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from il10r + ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; - // ReacLib set derived from il10r - ln_set_rate = 16.0363703371215 + -100.7293991258987 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.7293991258987 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - He4_log_pf - Ar36_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dHe4_log_pf_dT9 - dAr36_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 20.654451232729432 + -14.951286608188834 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 14.951286608188834 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; - amrex::Real Ar36_log_pf, dAr36_log_pf_dT9; + // interpolating Ar36 partition function + get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); - // interpolating Ar36 partition function - get_partition_function_cached(Ar36, tfactors.T9, pf_cache, Ar36_log_pf, dAr36_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ar36_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dAr36_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 77.28432125250924 + -81.69320665503751 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 81.69320665503751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real K39_log_pf, dK39_log_pf_dT9; - amrex::Real K39_log_pf, dK39_log_pf_dT9; + // interpolating K39 partition function + get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); - // interpolating K39 partition function - get_partition_function_cached(K39, tfactors.T9, pf_cache, K39_log_pf, dK39_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + K39_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dK39_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from lo18r + ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 2786.453572485239 + -101.86683326322635 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 101.86683326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 613.1725724852387 + -109.20919326322635 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 109.20919326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // ReacLib set derived from lo18r + ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // ReacLib set derived from lo18r - ln_set_rate = 127.32557248523868 + -98.30957326322635 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 98.30957326322635 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - He4_log_pf - Ca40_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dHe4_log_pf_dT9 - dCa40_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 35.67546755788414 + -40.87525788838128 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 40.87525788838128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; - amrex::Real Ca40_log_pf, dCa40_log_pf_dT9; + // interpolating Ca40 partition function + get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); - // interpolating Ca40 partition function - get_partition_function_cached(Ca40, tfactors.T9, pf_cache, Ca40_log_pf, dCa40_log_pf_dT9); + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Ca40_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dCa40_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from chw0 + ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from chw0 - ln_set_rate = 78.7006646483486 + -59.49768581557457 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 59.49768581557457 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; - amrex::Real Sc43_log_pf, dSc43_log_pf_dT9; + // interpolating Sc43 partition function + get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); - // interpolating Sc43 partition function - get_partition_function_cached(Sc43, tfactors.T9, pf_cache, Sc43_log_pf, dSc43_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Sc43_log_pf - Ti44_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dSc43_log_pf_dT9 - dTi44_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 62.61343220623275 + -100.37294370395585 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.37294370395585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // Cr48 --> He4 + Ti44 + // V47 + p --> He4 + Ti44 - rate = 0.0; - drate_dT = 0.0; + rate = 0.0; + drate_dT = 0.0; - // Evaluate partition function terms + // Evaluate partition function terms - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - // ReacLib set derived from ths8r - ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + // ReacLib set derived from chw0r + ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } - - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + ln_set_rate += net_log_pf + log_scor; -} + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // Cr48 --> p + V47 + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - rate = 0.0; - drate_dT = 0.0; + } - // Evaluate partition function terms + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; + // Cr48 --> He4 + Ti44 - // interpolating Cr48 partition function - get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); + rate = 0.0; + drate_dT = 0.0; - amrex::Real p_log_pf, dp_log_pf_dT9; + // Evaluate partition function terms - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; - // ReacLib set derived from nfisn - ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + // interpolating Ti44 partition function + get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); - ln_set_rate += net_log_pf + log_scor; + amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dCr48_log_pf_dT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // ReacLib set derived from ths8r + ln_set_rate = 89.75906465832496 + -89.32364150067336 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + ln_set_rate += net_log_pf + log_scor; - // ReacLib set derived from nfisn - ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 89.32364150067336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - ln_set_rate += net_log_pf + log_scor; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - // ReacLib set derived from nfisn - ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; + // Cr48 --> p + V47 - ln_set_rate += net_log_pf + log_scor; + rate = 0.0; + drate_dT = 0.0; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; + // Evaluate partition function terms - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + amrex::Real Cr48_log_pf, dCr48_log_pf_dT9; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + // interpolating Cr48 partition function + get_partition_function_cached(Cr48, tfactors.T9, pf_cache, Cr48_log_pf, dCr48_log_pf_dT9); - // ReacLib set derived from nfisn - ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + amrex::Real p_log_pf, dp_log_pf_dT9; - ln_set_rate += net_log_pf + log_scor; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + amrex::Real V47_log_pf, dV47_log_pf_dT9; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // interpolating V47 partition function + get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + amrex::Real net_log_pf = p_log_pf + V47_log_pf - Cr48_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dV47_log_pf_dT9 - dCr48_log_pf_dT9; -} + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // ReacLib set derived from nfisn + ln_set_rate = 67.75975303984967 + -100.08956223422913 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; - // V47 + p --> He4 + Ti44 + ln_set_rate += net_log_pf + log_scor; - rate = 0.0; - drate_dT = 0.0; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 100.08956223422913 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; - // Evaluate partition function terms + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - amrex::Real p_log_pf, dp_log_pf_dT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + // ReacLib set derived from nfisn + ln_set_rate = 536.5429530398497 + -99.32517223422914 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + ln_set_rate += net_log_pf + log_scor; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 99.32517223422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - amrex::Real V47_log_pf, dV47_log_pf_dT9; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // interpolating V47 partition function - get_partition_function_cached(V47, tfactors.T9, pf_cache, V47_log_pf, dV47_log_pf_dT9); + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - amrex::Real Ti44_log_pf, dTi44_log_pf_dT9; + // ReacLib set derived from nfisn + ln_set_rate = 48.911453039849675 + -93.78359723422915 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.9232499999999995 * tfactors.lnT9; - // interpolating Ti44 partition function - get_partition_function_cached(Ti44, tfactors.T9, pf_cache, Ti44_log_pf, dTi44_log_pf_dT9); + ln_set_rate += net_log_pf + log_scor; - amrex::Real net_log_pf = He4_log_pf + Ti44_log_pf - p_log_pf - V47_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dTi44_log_pf_dT9 - dp_log_pf_dT9 - dV47_log_pf_dT9; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 93.78359723422915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.9232499999999995 * tfactors.T9i; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - // ReacLib set derived from chw0r - ln_set_rate = -76.63208838152472 + -6.086479266444236 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from nfisn + ln_set_rate = 65.64255303984967 + -94.54467623422914 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 6.086479266444236 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 94.54467623422914 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; - } + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } -} + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } + } -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - part_fun::pf_cache_t pf_cache{}; + part_fun::pf_cache_t pf_cache{}; - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - { - // N13_to_p_C12_derived + { + // N13_to_p_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_N13_to_p_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_derived) = drate_dT; + } } - } - { - // O16_to_He4_C12_derived + { + // O16_to_He4_C12_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_to_He4_C12_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_derived) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_derived + { + // Ne20_to_He4_O16_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_to_He4_O16_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_derived) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_derived + { + // Mg24_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_derived) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_derived + { + // Mg24_to_He4_Ne20_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_derived) = drate_dT; + } } - } - { - // Si28_to_p_Al27_derived + { + // Si28_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_derived) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_derived + { + // Si28_to_He4_Mg24_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_derived) = drate_dT; + } } - } - { - // S32_to_p_P31_derived + { + // S32_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_derived) = drate_dT; + } } - } - { - // S32_to_He4_Si28_derived + { + // S32_to_He4_Si28_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_to_He4_Si28_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_derived) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_derived + { + // Fe52_to_p_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_derived) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_derived + { + // Fe52_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // Co55_to_He4_Mn51_derived + { + // Co55_to_He4_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_derived + { + // Ni56_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Cu59_to_He4_Co55_derived + { + // Cu59_to_He4_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cu59_to_He4_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_He4_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cu59_to_He4_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_He4_Co55_derived) = drate_dT; + } } - } - { - // Zn60_to_p_Cu59_derived + { + // Zn60_to_p_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Zn60_to_p_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_p_Cu59_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Zn60_to_p_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_p_Cu59_derived) = drate_dT; + } } - } - { - // Zn60_to_He4_Ni56_derived + { + // Zn60_to_He4_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_He4_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Zn60_to_He4_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_He4_Ni56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_He4_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Zn60_to_He4_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_He4_Ni56_derived) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_derived + { + // C12_to_3He4_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_C12_to_3He4_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_derived) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_derived + { + // O16_p_to_He4_N13_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_O16_to_He4_N13_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_derived) = drate_dT; + rate_O16_p_to_He4_N13_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_O16_p_to_He4_N13_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_derived) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_derived + { + // Ne20_He4_to_p_Na23_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_derived) = drate_dT; + rate_Ne20_He4_to_p_Na23_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_derived) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_derived + { + // Mg24_He4_to_p_Al27_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_derived) = drate_dT; + rate_Mg24_He4_to_p_Al27_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_derived) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_derived + { + // Si28_He4_to_p_P31_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_derived) = drate_dT; + rate_Si28_He4_to_p_P31_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_derived) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_derived + { + // Mn51_p_to_He4_Cr48_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_derived) = drate_dT; + rate_Mn51_p_to_He4_Cr48_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // He4_Ni56_to_p_Cu59_derived + { + // Ni56_He4_to_p_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); - } + log_scor = rate_eval.log_screen(k_He4_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); + } #endif - rate_He4_Ni56_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ni56_to_p_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_p_Cu59_derived) = drate_dT; + rate_Ni56_He4_to_p_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_He4_to_p_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_p_Cu59_derived) = drate_dT; + } } - } - { - // Fe53_to_n_Fe52_derived + { + // Fe53_to_n_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe53_to_n_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_to_n_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe53_to_n_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_derived) = drate_dT; + } } - } - { - // Fe54_to_n_Fe53_derived + { + // Fe54_to_n_Fe53_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe54_to_n_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_to_n_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_to_n_Fe53_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_derived) = drate_dT; + } } - } - { - // Fe55_to_n_Fe54_derived + { + // Fe55_to_n_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe55_to_n_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_to_n_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe55_to_n_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_derived) = drate_dT; + } } - } - { - // Fe56_to_n_Fe55_derived + { + // Fe56_to_n_Fe55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe56_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_to_n_Fe55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_derived) = drate_dT; + } } - } - { - // Fe56_to_p_Mn55_derived + { + // Fe56_to_p_Mn55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe56_to_p_Mn55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Fe56_to_p_Mn55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_p_Mn55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_to_p_Mn55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_to_p_Mn55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_p_Mn55_derived) = drate_dT; + } } - } - { - // Co55_to_p_Fe54_derived + { + // Co55_to_p_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_p_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co55_to_p_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_p_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_to_p_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_derived) = drate_dT; + } } - } - { - // Co56_to_n_Co55_derived + { + // Co56_to_n_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co56_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_to_n_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_derived) = drate_dT; + } } - } - { - // Co56_to_p_Fe55_derived + { + // Co56_to_p_Fe55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co56_to_p_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co56_to_p_Fe55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_p_Fe55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_to_p_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_to_p_Fe55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_p_Fe55_derived) = drate_dT; + } } - } - { - // Co57_to_n_Co56_derived + { + // Co57_to_n_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_derived) = drate_dT; + } } - } - { - // Co57_to_p_Fe56_derived + { + // Co57_to_p_Fe56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_p_Fe56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Co57_to_p_Fe56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_p_Fe56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_to_p_Fe56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_derived) = drate_dT; + } } - } - { - // Ni57_to_n_Ni56_derived + { + // Ni57_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni57_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_derived) = drate_dT; + } } - } - { - // Ni57_to_p_Co56_derived + { + // Ni57_to_p_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_p_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni57_to_p_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_p_Co56_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_p_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni57_to_p_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_p_Co56_derived) = drate_dT; + } } - } - { - // Ni57_to_He4_Fe53_derived + { + // Ni57_to_He4_Fe53_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_He4_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni57_to_He4_Fe53_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_He4_Fe53_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_He4_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni57_to_He4_Fe53_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_He4_Fe53_derived) = drate_dT; + } } - } - { - // Ni58_to_n_Ni57_derived + { + // Ni58_to_n_Ni57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_n_Ni57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_derived) = drate_dT; + } } - } - { - // Ni58_to_p_Co57_derived + { + // Ni58_to_p_Co57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_p_Co57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_p_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_derived) = drate_dT; + } } - } - { - // Ni58_to_He4_Fe54_derived + { + // Ni58_to_He4_Fe54_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_He4_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_He4_Fe54_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_to_He4_Fe54_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_derived) = drate_dT; + } } - } - { - // Cu59_to_p_Ni58_derived + { + // Cu59_to_p_Ni58_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_p_Ni58_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cu59_to_p_Ni58_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_p_Ni58_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_p_Ni58_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cu59_to_p_Ni58_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_p_Ni58_derived) = drate_dT; + } } - } - { - // p_Mn55_to_n_Fe55_derived + { + // Mn55_p_to_n_Fe55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); - } + log_scor = rate_eval.log_screen(k_p_Mn55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); + } #endif - rate_p_Mn55_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Mn55_to_n_Fe55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn55_to_n_Fe55_derived) = drate_dT; + rate_Mn55_p_to_n_Fe55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Mn55_p_to_n_Fe55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_p_to_n_Fe55_derived) = drate_dT; + } } - } - { - // He4_Fe53_to_n_Ni56_derived + { + // Fe53_He4_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); - } + log_scor = rate_eval.log_screen(k_He4_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); + } #endif - rate_He4_Fe53_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Fe53_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe53_to_n_Ni56_derived) = drate_dT; + rate_Fe53_He4_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe53_He4_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_He4_to_n_Ni56_derived) = drate_dT; + } } - } - { - // p_Fe54_to_He4_Mn51_derived + { + // Fe54_p_to_He4_Mn51_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); - } + log_scor = rate_eval.log_screen(k_p_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); + } #endif - rate_p_Fe54_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Fe54_to_He4_Mn51_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_He4_Mn51_derived) = drate_dT; + rate_Fe54_p_to_He4_Mn51_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_p_to_He4_Mn51_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_to_He4_Mn51_derived) = drate_dT; + } } - } - { - // He4_Fe54_to_n_Ni57_derived + { + // Fe54_He4_to_n_Ni57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Fe54_to_n_Ni57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_n_Ni57_derived) = drate_dT; + rate_Fe54_He4_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_He4_to_n_Ni57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_n_Ni57_derived) = drate_dT; + } } - } - { - // He4_Fe54_to_p_Co57_derived + { + // Fe54_He4_to_p_Co57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Fe54_to_p_Co57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_p_Co57_derived) = drate_dT; + rate_Fe54_He4_to_p_Co57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe54_He4_to_p_Co57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_p_Co57_derived) = drate_dT; + } } - } - { - // p_Fe55_to_n_Co55_derived + { + // Fe55_p_to_n_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); - } + log_scor = rate_eval.log_screen(k_p_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); + } #endif - rate_p_Fe55_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Fe55_to_n_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe55_to_n_Co55_derived) = drate_dT; + rate_Fe55_p_to_n_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe55_p_to_n_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_p_to_n_Co55_derived) = drate_dT; + } } - } - { - // He4_Fe55_to_n_Ni58_derived + { + // Fe55_He4_to_n_Ni58_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe55); - } + log_scor = rate_eval.log_screen(k_He4_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe55); + } #endif - rate_He4_Fe55_to_n_Ni58_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Fe55_to_n_Ni58_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe55_to_n_Ni58_derived) = drate_dT; + rate_Fe55_He4_to_n_Ni58_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe55_He4_to_n_Ni58_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_He4_to_n_Ni58_derived) = drate_dT; + } } - } - { - // p_Fe56_to_n_Co56_derived + { + // Fe56_p_to_n_Co56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); - } + log_scor = rate_eval.log_screen(k_p_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); + } #endif - rate_p_Fe56_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Fe56_to_n_Co56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_n_Co56_derived) = drate_dT; + rate_Fe56_p_to_n_Co56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Fe56_p_to_n_Co56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_to_n_Co56_derived) = drate_dT; + } } - } - { - // p_Co56_to_n_Ni56_derived + { + // Co56_p_to_n_Ni56_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); - } + log_scor = rate_eval.log_screen(k_p_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); + } #endif - rate_p_Co56_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co56_to_n_Ni56_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co56_to_n_Ni56_derived) = drate_dT; + rate_Co56_p_to_n_Ni56_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_p_to_n_Ni56_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_to_n_Ni56_derived) = drate_dT; + } } - } - { - // p_Co56_to_He4_Fe53_derived + { + // Co56_p_to_He4_Fe53_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); - } + log_scor = rate_eval.log_screen(k_p_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); + } #endif - rate_p_Co56_to_He4_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co56_to_He4_Fe53_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co56_to_He4_Fe53_derived) = drate_dT; + rate_Co56_p_to_He4_Fe53_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_p_to_He4_Fe53_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_to_He4_Fe53_derived) = drate_dT; + } } - } - { - // He4_Co56_to_n_Cu59_derived + { + // Co56_He4_to_n_Cu59_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); - } + log_scor = rate_eval.log_screen(k_He4_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); + } #endif - rate_He4_Co56_to_n_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Co56_to_n_Cu59_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co56_to_n_Cu59_derived) = drate_dT; + rate_Co56_He4_to_n_Cu59_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co56_He4_to_n_Cu59_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_He4_to_n_Cu59_derived) = drate_dT; + } } - } - { - // p_Co57_to_n_Ni57_derived + { + // Co57_p_to_n_Ni57_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); - } + log_scor = rate_eval.log_screen(k_p_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); + } #endif - rate_p_Co57_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co57_to_n_Ni57_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_n_Ni57_derived) = drate_dT; + rate_Co57_p_to_n_Ni57_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co57_p_to_n_Ni57_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_to_n_Ni57_derived) = drate_dT; + } } - } - { - // He4_Ni57_to_n_Zn60_derived + { + // Ni57_He4_to_n_Zn60_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni57); - } + log_scor = rate_eval.log_screen(k_He4_Ni57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni57); + } #endif - rate_He4_Ni57_to_n_Zn60_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ni57_to_n_Zn60_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni57_to_n_Zn60_derived) = drate_dT; + rate_Ni57_He4_to_n_Zn60_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni57_He4_to_n_Zn60_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_He4_to_n_Zn60_derived) = drate_dT; + } } - } - { - // p_Ni58_to_He4_Co55_derived + { + // Ni58_p_to_He4_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); - } + log_scor = rate_eval.log_screen(k_p_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); + } #endif - rate_p_Ni58_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Ni58_to_He4_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_He4_Co55_derived) = drate_dT; + rate_Ni58_p_to_He4_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni58_p_to_He4_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_to_He4_Co55_derived) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_derived + { + // S32_He4_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_derived) = drate_dT; + rate_S32_He4_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_derived) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_derived + { + // Ar36_to_He4_S32_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_He4_S32_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_derived) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_derived + { + // Ar36_to_p_Cl35_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_derived) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_derived + { + // Ar36_He4_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_derived) = drate_dT; + rate_Ar36_He4_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_derived) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_derived + { + // Ca40_to_He4_Ar36_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_derived) = drate_dT; + } } - } - { - // Ca40_to_p_K39_derived + { + // Ca40_to_p_K39_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_to_p_K39_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_derived) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_derived + { + // Ca40_He4_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_derived) = drate_dT; + rate_Ca40_He4_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_derived + { + // Ti44_to_He4_Ca40_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_derived) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_derived + { + // Ti44_to_p_Sc43_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_derived) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_derived + { + // V47_p_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; +#ifdef SCREENING + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } +#endif + rate_V47_p_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // Cr48_to_p_V47_derived + { + // Cr48_to_He4_Ti44_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_derived) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_derived + { + // Cr48_to_p_V47_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; -#ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Cr48_to_p_V47_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_derived) = drate_dT; + } } -#endif - rate_p_V47_to_He4_Ti44_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_derived) = drate_dT; - } - } + } + } #endif diff --git a/networks/he-burn/he-burn-33am/modified_rates.H b/networks/he-burn/he-burn-33am/modified_rates.H index e0ca08a1d..edbab795f 100644 --- a/networks/he-burn/he-burn-33am/modified_rates.H +++ b/networks/he-burn/he-burn-33am/modified_rates.H @@ -12,24 +12,29 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template AMREX_GPU_DEVICE AMREX_INLINE - void rate_He4_N14_to_Ne20_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_N14_1p5He4_to_Ne20_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // N14 + 1.5 He4 --> Ne20 (calls the underlying rate) + // represents the sequence: N14 + 1.5α -> Ne20 - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_p_O16_to_N14_He4_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_p_p_to_N14_He4_beta_pos_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + p + p --> N14 + He4 (calls the underlying rate) + // represents the sequence: O16(p,γ)F17(e+ν)O17(p,α)N14 - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template @@ -37,6 +42,7 @@ namespace modified_rates { void rate_C12_C12_to_Mg24_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // C12 + C12 --> Mg24 (calls the underlying rate) + // represents the sequence: c12(c12,n)mg23(n,γ)mg24 rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } @@ -46,22 +52,24 @@ namespace modified_rates { void rate_O16_O16_to_S32_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + O16 --> S32 (calls the underlying rate) + // represents the sequence: o16(o16,n)s31(n,γ)s32 rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template AMREX_GPU_DEVICE AMREX_INLINE - void rate_C12_O16_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + void rate_O16_C12_to_Si28_modified(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { // O16 + C12 --> Si28 (calls the underlying rate) + // represents the sequence: o16(c12,n)si27(n,γ)si28 - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); } template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) @@ -71,7 +79,7 @@ namespace modified_rates { [[maybe_unused]] amrex::Real drate_dT; { - // He4_N14_to_Ne20_modified + // N14_1p5He4_to_Ne20_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -81,15 +89,15 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); } #endif - rate_He4_N14_to_Ne20_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_Ne20_modified) = rate; + rate_N14_1p5He4_to_Ne20_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_1p5He4_to_Ne20_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_Ne20_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_N14_1p5He4_to_Ne20_modified) = drate_dT; } } { - // p_O16_to_N14_He4_modified + // O16_p_p_to_N14_He4_beta_pos_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -99,10 +107,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); } #endif - rate_p_O16_to_N14_He4_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_N14_He4_modified) = rate; + rate_O16_p_p_to_N14_He4_beta_pos_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_p_to_N14_He4_beta_pos_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_N14_He4_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_p_p_to_N14_He4_beta_pos_modified) = drate_dT; } } @@ -143,7 +151,7 @@ namespace modified_rates { } { - // C12_O16_to_Si28_modified + // O16_C12_to_Si28_modified amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; @@ -153,10 +161,10 @@ namespace modified_rates { dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); } #endif - rate_C12_O16_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_Si28_modified) = rate; + rate_O16_C12_to_Si28_modified(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_Si28_modified) = rate; if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_Si28_modified) = drate_dT; + rate_eval.dscreened_rates_dT(k_O16_C12_to_Si28_modified) = drate_dT; } } diff --git a/networks/he-burn/he-burn-33am/pynucastro-info.txt b/networks/he-burn/he-burn-33am/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/he-burn/he-burn-33am/pynucastro-info.txt +++ b/networks/he-burn/he-burn-33am/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/he-burn/he-burn-33am/reaclib_rates.H b/networks/he-burn/he-burn-33am/reaclib_rates.H index 2c47ecd4c..bdaecadab 100644 --- a/networks/he-burn/he-burn-33am/reaclib_rates.H +++ b/networks/he-burn/he-burn-33am/reaclib_rates.H @@ -8,4914 +8,4917 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + p --> N13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + p --> N13 - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - ln_set_rate += log_scor; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + ln_set_rate += log_scor; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> Fe52 - // Mn51 + p --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> Co55 - // Mn51 + He4 --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 - + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i - + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_He4_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co55_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + He4 --> Cu59 - // Co55 + He4 --> Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.2921 + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 + + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.2921 + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 - + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i + + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i - + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_He4_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni56_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + He4 --> Zn60 - // Ni56 + He4 --> Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.0733 + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 + + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.0733 + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 - + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i + + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i - + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_p_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu59_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + p --> Zn60 - // Cu59 + p --> Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.226 + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 + + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.226 + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 - + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i + + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i - + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p + Mn51 - // Cr48 + He4 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_p_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu59_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + p --> He4 + Ni56 - // Cu59 + p --> He4 + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.7688 + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 + + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.7688 + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 - + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i + + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i - + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_n_S31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> n + S31 - // O16 + O16 --> n + S31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 + + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; - // cf88r - ln_set_rate = 77.5491 + -0.373641 * tfactors.T9i + -120.83 * tfactors.T913i + -7.72334 * tfactors.T913 - + -2.27939 * tfactors.T9 + 0.167655 * tfactors.T953 + 7.62001 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i + + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.373641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -120.83 * tfactors.T943i + (1.0/3.0) * -7.72334 * tfactors.T923i - + -2.27939 + (5.0/3.0) * 0.167655 * tfactors.T923 + 7.62001 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_n_Si27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> n + Si27 - // O16 + C12 --> n + Si27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 + + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; - // cf88r - ln_set_rate = -132.213 + -1.46479 * tfactors.T9i + -293.089 * tfactors.T913i + 414.404 * tfactors.T913 - + -28.0562 * tfactors.T9 + 1.61807 * tfactors.T953 + -178.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i + + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.46479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -293.089 * tfactors.T943i + (1.0/3.0) * 414.404 * tfactors.T923i - + -28.0562 + (5.0/3.0) * 1.61807 * tfactors.T923 + -178.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_p_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn55_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 + p --> Fe56 - // Mn55 + p --> Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.1888 + -36.1995 * tfactors.T913i + 1.15346 * tfactors.T913 + + -1.94437 * tfactors.T9 + 0.218429 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.1888 + -36.1995 * tfactors.T913i + 1.15346 * tfactors.T913 - + -1.94437 * tfactors.T9 + 0.218429 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 1.15346 * tfactors.T923i + + -1.94437 + (5.0/3.0) * 0.218429 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 1.15346 * tfactors.T923i - + -1.94437 + (5.0/3.0) * 0.218429 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe52_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + n --> Fe53 - // Fe52 + n --> Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.8885 + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; - // ths8r - ln_set_rate = 15.8885 + -0.344319 * tfactors.T913 - + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i - + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_n_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe53_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + n --> Fe54 - // Fe53 + n --> Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4534 + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; - // ths8r - ln_set_rate = 16.4534 + -1.10421 * tfactors.T913 - + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i - + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_He4_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe53_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + He4 --> Ni57 - // Fe53 + He4 --> Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 69.0636 + -91.7231 * tfactors.T913i + -10.1816 * tfactors.T913 + + -0.0406303 * tfactors.T9 + 0.0345056 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 69.0636 + -91.7231 * tfactors.T913i + -10.1816 * tfactors.T913 - + -0.0406303 * tfactors.T9 + 0.0345056 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * -10.1816 * tfactors.T923i + + -0.0406303 + (5.0/3.0) * 0.0345056 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * -10.1816 * tfactors.T923i - + -0.0406303 + (5.0/3.0) * 0.0345056 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe54_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + n --> Fe55 - // Fe54 + n --> Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; - // ks03 - ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 - + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i - + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe54_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + p --> Co55 - // Fe54 + p --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 - + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i - + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + He4 --> Ni58 - // Fe54 + He4 --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 - + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i - + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_n_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe55_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + n --> Fe56 - // Fe55 + n --> Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; - // ks03 - ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 - + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i - + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_p_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe55_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + p --> Co56 - // Fe55 + p --> Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.7333 + -37.1585 * tfactors.T913i + 1.66198 * tfactors.T913 + + -1.60842 * tfactors.T9 + 0.148916 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.7333 + -37.1585 * tfactors.T913i + 1.66198 * tfactors.T913 - + -1.60842 * tfactors.T9 + 0.148916 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1585 * tfactors.T943i + (1.0/3.0) * 1.66198 * tfactors.T923i + + -1.60842 + (5.0/3.0) * 0.148916 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1585 * tfactors.T943i + (1.0/3.0) * 1.66198 * tfactors.T923i - + -1.60842 + (5.0/3.0) * 0.148916 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe56_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + p --> Co57 - // Fe56 + p --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 - + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i - + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_n_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co55_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + n --> Co56 - // Co55 + n --> Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.065 + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; - // ths8r - ln_set_rate = 17.065 + -1.86357 * tfactors.T913 - + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i - + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> Co57 - // Co56 + n --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.3552 + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; - // ths8r - ln_set_rate = 17.3552 + -1.37855 * tfactors.T913 - + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i - + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co56_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + p --> Ni57 - // Co56 + p --> Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.5937 + -38.1094 * tfactors.T913i + 2.57091 * tfactors.T913 + + -2.07795 * tfactors.T9 + 0.20757 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.5937 + -38.1094 * tfactors.T913i + 2.57091 * tfactors.T913 - + -2.07795 * tfactors.T9 + 0.20757 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1094 * tfactors.T943i + (1.0/3.0) * 2.57091 * tfactors.T923i + + -2.07795 + (5.0/3.0) * 0.20757 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1094 * tfactors.T943i + (1.0/3.0) * 2.57091 * tfactors.T923i - + -2.07795 + (5.0/3.0) * 0.20757 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co57_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p --> Ni58 - // Co57 + p --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 - + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i - + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> Ni57 - // Ni56 + n --> Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.0765 + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; - // ths8r - ln_set_rate = 16.0765 + -1.19665 * tfactors.T913 - + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i - + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_n_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni57_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + n --> Ni58 - // Ni57 + n --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.2731 + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; - // ths8r - ln_set_rate = 17.2731 + -1.90814 * tfactors.T913 - + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i - + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni58_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + p --> Cu59 - // Ni58 + p --> Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 36.6662 + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 + + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // si13n - ln_set_rate = 36.6662 + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 - + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i + + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i - + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> p + Fe54 - // Mn51 + He4 --> p + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 - + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i - + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_He4_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe53_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + He4 --> p + Co56 - // Fe53 + He4 --> p + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.8614 + -91.7231 * tfactors.T913i + 10.052 * tfactors.T913 + + -3.86332 * tfactors.T9 + 0.391105 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.8614 + -91.7231 * tfactors.T913i + 10.052 * tfactors.T913 - + -3.86332 * tfactors.T9 + 0.391105 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * 10.052 * tfactors.T923i + + -3.86332 + (5.0/3.0) * 0.391105 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * 10.052 * tfactors.T923i - + -3.86332 + (5.0/3.0) * 0.391105 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_n_to_p_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe55_to_p_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + n --> p + Mn55 - // Fe55 + n --> p + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 4.70639 + 7.03052 * tfactors.T913 + + 0.260509 * tfactors.T9 + -0.0813397 * tfactors.T953; - // ths8r - ln_set_rate = 4.70639 + 7.03052 * tfactors.T913 - + 0.260509 * tfactors.T9 + -0.0813397 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 7.03052 * tfactors.T923i + + 0.260509 + (5.0/3.0) * -0.0813397 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 7.03052 * tfactors.T923i - + 0.260509 + (5.0/3.0) * -0.0813397 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_n_to_p_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co55_to_p_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + n --> p + Fe55 - // Co55 + n --> p + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.7398 + -1.62382 * tfactors.T913 + + 0.58115 * tfactors.T9 + -0.0537057 * tfactors.T953; - // ths8r - ln_set_rate = 20.7398 + -1.62382 * tfactors.T913 - + 0.58115 * tfactors.T9 + -0.0537057 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.62382 * tfactors.T923i + + 0.58115 + (5.0/3.0) * -0.0537057 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.62382 * tfactors.T923i - + 0.58115 + (5.0/3.0) * -0.0537057 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_He4_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co55_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + He4 --> p + Ni58 - // Co55 + He4 --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 - + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i - + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> p + Fe56 - // Co56 + n --> p + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.4539 + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; - // ths8r - ln_set_rate = 20.4539 + -1.13331 * tfactors.T913 - + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i - + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co57_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p --> He4 + Fe54 - // Co57 + p --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 - + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i - + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> p + Co56 - // Ni56 + n --> p + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.5693 + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; - // ths8r - ln_set_rate = 15.5693 + 1.76846 * tfactors.T913 - + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i - + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_He4_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_He4_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> He4 + Fe53 - // Ni56 + n --> He4 + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -7.84393 + 6.43259 * tfactors.T913 + + 2.29591 * tfactors.T9 + -0.254724 * tfactors.T953; - // ths8r - ln_set_rate = -7.84393 + 6.43259 * tfactors.T913 - + 2.29591 * tfactors.T9 + -0.254724 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 6.43259 * tfactors.T923i + + 2.29591 + (5.0/3.0) * -0.254724 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 6.43259 * tfactors.T923i - + 2.29591 + (5.0/3.0) * -0.254724 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_n_to_p_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni57_to_p_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + n --> p + Co57 - // Ni57 + n --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.9939 + -1.13177 * tfactors.T913 + + 0.56875 * tfactors.T9 + -0.0579913 * tfactors.T953; - // ths8r - ln_set_rate = 19.9939 + -1.13177 * tfactors.T913 - + 0.56875 * tfactors.T9 + -0.0579913 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.13177 * tfactors.T923i + + 0.56875 + (5.0/3.0) * -0.0579913 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.13177 * tfactors.T923i - + 0.56875 + (5.0/3.0) * -0.0579913 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_n_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni57_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + n --> He4 + Fe54 - // Ni57 + n --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.5327 + 0.48562 * tfactors.T913 + + -0.0249302 * tfactors.T9 + 0.0509605 * tfactors.T953; - // ths8r - ln_set_rate = 14.5327 + 0.48562 * tfactors.T913 - + -0.0249302 * tfactors.T9 + 0.0509605 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.48562 * tfactors.T923i + + -0.0249302 + (5.0/3.0) * 0.0509605 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.48562 * tfactors.T923i - + -0.0249302 + (5.0/3.0) * 0.0509605 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_n_to_He4_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni58_to_He4_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + n --> He4 + Fe55 - // Ni58 + n --> He4 + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -2.03901 + 3.44996 * tfactors.T913 + + 2.98226 * tfactors.T9 + -0.387699 * tfactors.T953; - // ths8r - ln_set_rate = -2.03901 + 3.44996 * tfactors.T913 - + 2.98226 * tfactors.T9 + -0.387699 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 3.44996 * tfactors.T923i + + 2.98226 + (5.0/3.0) * -0.387699 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 3.44996 * tfactors.T923i - + 2.98226 + (5.0/3.0) * -0.387699 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_n_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu59_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + n --> He4 + Co56 - // Cu59 + n --> He4 + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.0108 + -1.00882 * tfactors.T913 + + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; - // ths8r - ln_set_rate = 11.0108 + -1.00882 * tfactors.T913 - + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.00882 * tfactors.T923i + + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.00882 * tfactors.T923i - + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_n_to_He4_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn60_to_He4_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 + n --> He4 + Ni57 - // Zn60 + n --> He4 + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.4241 + 5.43552 * tfactors.T913 + + -1.25169 * tfactors.T9 + 0.148383 * tfactors.T953; - // ths8r - ln_set_rate = 12.4241 + 5.43552 * tfactors.T913 - + -1.25169 * tfactors.T9 + 0.148383 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 5.43552 * tfactors.T923i + + -1.25169 + (5.0/3.0) * 0.148383 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 5.43552 * tfactors.T923i - + -1.25169 + (5.0/3.0) * 0.148383 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - ln_set_rate += log_scor; + // K39 + p --> Ca40 - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + rate = 0.0; + drate_dT = 0.0; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; -} + ln_set_rate += log_scor; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - // K39 + p --> He4 + Ar36 + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - rate = 0.0; - drate_dT = 0.0; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_Fe52_reaclib + { + // Mn51_p_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_Co55_reaclib + { + // Mn51_He4_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_Co55_reaclib) = drate_dT; + rate_Mn51_He4_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_Co55_to_Cu59_reaclib + { + // Co55_He4_to_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); - } + log_scor = rate_eval.log_screen(k_He4_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); + } #endif - rate_He4_Co55_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_Cu59_reaclib) = drate_dT; + rate_Co55_He4_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_He4_to_Cu59_reaclib) = drate_dT; + } } - } - { - // He4_Ni56_to_Zn60_reaclib + { + // Ni56_He4_to_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); - } + log_scor = rate_eval.log_screen(k_He4_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); + } #endif - rate_He4_Ni56_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni56_to_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_Zn60_reaclib) = drate_dT; + rate_Ni56_He4_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_He4_to_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_Zn60_reaclib) = drate_dT; + } } - } - { - // p_Cu59_to_Zn60_reaclib + { + // Cu59_p_to_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); - } + log_scor = rate_eval.log_screen(k_p_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); + } #endif - rate_p_Cu59_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_Zn60_reaclib) = drate_dT; + rate_Cu59_p_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_p_to_Zn60_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_Mn51_reaclib + { + // Cr48_He4_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // p_Cu59_to_He4_Ni56_reaclib + { + // Cu59_p_to_He4_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); - } + log_scor = rate_eval.log_screen(k_p_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); + } #endif - rate_p_Cu59_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_He4_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_He4_Ni56_reaclib) = drate_dT; + rate_Cu59_p_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_He4_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_p_to_He4_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_n_S31_reaclib + { + // O16_O16_to_n_S31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + rate_O16_O16_to_n_S31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_n_S31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_n_S31_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_n_Si27_reaclib + { + // O16_C12_to_n_Si27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_n_Si27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_n_Si27_reaclib) = drate_dT; + rate_O16_C12_to_n_Si27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_n_Si27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_n_Si27_reaclib) = drate_dT; + } } - } - { - // p_Mn55_to_Fe56_reaclib + { + // Mn55_p_to_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); - } + log_scor = rate_eval.log_screen(k_p_Mn55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); + } #endif - rate_p_Mn55_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn55_to_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn55_to_Fe56_reaclib) = drate_dT; + rate_Mn55_p_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_p_to_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_p_to_Fe56_reaclib) = drate_dT; + } } - } - { - // n_Fe52_to_Fe53_reaclib + { + // Fe52_n_to_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe52_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe52_to_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_n_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_to_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_to_Fe53_reaclib) = drate_dT; + } } - } - { - // n_Fe53_to_Fe54_reaclib + { + // Fe53_n_to_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe53_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe53_to_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_n_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_n_to_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_reaclib) = drate_dT; + } } - } - { - // He4_Fe53_to_Ni57_reaclib + { + // Fe53_He4_to_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); - } + log_scor = rate_eval.log_screen(k_He4_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); + } #endif - rate_He4_Fe53_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe53_to_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe53_to_Ni57_reaclib) = drate_dT; + rate_Fe53_He4_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_He4_to_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_He4_to_Ni57_reaclib) = drate_dT; + } } - } - { - // n_Fe54_to_Fe55_reaclib + { + // Fe54_n_to_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe54_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe54_to_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_n_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_to_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_to_Fe55_reaclib) = drate_dT; + } } - } - { - // p_Fe54_to_Co55_reaclib + { + // Fe54_p_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); - } + log_scor = rate_eval.log_screen(k_p_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); + } #endif - rate_p_Fe54_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe54_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_Co55_reaclib) = drate_dT; + rate_Fe54_p_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_p_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_to_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe54_to_Ni58_reaclib + { + // Fe54_He4_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe54_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_Ni58_reaclib) = drate_dT; + rate_Fe54_He4_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_He4_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_Ni58_reaclib) = drate_dT; + } } - } - { - // n_Fe55_to_Fe56_reaclib + { + // Fe55_n_to_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe55_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe55_to_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_n_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_n_to_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_reaclib) = drate_dT; + } } - } - { - // p_Fe55_to_Co56_reaclib + { + // Fe55_p_to_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); - } + log_scor = rate_eval.log_screen(k_p_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); + } #endif - rate_p_Fe55_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe55_to_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe55_to_Co56_reaclib) = drate_dT; + rate_Fe55_p_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_p_to_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_p_to_Co56_reaclib) = drate_dT; + } } - } - { - // p_Fe56_to_Co57_reaclib + { + // Fe56_p_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); - } + log_scor = rate_eval.log_screen(k_p_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); + } #endif - rate_p_Fe56_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe56_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_Co57_reaclib) = drate_dT; + rate_Fe56_p_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_p_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_to_Co57_reaclib) = drate_dT; + } } - } - { - // n_Co55_to_Co56_reaclib + { + // Co55_n_to_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co55_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co55_to_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co55_to_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_n_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_n_to_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_n_to_Co56_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_Co57_reaclib + { + // Co56_n_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_Co57_reaclib) = drate_dT; + } } - } - { - // p_Co56_to_Ni57_reaclib + { + // Co56_p_to_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); - } + log_scor = rate_eval.log_screen(k_p_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); + } #endif - rate_p_Co56_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co56_to_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co56_to_Ni57_reaclib) = drate_dT; + rate_Co56_p_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_p_to_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_to_Ni57_reaclib) = drate_dT; + } } - } - { - // p_Co57_to_Ni58_reaclib + { + // Co57_p_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); - } + log_scor = rate_eval.log_screen(k_p_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); + } #endif - rate_p_Co57_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_Ni58_reaclib) = drate_dT; + rate_Co57_p_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_to_Ni58_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_Ni57_reaclib + { + // Ni56_n_to_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_Ni57_reaclib) = drate_dT; + } } - } - { - // n_Ni57_to_Ni58_reaclib + { + // Ni57_n_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_n_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_reaclib) = drate_dT; + } } - } - { - // p_Ni58_to_Cu59_reaclib + { + // Ni58_p_to_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); - } + log_scor = rate_eval.log_screen(k_p_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); + } #endif - rate_p_Ni58_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni58_to_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_Cu59_reaclib) = drate_dT; + rate_Ni58_p_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_p_to_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_to_Cu59_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_p_Fe54_reaclib + { + // Mn51_He4_to_p_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_p_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_p_Fe54_reaclib) = drate_dT; + rate_Mn51_He4_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_p_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_p_Fe54_reaclib) = drate_dT; + } } - } - { - // He4_Fe53_to_p_Co56_reaclib + { + // Fe53_He4_to_p_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); - } + log_scor = rate_eval.log_screen(k_He4_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); + } #endif - rate_He4_Fe53_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe53_to_p_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe53_to_p_Co56_reaclib) = drate_dT; + rate_Fe53_He4_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_He4_to_p_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_He4_to_p_Co56_reaclib) = drate_dT; + } } - } - { - // n_Fe55_to_p_Mn55_reaclib + { + // Fe55_n_to_p_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe55_to_p_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe55_to_p_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe55_to_p_Mn55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_n_to_p_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_n_to_p_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_n_to_p_Mn55_reaclib) = drate_dT; + } } - } - { - // n_Co55_to_p_Fe55_reaclib + { + // Co55_n_to_p_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co55_to_p_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co55_to_p_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co55_to_p_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_n_to_p_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_n_to_p_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_n_to_p_Fe55_reaclib) = drate_dT; + } } - } - { - // He4_Co55_to_p_Ni58_reaclib + { + // Co55_He4_to_p_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); - } + log_scor = rate_eval.log_screen(k_He4_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); + } #endif - rate_He4_Co55_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_p_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_p_Ni58_reaclib) = drate_dT; + rate_Co55_He4_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_p_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_He4_to_p_Ni58_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_p_Fe56_reaclib + { + // Co56_n_to_p_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_p_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_p_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_p_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_p_Fe56_reaclib) = drate_dT; + } } - } - { - // p_Co57_to_He4_Fe54_reaclib + { + // Co57_p_to_He4_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); - } + log_scor = rate_eval.log_screen(k_p_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); + } #endif - rate_p_Co57_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_He4_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_He4_Fe54_reaclib) = drate_dT; + rate_Co57_p_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_He4_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_to_He4_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_p_Co56_reaclib + { + // Ni56_n_to_p_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_p_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_p_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_p_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_p_Co56_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_He4_Fe53_reaclib + { + // Ni56_n_to_He4_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_He4_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_He4_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_He4_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_He4_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_He4_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_He4_Fe53_reaclib) = drate_dT; + } } - } - { - // n_Ni57_to_p_Co57_reaclib + { + // Ni57_n_to_p_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_p_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_p_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_p_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_n_to_p_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_p_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_n_to_p_Co57_reaclib) = drate_dT; + } } - } - { - // n_Ni57_to_He4_Fe54_reaclib + { + // Ni57_n_to_He4_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_He4_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_He4_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_n_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_He4_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_n_to_He4_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Ni58_to_He4_Fe55_reaclib + { + // Ni58_n_to_He4_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni58_to_He4_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni58_to_He4_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni58_to_He4_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_n_to_He4_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_n_to_He4_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_n_to_He4_Fe55_reaclib) = drate_dT; + } } - } - { - // n_Cu59_to_He4_Co56_reaclib + { + // Cu59_n_to_He4_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu59_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu59_to_He4_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu59_to_He4_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_n_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_n_to_He4_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_n_to_He4_Co56_reaclib) = drate_dT; + } } - } - { - // n_Zn60_to_He4_Ni57_reaclib + { + // Zn60_n_to_He4_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn60_to_He4_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn60_to_He4_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn60_to_He4_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_n_to_He4_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_n_to_He4_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_n_to_He4_Ni57_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/he-burn/he-burn-33am/tabular_weak_rates.H b/networks/he-burn/he-burn-33am/tabular_weak_rates.H new file mode 100644 index 000000000..e0a9d7f8f --- /dev/null +++ b/networks/he-burn/he-burn-33am/tabular_weak_rates.H @@ -0,0 +1,132 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_Co55_Fe55_meta, j_Co55_Fe55_rhoy, j_Co55_Fe55_temp, j_Co55_Fe55_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co55_to_Fe55_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_Fe55_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co55) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe55_Co55_meta, j_Fe55_Co55_rhoy, j_Fe55_Co55_temp, j_Fe55_Co55_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe55_to_Co55_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_Co55_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe55_Mn55_meta, j_Fe55_Mn55_rhoy, j_Fe55_Mn55_temp, j_Fe55_Mn55_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_Mn55_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn55_Fe55_meta, j_Mn55_Fe55_rhoy, j_Mn55_Fe55_temp, j_Mn55_Fe55_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_to_Fe55_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn55) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co57_Ni57_meta, j_Co57_Ni57_rhoy, j_Co57_Ni57_temp, j_Co57_Ni57_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co57_to_Ni57_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_Ni57_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni57_Co57_meta, j_Ni57_Co57_rhoy, j_Ni57_Co57_temp, j_Ni57_Co57_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni57_to_Co57_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_Co57_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_to_n_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/he-burn/he-burn-33am/temperature_table_rates.H b/networks/he-burn/he-burn-33am/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/he-burn/he-burn-33am/temperature_table_rates.H +++ b/networks/he-burn/he-burn-33am/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/he-burn/he_burn_core.py b/networks/he-burn/he_burn_core.py index 4ea8ac256..d8cdad344 100644 --- a/networks/he-burn/he_burn_core.py +++ b/networks/he-burn/he_burn_core.py @@ -41,7 +41,8 @@ def get_core_library(*, # N14 + 1.5 He4 -> Ne20 n14agf18 = reaclib_lib.get_rate_by_name("n14(a,g)f18") n14_new = pyna.ModifiedRate(n14agf18, new_products=["ne20"], - stoichiometry={pyna.Nucleus("he4"): 1.5}) + stoichiometry={pyna.Nucleus("he4"): 1.5}, + description="N14 + 1.5α -> Ne20") core_lib.add_rate(n14_new) @@ -50,12 +51,14 @@ def get_core_library(*, o16pgf17 = reaclib_lib.get_rate_by_name("o16(p,g)f17") if "o17" in nuclei: o16_new = pyna.ModifiedRate(o16pgf17, - new_products=["o17"]) + new_products=["o17"], + description="O16(p,γ)F17(e+ν)O17") else: o16_new = pyna.ModifiedRate(o16pgf17, new_reactants=["p", "o16"], new_products=["n14", "he4"], - stoichiometry={pyna.Nucleus("p"): 2}) + stoichiometry={pyna.Nucleus("p"): 2}, + description="O16(p,γ)F17(e+ν)O17(p,α)N14") core_lib.add_rate(o16_new) @@ -67,7 +70,8 @@ def get_core_library(*, for r, mp in other_rates: _r = reaclib_lib.get_rate_by_name(r) - new_rate = pyna.ModifiedRate(_r, new_products=[mp]) + new_rate = pyna.ModifiedRate(_r, new_products=[mp], + description=f"{r}(n,γ){mp}") core_lib += pyna.Library(rates=[new_rate]) # finally, the aprox nets don't include the reverse rates for diff --git a/networks/ignition_reaclib/C-burn-simple/Make.package b/networks/ignition_reaclib/C-burn-simple/Make.package index 35413fdcf..e66796431 100644 --- a/networks/ignition_reaclib/C-burn-simple/Make.package +++ b/networks/ignition_reaclib/C-burn-simple/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/ignition_reaclib/C-burn-simple/actual_network.H b/networks/ignition_reaclib/C-burn-simple/actual_network.H index 00f17ec02..d01d63957 100644 --- a/networks/ignition_reaclib/C-burn-simple/actual_network.H +++ b/networks/ignition_reaclib/C-burn-simple/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -147,9 +147,9 @@ namespace Rates k_C12_C12_to_He4_Ne20_reaclib = 1, k_C12_C12_to_n_Mg23_reaclib = 2, k_C12_C12_to_p_Na23_reaclib = 3, - k_He4_C12_to_O16_reaclib = 4, - k_n_to_p_weaktab = 5, - NumRates = k_n_to_p_weaktab + k_C12_He4_to_O16_reaclib = 4, + k_n_to_p_beta_neg_weaktab = 5, + NumRates = k_n_to_p_beta_neg_weaktab }; enum ScreenPairs : @@ -169,8 +169,8 @@ namespace Rates "C12_C12_to_He4_Ne20_reaclib", // 1, "C12_C12_to_n_Mg23_reaclib", // 2, "C12_C12_to_p_Na23_reaclib", // 3, - "He4_C12_to_O16_reaclib", // 4, - "n_to_p_weaktab" // 5, + "C12_He4_to_O16_reaclib", // 4, + "n_to_p_beta_neg_weaktab" // 5, }; template diff --git a/networks/ignition_reaclib/C-burn-simple/actual_rhs.H b/networks/ignition_reaclib/C-burn-simple/actual_rhs.H index 693529849..c8c32d7c9 100644 --- a/networks/ignition_reaclib/C-burn-simple/actual_rhs.H +++ b/networks/ignition_reaclib/C-burn-simple/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -102,9 +99,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -116,7 +115,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -124,35 +125,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_to_p_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -204,22 +190,15 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(N) = - -screened_rates(k_n_to_p_weaktab)*Y(N); + -screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N); ydot_nuc(H1) = - screened_rates(k_n_to_p_weaktab)*Y(N); + screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N); ydot_nuc(He4) = 0.0_rt; @@ -242,30 +221,30 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(N) = - -screened_rates(k_n_to_p_weaktab)*Y(N) + + -screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(H1) = 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - screened_rates(k_n_to_p_weaktab)*Y(N); + screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N); ydot_nuc(He4) = 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho; + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho; ydot_nuc(C12) = -screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(O16) = - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho; + screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho; ydot_nuc(Ne20) = 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho; @@ -330,12 +309,14 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_n_to_p_weaktab); + scratch = -screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(N, N, scratch); jac.set(N, H1, 0.0); @@ -353,7 +334,7 @@ void jac_nuc(const burn_t& state, jac.set(N, Mg23, 0.0); - scratch = screened_rates(k_n_to_p_weaktab); + scratch = screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(H1, N, scratch); jac.set(H1, H1, 0.0); @@ -375,10 +356,10 @@ void jac_nuc(const burn_t& state, jac.set(He4, H1, 0.0); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, C12, scratch); jac.set(He4, O16, 0.0); @@ -393,10 +374,10 @@ void jac_nuc(const burn_t& state, jac.set(C12, H1, 0.0); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho; jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(C12, C12, scratch); jac.set(C12, O16, 0.0); @@ -411,10 +392,10 @@ void jac_nuc(const burn_t& state, jac.set(O16, H1, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho; jac.set(O16, He4, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, C12, scratch); jac.set(O16, O16, 0.0); diff --git a/networks/ignition_reaclib/C-burn-simple/approximate_rates.H b/networks/ignition_reaclib/C-burn-simple/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/ignition_reaclib/C-burn-simple/approximate_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/ignition_reaclib/C-burn-simple/branched_rates.H b/networks/ignition_reaclib/C-burn-simple/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/ignition_reaclib/C-burn-simple/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/ignition_reaclib/C-burn-simple/derived_rates.H b/networks/ignition_reaclib/C-burn-simple/derived_rates.H index 579d7dd3d..2d8da657a 100644 --- a/networks/ignition_reaclib/C-burn-simple/derived_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/derived_rates.H @@ -7,21 +7,23 @@ #include #include -using namespace Rates; +namespace derived_rates { + using namespace Rates; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + } + } #endif diff --git a/networks/ignition_reaclib/C-burn-simple/modified_rates.H b/networks/ignition_reaclib/C-burn-simple/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/ignition_reaclib/C-burn-simple/modified_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt b/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt +++ b/networks/ignition_reaclib/C-burn-simple/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/ignition_reaclib/C-burn-simple/reaclib_rates.H b/networks/ignition_reaclib/C-burn-simple/reaclib_rates.H index 4cdadbcd6..920a748a4 100644 --- a/networks/ignition_reaclib/C-burn-simple/reaclib_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/reaclib_rates.H @@ -8,258 +8,261 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + C12 --> He4 + Ne20 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + C12 --> He4 + Ne20 - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H b/networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H new file mode 100644 index 000000000..45c39fe2a --- /dev/null +++ b/networks/ignition_reaclib/C-burn-simple/tabular_weak_rates.H @@ -0,0 +1,44 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/ignition_reaclib/C-burn-simple/temperature_table_rates.H b/networks/ignition_reaclib/C-burn-simple/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/ignition_reaclib/C-burn-simple/temperature_table_rates.H +++ b/networks/ignition_reaclib/C-burn-simple/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/ignition_reaclib/URCA-medium/Make.package b/networks/ignition_reaclib/URCA-medium/Make.package index 35413fdcf..e66796431 100644 --- a/networks/ignition_reaclib/URCA-medium/Make.package +++ b/networks/ignition_reaclib/URCA-medium/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/ignition_reaclib/URCA-medium/actual_network.H b/networks/ignition_reaclib/URCA-medium/actual_network.H index d3c72b3cd..4548852d5 100644 --- a/networks/ignition_reaclib/URCA-medium/actual_network.H +++ b/networks/ignition_reaclib/URCA-medium/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -162,29 +162,29 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_p_C12_to_N13_reaclib = 1, - k_He4_C12_to_O16_reaclib = 2, - k_He4_O16_to_Ne20_reaclib = 3, - k_He4_Ne20_to_Mg24_reaclib = 4, - k_p_Na23_to_Mg24_reaclib = 5, - k_n_Mg23_to_Mg24_reaclib = 6, + k_C12_p_to_N13_reaclib = 1, + k_C12_He4_to_O16_reaclib = 2, + k_O16_He4_to_Ne20_reaclib = 3, + k_Ne20_He4_to_Mg24_reaclib = 4, + k_Na23_p_to_Mg24_reaclib = 5, + k_Mg23_n_to_Mg24_reaclib = 6, k_C12_C12_to_n_Mg23_reaclib = 7, k_C12_C12_to_p_Na23_reaclib = 8, k_C12_C12_to_He4_Ne20_reaclib = 9, - k_He4_N13_to_p_O16_reaclib = 10, - k_C12_O16_to_He4_Mg24_reaclib = 11, - k_He4_Ne20_to_p_Na23_reaclib = 12, - k_p_Na23_to_He4_Ne20_reaclib = 13, - k_n_Mg23_to_p_Na23_reaclib = 14, - k_n_Mg23_to_He4_Ne20_reaclib = 15, - k_n_Mg23_to_C12_C12_reaclib = 16, + k_N13_He4_to_p_O16_reaclib = 10, + k_O16_C12_to_He4_Mg24_reaclib = 11, + k_Ne20_He4_to_p_Na23_reaclib = 12, + k_Na23_p_to_He4_Ne20_reaclib = 13, + k_Mg23_n_to_p_Na23_reaclib = 14, + k_Mg23_n_to_He4_Ne20_reaclib = 15, + k_Mg23_n_to_C12_C12_reaclib = 16, k_He4_He4_He4_to_C12_reaclib = 17, - k_Na23_to_Ne23_weaktab = 18, - k_Ne23_to_Na23_weaktab = 19, - k_Mg23_to_Na23_weaktab = 20, - k_n_to_p_weaktab = 21, - k_p_to_n_weaktab = 22, - NumRates = k_p_to_n_weaktab + k_Na23_to_Ne23_electron_capture_weaktab = 18, + k_Ne23_to_Na23_beta_neg_weaktab = 19, + k_Mg23_to_Na23_electron_capture_weaktab = 20, + k_n_to_p_beta_neg_weaktab = 21, + k_p_to_n_electron_capture_weaktab = 22, + NumRates = k_p_to_n_electron_capture_weaktab }; enum ScreenPairs : @@ -209,28 +209,28 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "p_C12_to_N13_reaclib", // 1, - "He4_C12_to_O16_reaclib", // 2, - "He4_O16_to_Ne20_reaclib", // 3, - "He4_Ne20_to_Mg24_reaclib", // 4, - "p_Na23_to_Mg24_reaclib", // 5, - "n_Mg23_to_Mg24_reaclib", // 6, + "C12_p_to_N13_reaclib", // 1, + "C12_He4_to_O16_reaclib", // 2, + "O16_He4_to_Ne20_reaclib", // 3, + "Ne20_He4_to_Mg24_reaclib", // 4, + "Na23_p_to_Mg24_reaclib", // 5, + "Mg23_n_to_Mg24_reaclib", // 6, "C12_C12_to_n_Mg23_reaclib", // 7, "C12_C12_to_p_Na23_reaclib", // 8, "C12_C12_to_He4_Ne20_reaclib", // 9, - "He4_N13_to_p_O16_reaclib", // 10, - "C12_O16_to_He4_Mg24_reaclib", // 11, - "He4_Ne20_to_p_Na23_reaclib", // 12, - "p_Na23_to_He4_Ne20_reaclib", // 13, - "n_Mg23_to_p_Na23_reaclib", // 14, - "n_Mg23_to_He4_Ne20_reaclib", // 15, - "n_Mg23_to_C12_C12_reaclib", // 16, + "N13_He4_to_p_O16_reaclib", // 10, + "O16_C12_to_He4_Mg24_reaclib", // 11, + "Ne20_He4_to_p_Na23_reaclib", // 12, + "Na23_p_to_He4_Ne20_reaclib", // 13, + "Mg23_n_to_p_Na23_reaclib", // 14, + "Mg23_n_to_He4_Ne20_reaclib", // 15, + "Mg23_n_to_C12_C12_reaclib", // 16, "He4_He4_He4_to_C12_reaclib", // 17, - "Na23_to_Ne23_weaktab", // 18, - "Ne23_to_Na23_weaktab", // 19, - "Mg23_to_Na23_weaktab", // 20, - "n_to_p_weaktab", // 21, - "p_to_n_weaktab" // 22, + "Na23_to_Ne23_electron_capture_weaktab", // 18, + "Ne23_to_Na23_beta_neg_weaktab", // 19, + "Mg23_to_Na23_electron_capture_weaktab", // 20, + "n_to_p_beta_neg_weaktab", // 21, + "p_to_n_electron_capture_weaktab" // 22, }; template @@ -263,7 +263,7 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 1; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_reaclib + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_reaclib }; } #endif diff --git a/networks/ignition_reaclib/URCA-medium/actual_rhs.H b/networks/ignition_reaclib/URCA-medium/actual_rhs.H index a69d55aae..52afd6682 100644 --- a/networks/ignition_reaclib/URCA-medium/actual_rhs.H +++ b/networks/ignition_reaclib/URCA-medium/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -182,9 +179,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -196,7 +195,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -204,67 +205,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Na23_Ne23_meta, j_Na23_Ne23_rhoy, j_Na23_Ne23_temp, j_Na23_Ne23_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na23_to_Ne23_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_Ne23_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne23_Na23_meta, j_Ne23_Na23_rhoy, j_Ne23_Na23_temp, j_Ne23_Na23_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne23_to_Na23_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne23_to_Na23_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg23_Na23_meta, j_Mg23_Na23_rhoy, j_Mg23_Na23_temp, j_Mg23_Na23_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg23_to_Na23_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg23_to_Na23_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mg23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_to_p_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_to_n_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -316,42 +270,15 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Na23_Ne23_meta, j_Na23_Ne23_rhoy, j_Na23_Ne23_temp, j_Na23_Ne23_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na23_to_Ne23_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne23_Na23_meta, j_Ne23_Na23_rhoy, j_Ne23_Na23_temp, j_Ne23_Na23_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne23_to_Na23_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg23_Na23_meta, j_Mg23_Na23_rhoy, j_Mg23_Na23_temp, j_Mg23_Na23_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg23_to_Na23_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mg23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(N) = - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = 0.0_rt; @@ -364,14 +291,14 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(Ne20) = 0.0_rt; ydot_nuc(Ne23) = - (-screened_rates(k_Ne23_to_Na23_weaktab)*Y(Ne23) + screened_rates(k_Na23_to_Ne23_weaktab)*Y(Na23)); + (-screened_rates(k_Ne23_to_Na23_beta_neg_weaktab)*Y(Ne23) + screened_rates(k_Na23_to_Ne23_electron_capture_weaktab)*Y(Na23)); ydot_nuc(Na23) = - (screened_rates(k_Ne23_to_Na23_weaktab)*Y(Ne23) + -screened_rates(k_Na23_to_Ne23_weaktab)*Y(Na23)) + - screened_rates(k_Mg23_to_Na23_weaktab)*Y(Mg23); + (screened_rates(k_Ne23_to_Na23_beta_neg_weaktab)*Y(Ne23) + -screened_rates(k_Na23_to_Ne23_electron_capture_weaktab)*Y(Na23)) + + screened_rates(k_Mg23_to_Na23_electron_capture_weaktab)*Y(Mg23); ydot_nuc(Mg23) = - -screened_rates(k_Mg23_to_Na23_weaktab)*Y(Mg23); + -screened_rates(k_Mg23_to_Na23_electron_capture_weaktab)*Y(Mg23); ydot_nuc(Mg24) = 0.0_rt; @@ -384,86 +311,86 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(N) = - -screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + - -screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + - -screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + - (-screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + -screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + + -screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + + -screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + + (-screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + + -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + - -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + - -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + + -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + + -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + -0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); ydot_nuc(C12) = - -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + - (2.0*screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + + (2.0*screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + 0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); ydot_nuc(N13) = - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho; + screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho; ydot_nuc(O16) = - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + - -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + - -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho; + screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + + -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho; ydot_nuc(Ne20) = - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + - -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + + -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho; + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho; ydot_nuc(Ne23) = - (-screened_rates(k_Ne23_to_Na23_weaktab)*Y(Ne23) + screened_rates(k_Na23_to_Ne23_weaktab)*Y(Na23)); + (-screened_rates(k_Ne23_to_Na23_beta_neg_weaktab)*Y(Ne23) + screened_rates(k_Na23_to_Ne23_electron_capture_weaktab)*Y(Na23)); ydot_nuc(Na23) = - -screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + + -screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + - (screened_rates(k_Ne23_to_Na23_weaktab)*Y(Ne23) + -screened_rates(k_Na23_to_Ne23_weaktab)*Y(Na23)) + - screened_rates(k_Mg23_to_Na23_weaktab)*Y(Mg23); + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + + (screened_rates(k_Ne23_to_Na23_beta_neg_weaktab)*Y(Ne23) + -screened_rates(k_Na23_to_Ne23_electron_capture_weaktab)*Y(Na23)) + + screened_rates(k_Mg23_to_Na23_electron_capture_weaktab)*Y(Mg23); ydot_nuc(Mg23) = - -screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + - -screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + - -screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + - (-screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + - -screened_rates(k_Mg23_to_Na23_weaktab)*Y(Mg23); + -screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + + -screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + + -screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + + (-screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + + -screened_rates(k_Mg23_to_Na23_electron_capture_weaktab)*Y(Mg23); ydot_nuc(Mg24) = - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho; + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + + screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho; } @@ -519,15 +446,17 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_to_p_weaktab); + scratch = -screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(N, N, scratch); - scratch = screened_rates(k_p_to_n_weaktab); + scratch = screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(N, H1, scratch); jac.set(N, He4, 0.0); @@ -545,87 +474,87 @@ void jac_nuc(const burn_t& state, jac.set(N, Na23, 0.0); - scratch = -screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(N)*state.rho; jac.set(N, Mg23, scratch); jac.set(N, Mg24, 0.0); - scratch = screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*state.rho + screened_rates(k_n_to_p_weaktab); + scratch = screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*state.rho + screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(H1, N, scratch); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_to_n_weaktab); + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(Ne20)*state.rho; jac.set(H1, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(H1, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(H1, N13, scratch); jac.set(H1, O16, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*state.rho; jac.set(H1, Ne20, scratch); jac.set(H1, Ne23, 0.0); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(H1, Na23, scratch); - scratch = screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(N)*state.rho; jac.set(H1, Mg23, scratch); jac.set(H1, Mg24, 0.0); - scratch = screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho; + scratch = screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho; jac.set(He4, N, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(Ne20)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*state.rho; jac.set(He4, Ne20, scratch); jac.set(He4, Ne23, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(He4, Na23, scratch); - scratch = screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(N)*state.rho; jac.set(He4, Mg23, scratch); jac.set(He4, Mg24, 0.0); - scratch = 2.0*screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*state.rho; + scratch = 2.0*screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*state.rho; jac.set(C12, N, scratch); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho; jac.set(C12, H1, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); jac.set(C12, N13, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(C12, O16, scratch); jac.set(C12, Ne20, 0.0); @@ -634,23 +563,23 @@ void jac_nuc(const burn_t& state, jac.set(C12, Na23, 0.0); - scratch = 2.0*screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(N)*state.rho; + scratch = 2.0*screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(N)*state.rho; jac.set(C12, Mg23, scratch); jac.set(C12, Mg24, 0.0); jac.set(N13, N, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho; jac.set(N13, H1, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(N13, N13, scratch); jac.set(N13, O16, 0.0); @@ -669,16 +598,16 @@ void jac_nuc(const burn_t& state, jac.set(O16, H1, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(O16, He4, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(O16, O16, scratch); jac.set(O16, Ne20, 0.0); @@ -691,13 +620,13 @@ void jac_nuc(const burn_t& state, jac.set(O16, Mg24, 0.0); - scratch = screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho; + scratch = screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho; jac.set(Ne20, N, scratch); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho; jac.set(Ne20, H1, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho; @@ -705,18 +634,18 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, N13, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = -screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*state.rho; jac.set(Ne20, Ne20, scratch); jac.set(Ne20, Ne23, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); - scratch = screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(N)*state.rho; jac.set(Ne20, Mg23, scratch); jac.set(Ne20, Mg24, 0.0); @@ -735,23 +664,23 @@ void jac_nuc(const burn_t& state, jac.set(Ne23, Ne20, 0.0); - scratch = -screened_rates(k_Ne23_to_Na23_weaktab); + scratch = -screened_rates(k_Ne23_to_Na23_beta_neg_weaktab); jac.set(Ne23, Ne23, scratch); - scratch = screened_rates(k_Na23_to_Ne23_weaktab); + scratch = screened_rates(k_Na23_to_Ne23_electron_capture_weaktab); jac.set(Ne23, Na23, scratch); jac.set(Ne23, Mg23, 0.0); jac.set(Ne23, Mg24, 0.0); - scratch = screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*state.rho; + scratch = screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*state.rho; jac.set(Na23, N, scratch); - scratch = -screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Na23, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho; @@ -761,21 +690,21 @@ void jac_nuc(const burn_t& state, jac.set(Na23, O16, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); - scratch = screened_rates(k_Ne23_to_Na23_weaktab); + scratch = screened_rates(k_Ne23_to_Na23_beta_neg_weaktab); jac.set(Na23, Ne23, scratch); - scratch = -screened_rates(k_Na23_to_Ne23_weaktab) - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_to_Ne23_electron_capture_weaktab); jac.set(Na23, Na23, scratch); - scratch = screened_rates(k_Mg23_to_Na23_weaktab) + screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(N)*state.rho + screened_rates(k_Mg23_to_Na23_electron_capture_weaktab); jac.set(Na23, Mg23, scratch); jac.set(Na23, Mg24, 0.0); - scratch = -screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*state.rho; + scratch = -screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*state.rho; jac.set(Mg23, N, scratch); jac.set(Mg23, H1, 0.0); @@ -795,37 +724,37 @@ void jac_nuc(const burn_t& state, jac.set(Mg23, Na23, 0.0); - scratch = -screened_rates(k_Mg23_to_Na23_weaktab) - screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_to_Na23_electron_capture_weaktab); jac.set(Mg23, Mg23, scratch); jac.set(Mg23, Mg24, 0.0); - scratch = screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*state.rho; + scratch = screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*state.rho; jac.set(Mg24, N, scratch); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho; jac.set(Mg24, He4, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, N13, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); jac.set(Mg24, Ne23, 0.0); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(N)*state.rho; jac.set(Mg24, Mg23, scratch); jac.set(Mg24, Mg24, 0.0); diff --git a/networks/ignition_reaclib/URCA-medium/approximate_rates.H b/networks/ignition_reaclib/URCA-medium/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/ignition_reaclib/URCA-medium/approximate_rates.H +++ b/networks/ignition_reaclib/URCA-medium/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/ignition_reaclib/URCA-medium/branched_rates.H b/networks/ignition_reaclib/URCA-medium/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/ignition_reaclib/URCA-medium/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/ignition_reaclib/URCA-medium/derived_rates.H b/networks/ignition_reaclib/URCA-medium/derived_rates.H index 579d7dd3d..2d8da657a 100644 --- a/networks/ignition_reaclib/URCA-medium/derived_rates.H +++ b/networks/ignition_reaclib/URCA-medium/derived_rates.H @@ -7,21 +7,23 @@ #include #include -using namespace Rates; +namespace derived_rates { + using namespace Rates; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + } + } #endif diff --git a/networks/ignition_reaclib/URCA-medium/modified_rates.H b/networks/ignition_reaclib/URCA-medium/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/ignition_reaclib/URCA-medium/modified_rates.H +++ b/networks/ignition_reaclib/URCA-medium/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt b/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt +++ b/networks/ignition_reaclib/URCA-medium/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/ignition_reaclib/URCA-medium/reaclib_rates.H b/networks/ignition_reaclib/URCA-medium/reaclib_rates.H index 579e151fe..d74c9f350 100644 --- a/networks/ignition_reaclib/URCA-medium/reaclib_rates.H +++ b/networks/ignition_reaclib/URCA-medium/reaclib_rates.H @@ -8,1230 +8,1233 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + p --> N13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + p --> N13 - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - ln_set_rate += log_scor; + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + ln_set_rate += log_scor; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_n_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + n --> Mg24 - // Mg23 + n --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.00613 + 2.66964 * tfactors.T913 + + -0.448904 * tfactors.T9 + 0.0326505 * tfactors.T953; - // ths8r - ln_set_rate = 7.00613 + 2.66964 * tfactors.T913 - + -0.448904 * tfactors.T9 + 0.0326505 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.66964 * tfactors.T923i + + -0.448904 + (5.0/3.0) * 0.0326505 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.66964 * tfactors.T923i - + -0.448904 + (5.0/3.0) * 0.0326505 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.37772 + -29.8896 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.37772 + -29.8896 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.8896 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.8896 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.227472 + -29.4348 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.227472 + -29.4348 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.4348 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.4348 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.1852 + -27.5738 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.1852 + -27.5738 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.5738 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.5738 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_n_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg23_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + n --> p + Na23 - // Mg23 + n --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 19.4638 + 0.993488 * tfactors.T913 + + -0.257094 * tfactors.T9 + 0.0284334 * tfactors.T953; - // nacr - ln_set_rate = 19.4638 + 0.993488 * tfactors.T913 - + -0.257094 * tfactors.T9 + 0.0284334 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.993488 * tfactors.T923i + + -0.257094 + (5.0/3.0) * 0.0284334 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.993488 * tfactors.T923i - + -0.257094 + (5.0/3.0) * 0.0284334 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_n_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + n --> He4 + Ne20 - // Mg23 + n --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.7448 + 1.83199 * tfactors.T913 + + -0.290485 * tfactors.T9 + 0.0242929 * tfactors.T953; - // ths8r - ln_set_rate = 17.7448 + 1.83199 * tfactors.T913 - + -0.290485 * tfactors.T9 + 0.0242929 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.83199 * tfactors.T923i + + -0.290485 + (5.0/3.0) * 0.0242929 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.83199 * tfactors.T923i - + -0.290485 + (5.0/3.0) * 0.0242929 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_n_to_C12_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg23_to_C12_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + n --> C12 + C12 - // Mg23 + n --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8267 + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8267 + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // n_Mg23_to_Mg24_reaclib + { + // Mg23_n_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg23_to_Mg24_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_n_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_n_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_n_to_Mg24_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_reaclib + { + // Ne20_He4_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_reaclib) = drate_dT; + rate_Ne20_He4_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // n_Mg23_to_p_Na23_reaclib + { + // Mg23_n_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg23_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg23_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg23_to_p_Na23_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_n_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_n_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_n_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // n_Mg23_to_He4_Ne20_reaclib + { + // Mg23_n_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg23_to_He4_Ne20_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_n_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_n_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_n_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // n_Mg23_to_C12_C12_reaclib + { + // Mg23_n_to_C12_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg23_to_C12_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg23_to_C12_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg23_to_C12_C12_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_n_to_C12_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_n_to_C12_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_n_to_C12_C12_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H b/networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H new file mode 100644 index 000000000..5f8c72f54 --- /dev/null +++ b/networks/ignition_reaclib/URCA-medium/tabular_weak_rates.H @@ -0,0 +1,76 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_Na23_Ne23_meta, j_Na23_Ne23_rhoy, j_Na23_Ne23_temp, j_Na23_Ne23_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Na23_to_Ne23_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_Ne23_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne23_Na23_meta, j_Ne23_Na23_rhoy, j_Ne23_Na23_temp, j_Ne23_Na23_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne23_to_Na23_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne23_to_Na23_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne23) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mg23_Na23_meta, j_Mg23_Na23_rhoy, j_Mg23_Na23_temp, j_Mg23_Na23_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mg23_to_Na23_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_to_Na23_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mg23) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_to_n_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/ignition_reaclib/URCA-medium/temperature_table_rates.H b/networks/ignition_reaclib/URCA-medium/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/ignition_reaclib/URCA-medium/temperature_table_rates.H +++ b/networks/ignition_reaclib/URCA-medium/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/ignition_reaclib/URCA-simple/Make.package b/networks/ignition_reaclib/URCA-simple/Make.package index 35413fdcf..e66796431 100644 --- a/networks/ignition_reaclib/URCA-simple/Make.package +++ b/networks/ignition_reaclib/URCA-simple/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/ignition_reaclib/URCA-simple/actual_network.H b/networks/ignition_reaclib/URCA-simple/actual_network.H index 6485b40be..033b9cb6a 100644 --- a/networks/ignition_reaclib/URCA-simple/actual_network.H +++ b/networks/ignition_reaclib/URCA-simple/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -153,12 +153,12 @@ namespace Rates k_C12_C12_to_He4_Ne20_reaclib = 1, k_C12_C12_to_n_Mg23_reaclib = 2, k_C12_C12_to_p_Na23_reaclib = 3, - k_He4_C12_to_O16_reaclib = 4, - k_Na23_to_Ne23_weaktab = 5, - k_Ne23_to_Na23_weaktab = 6, - k_n_to_p_weaktab = 7, - k_p_to_n_weaktab = 8, - NumRates = k_p_to_n_weaktab + k_C12_He4_to_O16_reaclib = 4, + k_Na23_to_Ne23_electron_capture_weaktab = 5, + k_Ne23_to_Na23_beta_neg_weaktab = 6, + k_n_to_p_beta_neg_weaktab = 7, + k_p_to_n_electron_capture_weaktab = 8, + NumRates = k_p_to_n_electron_capture_weaktab }; enum ScreenPairs : @@ -178,11 +178,11 @@ namespace Rates "C12_C12_to_He4_Ne20_reaclib", // 1, "C12_C12_to_n_Mg23_reaclib", // 2, "C12_C12_to_p_Na23_reaclib", // 3, - "He4_C12_to_O16_reaclib", // 4, - "Na23_to_Ne23_weaktab", // 5, - "Ne23_to_Na23_weaktab", // 6, - "n_to_p_weaktab", // 7, - "p_to_n_weaktab" // 8, + "C12_He4_to_O16_reaclib", // 4, + "Na23_to_Ne23_electron_capture_weaktab", // 5, + "Ne23_to_Na23_beta_neg_weaktab", // 6, + "n_to_p_beta_neg_weaktab", // 7, + "p_to_n_electron_capture_weaktab" // 8, }; template diff --git a/networks/ignition_reaclib/URCA-simple/actual_rhs.H b/networks/ignition_reaclib/URCA-simple/actual_rhs.H index 45f4058f0..c2f573701 100644 --- a/networks/ignition_reaclib/URCA-simple/actual_rhs.H +++ b/networks/ignition_reaclib/URCA-simple/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -102,9 +99,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -116,7 +115,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -124,59 +125,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Na23_Ne23_meta, j_Na23_Ne23_rhoy, j_Na23_Ne23_temp, j_Na23_Ne23_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na23_to_Ne23_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_Ne23_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne23_Na23_meta, j_Ne23_Na23_rhoy, j_Ne23_Na23_temp, j_Ne23_Na23_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne23_to_Na23_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne23_to_Na23_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_to_p_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_to_n_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -228,37 +190,15 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Na23_Ne23_meta, j_Na23_Ne23_rhoy, j_Na23_Ne23_temp, j_Na23_Ne23_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na23_to_Ne23_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne23_Na23_meta, j_Ne23_Na23_rhoy, j_Ne23_Na23_temp, j_Ne23_Na23_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne23_to_Na23_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(N) = - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = 0.0_rt; @@ -269,10 +209,10 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(Ne20) = 0.0_rt; ydot_nuc(Ne23) = - (-screened_rates(k_Ne23_to_Na23_weaktab)*Y(Ne23) + screened_rates(k_Na23_to_Ne23_weaktab)*Y(Na23)); + (-screened_rates(k_Ne23_to_Na23_beta_neg_weaktab)*Y(Ne23) + screened_rates(k_Na23_to_Ne23_electron_capture_weaktab)*Y(Na23)); ydot_nuc(Na23) = - (screened_rates(k_Ne23_to_Na23_weaktab)*Y(Ne23) + -screened_rates(k_Na23_to_Ne23_weaktab)*Y(Na23)); + (screened_rates(k_Ne23_to_Na23_beta_neg_weaktab)*Y(Ne23) + -screened_rates(k_Na23_to_Ne23_electron_capture_weaktab)*Y(Na23)); ydot_nuc(Mg23) = 0.0_rt; @@ -285,40 +225,40 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(N) = - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)) + + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)) + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(H1) = 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(He4) = 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho; + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho; ydot_nuc(C12) = -screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(O16) = - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho; + screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho; ydot_nuc(Ne20) = 0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho; ydot_nuc(Ne23) = - (-screened_rates(k_Ne23_to_Na23_weaktab)*Y(Ne23) + screened_rates(k_Na23_to_Ne23_weaktab)*Y(Na23)); + (-screened_rates(k_Ne23_to_Na23_beta_neg_weaktab)*Y(Ne23) + screened_rates(k_Na23_to_Ne23_electron_capture_weaktab)*Y(Na23)); ydot_nuc(Na23) = 0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + - (screened_rates(k_Ne23_to_Na23_weaktab)*Y(Ne23) + -screened_rates(k_Na23_to_Ne23_weaktab)*Y(Na23)); + (screened_rates(k_Ne23_to_Na23_beta_neg_weaktab)*Y(Ne23) + -screened_rates(k_Na23_to_Ne23_electron_capture_weaktab)*Y(Na23)); ydot_nuc(Mg23) = 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho; @@ -377,15 +317,17 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_n_to_p_weaktab); + scratch = -screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(N, N, scratch); - scratch = screened_rates(k_p_to_n_weaktab); + scratch = screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(N, H1, scratch); jac.set(N, He4, 0.0); @@ -403,10 +345,10 @@ void jac_nuc(const burn_t& state, jac.set(N, Mg23, 0.0); - scratch = screened_rates(k_n_to_p_weaktab); + scratch = screened_rates(k_n_to_p_beta_neg_weaktab); jac.set(H1, N, scratch); - scratch = -screened_rates(k_p_to_n_weaktab); + scratch = -screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(H1, H1, scratch); jac.set(H1, He4, 0.0); @@ -428,10 +370,10 @@ void jac_nuc(const burn_t& state, jac.set(He4, H1, 0.0); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho; jac.set(He4, He4, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, C12, scratch); jac.set(He4, O16, 0.0); @@ -448,10 +390,10 @@ void jac_nuc(const burn_t& state, jac.set(C12, H1, 0.0); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho; jac.set(C12, He4, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(C12, C12, scratch); jac.set(C12, O16, 0.0); @@ -468,10 +410,10 @@ void jac_nuc(const burn_t& state, jac.set(O16, H1, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho; jac.set(O16, He4, scratch); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, C12, scratch); jac.set(O16, O16, 0.0); @@ -515,10 +457,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne23, Ne20, 0.0); - scratch = -screened_rates(k_Ne23_to_Na23_weaktab); + scratch = -screened_rates(k_Ne23_to_Na23_beta_neg_weaktab); jac.set(Ne23, Ne23, scratch); - scratch = screened_rates(k_Na23_to_Ne23_weaktab); + scratch = screened_rates(k_Na23_to_Ne23_electron_capture_weaktab); jac.set(Ne23, Na23, scratch); jac.set(Ne23, Mg23, 0.0); @@ -536,10 +478,10 @@ void jac_nuc(const burn_t& state, jac.set(Na23, Ne20, 0.0); - scratch = screened_rates(k_Ne23_to_Na23_weaktab); + scratch = screened_rates(k_Ne23_to_Na23_beta_neg_weaktab); jac.set(Na23, Ne23, scratch); - scratch = -screened_rates(k_Na23_to_Ne23_weaktab); + scratch = -screened_rates(k_Na23_to_Ne23_electron_capture_weaktab); jac.set(Na23, Na23, scratch); jac.set(Na23, Mg23, 0.0); diff --git a/networks/ignition_reaclib/URCA-simple/approximate_rates.H b/networks/ignition_reaclib/URCA-simple/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/ignition_reaclib/URCA-simple/approximate_rates.H +++ b/networks/ignition_reaclib/URCA-simple/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/ignition_reaclib/URCA-simple/branched_rates.H b/networks/ignition_reaclib/URCA-simple/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/ignition_reaclib/URCA-simple/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/ignition_reaclib/URCA-simple/derived_rates.H b/networks/ignition_reaclib/URCA-simple/derived_rates.H index 579d7dd3d..2d8da657a 100644 --- a/networks/ignition_reaclib/URCA-simple/derived_rates.H +++ b/networks/ignition_reaclib/URCA-simple/derived_rates.H @@ -7,21 +7,23 @@ #include #include -using namespace Rates; +namespace derived_rates { + using namespace Rates; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + } + } #endif diff --git a/networks/ignition_reaclib/URCA-simple/modified_rates.H b/networks/ignition_reaclib/URCA-simple/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/ignition_reaclib/URCA-simple/modified_rates.H +++ b/networks/ignition_reaclib/URCA-simple/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt b/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt +++ b/networks/ignition_reaclib/URCA-simple/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/ignition_reaclib/URCA-simple/reaclib_rates.H b/networks/ignition_reaclib/URCA-simple/reaclib_rates.H index 4cdadbcd6..920a748a4 100644 --- a/networks/ignition_reaclib/URCA-simple/reaclib_rates.H +++ b/networks/ignition_reaclib/URCA-simple/reaclib_rates.H @@ -8,258 +8,261 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // C12 + C12 --> He4 + Ne20 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // C12 + C12 --> He4 + Ne20 - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H b/networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H new file mode 100644 index 000000000..807192a06 --- /dev/null +++ b/networks/ignition_reaclib/URCA-simple/tabular_weak_rates.H @@ -0,0 +1,68 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_Na23_Ne23_meta, j_Na23_Ne23_rhoy, j_Na23_Ne23_temp, j_Na23_Ne23_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Na23_to_Ne23_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_Ne23_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne23_Na23_meta, j_Ne23_Na23_rhoy, j_Ne23_Na23_temp, j_Ne23_Na23_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne23_to_Na23_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne23_to_Na23_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne23) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_to_n_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/ignition_reaclib/URCA-simple/temperature_table_rates.H b/networks/ignition_reaclib/URCA-simple/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/ignition_reaclib/URCA-simple/temperature_table_rates.H +++ b/networks/ignition_reaclib/URCA-simple/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/nova-li/Make.package b/networks/nova-li/Make.package index 35413fdcf..e66796431 100644 --- a/networks/nova-li/Make.package +++ b/networks/nova-li/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/nova-li/actual_network.H b/networks/nova-li/actual_network.H index 6c3647534..1a5541684 100644 --- a/networks/nova-li/actual_network.H +++ b/networks/nova-li/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -246,61 +246,61 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_Be7_to_Li7_reaclib = 1, - k_N13_to_C13_reaclib = 2, - k_O14_to_N14_reaclib = 3, - k_O15_to_N15_reaclib = 4, + k_Be7_to_Li7_electron_capture_reaclib = 1, + k_N13_to_C13_beta_pos_reaclib = 2, + k_O14_to_N14_beta_pos_reaclib = 3, + k_O15_to_N15_beta_pos_reaclib = 4, k_B8_to_p_Be7_reaclib = 5, - k_B8_to_He4_He4_reaclib = 6, + k_B8_to_He4_He4_beta_pos_reaclib = 6, k_F17_to_p_O16_reaclib = 7, - k_p_p_to_d_reaclib_beta_pos = 8, - k_p_p_to_d_reaclib_electron_capture = 9, - k_p_d_to_He3_reaclib = 10, + k_p_p_to_d_beta_pos_reaclib = 8, + k_p_p_to_d_electron_capture_reaclib = 9, + k_d_p_to_He3_reaclib = 10, k_d_d_to_He4_reaclib = 11, - k_p_He3_to_He4_reaclib = 12, - k_He4_He3_to_Be7_reaclib = 13, - k_He4_Li7_to_B11_reaclib = 14, - k_p_Be7_to_B8_reaclib = 15, - k_p_B11_to_C12_reaclib = 16, - k_p_C12_to_N13_reaclib = 17, - k_He4_C12_to_O16_reaclib = 18, - k_p_C13_to_N14_reaclib = 19, - k_p_N13_to_O14_reaclib = 20, - k_p_N14_to_O15_reaclib = 21, - k_He4_N14_to_F18_reaclib = 22, - k_p_N15_to_O16_reaclib = 23, - k_He4_N15_to_F19_reaclib = 24, - k_He4_O14_to_Ne18_reaclib = 25, - k_He4_O15_to_Ne19_reaclib = 26, - k_p_O16_to_F17_reaclib = 27, - k_He4_O16_to_Ne20_reaclib = 28, - k_p_O17_to_F18_reaclib = 29, - k_He4_O17_to_Ne21_reaclib = 30, - k_p_O18_to_F19_reaclib = 31, - k_p_F17_to_Ne18_reaclib = 32, - k_p_F18_to_Ne19_reaclib = 33, - k_p_F19_to_Ne20_reaclib = 34, - k_d_He3_to_p_He4_reaclib = 35, - k_p_Li7_to_He4_He4_reaclib = 36, - k_He4_N13_to_p_O16_reaclib = 37, - k_p_N15_to_He4_C12_reaclib = 38, - k_He4_O14_to_p_F17_reaclib = 39, - k_p_O17_to_He4_N14_reaclib = 40, - k_p_O18_to_He4_N15_reaclib = 41, - k_He4_F17_to_p_Ne20_reaclib = 42, - k_p_F18_to_He4_O15_reaclib = 43, - k_He4_F18_to_p_Ne21_reaclib = 44, - k_p_F19_to_He4_O16_reaclib = 45, + k_He3_p_to_He4_beta_pos_reaclib = 12, + k_He3_He4_to_Be7_reaclib = 13, + k_Li7_He4_to_B11_reaclib = 14, + k_Be7_p_to_B8_reaclib = 15, + k_B11_p_to_C12_reaclib = 16, + k_C12_p_to_N13_reaclib = 17, + k_C12_He4_to_O16_reaclib = 18, + k_C13_p_to_N14_reaclib = 19, + k_N13_p_to_O14_reaclib = 20, + k_N14_p_to_O15_reaclib = 21, + k_N14_He4_to_F18_reaclib = 22, + k_N15_p_to_O16_reaclib = 23, + k_N15_He4_to_F19_reaclib = 24, + k_O14_He4_to_Ne18_reaclib = 25, + k_O15_He4_to_Ne19_reaclib = 26, + k_O16_p_to_F17_reaclib = 27, + k_O16_He4_to_Ne20_reaclib = 28, + k_O17_p_to_F18_reaclib = 29, + k_O17_He4_to_Ne21_reaclib = 30, + k_O18_p_to_F19_reaclib = 31, + k_F17_p_to_Ne18_reaclib = 32, + k_F18_p_to_Ne19_reaclib = 33, + k_F19_p_to_Ne20_reaclib = 34, + k_He3_d_to_p_He4_reaclib = 35, + k_Li7_p_to_He4_He4_reaclib = 36, + k_N13_He4_to_p_O16_reaclib = 37, + k_N15_p_to_He4_C12_reaclib = 38, + k_O14_He4_to_p_F17_reaclib = 39, + k_O17_p_to_He4_N14_reaclib = 40, + k_O18_p_to_He4_N15_reaclib = 41, + k_F17_He4_to_p_Ne20_reaclib = 42, + k_F18_p_to_He4_O15_reaclib = 43, + k_F18_He4_to_p_Ne21_reaclib = 44, + k_F19_p_to_He4_O16_reaclib = 45, k_He3_He3_to_p_p_He4_reaclib = 46, - k_d_Be7_to_p_He4_He4_reaclib = 47, - k_p_B11_to_He4_He4_He4_reaclib = 48, - k_He3_Be7_to_p_p_He4_He4_reaclib = 49, + k_Be7_d_to_p_He4_He4_reaclib = 47, + k_B11_p_to_3He4_reaclib = 48, + k_Be7_He3_to_p_p_He4_He4_reaclib = 49, k_He4_He4_He4_to_C12_reaclib = 50, - k_F17_to_O17_weaktab = 51, - k_F18_to_O18_weaktab = 52, - k_Ne18_to_F18_weaktab = 53, - k_Ne19_to_F19_weaktab = 54, - NumRates = k_Ne19_to_F19_weaktab + k_F17_to_O17_electron_capture_weaktab = 51, + k_F18_to_O18_electron_capture_weaktab = 52, + k_Ne18_to_F18_electron_capture_weaktab = 53, + k_Ne19_to_F19_electron_capture_weaktab = 54, + NumRates = k_Ne19_to_F19_electron_capture_weaktab }; enum ScreenPairs : @@ -351,60 +351,60 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "Be7_to_Li7_reaclib", // 1, - "N13_to_C13_reaclib", // 2, - "O14_to_N14_reaclib", // 3, - "O15_to_N15_reaclib", // 4, + "Be7_to_Li7_electron_capture_reaclib", // 1, + "N13_to_C13_beta_pos_reaclib", // 2, + "O14_to_N14_beta_pos_reaclib", // 3, + "O15_to_N15_beta_pos_reaclib", // 4, "B8_to_p_Be7_reaclib", // 5, - "B8_to_He4_He4_reaclib", // 6, + "B8_to_He4_He4_beta_pos_reaclib", // 6, "F17_to_p_O16_reaclib", // 7, - "p_p_to_d_reaclib_beta_pos", // 8, - "p_p_to_d_reaclib_electron_capture", // 9, - "p_d_to_He3_reaclib", // 10, + "p_p_to_d_beta_pos_reaclib", // 8, + "p_p_to_d_electron_capture_reaclib", // 9, + "d_p_to_He3_reaclib", // 10, "d_d_to_He4_reaclib", // 11, - "p_He3_to_He4_reaclib", // 12, - "He4_He3_to_Be7_reaclib", // 13, - "He4_Li7_to_B11_reaclib", // 14, - "p_Be7_to_B8_reaclib", // 15, - "p_B11_to_C12_reaclib", // 16, - "p_C12_to_N13_reaclib", // 17, - "He4_C12_to_O16_reaclib", // 18, - "p_C13_to_N14_reaclib", // 19, - "p_N13_to_O14_reaclib", // 20, - "p_N14_to_O15_reaclib", // 21, - "He4_N14_to_F18_reaclib", // 22, - "p_N15_to_O16_reaclib", // 23, - "He4_N15_to_F19_reaclib", // 24, - "He4_O14_to_Ne18_reaclib", // 25, - "He4_O15_to_Ne19_reaclib", // 26, - "p_O16_to_F17_reaclib", // 27, - "He4_O16_to_Ne20_reaclib", // 28, - "p_O17_to_F18_reaclib", // 29, - "He4_O17_to_Ne21_reaclib", // 30, - "p_O18_to_F19_reaclib", // 31, - "p_F17_to_Ne18_reaclib", // 32, - "p_F18_to_Ne19_reaclib", // 33, - "p_F19_to_Ne20_reaclib", // 34, - "d_He3_to_p_He4_reaclib", // 35, - "p_Li7_to_He4_He4_reaclib", // 36, - "He4_N13_to_p_O16_reaclib", // 37, - "p_N15_to_He4_C12_reaclib", // 38, - "He4_O14_to_p_F17_reaclib", // 39, - "p_O17_to_He4_N14_reaclib", // 40, - "p_O18_to_He4_N15_reaclib", // 41, - "He4_F17_to_p_Ne20_reaclib", // 42, - "p_F18_to_He4_O15_reaclib", // 43, - "He4_F18_to_p_Ne21_reaclib", // 44, - "p_F19_to_He4_O16_reaclib", // 45, + "He3_p_to_He4_beta_pos_reaclib", // 12, + "He3_He4_to_Be7_reaclib", // 13, + "Li7_He4_to_B11_reaclib", // 14, + "Be7_p_to_B8_reaclib", // 15, + "B11_p_to_C12_reaclib", // 16, + "C12_p_to_N13_reaclib", // 17, + "C12_He4_to_O16_reaclib", // 18, + "C13_p_to_N14_reaclib", // 19, + "N13_p_to_O14_reaclib", // 20, + "N14_p_to_O15_reaclib", // 21, + "N14_He4_to_F18_reaclib", // 22, + "N15_p_to_O16_reaclib", // 23, + "N15_He4_to_F19_reaclib", // 24, + "O14_He4_to_Ne18_reaclib", // 25, + "O15_He4_to_Ne19_reaclib", // 26, + "O16_p_to_F17_reaclib", // 27, + "O16_He4_to_Ne20_reaclib", // 28, + "O17_p_to_F18_reaclib", // 29, + "O17_He4_to_Ne21_reaclib", // 30, + "O18_p_to_F19_reaclib", // 31, + "F17_p_to_Ne18_reaclib", // 32, + "F18_p_to_Ne19_reaclib", // 33, + "F19_p_to_Ne20_reaclib", // 34, + "He3_d_to_p_He4_reaclib", // 35, + "Li7_p_to_He4_He4_reaclib", // 36, + "N13_He4_to_p_O16_reaclib", // 37, + "N15_p_to_He4_C12_reaclib", // 38, + "O14_He4_to_p_F17_reaclib", // 39, + "O17_p_to_He4_N14_reaclib", // 40, + "O18_p_to_He4_N15_reaclib", // 41, + "F17_He4_to_p_Ne20_reaclib", // 42, + "F18_p_to_He4_O15_reaclib", // 43, + "F18_He4_to_p_Ne21_reaclib", // 44, + "F19_p_to_He4_O16_reaclib", // 45, "He3_He3_to_p_p_He4_reaclib", // 46, - "d_Be7_to_p_He4_He4_reaclib", // 47, - "p_B11_to_He4_He4_He4_reaclib", // 48, - "He3_Be7_to_p_p_He4_He4_reaclib", // 49, + "Be7_d_to_p_He4_He4_reaclib", // 47, + "B11_p_to_3He4_reaclib", // 48, + "Be7_He3_to_p_p_He4_He4_reaclib", // 49, "He4_He4_He4_to_C12_reaclib", // 50, - "F17_to_O17_weaktab", // 51, - "F18_to_O18_weaktab", // 52, - "Ne18_to_F18_weaktab", // 53, - "Ne19_to_F19_weaktab" // 54, + "F17_to_O17_electron_capture_weaktab", // 51, + "F18_to_O18_electron_capture_weaktab", // 52, + "Ne18_to_F18_electron_capture_weaktab", // 53, + "Ne19_to_F19_electron_capture_weaktab" // 54, }; template @@ -437,8 +437,8 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 2; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - H1, Be7, -1, B8, -1, -1, Be7, B8, k_p_Be7_to_B8_reaclib, k_B8_to_p_Be7_reaclib, - H1, O16, -1, F17, -1, -1, O16, F17, k_p_O16_to_F17_reaclib, k_F17_to_p_O16_reaclib + H1, Be7, -1, B8, -1, -1, Be7, B8, k_Be7_p_to_B8_reaclib, k_B8_to_p_Be7_reaclib, + H1, O16, -1, F17, -1, -1, O16, F17, k_O16_p_to_F17_reaclib, k_F17_to_p_O16_reaclib }; } #endif diff --git a/networks/nova-li/actual_rhs.H b/networks/nova-li/actual_rhs.H index 11edea5bd..dfb4de3b0 100644 --- a/networks/nova-li/actual_rhs.H +++ b/networks/nova-li/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -442,9 +439,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -456,7 +455,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -464,59 +465,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F17_to_O17_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_O17_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_O18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_O18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne18_to_F18_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_F18_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne19_to_F19_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_F19_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -593,182 +555,160 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // Be7_to_Li7_reaclib + // Be7_to_Li7_electron_capture_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_Be7_to_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Be7_to_Li7_reaclib) = rate; + reaclib_rates::rate_Be7_to_Li7_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_to_Li7_electron_capture_reaclib) = rate; } { - // N13_to_C13_reaclib + // N13_to_C13_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; + reaclib_rates::rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; } { - // O14_to_N14_reaclib + // O14_to_N14_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; + reaclib_rates::rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; } { - // O15_to_N15_reaclib + // O15_to_N15_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; + reaclib_rates::rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; } { - // B8_to_He4_He4_reaclib + // B8_to_He4_He4_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_B8_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_He4_He4_reaclib) = rate; + reaclib_rates::rate_B8_to_He4_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_He4_He4_beta_pos_reaclib) = rate; } { - // p_p_to_d_reaclib_beta_pos + // p_p_to_d_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_p); #endif - rate_p_p_to_d_reaclib_beta_pos(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos) = rate; + reaclib_rates::rate_p_p_to_d_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_beta_pos_reaclib) = rate; } { - // p_p_to_d_reaclib_electron_capture + // p_p_to_d_electron_capture_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_p); #endif - rate_p_p_to_d_reaclib_electron_capture(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_electron_capture) = rate; + reaclib_rates::rate_p_p_to_d_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_electron_capture_reaclib) = rate; } { - // p_He3_to_He4_reaclib + // He3_p_to_He4_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_He3); #endif - rate_p_He3_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He3_to_He4_reaclib) = rate; + reaclib_rates::rate_He3_p_to_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_p_to_He4_beta_pos_reaclib) = rate; } - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F17_to_O17_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); - - tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_F18_to_O18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne18_to_F18_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne19_to_F19_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); - + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - -screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho; + -screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + -screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho; ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - 0.5*screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e; + 0.5*screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + 0.5*screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e; ydot_nuc(He3) = - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho; + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho; ydot_nuc(He4) = - 2.0*screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho; + 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho; ydot_nuc(Li7) = - screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e; + screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*Y(Be7)*state.rho*state.y_e; ydot_nuc(Be7) = - -screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e; + -screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*Y(Be7)*state.rho*state.y_e; ydot_nuc(B8) = - -screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8); + -screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8); ydot_nuc(B11) = 0.0_rt; ydot_nuc(C12) = 0.0_rt; ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14); + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O16) = 0.0_rt; ydot_nuc(O17) = - screened_rates(k_F17_to_O17_weaktab)*Y(F17); + screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17); ydot_nuc(O18) = - screened_rates(k_F18_to_O18_weaktab)*Y(F18); + screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18); ydot_nuc(F17) = - -screened_rates(k_F17_to_O17_weaktab)*Y(F17); + -screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17); ydot_nuc(F18) = - -screened_rates(k_F18_to_O18_weaktab)*Y(F18) + - screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18); + -screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + + screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18); ydot_nuc(F19) = - screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19); + screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19); ydot_nuc(Ne18) = - -screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18); + -screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18); ydot_nuc(Ne19) = - -screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19); + -screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19); ydot_nuc(Ne20) = 0.0_rt; @@ -783,214 +723,214 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - -screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - (-screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + - -screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + - -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + - -screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + - -screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + - -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + - -screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + - -screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + - -screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + - -screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + - -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + - -screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + - screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + - -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + - -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + + -screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + -screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + (-screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + + -screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + + -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + + -screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + + -screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + + -screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + + -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + + -screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + + -screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + + -screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + + -screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + + -screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + + -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + + -screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + + -screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + + screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + + -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + + screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + + -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + - screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + - -screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*Y(H1)*state.rho + - 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; + screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + + -screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*Y(H1)*state.rho + + 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - 0.5*screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + + 0.5*screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + 0.5*screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + -screened_rates(k_d_d_to_He4_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + - -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + - -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho; + -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + + -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho; ydot_nuc(He3) = - screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + - -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + + screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + -screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + + -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + - -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; + -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; ydot_nuc(He4) = - 2.0*screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + + 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + 0.5*screened_rates(k_d_d_to_He4_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + - -screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + - -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + - -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + - -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + - -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + - -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + - -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + - 2.0*screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + - -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + - -screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + - -screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + -screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + + -screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + + -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + + -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + + -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + + -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + + -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + + 2.0*screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + + -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + + -screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + + -screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + + -screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + 0.5*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + - 2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + - 3.0*screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*Y(H1)*state.rho + - 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + + 2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + + 3.0*screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*Y(H1)*state.rho + + 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + -0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); ydot_nuc(Li7) = - screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e + - -screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + - -screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho; + screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*Y(Be7)*state.rho*state.y_e + + -screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + + -screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho; ydot_nuc(Be7) = - -screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e + - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + - (-screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + - -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + - -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; + -screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*Y(Be7)*state.rho*state.y_e + + screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + + (-screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + + -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + + -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; ydot_nuc(B8) = - -screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + - (screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + -screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)); + -screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + + (screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + -screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)); ydot_nuc(B11) = - screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + - -screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + - -screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*Y(H1)*state.rho; + screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + + -screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + + -screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*Y(H1)*state.rho; ydot_nuc(C12) = - screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + - -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + + screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + + -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + 0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho; + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho; ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho; + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + + -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho; ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + - -screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + - -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho; + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + + -screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + + -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho; ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - -screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + - -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho; + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + -screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + + -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + + -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho; ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + - -screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho; + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + + -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + + -screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho; ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + - -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho; + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + + -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho; ydot_nuc(O16) = - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + - -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho; + screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + + -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho; ydot_nuc(O17) = - -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + - -screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + - screened_rates(k_F17_to_O17_weaktab)*Y(F17); + -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + + -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + + -screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + + screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17); ydot_nuc(O18) = - -screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + - -screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + - screened_rates(k_F18_to_O18_weaktab)*Y(F18); + -screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + + -screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + + screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18); ydot_nuc(F17) = - (screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + - -screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + - -screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + - -screened_rates(k_F17_to_O17_weaktab)*Y(F17); + (screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + + -screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + + -screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + + -screened_rates(k_F17_to_O17_electron_capture_weaktab)*Y(F17); ydot_nuc(F18) = - screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + - -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + - -screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + - -screened_rates(k_F18_to_O18_weaktab)*Y(F18) + - screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18); + screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + + -screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + + -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + + -screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + + -screened_rates(k_F18_to_O18_electron_capture_weaktab)*Y(F18) + + screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18); ydot_nuc(F19) = - screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + - screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + - -screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + - -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + - screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19); + screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + + screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + + -screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + + -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + + screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19); ydot_nuc(Ne18) = - screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + - -screened_rates(k_Ne18_to_F18_weaktab)*Y(Ne18); + screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + + screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + + -screened_rates(k_Ne18_to_F18_electron_capture_weaktab)*Y(Ne18); ydot_nuc(Ne19) = - screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + - -screened_rates(k_Ne19_to_F19_weaktab)*Y(Ne19); + screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + + screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + + -screened_rates(k_Ne19_to_F19_electron_capture_weaktab)*Y(Ne19); ydot_nuc(Ne20) = - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + - screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho; + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + + screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + + screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho; ydot_nuc(Ne21) = - screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho; + screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + + screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho; } @@ -1046,71 +986,73 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho - 2.0*screened_rates(k_p_p_to_d_reaclib_beta_pos)*Y(H1)*state.rho - 2.0*screened_rates(k_p_p_to_d_reaclib_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; + scratch = -screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*state.rho - screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho - screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho - 2.0*screened_rates(k_p_p_to_d_beta_pos_reaclib)*Y(H1)*state.rho - 2.0*screened_rates(k_p_p_to_d_electron_capture_reaclib)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; jac.set(H1, H1, scratch); - scratch = screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho; jac.set(H1, H2, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho; jac.set(H1, He3, scratch); - scratch = screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(H1, He4, scratch); - scratch = -screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(H1)*state.rho; jac.set(H1, Li7, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho; jac.set(H1, Be7, scratch); scratch = screened_rates(k_B8_to_p_Be7_reaclib); jac.set(H1, B8, scratch); - scratch = -screened_rates(k_p_B11_to_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_B11_p_to_3He4_reaclib)*Y(H1)*state.rho - screened_rates(k_B11_p_to_C12_reaclib)*Y(H1)*state.rho; jac.set(H1, B11, scratch); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(H1, C12, scratch); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, C13, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho; jac.set(H1, N13, scratch); - scratch = -screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(H1, N14, scratch); - scratch = -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(H1, N15, scratch); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(H1, O14, scratch); jac.set(H1, O15, 0.0); - scratch = -screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, O17, scratch); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(H1, O18, scratch); - scratch = screened_rates(k_F17_to_p_O16_reaclib) + screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib); jac.set(H1, F17, scratch); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho; jac.set(H1, F18, scratch); - scratch = -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho; jac.set(H1, F19, scratch); jac.set(H1, Ne18, 0.0); @@ -1121,20 +1063,20 @@ void jac_nuc(const burn_t& state, jac.set(H1, Ne21, 0.0); - scratch = -screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho + 1.0*screened_rates(k_p_p_to_d_reaclib_beta_pos)*Y(H1)*state.rho + 1.0*screened_rates(k_p_p_to_d_reaclib_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; + scratch = -screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho + 1.0*screened_rates(k_p_p_to_d_beta_pos_reaclib)*Y(H1)*state.rho + 1.0*screened_rates(k_p_p_to_d_electron_capture_reaclib)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; jac.set(H2, H1, scratch); - scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho - 2.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho - 2.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho; jac.set(H2, H2, scratch); - scratch = -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho; jac.set(H2, He3, scratch); jac.set(H2, He4, 0.0); jac.set(H2, Li7, 0.0); - scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho; jac.set(H2, Be7, scratch); jac.set(H2, B8, 0.0); @@ -1175,21 +1117,21 @@ void jac_nuc(const burn_t& state, jac.set(H2, Ne21, 0.0); - scratch = -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho + screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho; jac.set(He3, H1, scratch); - scratch = -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho; jac.set(He3, H2, scratch); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho - 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho - 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho; jac.set(He3, He3, scratch); - scratch = -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho; + scratch = -screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho; jac.set(He3, He4, scratch); jac.set(He3, Li7, 0.0); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho; jac.set(He3, Be7, scratch); jac.set(He3, B8, 0.0); @@ -1230,66 +1172,66 @@ void jac_nuc(const burn_t& state, jac.set(He3, Ne21, 0.0); - scratch = 3.0*screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho + 2.0*screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = 3.0*screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho + 2.0*screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(He4, H1, scratch); - scratch = 2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho; + scratch = 2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho; jac.set(He4, H2, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 1.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 1.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho; jac.set(He4, He3, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_Li7_to_B11_reaclib)*Y(Li7)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_Li7_He4_to_B11_reaclib)*Y(Li7)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho; jac.set(He4, He4, scratch); - scratch = -screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*state.rho + 2.0*screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*state.rho + 2.0*screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(H1)*state.rho; jac.set(He4, Li7, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + 2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + 2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho; jac.set(He4, Be7, scratch); - scratch = 2.0*screened_rates(k_B8_to_He4_He4_reaclib); + scratch = 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib); jac.set(He4, B8, scratch); - scratch = 3.0*screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = 3.0*screened_rates(k_B11_p_to_3He4_reaclib)*Y(H1)*state.rho; jac.set(He4, B11, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, C12, scratch); jac.set(He4, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(He4, N15, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(He4, O14, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho; jac.set(He4, O15, scratch); - scratch = -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(He4, O17, scratch); - scratch = screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(He4, O18, scratch); - scratch = -screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(He4)*state.rho; jac.set(He4, F17, scratch); - scratch = -screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(He4, F18, scratch); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho; jac.set(He4, F19, scratch); jac.set(He4, Ne18, 0.0); @@ -1300,20 +1242,20 @@ void jac_nuc(const burn_t& state, jac.set(He4, Ne21, 0.0); - scratch = -screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*state.rho; + scratch = -screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*state.rho; jac.set(Li7, H1, scratch); jac.set(Li7, H2, 0.0); jac.set(Li7, He3, 0.0); - scratch = -screened_rates(k_He4_Li7_to_B11_reaclib)*Y(Li7)*state.rho; + scratch = -screened_rates(k_Li7_He4_to_B11_reaclib)*Y(Li7)*state.rho; jac.set(Li7, He4, scratch); - scratch = -screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*state.rho - screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(H1)*state.rho; jac.set(Li7, Li7, scratch); - scratch = screened_rates(k_Be7_to_Li7_reaclib)*state.rho*state.y_e; + scratch = screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*state.rho*state.y_e; jac.set(Li7, Be7, scratch); jac.set(Li7, B8, 0.0); @@ -1354,21 +1296,21 @@ void jac_nuc(const burn_t& state, jac.set(Li7, Ne21, 0.0); - scratch = -screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho; + scratch = -screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho; jac.set(Be7, H1, scratch); - scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho; jac.set(Be7, H2, scratch); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho; jac.set(Be7, He3, scratch); - scratch = screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho; + scratch = screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho; jac.set(Be7, He4, scratch); jac.set(Be7, Li7, 0.0); - scratch = -screened_rates(k_Be7_to_Li7_reaclib)*state.rho*state.y_e - screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho - screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*state.rho*state.y_e; jac.set(Be7, Be7, scratch); scratch = screened_rates(k_B8_to_p_Be7_reaclib); @@ -1410,7 +1352,7 @@ void jac_nuc(const burn_t& state, jac.set(Be7, Ne21, 0.0); - scratch = screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho; + scratch = screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho; jac.set(B8, H1, scratch); jac.set(B8, H2, 0.0); @@ -1421,10 +1363,10 @@ void jac_nuc(const burn_t& state, jac.set(B8, Li7, 0.0); - scratch = screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho; jac.set(B8, Be7, scratch); - scratch = -screened_rates(k_B8_to_He4_He4_reaclib) - screened_rates(k_B8_to_p_Be7_reaclib); + scratch = -screened_rates(k_B8_to_He4_He4_beta_pos_reaclib) - screened_rates(k_B8_to_p_Be7_reaclib); jac.set(B8, B8, scratch); jac.set(B8, B11, 0.0); @@ -1463,24 +1405,24 @@ void jac_nuc(const burn_t& state, jac.set(B8, Ne21, 0.0); - scratch = -screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*state.rho; + scratch = -screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*state.rho - screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*state.rho; jac.set(B11, H1, scratch); jac.set(B11, H2, 0.0); jac.set(B11, He3, 0.0); - scratch = screened_rates(k_He4_Li7_to_B11_reaclib)*Y(Li7)*state.rho; + scratch = screened_rates(k_Li7_He4_to_B11_reaclib)*Y(Li7)*state.rho; jac.set(B11, He4, scratch); - scratch = screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*state.rho; jac.set(B11, Li7, scratch); jac.set(B11, Be7, 0.0); jac.set(B11, B8, 0.0); - scratch = -screened_rates(k_p_B11_to_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_B11_p_to_3He4_reaclib)*Y(H1)*state.rho - screened_rates(k_B11_p_to_C12_reaclib)*Y(H1)*state.rho; jac.set(B11, B11, scratch); jac.set(B11, C12, 0.0); @@ -1517,14 +1459,14 @@ void jac_nuc(const burn_t& state, jac.set(B11, Ne21, 0.0); - scratch = screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho; + scratch = screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho; jac.set(C12, H1, scratch); jac.set(C12, H2, 0.0); jac.set(C12, He3, 0.0); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); jac.set(C12, Li7, 0.0); @@ -1533,10 +1475,10 @@ void jac_nuc(const burn_t& state, jac.set(C12, B8, 0.0); - scratch = screened_rates(k_p_B11_to_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_B11_p_to_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, B11, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(C12, C12, scratch); jac.set(C12, C13, 0.0); @@ -1545,7 +1487,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, N15, scratch); jac.set(C12, O14, 0.0); @@ -1572,7 +1514,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ne21, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho; jac.set(C13, H1, scratch); jac.set(C13, H2, 0.0); @@ -1591,10 +1533,10 @@ void jac_nuc(const burn_t& state, jac.set(C13, C12, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(C13, C13, scratch); - scratch = screened_rates(k_N13_to_C13_reaclib); + scratch = screened_rates(k_N13_to_C13_beta_pos_reaclib); jac.set(C13, N13, scratch); jac.set(C13, N14, 0.0); @@ -1625,14 +1567,14 @@ void jac_nuc(const burn_t& state, jac.set(C13, Ne21, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho; jac.set(N13, H1, scratch); jac.set(N13, H2, 0.0); jac.set(N13, He3, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); jac.set(N13, Li7, 0.0); @@ -1643,12 +1585,12 @@ void jac_nuc(const burn_t& state, jac.set(N13, B11, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); jac.set(N13, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_reaclib) - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_N13_to_C13_beta_pos_reaclib); jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); @@ -1679,14 +1621,14 @@ void jac_nuc(const burn_t& state, jac.set(N13, Ne21, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(N14, H1, scratch); jac.set(N14, H2, 0.0); jac.set(N14, He3, 0.0); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, Li7, 0.0); @@ -1699,24 +1641,24 @@ void jac_nuc(const burn_t& state, jac.set(N14, C12, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, C13, scratch); jac.set(N14, N13, 0.0); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(N14, N14, scratch); jac.set(N14, N15, 0.0); - scratch = screened_rates(k_O14_to_N14_reaclib); + scratch = screened_rates(k_O14_to_N14_beta_pos_reaclib); jac.set(N14, O14, scratch); jac.set(N14, O15, 0.0); jac.set(N14, O16, 0.0); - scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, O17, scratch); jac.set(N14, O18, 0.0); @@ -1735,14 +1677,14 @@ void jac_nuc(const burn_t& state, jac.set(N14, Ne21, 0.0); - scratch = -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(N15, H1, scratch); jac.set(N15, H2, 0.0); jac.set(N15, He3, 0.0); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho; jac.set(N15, He4, scratch); jac.set(N15, Li7, 0.0); @@ -1761,19 +1703,19 @@ void jac_nuc(const burn_t& state, jac.set(N15, N14, 0.0); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(N15, N15, scratch); jac.set(N15, O14, 0.0); - scratch = screened_rates(k_O15_to_N15_reaclib); + scratch = screened_rates(k_O15_to_N15_beta_pos_reaclib); jac.set(N15, O15, scratch); jac.set(N15, O16, 0.0); jac.set(N15, O17, 0.0); - scratch = screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(N15, O18, scratch); jac.set(N15, F17, 0.0); @@ -1790,14 +1732,14 @@ void jac_nuc(const burn_t& state, jac.set(N15, Ne21, 0.0); - scratch = screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho; jac.set(O14, H1, scratch); jac.set(O14, H2, 0.0); jac.set(O14, He3, 0.0); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(O14, He4, scratch); jac.set(O14, Li7, 0.0); @@ -1812,14 +1754,14 @@ void jac_nuc(const burn_t& state, jac.set(O14, C13, 0.0); - scratch = screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho; jac.set(O14, N13, scratch); jac.set(O14, N14, 0.0); jac.set(O14, N15, 0.0); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_reaclib); + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_beta_pos_reaclib); jac.set(O14, O14, scratch); jac.set(O14, O15, 0.0); @@ -1844,14 +1786,14 @@ void jac_nuc(const burn_t& state, jac.set(O14, Ne21, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho; jac.set(O15, H1, scratch); jac.set(O15, H2, 0.0); jac.set(O15, He3, 0.0); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho; jac.set(O15, He4, scratch); jac.set(O15, Li7, 0.0); @@ -1868,14 +1810,14 @@ void jac_nuc(const burn_t& state, jac.set(O15, N13, 0.0); - scratch = screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, N14, scratch); jac.set(O15, N15, 0.0); jac.set(O15, O14, 0.0); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_reaclib); + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_beta_pos_reaclib); jac.set(O15, O15, scratch); jac.set(O15, O16, 0.0); @@ -1886,7 +1828,7 @@ void jac_nuc(const burn_t& state, jac.set(O15, F17, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, F18, scratch); jac.set(O15, F19, 0.0); @@ -1899,14 +1841,14 @@ void jac_nuc(const burn_t& state, jac.set(O15, Ne21, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho; jac.set(O16, H1, scratch); jac.set(O16, H2, 0.0); jac.set(O16, He3, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(O16, He4, scratch); jac.set(O16, Li7, 0.0); @@ -1917,24 +1859,24 @@ void jac_nuc(const burn_t& state, jac.set(O16, B11, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, C12, scratch); jac.set(O16, C13, 0.0); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, N15, scratch); jac.set(O16, O14, 0.0); jac.set(O16, O15, 0.0); - scratch = -screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(O16, O16, scratch); jac.set(O16, O17, 0.0); @@ -1946,7 +1888,7 @@ void jac_nuc(const burn_t& state, jac.set(O16, F18, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, F19, scratch); jac.set(O16, Ne18, 0.0); @@ -1957,14 +1899,14 @@ void jac_nuc(const burn_t& state, jac.set(O16, Ne21, 0.0); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(O17, H1, scratch); jac.set(O17, H2, 0.0); jac.set(O17, He3, 0.0); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho; jac.set(O17, He4, scratch); jac.set(O17, Li7, 0.0); @@ -1991,12 +1933,12 @@ void jac_nuc(const burn_t& state, jac.set(O17, O16, 0.0); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(O17, O17, scratch); jac.set(O17, O18, 0.0); - scratch = screened_rates(k_F17_to_O17_weaktab); + scratch = screened_rates(k_F17_to_O17_electron_capture_weaktab); jac.set(O17, F17, scratch); jac.set(O17, F18, 0.0); @@ -2011,7 +1953,7 @@ void jac_nuc(const burn_t& state, jac.set(O17, Ne21, 0.0); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(O18, H1, scratch); jac.set(O18, H2, 0.0); @@ -2046,12 +1988,12 @@ void jac_nuc(const burn_t& state, jac.set(O18, O17, 0.0); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(O18, O18, scratch); jac.set(O18, F17, 0.0); - scratch = screened_rates(k_F18_to_O18_weaktab); + scratch = screened_rates(k_F18_to_O18_electron_capture_weaktab); jac.set(O18, F18, scratch); jac.set(O18, F19, 0.0); @@ -2064,14 +2006,14 @@ void jac_nuc(const burn_t& state, jac.set(O18, Ne21, 0.0); - scratch = -screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho; jac.set(F17, H1, scratch); jac.set(F17, H2, 0.0); jac.set(F17, He3, 0.0); - scratch = -screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(F17, He4, scratch); jac.set(F17, Li7, 0.0); @@ -2092,19 +2034,19 @@ void jac_nuc(const burn_t& state, jac.set(F17, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(F17, O14, scratch); jac.set(F17, O15, 0.0); - scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, O16, scratch); jac.set(F17, O17, 0.0); jac.set(F17, O18, 0.0); - scratch = -screened_rates(k_F17_to_O17_weaktab) - screened_rates(k_F17_to_p_O16_reaclib) - screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho - screened_rates(k_F17_to_O17_electron_capture_weaktab) - screened_rates(k_F17_to_p_O16_reaclib); jac.set(F17, F17, scratch); jac.set(F17, F18, 0.0); @@ -2119,14 +2061,14 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ne21, 0.0); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho; jac.set(F18, H1, scratch); jac.set(F18, H2, 0.0); jac.set(F18, He3, 0.0); - scratch = -screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho; + scratch = -screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho; jac.set(F18, He4, scratch); jac.set(F18, Li7, 0.0); @@ -2143,7 +2085,7 @@ void jac_nuc(const burn_t& state, jac.set(F18, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho; jac.set(F18, N14, scratch); jac.set(F18, N15, 0.0); @@ -2154,19 +2096,19 @@ void jac_nuc(const burn_t& state, jac.set(F18, O16, 0.0); - scratch = screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho; jac.set(F18, O17, scratch); jac.set(F18, O18, 0.0); jac.set(F18, F17, 0.0); - scratch = -screened_rates(k_F18_to_O18_weaktab) - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_to_O18_electron_capture_weaktab); jac.set(F18, F18, scratch); jac.set(F18, F19, 0.0); - scratch = screened_rates(k_Ne18_to_F18_weaktab); + scratch = screened_rates(k_Ne18_to_F18_electron_capture_weaktab); jac.set(F18, Ne18, scratch); jac.set(F18, Ne19, 0.0); @@ -2175,14 +2117,14 @@ void jac_nuc(const burn_t& state, jac.set(F18, Ne21, 0.0); - scratch = -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho; jac.set(F19, H1, scratch); jac.set(F19, H2, 0.0); jac.set(F19, He3, 0.0); - scratch = screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho; + scratch = screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho; jac.set(F19, He4, scratch); jac.set(F19, Li7, 0.0); @@ -2201,7 +2143,7 @@ void jac_nuc(const burn_t& state, jac.set(F19, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho; jac.set(F19, N15, scratch); jac.set(F19, O14, 0.0); @@ -2212,33 +2154,33 @@ void jac_nuc(const burn_t& state, jac.set(F19, O17, 0.0); - scratch = screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho; jac.set(F19, O18, scratch); jac.set(F19, F17, 0.0); jac.set(F19, F18, 0.0); - scratch = -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho; jac.set(F19, F19, scratch); jac.set(F19, Ne18, 0.0); - scratch = screened_rates(k_Ne19_to_F19_weaktab); + scratch = screened_rates(k_Ne19_to_F19_electron_capture_weaktab); jac.set(F19, Ne19, scratch); jac.set(F19, Ne20, 0.0); jac.set(F19, Ne21, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho; jac.set(Ne18, H1, scratch); jac.set(Ne18, H2, 0.0); jac.set(Ne18, He3, 0.0); - scratch = screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho; + scratch = screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho; jac.set(Ne18, He4, scratch); jac.set(Ne18, Li7, 0.0); @@ -2259,7 +2201,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho; jac.set(Ne18, O14, scratch); jac.set(Ne18, O15, 0.0); @@ -2270,14 +2212,14 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, O18, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho; jac.set(Ne18, F17, scratch); jac.set(Ne18, F18, 0.0); jac.set(Ne18, F19, 0.0); - scratch = -screened_rates(k_Ne18_to_F18_weaktab); + scratch = -screened_rates(k_Ne18_to_F18_electron_capture_weaktab); jac.set(Ne18, Ne18, scratch); jac.set(Ne18, Ne19, 0.0); @@ -2286,14 +2228,14 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, Ne21, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho; jac.set(Ne19, H1, scratch); jac.set(Ne19, H2, 0.0); jac.set(Ne19, He3, 0.0); - scratch = screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho; + scratch = screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho; jac.set(Ne19, He4, scratch); jac.set(Ne19, Li7, 0.0); @@ -2316,7 +2258,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho; jac.set(Ne19, O15, scratch); jac.set(Ne19, O16, 0.0); @@ -2327,28 +2269,28 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, F17, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho; jac.set(Ne19, F18, scratch); jac.set(Ne19, F19, 0.0); jac.set(Ne19, Ne18, 0.0); - scratch = -screened_rates(k_Ne19_to_F19_weaktab); + scratch = -screened_rates(k_Ne19_to_F19_electron_capture_weaktab); jac.set(Ne19, Ne19, scratch); jac.set(Ne19, Ne20, 0.0); jac.set(Ne19, Ne21, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho; jac.set(Ne20, H1, scratch); jac.set(Ne20, H2, 0.0); jac.set(Ne20, He3, 0.0); - scratch = screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho; jac.set(Ne20, He4, scratch); jac.set(Ne20, Li7, 0.0); @@ -2373,19 +2315,19 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); jac.set(Ne20, O17, 0.0); jac.set(Ne20, O18, 0.0); - scratch = screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, F17, scratch); jac.set(Ne20, F18, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, F19, scratch); jac.set(Ne20, Ne18, 0.0); @@ -2402,7 +2344,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, He3, 0.0); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho; jac.set(Ne21, He4, scratch); jac.set(Ne21, Li7, 0.0); @@ -2429,14 +2371,14 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, O16, 0.0); - scratch = screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, O17, scratch); jac.set(Ne21, O18, 0.0); jac.set(Ne21, F17, 0.0); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, F18, scratch); jac.set(Ne21, F19, 0.0); diff --git a/networks/nova-li/approximate_rates.H b/networks/nova-li/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/nova-li/approximate_rates.H +++ b/networks/nova-li/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/nova-li/branched_rates.H b/networks/nova-li/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/nova-li/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/nova-li/derived_rates.H b/networks/nova-li/derived_rates.H index 579d7dd3d..2d8da657a 100644 --- a/networks/nova-li/derived_rates.H +++ b/networks/nova-li/derived_rates.H @@ -7,21 +7,23 @@ #include #include -using namespace Rates; +namespace derived_rates { + using namespace Rates; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + } + } #endif diff --git a/networks/nova-li/modified_rates.H b/networks/nova-li/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/nova-li/modified_rates.H +++ b/networks/nova-li/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/nova-li/nova_li.py b/networks/nova-li/nova_li.py index 32ca03117..40b0092b9 100644 --- a/networks/nova-li/nova_li.py +++ b/networks/nova-li/nova_li.py @@ -32,16 +32,14 @@ def create_network(): # cool state rho = 1.7e3 T = 7.e7 - comp = pyna.Composition(net.unique_nuclei) - comp.set_solar_like() - state1 = (rho, T, comp) + comp = pyna.Composition(net.unique_nuclei, init="solar") + state1 = pyna.ThermoState(rho=rho, T=T, comp=comp) # hotter state rho = 1.e3 T = 1.e8 - comp = pyna.Composition(net.unique_nuclei) - comp.set_equal() - state2 = (rho, T, comp) + comp = pyna.Composition(net.unique_nuclei, init="uniform") + state2 = pyna.ThermoState(rho=rho, T=T, comp=comp) cutoff_ratio = 1.e-50 diff --git a/networks/nova-li/pynucastro-info.txt b/networks/nova-li/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/nova-li/pynucastro-info.txt +++ b/networks/nova-li/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/nova-li/reaclib_rates.H b/networks/nova-li/reaclib_rates.H index 8dbb094ec..a97768dc5 100644 --- a/networks/nova-li/reaclib_rates.H +++ b/networks/nova-li/reaclib_rates.H @@ -8,4122 +8,4125 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Be7_to_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // Be7 --> Li7 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_to_Li7_electron_capture_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Be7 --> Li7 - // ecw - ln_set_rate = -23.8328 + 3.02033 * tfactors.T913 - + -0.0742132 * tfactors.T9 + -0.00792386 * tfactors.T953 + -0.650113 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 3.02033 * tfactors.T923i - + -0.0742132 + (5.0/3.0) * -0.00792386 * tfactors.T923 + -0.650113 * tfactors.T9i; + // ecw + ln_set_rate = -23.8328 + 3.02033 * tfactors.T913 + + -0.0742132 * tfactors.T9 + -0.00792386 * tfactors.T953 + -0.650113 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 3.02033 * tfactors.T923i + + -0.0742132 + (5.0/3.0) * -0.00792386 * tfactors.T923 + -0.650113 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_C13_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 --> C13 - // N13 --> C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -6.7601; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -6.7601; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_N14_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 --> N14 - // O14 --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -4.62354; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -4.62354; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_N15_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 --> N15 - // O15 --> N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -5.17053; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -5.17053; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B8_to_p_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B8_to_p_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B8 --> p + Be7 - // B8 --> p + Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 31.0163 + -8.93482 * tfactors.T9i; - // nacrr - ln_set_rate = 31.0163 + -8.93482 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.93482 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.93482 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 35.8138 + -1.58982 * tfactors.T9i + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 + + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nacrn - ln_set_rate = 35.8138 + -1.58982 * tfactors.T9i + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 - + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.58982 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i + + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.58982 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i - + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B8_to_He4_He4_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B8_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B8 --> He4 + He4 - // B8 --> He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -0.105148; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -0.105148; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F17_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 --> p + O16 - // F17 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 40.9135 + -6.96583 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ia08n - ln_set_rate = 40.9135 + -6.96583 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.96583 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.96583 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_p_p_to_d_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_p_to_d_reaclib_beta_pos(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // p + p --> d - // p + p --> d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bet+w + ln_set_rate = -34.7863 + -3.51193 * tfactors.T913i + 3.10086 * tfactors.T913 + + -0.198314 * tfactors.T9 + 0.0126251 * tfactors.T953 + -1.02517 * tfactors.lnT9; - // bet+w - ln_set_rate = -34.7863 + -3.51193 * tfactors.T913i + 3.10086 * tfactors.T913 - + -0.198314 * tfactors.T9 + 0.0126251 * tfactors.T953 + -1.02517 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.51193 * tfactors.T943i + (1.0/3.0) * 3.10086 * tfactors.T923i + + -0.198314 + (5.0/3.0) * 0.0126251 * tfactors.T923 + -1.02517 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.51193 * tfactors.T943i + (1.0/3.0) * 3.10086 * tfactors.T923i - + -0.198314 + (5.0/3.0) * 0.0126251 * tfactors.T923 + -1.02517 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_p_p_to_d_electron_capture_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_p_to_d_reaclib_electron_capture(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // p + p --> d - // p + p --> d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ecw + ln_set_rate = -43.6499 + -0.00246064 * tfactors.T9i + -2.7507 * tfactors.T913i + -0.424877 * tfactors.T913 + + 0.015987 * tfactors.T9 + -0.000690875 * tfactors.T953 + -0.207625 * tfactors.lnT9; - // ecw - ln_set_rate = -43.6499 + -0.00246064 * tfactors.T9i + -2.7507 * tfactors.T913i + -0.424877 * tfactors.T913 - + 0.015987 * tfactors.T9 + -0.000690875 * tfactors.T953 + -0.207625 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00246064 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.7507 * tfactors.T943i + (1.0/3.0) * -0.424877 * tfactors.T923i + + 0.015987 + (5.0/3.0) * -0.000690875 * tfactors.T923 + -0.207625 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00246064 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.7507 * tfactors.T943i + (1.0/3.0) * -0.424877 * tfactors.T923i - + 0.015987 + (5.0/3.0) * -0.000690875 * tfactors.T923 + -0.207625 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_p_to_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_d_to_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + p --> He3 - // d + p --> He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04 + ln_set_rate = 8.93525 + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 + + 0.333333 * tfactors.lnT9; - // de04 - ln_set_rate = 8.93525 + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 - + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i + + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i - + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04n + ln_set_rate = 7.52898 + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 + + -0.666667 * tfactors.lnT9; - // de04n - ln_set_rate = 7.52898 + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_d_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_d_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + d --> He4 - // d + d --> He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 3.78177 + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 + + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 3.78177 + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 - + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i + + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i - + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_p_to_He4_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_He3_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + p --> He4 - // He3 + p --> He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bet+w + ln_set_rate = -27.7611 + -4.30107e-12 * tfactors.T9i + -6.141 * tfactors.T913i + -1.93473e-09 * tfactors.T913 + + 2.04145e-10 * tfactors.T9 + -1.80372e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // bet+w - ln_set_rate = -27.7611 + -4.30107e-12 * tfactors.T9i + -6.141 * tfactors.T913i + -1.93473e-09 * tfactors.T913 - + 2.04145e-10 * tfactors.T9 + -1.80372e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.30107e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.141 * tfactors.T943i + (1.0/3.0) * -1.93473e-09 * tfactors.T923i + + 2.04145e-10 + (5.0/3.0) * -1.80372e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.30107e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.141 * tfactors.T943i + (1.0/3.0) * -1.93473e-09 * tfactors.T923i - + 2.04145e-10 + (5.0/3.0) * -1.80372e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_He4_to_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He3_to_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + He4 --> Be7 - // He3 + He4 --> Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cd08n + ln_set_rate = 17.7075 + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 + + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 1.33333 * tfactors.lnT9; - // cd08n - ln_set_rate = 17.7075 + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 - + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i + + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i - + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cd08n + ln_set_rate = 15.6099 + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 + + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cd08n - ln_set_rate = 15.6099 + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 - + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i + + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i - + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_He4_to_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Li7_to_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + He4 --> B11 - // Li7 + He4 --> B11 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 10.6937 + -6.44203 * tfactors.T9i + + 0.190698 * tfactors.T9 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 10.6937 + -6.44203 * tfactors.T9i - + 0.190698 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.44203 * tfactors.T9i * tfactors.T9i + + 0.190698 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.44203 * tfactors.T9i * tfactors.T9i - + 0.190698 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 5.81084 + -2.95915 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 5.81084 + -2.95915 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.95915 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.95915 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 18.4284 + -19.163 * tfactors.T913i + 0.0587651 * tfactors.T913 + + 0.773338 * tfactors.T9 + -0.201519 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.4284 + -19.163 * tfactors.T913i + 0.0587651 * tfactors.T913 - + 0.773338 * tfactors.T9 + -0.201519 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -19.163 * tfactors.T943i + (1.0/3.0) * 0.0587651 * tfactors.T923i + + 0.773338 + (5.0/3.0) * -0.201519 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -19.163 * tfactors.T943i + (1.0/3.0) * 0.0587651 * tfactors.T923i - + 0.773338 + (5.0/3.0) * -0.201519 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_p_to_B8_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Be7_to_B8_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + p --> B8 - // Be7 + p --> B8 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 7.73399 + -7.345 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 7.73399 + -7.345 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.345 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.345 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 12.5315 + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 + + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 12.5315 + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 - + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i + + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i - + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B11_p_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_B11_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B11 + p --> C12 - // B11 + p --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nw00n + ln_set_rate = 25.5647 + -12.095 * tfactors.T913i + -6.68421 * tfactors.T913 + + -0.0148736 * tfactors.T9 + 0.0364288 * tfactors.T953 + 1.33333 * tfactors.lnT9; - // nw00n - ln_set_rate = 25.5647 + -12.095 * tfactors.T913i + -6.68421 * tfactors.T913 - + -0.0148736 * tfactors.T9 + 0.0364288 * tfactors.T953 + 1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -6.68421 * tfactors.T923i + + -0.0148736 + (5.0/3.0) * 0.0364288 * tfactors.T923 + 1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -6.68421 * tfactors.T923i - + -0.0148736 + (5.0/3.0) * 0.0364288 * tfactors.T923 + 1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nw00n + ln_set_rate = 18.6165 + -12.095 * tfactors.T913i + -1.95046 * tfactors.T913 + + 9.56928 * tfactors.T9 + -10.0637 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nw00n - ln_set_rate = 18.6165 + -12.095 * tfactors.T913i + -1.95046 * tfactors.T913 - + 9.56928 * tfactors.T9 + -10.0637 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -1.95046 * tfactors.T923i + + 9.56928 + (5.0/3.0) * -10.0637 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -1.95046 * tfactors.T923i - + 9.56928 + (5.0/3.0) * -10.0637 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nw00r + ln_set_rate = 8.67352 + -1.71197 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nw00r - ln_set_rate = 8.67352 + -1.71197 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.71197 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.71197 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + p --> N13 - // C12 + p --> N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_p_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C13_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + p --> N14 - // C13 + p --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_p_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N13_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + p --> O14 - // N13 + p --> O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lg06r + ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // lg06r - ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lg06n + ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lg06n - ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_p_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N14_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + p --> O15 - // N14 + p --> O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // im05r + ln_set_rate = 6.73578 + -4.891 * tfactors.T9i + + 0.0682 * tfactors.lnT9; - // im05r - ln_set_rate = 6.73578 + -4.891 * tfactors.T9i - + 0.0682 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i + + 0.0682 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i - + 0.0682 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05r + ln_set_rate = 7.65444 + -2.998 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // im05r - ln_set_rate = 7.65444 + -2.998 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // im05n - ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // im05n - ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> O16 - // N15 + p --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li10r + ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i + + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i - + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i + + 0.0459037 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i - + 0.0459037 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10r + ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10n + ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // li10n - ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + He4 --> F19 - // N15 + He4 --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> Ne18 - // O14 + He4 --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wh87n + ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // wh87n - ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -4.69948 + -12.159 * tfactors.T9i + + 5.0 * tfactors.lnT9; - // wh87r - ln_set_rate = -4.69948 + -12.159 * tfactors.T9i - + 5.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i + + 5.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i - + 5.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = 3.52636 + -22.61 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = 3.52636 + -22.61 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -2.15417 + -11.73 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = -2.15417 + -11.73 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + He4 --> Ne19 - // O15 + He4 --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // dc11r + ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11r + ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11n + ln_set_rate = 26.2914 + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // dc11n - ln_set_rate = 26.2914 + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> F18 - // O17 + p --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -13.077 + -0.746296 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.077 + -0.746296 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_He4_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O17_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + He4 --> Ne21 - // O17 + He4 --> Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // be13r + ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; - // be13r - ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; - // be13r - ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; - // be13r - ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> F19 - // O18 + p --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 19.917 + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.917 + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + p --> Ne18 - // F17 + p --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cb09 + ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; - // cb09 - ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cb09 + ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; - // cb09 - ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> Ne19 - // F18 + p --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> Ne20 - // F19 + p --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_d_to_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_He3_to_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + d --> p + He4 - // He3 + d --> p + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04 + ln_set_rate = 41.2969 + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 + + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; - // de04 - ln_set_rate = 41.2969 + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 - + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i + + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i - + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 24.6839 + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 + + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 24.6839 + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 - + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i + + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i - + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_p_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Li7_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + p --> He4 + He4 - // Li7 + p --> He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04r + ln_set_rate = 21.8999 + -26.1527 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // de04r - ln_set_rate = 21.8999 + -26.1527 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.1527 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.1527 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 20.4438 + -8.4727 * tfactors.T913i + 0.297934 * tfactors.T913 + + 0.0582335 * tfactors.T9 + -0.00413383 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 20.4438 + -8.4727 * tfactors.T913i + 0.297934 * tfactors.T913 - + 0.0582335 * tfactors.T9 + -0.00413383 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.297934 * tfactors.T923i + + 0.0582335 + (5.0/3.0) * -0.00413383 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.297934 * tfactors.T923i - + 0.0582335 + (5.0/3.0) * -0.00413383 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04r + ln_set_rate = 14.2538 + -4.478 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // de04r - ln_set_rate = 14.2538 + -4.478 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.478 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.478 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 11.9576 + -8.4727 * tfactors.T913i + 0.417943 * tfactors.T913 + + 5.34565 * tfactors.T9 + -4.8684 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 11.9576 + -8.4727 * tfactors.T913i + 0.417943 * tfactors.T913 - + 5.34565 * tfactors.T9 + -4.8684 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.417943 * tfactors.T923i + + 5.34565 + (5.0/3.0) * -4.8684 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.417943 * tfactors.T923i - + 5.34565 + (5.0/3.0) * -4.8684 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> He4 + C12 - // N15 + p --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 20.8972 + -7.406 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 20.8972 + -7.406 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> p + F17 - // O14 + He4 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Ha96r + ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 18.6518 + -26.0 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 18.6518 + -26.0 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96n + ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // Ha96n - ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 16.3087 + -22.51 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 16.3087 + -22.51 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 11.1184 + -13.6 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 11.1184 + -13.6 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = -106.091 + -0.453036 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = -106.091 + -0.453036 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> He4 + N14 - // O17 + p --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.579 + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.579 + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> He4 + N15 - // O18 + p --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.2725 + -1.663 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.2725 + -1.663 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_He4_to_p_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F17_to_p_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + He4 --> p + Ne20 - // F17 + He4 --> p + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 38.6287 + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 38.6287 + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> He4 + O15 - // F18 + p --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_He4_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F18_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + He4 --> p + Ne21 - // F18 + He4 --> p + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; - // rpsmr - ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> He4 + O16 - // F19 + p --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 26.2916 + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 26.2916 + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 14.3586 + -3.286 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // nacrr - ln_set_rate = 14.3586 + -3.286 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 8.239 + -2.46828 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 8.239 + -2.46828 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_He3_to_p_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He3_He3_to_p_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + He3 --> p + p + He4 - // He3 + He3 --> p + p + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 24.7788 + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 + + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 24.7788 + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 - + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i + + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i - + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_d_to_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_Be7_to_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + d --> p + He4 + He4 - // Be7 + d --> p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 27.6987 + -12.428 * tfactors.T913i + + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 27.6987 + -12.428 * tfactors.T913i - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.428 * tfactors.T943i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.428 * tfactors.T943i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B11_p_to_3He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_B11_to_He4_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B11 + p --> 3 He4 - // B11 + p --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -14.9395 + -1.724 * tfactors.T9i + 8.49175 * tfactors.T913i + 27.3254 * tfactors.T913 + + -3.72071 * tfactors.T9 + 0.275516 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -14.9395 + -1.724 * tfactors.T9i + 8.49175 * tfactors.T913i + 27.3254 * tfactors.T913 - + -3.72071 * tfactors.T9 + 0.275516 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.724 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.49175 * tfactors.T943i + (1.0/3.0) * 27.3254 * tfactors.T923i + + -3.72071 + (5.0/3.0) * 0.275516 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.724 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.49175 * tfactors.T943i + (1.0/3.0) * 27.3254 * tfactors.T923i - + -3.72071 + (5.0/3.0) * 0.275516 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 28.6442 + -12.097 * tfactors.T913i + -0.0496312 * tfactors.T913 + + 0.687736 * tfactors.T9 + -0.564229 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 28.6442 + -12.097 * tfactors.T913i + -0.0496312 * tfactors.T913 - + 0.687736 * tfactors.T9 + -0.564229 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.097 * tfactors.T943i + (1.0/3.0) * -0.0496312 * tfactors.T923i + + 0.687736 + (5.0/3.0) * -0.564229 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.097 * tfactors.T943i + (1.0/3.0) * -0.0496312 * tfactors.T923i - + 0.687736 + (5.0/3.0) * -0.564229 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_He3_to_p_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He3_Be7_to_p_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + He3 --> p + p + He4 + He4 - // Be7 + He3 --> p + p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = 31.7435 + -5.45213e-12 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 + + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // mafon - ln_set_rate = 31.7435 + -5.45213e-12 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 - + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.45213e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i + + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.45213e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i - + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // Be7_to_Li7_reaclib + { + // Be7_to_Li7_electron_capture_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Be7_to_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Be7_to_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Be7_to_Li7_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Be7_to_Li7_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_to_Li7_electron_capture_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_to_Li7_electron_capture_reaclib) = drate_dT; + } } - } - { - // N13_to_C13_reaclib + { + // N13_to_C13_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_C13_beta_pos_reaclib) = drate_dT; + } } - } - { - // O14_to_N14_reaclib + { + // O14_to_N14_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_N14_beta_pos_reaclib) = drate_dT; + } } - } - { - // O15_to_N15_reaclib + { + // O15_to_N15_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_N15_beta_pos_reaclib) = drate_dT; + } } - } - { - // B8_to_p_Be7_reaclib + { + // B8_to_p_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B8_to_p_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_p_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B8_to_p_Be7_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B8_to_p_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_p_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_to_p_Be7_reaclib) = drate_dT; + } } - } - { - // B8_to_He4_He4_reaclib + { + // B8_to_He4_He4_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B8_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B8_to_He4_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_He4_He4_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_beta_pos_reaclib) = drate_dT; + } } - } - { - // F17_to_p_O16_reaclib + { + // F17_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_p_O16_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_p_O16_reaclib) = drate_dT; + } } - } - { - // p_p_to_d_reaclib_beta_pos + { + // p_p_to_d_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_p); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); - } + log_scor = rate_eval.log_screen(k_p_p); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); + } #endif - rate_p_p_to_d_reaclib_beta_pos(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos) = drate_dT; + rate_p_p_to_d_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_to_d_beta_pos_reaclib) = drate_dT; + } } - } - { - // p_p_to_d_reaclib_electron_capture + { + // p_p_to_d_electron_capture_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_p); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); - } + log_scor = rate_eval.log_screen(k_p_p); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); + } #endif - rate_p_p_to_d_reaclib_electron_capture(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_electron_capture) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_electron_capture) = drate_dT; + rate_p_p_to_d_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_electron_capture_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_to_d_electron_capture_reaclib) = drate_dT; + } } - } - { - // p_d_to_He3_reaclib + { + // d_p_to_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_d); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_d); - } + log_scor = rate_eval.log_screen(k_p_d); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_d); + } #endif - rate_p_d_to_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_d_to_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_d_to_He3_reaclib) = drate_dT; + rate_d_p_to_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_p_to_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_p_to_He3_reaclib) = drate_dT; + } } - } - { - // d_d_to_He4_reaclib + { + // d_d_to_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_d); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_d); - } + log_scor = rate_eval.log_screen(k_d_d); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_d); + } #endif - rate_d_d_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_d_to_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_d_to_He4_reaclib) = drate_dT; + rate_d_d_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_d_to_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_d_to_He4_reaclib) = drate_dT; + } } - } - { - // p_He3_to_He4_reaclib + { + // He3_p_to_He4_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He3); - } + log_scor = rate_eval.log_screen(k_p_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He3); + } #endif - rate_p_He3_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He3_to_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_He3_to_He4_reaclib) = drate_dT; + rate_He3_p_to_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_p_to_He4_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_p_to_He4_beta_pos_reaclib) = drate_dT; + } } - } - { - // He4_He3_to_Be7_reaclib + { + // He3_He4_to_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He4); - } + log_scor = rate_eval.log_screen(k_He3_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He4); + } #endif - rate_He4_He3_to_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He3_to_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7_reaclib) = drate_dT; + rate_He3_He4_to_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_He4_to_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_He4_to_Be7_reaclib) = drate_dT; + } } - } - { - // He4_Li7_to_B11_reaclib + { + // Li7_He4_to_B11_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li7); - } + log_scor = rate_eval.log_screen(k_He4_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li7); + } #endif - rate_He4_Li7_to_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Li7_to_B11_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Li7_to_B11_reaclib) = drate_dT; + rate_Li7_He4_to_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_He4_to_B11_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_He4_to_B11_reaclib) = drate_dT; + } } - } - { - // p_Be7_to_B8_reaclib + { + // Be7_p_to_B8_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be7); - } + log_scor = rate_eval.log_screen(k_p_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be7); + } #endif - rate_p_Be7_to_B8_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Be7_to_B8_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Be7_to_B8_reaclib) = drate_dT; + rate_Be7_p_to_B8_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_p_to_B8_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_p_to_B8_reaclib) = drate_dT; + } } - } - { - // p_B11_to_C12_reaclib + { + // B11_p_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_B11); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B11); - } + log_scor = rate_eval.log_screen(k_p_B11); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B11); + } #endif - rate_p_B11_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_B11_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_B11_to_C12_reaclib) = drate_dT; + rate_B11_p_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B11_p_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B11_p_to_C12_reaclib) = drate_dT; + } } - } - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // p_C13_to_N14_reaclib + { + // C13_p_to_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); - } + log_scor = rate_eval.log_screen(k_p_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); + } #endif - rate_p_C13_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_N14_reaclib) = drate_dT; + rate_C13_p_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_p_to_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_p_to_N14_reaclib) = drate_dT; + } } - } - { - // p_N13_to_O14_reaclib + { + // N13_p_to_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); - } + log_scor = rate_eval.log_screen(k_p_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); + } #endif - rate_p_N13_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N13_to_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N13_to_O14_reaclib) = drate_dT; + rate_N13_p_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_p_to_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_p_to_O14_reaclib) = drate_dT; + } } - } - { - // p_N14_to_O15_reaclib + { + // N14_p_to_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); - } + log_scor = rate_eval.log_screen(k_p_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); + } #endif - rate_p_N14_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N14_to_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N14_to_O15_reaclib) = drate_dT; + rate_N14_p_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_p_to_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_p_to_O15_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_N15_to_O16_reaclib + { + // N15_p_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_O16_reaclib) = drate_dT; + rate_N15_p_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_N15_to_F19_reaclib + { + // N15_He4_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N15_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_F19_reaclib) = drate_dT; + rate_N15_He4_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_He4_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_F19_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_Ne18_reaclib + { + // O14_He4_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18_reaclib) = drate_dT; + rate_O14_He4_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_Ne18_reaclib) = drate_dT; + } } - } - { - // He4_O15_to_Ne19_reaclib + { + // O15_He4_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O15_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19_reaclib) = drate_dT; + rate_O15_He4_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_He4_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_Ne19_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // p_O17_to_F18_reaclib + { + // O17_p_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_F18_reaclib) = drate_dT; + rate_O17_p_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_F18_reaclib) = drate_dT; + } } - } - { - // He4_O17_to_Ne21_reaclib + { + // O17_He4_to_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); - } + log_scor = rate_eval.log_screen(k_He4_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); + } #endif - rate_He4_O17_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O17_to_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21_reaclib) = drate_dT; + rate_O17_He4_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_He4_to_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_He4_to_Ne21_reaclib) = drate_dT; + } } - } - { - // p_O18_to_F19_reaclib + { + // O18_p_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_F19_reaclib) = drate_dT; + rate_O18_p_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_F19_reaclib) = drate_dT; + } } - } - { - // p_F17_to_Ne18_reaclib + { + // F17_p_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F17_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18_reaclib) = drate_dT; + rate_F17_p_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_p_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_Ne18_reaclib) = drate_dT; + } } - } - { - // p_F18_to_Ne19_reaclib + { + // F18_p_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19_reaclib) = drate_dT; + rate_F18_p_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_Ne19_reaclib) = drate_dT; + } } - } - { - // p_F19_to_Ne20_reaclib + { + // F19_p_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20_reaclib) = drate_dT; + rate_F19_p_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_Ne20_reaclib) = drate_dT; + } } - } - { - // d_He3_to_p_He4_reaclib + { + // He3_d_to_p_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_He3); - } + log_scor = rate_eval.log_screen(k_d_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_He3); + } #endif - rate_d_He3_to_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_He3_to_p_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4_reaclib) = drate_dT; + rate_He3_d_to_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_d_to_p_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_d_to_p_He4_reaclib) = drate_dT; + } } - } - { - // p_Li7_to_He4_He4_reaclib + { + // Li7_p_to_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li7); - } + log_scor = rate_eval.log_screen(k_p_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li7); + } #endif - rate_p_Li7_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Li7_to_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Li7_to_He4_He4_reaclib) = drate_dT; + rate_Li7_p_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_p_to_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_p_to_He4_He4_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // p_N15_to_He4_C12_reaclib + { + // N15_p_to_He4_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_He4_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12_reaclib) = drate_dT; + rate_N15_p_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_He4_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_He4_C12_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_p_F17_reaclib + { + // O14_He4_to_p_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_p_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17_reaclib) = drate_dT; + rate_O14_He4_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_p_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_p_F17_reaclib) = drate_dT; + } } - } - { - // p_O17_to_He4_N14_reaclib + { + // O17_p_to_He4_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_He4_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14_reaclib) = drate_dT; + rate_O17_p_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_He4_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_He4_N14_reaclib) = drate_dT; + } } - } - { - // p_O18_to_He4_N15_reaclib + { + // O18_p_to_He4_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_He4_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15_reaclib) = drate_dT; + rate_O18_p_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_He4_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_He4_N15_reaclib) = drate_dT; + } } - } - { - // He4_F17_to_p_Ne20_reaclib + { + // F17_He4_to_p_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); - } + log_scor = rate_eval.log_screen(k_He4_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); + } #endif - rate_He4_F17_to_p_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_reaclib) = drate_dT; + rate_F17_He4_to_p_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_He4_to_p_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_He4_to_p_Ne20_reaclib) = drate_dT; + } } - } - { - // p_F18_to_He4_O15_reaclib + { + // F18_p_to_He4_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_He4_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15_reaclib) = drate_dT; + rate_F18_p_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_He4_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_He4_O15_reaclib) = drate_dT; + } } - } - { - // He4_F18_to_p_Ne21_reaclib + { + // F18_He4_to_p_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); - } + log_scor = rate_eval.log_screen(k_He4_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); + } #endif - rate_He4_F18_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F18_to_p_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21_reaclib) = drate_dT; + rate_F18_He4_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_He4_to_p_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_He4_to_p_Ne21_reaclib) = drate_dT; + } } - } - { - // p_F19_to_He4_O16_reaclib + { + // F19_p_to_He4_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_He4_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16_reaclib) = drate_dT; + rate_F19_p_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_He4_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_He4_O16_reaclib) = drate_dT; + } } - } - { - // He3_He3_to_p_p_He4_reaclib + { + // He3_He3_to_p_p_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He3); - } + log_scor = rate_eval.log_screen(k_He3_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He3); + } #endif - rate_He3_He3_to_p_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He3_He3_to_p_p_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4_reaclib) = drate_dT; + rate_He3_He3_to_p_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_He3_to_p_p_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4_reaclib) = drate_dT; + } } - } - { - // d_Be7_to_p_He4_He4_reaclib + { + // Be7_d_to_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Be7); - } + log_scor = rate_eval.log_screen(k_d_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Be7); + } #endif - rate_d_Be7_to_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_Be7_to_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4_reaclib) = drate_dT; + rate_Be7_d_to_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_d_to_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_d_to_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // p_B11_to_He4_He4_He4_reaclib + { + // B11_p_to_3He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_B11); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B11); - } + log_scor = rate_eval.log_screen(k_p_B11); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B11); + } #endif - rate_p_B11_to_He4_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_B11_to_He4_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_B11_to_He4_He4_He4_reaclib) = drate_dT; + rate_B11_p_to_3He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B11_p_to_3He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B11_p_to_3He4_reaclib) = drate_dT; + } } - } - { - // He3_Be7_to_p_p_He4_He4_reaclib + { + // Be7_He3_to_p_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_Be7); - } + log_scor = rate_eval.log_screen(k_He3_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_Be7); + } #endif - rate_He3_Be7_to_p_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4_reaclib) = drate_dT; + rate_Be7_He3_to_p_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_He3_to_p_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/nova-li/tabular_weak_rates.H b/networks/nova-li/tabular_weak_rates.H new file mode 100644 index 000000000..27e9af509 --- /dev/null +++ b/networks/nova-li/tabular_weak_rates.H @@ -0,0 +1,68 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_F17_O17_meta, j_F17_O17_rhoy, j_F17_O17_temp, j_F17_O17_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F17_to_O17_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_O17_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F17) * (edot_nu + edot_gamma); + + tabular_evaluate(j_F18_O18_meta, j_F18_O18_rhoy, j_F18_O18_temp, j_F18_O18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_F18_to_O18_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_O18_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(F18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne18_F18_meta, j_Ne18_F18_rhoy, j_Ne18_F18_temp, j_Ne18_F18_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne18_to_F18_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_F18_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne18) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne19_F19_meta, j_Ne19_F19_rhoy, j_Ne19_F19_temp, j_Ne19_F19_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne19_to_F19_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_F19_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne19) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/nova-li/temperature_table_rates.H b/networks/nova-li/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/nova-li/temperature_table_rates.H +++ b/networks/nova-li/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/nova/Make.package b/networks/nova/Make.package index 35413fdcf..e66796431 100644 --- a/networks/nova/Make.package +++ b/networks/nova/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/nova/actual_network.H b/networks/nova/actual_network.H index 7942832ab..7212bb45c 100644 --- a/networks/nova/actual_network.H +++ b/networks/nova/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -198,36 +198,36 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_N13_to_C13_reaclib = 1, - k_O14_to_N14_reaclib = 2, - k_O15_to_N15_reaclib = 3, - k_F17_to_O17_reaclib = 4, - k_B8_to_He4_He4_reaclib = 5, - k_p_p_to_d_reaclib_beta_pos = 6, - k_p_p_to_d_reaclib_electron_capture = 7, - k_p_d_to_He3_reaclib = 8, + k_N13_to_C13_beta_pos_reaclib = 1, + k_O14_to_N14_beta_pos_reaclib = 2, + k_O15_to_N15_beta_pos_reaclib = 3, + k_F17_to_O17_beta_pos_reaclib = 4, + k_B8_to_He4_He4_beta_pos_reaclib = 5, + k_p_p_to_d_beta_pos_reaclib = 6, + k_p_p_to_d_electron_capture_reaclib = 7, + k_d_p_to_He3_reaclib = 8, k_d_d_to_He4_reaclib = 9, - k_p_He3_to_He4_reaclib = 10, - k_He4_He3_to_Be7_reaclib = 11, - k_p_Be7_to_B8_reaclib = 12, - k_p_C12_to_N13_reaclib = 13, - k_He4_C12_to_O16_reaclib = 14, - k_p_C13_to_N14_reaclib = 15, - k_p_N13_to_O14_reaclib = 16, - k_p_N14_to_O15_reaclib = 17, - k_He4_N14_to_F18_reaclib = 18, - k_p_N15_to_O16_reaclib = 19, - k_p_O16_to_F17_reaclib = 20, - k_p_O17_to_F18_reaclib = 21, - k_d_He3_to_p_He4_reaclib = 22, - k_He4_N13_to_p_O16_reaclib = 23, - k_p_N15_to_He4_C12_reaclib = 24, - k_He4_O14_to_p_F17_reaclib = 25, - k_p_O17_to_He4_N14_reaclib = 26, - k_p_F18_to_He4_O15_reaclib = 27, + k_He3_p_to_He4_beta_pos_reaclib = 10, + k_He3_He4_to_Be7_reaclib = 11, + k_Be7_p_to_B8_reaclib = 12, + k_C12_p_to_N13_reaclib = 13, + k_C12_He4_to_O16_reaclib = 14, + k_C13_p_to_N14_reaclib = 15, + k_N13_p_to_O14_reaclib = 16, + k_N14_p_to_O15_reaclib = 17, + k_N14_He4_to_F18_reaclib = 18, + k_N15_p_to_O16_reaclib = 19, + k_O16_p_to_F17_reaclib = 20, + k_O17_p_to_F18_reaclib = 21, + k_He3_d_to_p_He4_reaclib = 22, + k_N13_He4_to_p_O16_reaclib = 23, + k_N15_p_to_He4_C12_reaclib = 24, + k_O14_He4_to_p_F17_reaclib = 25, + k_O17_p_to_He4_N14_reaclib = 26, + k_F18_p_to_He4_O15_reaclib = 27, k_He3_He3_to_p_p_He4_reaclib = 28, - k_d_Be7_to_p_He4_He4_reaclib = 29, - k_He3_Be7_to_p_p_He4_He4_reaclib = 30, + k_Be7_d_to_p_He4_He4_reaclib = 29, + k_Be7_He3_to_p_p_He4_He4_reaclib = 30, k_He4_He4_He4_to_C12_reaclib = 31, NumRates = k_He4_He4_He4_to_C12_reaclib }; @@ -268,36 +268,36 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "N13_to_C13_reaclib", // 1, - "O14_to_N14_reaclib", // 2, - "O15_to_N15_reaclib", // 3, - "F17_to_O17_reaclib", // 4, - "B8_to_He4_He4_reaclib", // 5, - "p_p_to_d_reaclib_beta_pos", // 6, - "p_p_to_d_reaclib_electron_capture", // 7, - "p_d_to_He3_reaclib", // 8, + "N13_to_C13_beta_pos_reaclib", // 1, + "O14_to_N14_beta_pos_reaclib", // 2, + "O15_to_N15_beta_pos_reaclib", // 3, + "F17_to_O17_beta_pos_reaclib", // 4, + "B8_to_He4_He4_beta_pos_reaclib", // 5, + "p_p_to_d_beta_pos_reaclib", // 6, + "p_p_to_d_electron_capture_reaclib", // 7, + "d_p_to_He3_reaclib", // 8, "d_d_to_He4_reaclib", // 9, - "p_He3_to_He4_reaclib", // 10, - "He4_He3_to_Be7_reaclib", // 11, - "p_Be7_to_B8_reaclib", // 12, - "p_C12_to_N13_reaclib", // 13, - "He4_C12_to_O16_reaclib", // 14, - "p_C13_to_N14_reaclib", // 15, - "p_N13_to_O14_reaclib", // 16, - "p_N14_to_O15_reaclib", // 17, - "He4_N14_to_F18_reaclib", // 18, - "p_N15_to_O16_reaclib", // 19, - "p_O16_to_F17_reaclib", // 20, - "p_O17_to_F18_reaclib", // 21, - "d_He3_to_p_He4_reaclib", // 22, - "He4_N13_to_p_O16_reaclib", // 23, - "p_N15_to_He4_C12_reaclib", // 24, - "He4_O14_to_p_F17_reaclib", // 25, - "p_O17_to_He4_N14_reaclib", // 26, - "p_F18_to_He4_O15_reaclib", // 27, + "He3_p_to_He4_beta_pos_reaclib", // 10, + "He3_He4_to_Be7_reaclib", // 11, + "Be7_p_to_B8_reaclib", // 12, + "C12_p_to_N13_reaclib", // 13, + "C12_He4_to_O16_reaclib", // 14, + "C13_p_to_N14_reaclib", // 15, + "N13_p_to_O14_reaclib", // 16, + "N14_p_to_O15_reaclib", // 17, + "N14_He4_to_F18_reaclib", // 18, + "N15_p_to_O16_reaclib", // 19, + "O16_p_to_F17_reaclib", // 20, + "O17_p_to_F18_reaclib", // 21, + "He3_d_to_p_He4_reaclib", // 22, + "N13_He4_to_p_O16_reaclib", // 23, + "N15_p_to_He4_C12_reaclib", // 24, + "O14_He4_to_p_F17_reaclib", // 25, + "O17_p_to_He4_N14_reaclib", // 26, + "F18_p_to_He4_O15_reaclib", // 27, "He3_He3_to_p_p_He4_reaclib", // 28, - "d_Be7_to_p_He4_He4_reaclib", // 29, - "He3_Be7_to_p_p_He4_He4_reaclib", // 30, + "Be7_d_to_p_He4_He4_reaclib", // 29, + "Be7_He3_to_p_p_He4_He4_reaclib", // 30, "He4_He4_He4_to_C12_reaclib" // 31, }; diff --git a/networks/nova/actual_rhs.H b/networks/nova/actual_rhs.H index c043fa805..83d95c020 100644 --- a/networks/nova/actual_rhs.H +++ b/networks/nova/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -322,9 +319,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -336,7 +335,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -344,24 +345,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -438,137 +435,138 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // N13_to_C13_reaclib + // N13_to_C13_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; + reaclib_rates::rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; } { - // O14_to_N14_reaclib + // O14_to_N14_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; + reaclib_rates::rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; } { - // O15_to_N15_reaclib + // O15_to_N15_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; + reaclib_rates::rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; } { - // F17_to_O17_reaclib + // F17_to_O17_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_O17_reaclib) = rate; + reaclib_rates::rate_F17_to_O17_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_to_O17_beta_pos_reaclib) = rate; } { - // B8_to_He4_He4_reaclib + // B8_to_He4_He4_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_B8_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_He4_He4_reaclib) = rate; + reaclib_rates::rate_B8_to_He4_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_He4_He4_beta_pos_reaclib) = rate; } { - // p_p_to_d_reaclib_beta_pos + // p_p_to_d_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_p); #endif - rate_p_p_to_d_reaclib_beta_pos(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos) = rate; + reaclib_rates::rate_p_p_to_d_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_beta_pos_reaclib) = rate; } { - // p_p_to_d_reaclib_electron_capture + // p_p_to_d_electron_capture_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_p); #endif - rate_p_p_to_d_reaclib_electron_capture(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_electron_capture) = rate; + reaclib_rates::rate_p_p_to_d_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_electron_capture_reaclib) = rate; } { - // p_He3_to_He4_reaclib + // He3_p_to_He4_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_He3); #endif - rate_p_He3_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He3_to_He4_reaclib) = rate; + reaclib_rates::rate_He3_p_to_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_p_to_He4_beta_pos_reaclib) = rate; } + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - -screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho; + -screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + -screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho; ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - 0.5*screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e; + 0.5*screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + 0.5*screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e; ydot_nuc(He3) = - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho; + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho; ydot_nuc(He4) = - 2.0*screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho; + 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho; ydot_nuc(Be7) = 0.0_rt; ydot_nuc(B8) = - -screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8); + -screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8); ydot_nuc(C12) = 0.0_rt; ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14); + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O16) = 0.0_rt; ydot_nuc(O17) = - screened_rates(k_F17_to_O17_reaclib)*Y(F17); + screened_rates(k_F17_to_O17_beta_pos_reaclib)*Y(F17); ydot_nuc(F17) = - -screened_rates(k_F17_to_O17_reaclib)*Y(F17); + -screened_rates(k_F17_to_O17_beta_pos_reaclib)*Y(F17); ydot_nuc(F18) = 0.0_rt; @@ -581,135 +579,135 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - -screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - -screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - -screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + - -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + - -screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + - -screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + - -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + - -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + - -screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + + -screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + -screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + -screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + + -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + + -screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + + -screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + + -screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + + -screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + + -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + + -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + + -screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + + -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + - screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + - 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; + screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + + 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - 0.5*screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + + 0.5*screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + 0.5*screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + -screened_rates(k_d_d_to_He4_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + - -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + - -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho; + -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + + -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho; ydot_nuc(He3) = - screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + - -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + + screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + -screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + + -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + - -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; + -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; ydot_nuc(He4) = - 2.0*screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + + 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + 0.5*screened_rates(k_d_d_to_He4_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + - -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + - -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + -screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + + -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + + -screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + 0.5*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + - 2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + - 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + + 2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + + 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + -0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); ydot_nuc(Be7) = - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + - -screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + - -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + - -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; + screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + + -screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + + -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + + -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho; ydot_nuc(B8) = - -screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + - screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho; + -screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + + screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho; ydot_nuc(C12) = - -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + + -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + 0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho); ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho; + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho; ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + - -screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho; + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + + -screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + + -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho; ydot_nuc(N14) = - screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + - -screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + - -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho; + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + + -screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + + -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho; ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - -screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho; + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + -screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + + -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho; ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + - -screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho; + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + + -screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho; ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho; + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho; ydot_nuc(O16) = - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + - -screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho; + screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + + screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + + -screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho; ydot_nuc(O17) = - screened_rates(k_F17_to_O17_reaclib)*Y(F17) + - -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho; + screened_rates(k_F17_to_O17_beta_pos_reaclib)*Y(F17) + + -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + + -screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho; ydot_nuc(F17) = - -screened_rates(k_F17_to_O17_reaclib)*Y(F17) + - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho; + -screened_rates(k_F17_to_O17_beta_pos_reaclib)*Y(F17) + + screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho; ydot_nuc(F18) = - screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + - screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + - -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho; + screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + + screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + + -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho; } @@ -765,71 +763,73 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho - 2.0*screened_rates(k_p_p_to_d_reaclib_beta_pos)*Y(H1)*state.rho - 2.0*screened_rates(k_p_p_to_d_reaclib_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; + scratch = -screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho - 2.0*screened_rates(k_p_p_to_d_beta_pos_reaclib)*Y(H1)*state.rho - 2.0*screened_rates(k_p_p_to_d_electron_capture_reaclib)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; jac.set(H1, H1, scratch); - scratch = screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho; jac.set(H1, H2, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho; jac.set(H1, He3, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(H1, He4, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho; jac.set(H1, Be7, scratch); jac.set(H1, B8, 0.0); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(H1, C12, scratch); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, C13, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho; jac.set(H1, N13, scratch); - scratch = -screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(H1, N14, scratch); - scratch = -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(H1, N15, scratch); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(H1, O14, scratch); jac.set(H1, O15, 0.0); - scratch = -screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(H1, O16, scratch); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, O17, scratch); jac.set(H1, F17, 0.0); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(H1, F18, scratch); - scratch = -screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho + 1.0*screened_rates(k_p_p_to_d_reaclib_beta_pos)*Y(H1)*state.rho + 1.0*screened_rates(k_p_p_to_d_reaclib_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; + scratch = -screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho + 1.0*screened_rates(k_p_p_to_d_beta_pos_reaclib)*Y(H1)*state.rho + 1.0*screened_rates(k_p_p_to_d_electron_capture_reaclib)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; jac.set(H2, H1, scratch); - scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho - 2.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho - 2.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho; jac.set(H2, H2, scratch); - scratch = -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho; jac.set(H2, He3, scratch); jac.set(H2, He4, 0.0); - scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho; jac.set(H2, Be7, scratch); jac.set(H2, B8, 0.0); @@ -856,19 +856,19 @@ void jac_nuc(const burn_t& state, jac.set(H2, F18, 0.0); - scratch = -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho + screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho; jac.set(He3, H1, scratch); - scratch = -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho; jac.set(He3, H2, scratch); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho - 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho - 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho; jac.set(He3, He3, scratch); - scratch = -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho; + scratch = -screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho; jac.set(He3, He4, scratch); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho; jac.set(He3, Be7, scratch); jac.set(He3, B8, 0.0); @@ -895,66 +895,66 @@ void jac_nuc(const burn_t& state, jac.set(He3, F18, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(He4, H1, scratch); - scratch = 2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho; + scratch = 2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho; jac.set(He4, H2, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 1.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 1.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho; jac.set(He4, He3, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(He4, He4, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + 2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + 2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho; jac.set(He4, Be7, scratch); - scratch = 2.0*screened_rates(k_B8_to_He4_He4_reaclib); + scratch = 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib); jac.set(He4, B8, scratch); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, C12, scratch); jac.set(He4, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(He4, N13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho; jac.set(He4, N14, scratch); - scratch = screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(He4, N15, scratch); - scratch = -screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(He4, O14, scratch); jac.set(He4, O15, 0.0); jac.set(He4, O16, 0.0); - scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(He4, O17, scratch); jac.set(He4, F17, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(He4, F18, scratch); - scratch = -screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho; + scratch = -screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho; jac.set(Be7, H1, scratch); - scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho; jac.set(Be7, H2, scratch); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho; jac.set(Be7, He3, scratch); - scratch = screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho; + scratch = screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho; jac.set(Be7, He4, scratch); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho; jac.set(Be7, Be7, scratch); jac.set(Be7, B8, 0.0); @@ -981,7 +981,7 @@ void jac_nuc(const burn_t& state, jac.set(Be7, F18, 0.0); - scratch = screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho; + scratch = screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho; jac.set(B8, H1, scratch); jac.set(B8, H2, 0.0); @@ -990,10 +990,10 @@ void jac_nuc(const burn_t& state, jac.set(B8, He4, 0.0); - scratch = screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho; jac.set(B8, Be7, scratch); - scratch = -screened_rates(k_B8_to_He4_He4_reaclib); + scratch = -screened_rates(k_B8_to_He4_He4_beta_pos_reaclib); jac.set(B8, B8, scratch); jac.set(B8, C12, 0.0); @@ -1018,21 +1018,21 @@ void jac_nuc(const burn_t& state, jac.set(B8, F18, 0.0); - scratch = -screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho; + scratch = -screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho; jac.set(C12, H1, scratch); jac.set(C12, H2, 0.0); jac.set(C12, He3, 0.0); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(C12, He4, scratch); jac.set(C12, Be7, 0.0); jac.set(C12, B8, 0.0); - scratch = -screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(C12, C12, scratch); jac.set(C12, C13, 0.0); @@ -1041,7 +1041,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, N15, scratch); jac.set(C12, O14, 0.0); @@ -1056,7 +1056,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, F18, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho; jac.set(C13, H1, scratch); jac.set(C13, H2, 0.0); @@ -1071,10 +1071,10 @@ void jac_nuc(const burn_t& state, jac.set(C13, C12, 0.0); - scratch = -screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(C13, C13, scratch); - scratch = screened_rates(k_N13_to_C13_reaclib); + scratch = screened_rates(k_N13_to_C13_beta_pos_reaclib); jac.set(C13, N13, scratch); jac.set(C13, N14, 0.0); @@ -1093,26 +1093,26 @@ void jac_nuc(const burn_t& state, jac.set(C13, F18, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho; jac.set(N13, H1, scratch); jac.set(N13, H2, 0.0); jac.set(N13, He3, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); jac.set(N13, Be7, 0.0); jac.set(N13, B8, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); jac.set(N13, C13, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_reaclib) - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_N13_to_C13_beta_pos_reaclib); jac.set(N13, N13, scratch); jac.set(N13, N14, 0.0); @@ -1131,14 +1131,14 @@ void jac_nuc(const burn_t& state, jac.set(N13, F18, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(N14, H1, scratch); jac.set(N14, H2, 0.0); jac.set(N14, He3, 0.0); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, Be7, 0.0); @@ -1147,31 +1147,31 @@ void jac_nuc(const burn_t& state, jac.set(N14, C12, 0.0); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, C13, scratch); jac.set(N14, N13, 0.0); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(N14, N14, scratch); jac.set(N14, N15, 0.0); - scratch = screened_rates(k_O14_to_N14_reaclib); + scratch = screened_rates(k_O14_to_N14_beta_pos_reaclib); jac.set(N14, O14, scratch); jac.set(N14, O15, 0.0); jac.set(N14, O16, 0.0); - scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, O17, scratch); jac.set(N14, F17, 0.0); jac.set(N14, F18, 0.0); - scratch = -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho; + scratch = -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho; jac.set(N15, H1, scratch); jac.set(N15, H2, 0.0); @@ -1192,12 +1192,12 @@ void jac_nuc(const burn_t& state, jac.set(N15, N14, 0.0); - scratch = -screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(N15, N15, scratch); jac.set(N15, O14, 0.0); - scratch = screened_rates(k_O15_to_N15_reaclib); + scratch = screened_rates(k_O15_to_N15_beta_pos_reaclib); jac.set(N15, O15, scratch); jac.set(N15, O16, 0.0); @@ -1208,14 +1208,14 @@ void jac_nuc(const burn_t& state, jac.set(N15, F18, 0.0); - scratch = screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho; jac.set(O14, H1, scratch); jac.set(O14, H2, 0.0); jac.set(O14, He3, 0.0); - scratch = -screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(O14, He4, scratch); jac.set(O14, Be7, 0.0); @@ -1226,14 +1226,14 @@ void jac_nuc(const burn_t& state, jac.set(O14, C13, 0.0); - scratch = screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho; jac.set(O14, N13, scratch); jac.set(O14, N14, 0.0); jac.set(O14, N15, 0.0); - scratch = -screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_reaclib); + scratch = -screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_beta_pos_reaclib); jac.set(O14, O14, scratch); jac.set(O14, O15, 0.0); @@ -1246,7 +1246,7 @@ void jac_nuc(const burn_t& state, jac.set(O14, F18, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho; jac.set(O15, H1, scratch); jac.set(O15, H2, 0.0); @@ -1265,14 +1265,14 @@ void jac_nuc(const burn_t& state, jac.set(O15, N13, 0.0); - scratch = screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, N14, scratch); jac.set(O15, N15, 0.0); jac.set(O15, O14, 0.0); - scratch = -screened_rates(k_O15_to_N15_reaclib); + scratch = -screened_rates(k_O15_to_N15_beta_pos_reaclib); jac.set(O15, O15, scratch); jac.set(O15, O16, 0.0); @@ -1281,41 +1281,41 @@ void jac_nuc(const burn_t& state, jac.set(O15, F17, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, F18, scratch); - scratch = screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho; jac.set(O16, H1, scratch); jac.set(O16, H2, 0.0); jac.set(O16, He3, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(O16, He4, scratch); jac.set(O16, Be7, 0.0); jac.set(O16, B8, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, C12, scratch); jac.set(O16, C13, 0.0); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, N15, scratch); jac.set(O16, O14, 0.0); jac.set(O16, O15, 0.0); - scratch = -screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(O16, O16, scratch); jac.set(O16, O17, 0.0); @@ -1324,7 +1324,7 @@ void jac_nuc(const burn_t& state, jac.set(O16, F18, 0.0); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(O17, H1, scratch); jac.set(O17, H2, 0.0); @@ -1353,22 +1353,22 @@ void jac_nuc(const burn_t& state, jac.set(O17, O16, 0.0); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(O17, O17, scratch); - scratch = screened_rates(k_F17_to_O17_reaclib); + scratch = screened_rates(k_F17_to_O17_beta_pos_reaclib); jac.set(O17, F17, scratch); jac.set(O17, F18, 0.0); - scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho; jac.set(F17, H1, scratch); jac.set(F17, H2, 0.0); jac.set(F17, He3, 0.0); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(F17, He4, scratch); jac.set(F17, Be7, 0.0); @@ -1385,29 +1385,29 @@ void jac_nuc(const burn_t& state, jac.set(F17, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(F17, O14, scratch); jac.set(F17, O15, 0.0); - scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, O16, scratch); jac.set(F17, O17, 0.0); - scratch = -screened_rates(k_F17_to_O17_reaclib); + scratch = -screened_rates(k_F17_to_O17_beta_pos_reaclib); jac.set(F17, F17, scratch); jac.set(F17, F18, 0.0); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho; jac.set(F18, H1, scratch); jac.set(F18, H2, 0.0); jac.set(F18, He3, 0.0); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho; jac.set(F18, He4, scratch); jac.set(F18, Be7, 0.0); @@ -1420,7 +1420,7 @@ void jac_nuc(const burn_t& state, jac.set(F18, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho; jac.set(F18, N14, scratch); jac.set(F18, N15, 0.0); @@ -1431,12 +1431,12 @@ void jac_nuc(const burn_t& state, jac.set(F18, O16, 0.0); - scratch = screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho; jac.set(F18, O17, scratch); jac.set(F18, F17, 0.0); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(F18, F18, scratch); diff --git a/networks/nova/approximate_rates.H b/networks/nova/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/nova/approximate_rates.H +++ b/networks/nova/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/nova/branched_rates.H b/networks/nova/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/nova/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/nova/derived_rates.H b/networks/nova/derived_rates.H index 579d7dd3d..2d8da657a 100644 --- a/networks/nova/derived_rates.H +++ b/networks/nova/derived_rates.H @@ -7,21 +7,23 @@ #include #include -using namespace Rates; +namespace derived_rates { + using namespace Rates; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + } + } #endif diff --git a/networks/nova/modified_rates.H b/networks/nova/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/nova/modified_rates.H +++ b/networks/nova/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/nova/nova.png b/networks/nova/nova.png index 18bdf3328..41bce14f2 100644 Binary files a/networks/nova/nova.png and b/networks/nova/nova.png differ diff --git a/networks/nova/pynucastro-info.txt b/networks/nova/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/nova/pynucastro-info.txt +++ b/networks/nova/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/nova/reaclib_rates.H b/networks/nova/reaclib_rates.H index 96f7d14fa..466205bd8 100644 --- a/networks/nova/reaclib_rates.H +++ b/networks/nova/reaclib_rates.H @@ -8,2353 +8,2356 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // N13 --> C13 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_C13_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // N13 --> C13 - // wc12w - ln_set_rate = -6.7601; - amrex::ignore_unused(tfactors); + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + // wc12w + ln_set_rate = -6.7601; + amrex::ignore_unused(tfactors); - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_N14_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 --> N14 - // O14 --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -4.62354; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -4.62354; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_N15_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 --> N15 - // O15 --> N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -5.17053; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -5.17053; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_to_O17_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F17_to_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 --> O17 - // F17 --> O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -4.53318; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -4.53318; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B8_to_He4_He4_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B8_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B8 --> He4 + He4 - // B8 --> He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -0.105148; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -0.105148; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_p_p_to_d_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_p_to_d_reaclib_beta_pos(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // p + p --> d - // p + p --> d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bet+w + ln_set_rate = -34.7863 + -3.51193 * tfactors.T913i + 3.10086 * tfactors.T913 + + -0.198314 * tfactors.T9 + 0.0126251 * tfactors.T953 + -1.02517 * tfactors.lnT9; - // bet+w - ln_set_rate = -34.7863 + -3.51193 * tfactors.T913i + 3.10086 * tfactors.T913 - + -0.198314 * tfactors.T9 + 0.0126251 * tfactors.T953 + -1.02517 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.51193 * tfactors.T943i + (1.0/3.0) * 3.10086 * tfactors.T923i + + -0.198314 + (5.0/3.0) * 0.0126251 * tfactors.T923 + -1.02517 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.51193 * tfactors.T943i + (1.0/3.0) * 3.10086 * tfactors.T923i - + -0.198314 + (5.0/3.0) * 0.0126251 * tfactors.T923 + -1.02517 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_p_p_to_d_electron_capture_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_p_to_d_reaclib_electron_capture(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // p + p --> d - // p + p --> d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ecw + ln_set_rate = -43.6499 + -0.00246064 * tfactors.T9i + -2.7507 * tfactors.T913i + -0.424877 * tfactors.T913 + + 0.015987 * tfactors.T9 + -0.000690875 * tfactors.T953 + -0.207625 * tfactors.lnT9; - // ecw - ln_set_rate = -43.6499 + -0.00246064 * tfactors.T9i + -2.7507 * tfactors.T913i + -0.424877 * tfactors.T913 - + 0.015987 * tfactors.T9 + -0.000690875 * tfactors.T953 + -0.207625 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00246064 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.7507 * tfactors.T943i + (1.0/3.0) * -0.424877 * tfactors.T923i + + 0.015987 + (5.0/3.0) * -0.000690875 * tfactors.T923 + -0.207625 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00246064 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.7507 * tfactors.T943i + (1.0/3.0) * -0.424877 * tfactors.T923i - + 0.015987 + (5.0/3.0) * -0.000690875 * tfactors.T923 + -0.207625 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_p_to_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_d_to_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + p --> He3 - // d + p --> He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04 + ln_set_rate = 8.93525 + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 + + 0.333333 * tfactors.lnT9; - // de04 - ln_set_rate = 8.93525 + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 - + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i + + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i - + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04n + ln_set_rate = 7.52898 + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 + + -0.666667 * tfactors.lnT9; - // de04n - ln_set_rate = 7.52898 + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_d_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_d_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + d --> He4 - // d + d --> He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 3.78177 + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 + + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 3.78177 + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 - + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i + + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i - + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_p_to_He4_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_He3_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + p --> He4 - // He3 + p --> He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bet+w + ln_set_rate = -27.7611 + -4.30107e-12 * tfactors.T9i + -6.141 * tfactors.T913i + -1.93473e-09 * tfactors.T913 + + 2.04145e-10 * tfactors.T9 + -1.80372e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // bet+w - ln_set_rate = -27.7611 + -4.30107e-12 * tfactors.T9i + -6.141 * tfactors.T913i + -1.93473e-09 * tfactors.T913 - + 2.04145e-10 * tfactors.T9 + -1.80372e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.30107e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.141 * tfactors.T943i + (1.0/3.0) * -1.93473e-09 * tfactors.T923i + + 2.04145e-10 + (5.0/3.0) * -1.80372e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.30107e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.141 * tfactors.T943i + (1.0/3.0) * -1.93473e-09 * tfactors.T923i - + 2.04145e-10 + (5.0/3.0) * -1.80372e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_He4_to_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He3_to_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + He4 --> Be7 - // He3 + He4 --> Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cd08n + ln_set_rate = 17.7075 + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 + + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 1.33333 * tfactors.lnT9; - // cd08n - ln_set_rate = 17.7075 + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 - + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i + + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i - + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cd08n + ln_set_rate = 15.6099 + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 + + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cd08n - ln_set_rate = 15.6099 + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 - + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i + + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i - + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_p_to_B8_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Be7_to_B8_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + p --> B8 - // Be7 + p --> B8 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 7.73399 + -7.345 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 7.73399 + -7.345 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.345 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.345 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 12.5315 + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 + + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 12.5315 + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 - + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i + + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i - + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + p --> N13 - // C12 + p --> N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_p_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C13_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + p --> N14 - // C13 + p --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_p_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N13_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + p --> O14 - // N13 + p --> O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lg06r + ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // lg06r - ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lg06n + ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lg06n - ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_p_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N14_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + p --> O15 - // N14 + p --> O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // im05r + ln_set_rate = 6.73578 + -4.891 * tfactors.T9i + + 0.0682 * tfactors.lnT9; - // im05r - ln_set_rate = 6.73578 + -4.891 * tfactors.T9i - + 0.0682 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i + + 0.0682 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i - + 0.0682 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05r + ln_set_rate = 7.65444 + -2.998 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // im05r - ln_set_rate = 7.65444 + -2.998 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // im05n - ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // im05n - ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> O16 - // N15 + p --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li10r + ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i + + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i - + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i + + 0.0459037 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i - + 0.0459037 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10r + ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10n + ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // li10n - ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> F18 - // O17 + p --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -13.077 + -0.746296 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.077 + -0.746296 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_d_to_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_He3_to_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + d --> p + He4 - // He3 + d --> p + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04 + ln_set_rate = 41.2969 + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 + + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; - // de04 - ln_set_rate = 41.2969 + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 - + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i + + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i - + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 24.6839 + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 + + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 24.6839 + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 - + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i + + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i - + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> He4 + C12 - // N15 + p --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 20.8972 + -7.406 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 20.8972 + -7.406 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> p + F17 - // O14 + He4 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Ha96r + ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 18.6518 + -26.0 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 18.6518 + -26.0 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96n + ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // Ha96n - ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 16.3087 + -22.51 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 16.3087 + -22.51 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 11.1184 + -13.6 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 11.1184 + -13.6 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = -106.091 + -0.453036 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = -106.091 + -0.453036 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> He4 + N14 - // O17 + p --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.579 + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.579 + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> He4 + O15 - // F18 + p --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_He3_to_p_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He3_He3_to_p_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + He3 --> p + p + He4 - // He3 + He3 --> p + p + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 24.7788 + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 + + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 24.7788 + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 - + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i + + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i - + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_d_to_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_Be7_to_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + d --> p + He4 + He4 - // Be7 + d --> p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 27.6987 + -12.428 * tfactors.T913i + + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 27.6987 + -12.428 * tfactors.T913i - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.428 * tfactors.T943i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.428 * tfactors.T943i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_He3_to_p_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He3_Be7_to_p_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + He3 --> p + p + He4 + He4 - // Be7 + He3 --> p + p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = 31.7435 + -5.45213e-12 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 + + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // mafon - ln_set_rate = 31.7435 + -5.45213e-12 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 - + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.45213e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i + + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.45213e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i - + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ - - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // N13_to_C13_reaclib + { + // N13_to_C13_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_C13_beta_pos_reaclib) = drate_dT; + } } - } - { - // O14_to_N14_reaclib + { + // O14_to_N14_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_N14_beta_pos_reaclib) = drate_dT; + } } - } - { - // O15_to_N15_reaclib + { + // O15_to_N15_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_N15_beta_pos_reaclib) = drate_dT; + } } - } - { - // F17_to_O17_reaclib + { + // F17_to_O17_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_O17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_to_O17_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_to_O17_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_O17_beta_pos_reaclib) = drate_dT; + } } - } - { - // B8_to_He4_He4_reaclib + { + // B8_to_He4_He4_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B8_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B8_to_He4_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_He4_He4_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_beta_pos_reaclib) = drate_dT; + } } - } - { - // p_p_to_d_reaclib_beta_pos + { + // p_p_to_d_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_p); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); - } + log_scor = rate_eval.log_screen(k_p_p); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); + } #endif - rate_p_p_to_d_reaclib_beta_pos(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos) = drate_dT; + rate_p_p_to_d_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_to_d_beta_pos_reaclib) = drate_dT; + } } - } - { - // p_p_to_d_reaclib_electron_capture + { + // p_p_to_d_electron_capture_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_p); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); - } + log_scor = rate_eval.log_screen(k_p_p); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); + } #endif - rate_p_p_to_d_reaclib_electron_capture(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_electron_capture) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_electron_capture) = drate_dT; + rate_p_p_to_d_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_electron_capture_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_to_d_electron_capture_reaclib) = drate_dT; + } } - } - { - // p_d_to_He3_reaclib + { + // d_p_to_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_d); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_d); - } + log_scor = rate_eval.log_screen(k_p_d); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_d); + } #endif - rate_p_d_to_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_d_to_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_d_to_He3_reaclib) = drate_dT; + rate_d_p_to_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_p_to_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_p_to_He3_reaclib) = drate_dT; + } } - } - { - // d_d_to_He4_reaclib + { + // d_d_to_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_d); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_d); - } + log_scor = rate_eval.log_screen(k_d_d); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_d); + } #endif - rate_d_d_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_d_to_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_d_to_He4_reaclib) = drate_dT; + rate_d_d_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_d_to_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_d_to_He4_reaclib) = drate_dT; + } } - } - { - // p_He3_to_He4_reaclib + { + // He3_p_to_He4_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He3); - } + log_scor = rate_eval.log_screen(k_p_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He3); + } #endif - rate_p_He3_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He3_to_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_He3_to_He4_reaclib) = drate_dT; + rate_He3_p_to_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_p_to_He4_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_p_to_He4_beta_pos_reaclib) = drate_dT; + } } - } - { - // He4_He3_to_Be7_reaclib + { + // He3_He4_to_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He4); - } + log_scor = rate_eval.log_screen(k_He3_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He4); + } #endif - rate_He4_He3_to_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He3_to_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7_reaclib) = drate_dT; + rate_He3_He4_to_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_He4_to_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_He4_to_Be7_reaclib) = drate_dT; + } } - } - { - // p_Be7_to_B8_reaclib + { + // Be7_p_to_B8_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be7); - } + log_scor = rate_eval.log_screen(k_p_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be7); + } #endif - rate_p_Be7_to_B8_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Be7_to_B8_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Be7_to_B8_reaclib) = drate_dT; + rate_Be7_p_to_B8_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_p_to_B8_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_p_to_B8_reaclib) = drate_dT; + } } - } - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // p_C13_to_N14_reaclib + { + // C13_p_to_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); - } + log_scor = rate_eval.log_screen(k_p_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); + } #endif - rate_p_C13_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_N14_reaclib) = drate_dT; + rate_C13_p_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_p_to_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_p_to_N14_reaclib) = drate_dT; + } } - } - { - // p_N13_to_O14_reaclib + { + // N13_p_to_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); - } + log_scor = rate_eval.log_screen(k_p_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); + } #endif - rate_p_N13_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N13_to_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N13_to_O14_reaclib) = drate_dT; + rate_N13_p_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_p_to_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_p_to_O14_reaclib) = drate_dT; + } } - } - { - // p_N14_to_O15_reaclib + { + // N14_p_to_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); - } + log_scor = rate_eval.log_screen(k_p_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); + } #endif - rate_p_N14_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N14_to_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N14_to_O15_reaclib) = drate_dT; + rate_N14_p_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_p_to_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_p_to_O15_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_N15_to_O16_reaclib + { + // N15_p_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_O16_reaclib) = drate_dT; + rate_N15_p_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_O16_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // p_O17_to_F18_reaclib + { + // O17_p_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_F18_reaclib) = drate_dT; + rate_O17_p_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_F18_reaclib) = drate_dT; + } } - } - { - // d_He3_to_p_He4_reaclib + { + // He3_d_to_p_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_He3); - } + log_scor = rate_eval.log_screen(k_d_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_He3); + } #endif - rate_d_He3_to_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_He3_to_p_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4_reaclib) = drate_dT; + rate_He3_d_to_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_d_to_p_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_d_to_p_He4_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // p_N15_to_He4_C12_reaclib + { + // N15_p_to_He4_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_He4_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12_reaclib) = drate_dT; + rate_N15_p_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_He4_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_He4_C12_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_p_F17_reaclib + { + // O14_He4_to_p_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_p_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17_reaclib) = drate_dT; + rate_O14_He4_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_p_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_p_F17_reaclib) = drate_dT; + } } - } - { - // p_O17_to_He4_N14_reaclib + { + // O17_p_to_He4_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_He4_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14_reaclib) = drate_dT; + rate_O17_p_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_He4_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_He4_N14_reaclib) = drate_dT; + } } - } - { - // p_F18_to_He4_O15_reaclib + { + // F18_p_to_He4_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_He4_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15_reaclib) = drate_dT; + rate_F18_p_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_He4_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_He4_O15_reaclib) = drate_dT; + } } - } - { - // He3_He3_to_p_p_He4_reaclib + { + // He3_He3_to_p_p_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He3); - } + log_scor = rate_eval.log_screen(k_He3_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He3); + } #endif - rate_He3_He3_to_p_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He3_He3_to_p_p_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4_reaclib) = drate_dT; + rate_He3_He3_to_p_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_He3_to_p_p_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4_reaclib) = drate_dT; + } } - } - { - // d_Be7_to_p_He4_He4_reaclib + { + // Be7_d_to_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Be7); - } + log_scor = rate_eval.log_screen(k_d_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Be7); + } #endif - rate_d_Be7_to_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_Be7_to_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4_reaclib) = drate_dT; + rate_Be7_d_to_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_d_to_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_d_to_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // He3_Be7_to_p_p_He4_He4_reaclib + { + // Be7_He3_to_p_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_Be7); - } + log_scor = rate_eval.log_screen(k_He3_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_Be7); + } #endif - rate_He3_Be7_to_p_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4_reaclib) = drate_dT; + rate_Be7_He3_to_p_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_He3_to_p_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/nova/tabular_weak_rates.H b/networks/nova/tabular_weak_rates.H new file mode 100644 index 000000000..797530335 --- /dev/null +++ b/networks/nova/tabular_weak_rates.H @@ -0,0 +1,33 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + } + +} +#endif diff --git a/networks/nova/temperature_table_rates.H b/networks/nova/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/nova/temperature_table_rates.H +++ b/networks/nova/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/partition_test/Make.package b/networks/partition_test/Make.package index 35413fdcf..e66796431 100644 --- a/networks/partition_test/Make.package +++ b/networks/partition_test/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/partition_test/actual_network.H b/networks/partition_test/actual_network.H index 75781e5c2..49ebce769 100644 --- a/networks/partition_test/actual_network.H +++ b/networks/partition_test/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -126,13 +126,13 @@ namespace Rates enum NetworkRates : std::uint8_t { - k_He4_Fe52_to_Ni56_reaclib = 1, - k_p_Co55_to_Ni56_reaclib = 2, - k_He4_Fe52_to_p_Co55_reaclib = 3, + k_Fe52_He4_to_Ni56_reaclib = 1, + k_Co55_p_to_Ni56_reaclib = 2, + k_Fe52_He4_to_p_Co55_reaclib = 3, k_Ni56_to_He4_Fe52_derived = 4, k_Ni56_to_p_Co55_derived = 5, - k_p_Co55_to_He4_Fe52_derived = 6, - NumRates = k_p_Co55_to_He4_Fe52_derived + k_Co55_p_to_He4_Fe52_derived = 6, + NumRates = k_Co55_p_to_He4_Fe52_derived }; enum ScreenPairs : @@ -149,12 +149,12 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "He4_Fe52_to_Ni56_reaclib", // 1, - "p_Co55_to_Ni56_reaclib", // 2, - "He4_Fe52_to_p_Co55_reaclib", // 3, + "Fe52_He4_to_Ni56_reaclib", // 1, + "Co55_p_to_Ni56_reaclib", // 2, + "Fe52_He4_to_p_Co55_reaclib", // 3, "Ni56_to_He4_Fe52_derived", // 4, "Ni56_to_p_Co55_derived", // 5, - "p_Co55_to_He4_Fe52_derived" // 6, + "Co55_p_to_He4_Fe52_derived" // 6, }; template @@ -187,9 +187,9 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 3; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_He4_Fe52_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_derived, - H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_p_Co55_to_Ni56_reaclib, k_Ni56_to_p_Co55_derived, - He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_He4_Fe52_to_p_Co55_reaclib, k_p_Co55_to_He4_Fe52_derived + He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_Fe52_He4_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_derived, + H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_Co55_p_to_Ni56_reaclib, k_Ni56_to_p_Co55_derived, + He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_Fe52_He4_to_p_Co55_reaclib, k_Co55_p_to_He4_Fe52_derived }; } #endif diff --git a/networks/partition_test/actual_rhs.H b/networks/partition_test/actual_rhs.H index 2bdd3ae16..e717ba009 100644 --- a/networks/partition_test/actual_rhs.H +++ b/networks/partition_test/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -102,9 +99,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -116,7 +115,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -124,24 +125,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -193,6 +190,7 @@ void get_ydot_weak(const burn_t& state, // Compute all weak rates and get ydot_weak + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); ydot_nuc(H1) = 0.0_rt; @@ -213,29 +211,29 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(H1) = - (-screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho); + (-screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho); ydot_nuc(He4) = - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho); + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho); ydot_nuc(Fe52) = - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (-screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho); + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (-screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho); ydot_nuc(Co55) = - (-screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + - (screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho); + (-screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)) + + (screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*Y(H1)*state.rho); ydot_nuc(Ni56) = - (screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + - (screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)); + (screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_derived)*Y(Ni56)) + + (screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_derived)*Y(Ni56)); } @@ -291,81 +289,83 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho; + scratch = -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho; jac.set(H1, H1, scratch); - scratch = screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho; jac.set(H1, He4, scratch); - scratch = screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho; jac.set(H1, Fe52, scratch); - scratch = -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho; jac.set(H1, Co55, scratch); scratch = screened_rates(k_Ni56_to_p_Co55_derived); jac.set(H1, Ni56, scratch); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho; jac.set(He4, He4, scratch); - scratch = -screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho; jac.set(He4, Fe52, scratch); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho; jac.set(He4, Co55, scratch); scratch = screened_rates(k_Ni56_to_He4_Fe52_derived); jac.set(He4, Ni56, scratch); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho; jac.set(Fe52, H1, scratch); - scratch = -screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho; jac.set(Fe52, He4, scratch); - scratch = -screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho; jac.set(Fe52, Fe52, scratch); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho; jac.set(Fe52, Co55, scratch); scratch = screened_rates(k_Ni56_to_He4_Fe52_derived); jac.set(Fe52, Ni56, scratch); - scratch = -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho; + scratch = -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho; jac.set(Co55, H1, scratch); - scratch = screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho; jac.set(Co55, He4, scratch); - scratch = screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Fe52, scratch); - scratch = -screened_rates(k_p_Co55_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_p_to_He4_Fe52_derived)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho; jac.set(Co55, Co55, scratch); scratch = screened_rates(k_Ni56_to_p_Co55_derived); jac.set(Co55, Ni56, scratch); - scratch = screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho; jac.set(Ni56, H1, scratch); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho; jac.set(Ni56, He4, scratch); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho; jac.set(Ni56, Fe52, scratch); - scratch = screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho; jac.set(Ni56, Co55, scratch); scratch = -screened_rates(k_Ni56_to_He4_Fe52_derived) - screened_rates(k_Ni56_to_p_Co55_derived); diff --git a/networks/partition_test/approximate_rates.H b/networks/partition_test/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/partition_test/approximate_rates.H +++ b/networks/partition_test/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/partition_test/branched_rates.H b/networks/partition_test/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/partition_test/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/partition_test/derived_rates.H b/networks/partition_test/derived_rates.H index 5ef1380d9..16c57c582 100644 --- a/networks/partition_test/derived_rates.H +++ b/networks/partition_test/derived_rates.H @@ -7,244 +7,246 @@ #include #include -using namespace Rates; +namespace derived_rates { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + using namespace Rates; - // Ni56 --> He4 + Fe52 + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { - rate = 0.0; - drate_dT = 0.0; + // Ni56 --> He4 + Fe52 - // Evaluate partition function terms + rate = 0.0; + drate_dT = 0.0; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // Evaluate partition function terms - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dNi56_log_pf_dT9; - // ReacLib set derived from ths8r - ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - ln_set_rate += net_log_pf + log_scor; + // ReacLib set derived from ths8r + ln_set_rate = 91.62430485073777 + -92.84097094326391 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + ln_set_rate += net_log_pf + log_scor; - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 92.84097094326391 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Ni56 --> p + Co55 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; - amrex::Real Ni56_log_pf, dNi56_log_pf_dT9; + // interpolating Ni56 partition function + get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); - // interpolating Ni56 partition function - get_partition_function_cached(Ni56, tfactors.T9, pf_cache, Ni56_log_pf, dNi56_log_pf_dT9); + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; - amrex::Real net_log_pf = p_log_pf + Co55_log_pf - Ni56_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dp_log_pf_dT9 + dCo55_log_pf_dT9 - dNi56_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 63.15120404192561 + -83.16460378149378 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 83.16460378149378 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_derived(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT, [[maybe_unused]] const T& rate_eval, [[maybe_unused]] part_fun::pf_cache_t& pf_cache) { + // Co55 + p --> He4 + Fe52 - // Co55 + p --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + // Evaluate partition function terms - // Evaluate partition function terms + amrex::Real p_log_pf, dp_log_pf_dT9; - amrex::Real p_log_pf, dp_log_pf_dT9; + // setting p log(partition function) to 0.0 by default, independent of T + p_log_pf = 0.0_rt; + dp_log_pf_dT9 = 0.0_rt; - // setting p log(partition function) to 0.0 by default, independent of T - p_log_pf = 0.0_rt; - dp_log_pf_dT9 = 0.0_rt; + amrex::Real He4_log_pf, dHe4_log_pf_dT9; - amrex::Real He4_log_pf, dHe4_log_pf_dT9; + // setting He4 log(partition function) to 0.0 by default, independent of T + He4_log_pf = 0.0_rt; + dHe4_log_pf_dT9 = 0.0_rt; - // setting He4 log(partition function) to 0.0 by default, independent of T - He4_log_pf = 0.0_rt; - dHe4_log_pf_dT9 = 0.0_rt; + amrex::Real Co55_log_pf, dCo55_log_pf_dT9; - amrex::Real Co55_log_pf, dCo55_log_pf_dT9; + // interpolating Co55 partition function + get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); - // interpolating Co55 partition function - get_partition_function_cached(Co55, tfactors.T9, pf_cache, Co55_log_pf, dCo55_log_pf_dT9); + amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; - amrex::Real Fe52_log_pf, dFe52_log_pf_dT9; + // interpolating Fe52 partition function + get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); - // interpolating Fe52 partition function - get_partition_function_cached(Fe52, tfactors.T9, pf_cache, Fe52_log_pf, dFe52_log_pf_dT9); + amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; + [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; - amrex::Real net_log_pf = He4_log_pf + Fe52_log_pf - p_log_pf - Co55_log_pf; - [[maybe_unused]] amrex::Real net_dlog_pf_dT9 = dHe4_log_pf_dT9 + dFe52_log_pf_dT9 - dp_log_pf_dT9 - dCo55_log_pf_dT9; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ReacLib set derived from ths8r + ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ReacLib set derived from ths8r - ln_set_rate = 61.42570080881217 + -9.676367161770125 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += net_log_pf + log_scor; - ln_set_rate += net_log_pf + log_scor; + if constexpr (std::is_same_v) { + dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (std::is_same_v) { - dln_set_rate_dT9 = 9.676367161770125 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += net_dlog_pf_dT9 + dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (std::is_same_v) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (std::is_same_v) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9_rt; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + part_fun::pf_cache_t pf_cache{}; - part_fun::pf_cache_t pf_cache{}; + pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); - pf_cache.index_temp_array_1 = interp_net::find_index(tfactors.T9, part_fun::temp_array_1); + { + // Ni56_to_He4_Fe52_derived - { - // Ni56_to_He4_Fe52_derived - - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_derived) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_derived + { + // Ni56_to_p_Co55_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Ni56_to_p_Co55_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_derived) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_derived + { + // Co55_p_to_He4_Fe52_derived - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_derived) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_derived) = drate_dT; + rate_Co55_p_to_He4_Fe52_derived(tfactors, log_scor, dlog_scor_dT, rate, drate_dT, rate_eval, pf_cache); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_derived) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_derived) = drate_dT; + } } - } + } + } #endif diff --git a/networks/partition_test/modified_rates.H b/networks/partition_test/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/partition_test/modified_rates.H +++ b/networks/partition_test/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/partition_test/pynucastro-info.txt b/networks/partition_test/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/partition_test/pynucastro-info.txt +++ b/networks/partition_test/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/partition_test/reaclib_rates.H b/networks/partition_test/reaclib_rates.H index bde5b1808..22bec7ddd 100644 --- a/networks/partition_test/reaclib_rates.H +++ b/networks/partition_test/reaclib_rates.H @@ -8,183 +8,186 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // Fe52 + He4 --> Ni56 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Fe52 + He4 --> Ni56 - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/partition_test/tabular_weak_rates.H b/networks/partition_test/tabular_weak_rates.H new file mode 100644 index 000000000..797530335 --- /dev/null +++ b/networks/partition_test/tabular_weak_rates.H @@ -0,0 +1,33 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + } + +} +#endif diff --git a/networks/partition_test/temperature_table_rates.H b/networks/partition_test/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/partition_test/temperature_table_rates.H +++ b/networks/partition_test/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/networks/sn160/Make.package b/networks/sn160/Make.package index 35413fdcf..e66796431 100644 --- a/networks/sn160/Make.package +++ b/networks/sn160/Make.package @@ -10,9 +10,11 @@ ifeq ($(USE_REACT),TRUE) CEXE_headers += rate_type.H CEXE_headers += reaclib_rates.H CEXE_headers += approximate_rates.H + CEXE_headers += branched_rates.H CEXE_headers += modified_rates.H CEXE_headers += table_rates.H CEXE_headers += temperature_table_rates.H + CEXE_headers += tabular_weak_rates.H CEXE_headers += derived_rates.H USE_SCREENING = TRUE USE_NEUTRINOS = TRUE diff --git a/networks/sn160/actual_network.H b/networks/sn160/actual_network.H index a66fdc1f0..91287368e 100644 --- a/networks/sn160/actual_network.H +++ b/networks/sn160/actual_network.H @@ -1,5 +1,5 @@ -#ifndef actual_network_H -#define actual_network_H +#ifndef ACTUAL_NETWORK_H +#define ACTUAL_NETWORK_H #include #include @@ -1056,17 +1056,17 @@ namespace Rates enum NetworkRates : std::uint16_t { - k_Be7_to_Li7_reaclib = 1, - k_C14_to_N14_reaclib = 2, - k_N13_to_C13_reaclib = 3, - k_O14_to_N14_reaclib = 4, - k_O15_to_N15_reaclib = 5, - k_F17_to_O17_reaclib = 6, - k_F18_to_O18_reaclib = 7, - k_Ne18_to_F18_reaclib = 8, - k_Ne19_to_F19_reaclib = 9, - k_Zn59_to_Cu59_reaclib = 10, - k_Ge63_to_Ga63_reaclib = 11, + k_Be7_to_Li7_electron_capture_reaclib = 1, + k_C14_to_N14_beta_neg_reaclib = 2, + k_N13_to_C13_beta_pos_reaclib = 3, + k_O14_to_N14_beta_pos_reaclib = 4, + k_O15_to_N15_beta_pos_reaclib = 5, + k_F17_to_O17_beta_pos_reaclib = 6, + k_F18_to_O18_beta_pos_reaclib = 7, + k_Ne18_to_F18_beta_pos_reaclib = 8, + k_Ne19_to_F19_beta_pos_reaclib = 9, + k_Zn59_to_Cu59_beta_pos_reaclib = 10, + k_Ge63_to_Ga63_beta_pos_reaclib = 11, k_d_to_n_p_reaclib = 12, k_He3_to_p_d_reaclib = 13, k_He4_to_n_He3_reaclib = 14, @@ -1076,7 +1076,7 @@ namespace Rates k_Be7_to_p_Li6_reaclib = 18, k_Be7_to_He4_He3_reaclib = 19, k_B8_to_p_Be7_reaclib = 20, - k_B8_to_He4_He4_reaclib = 21, + k_B8_to_He4_He4_beta_pos_reaclib = 21, k_B10_to_p_Be9_reaclib = 22, k_B10_to_He4_Li6_reaclib = 23, k_B11_to_n_B10_reaclib = 24, @@ -1405,7 +1405,7 @@ namespace Rates k_Cu65_to_n_Cu64_reaclib = 347, k_Cu65_to_p_Ni64_reaclib = 348, k_Zn59_to_p_Cu58_reaclib = 349, - k_Zn59_to_p_Ni58_reaclib = 350, + k_Zn59_to_p_Ni58_beta_pos_reaclib = 350, k_Zn60_to_n_Zn59_reaclib = 351, k_Zn60_to_p_Cu59_reaclib = 352, k_Zn60_to_He4_Ni56_reaclib = 353, @@ -1442,1247 +1442,1247 @@ namespace Rates k_Ge64_to_He4_Zn60_reaclib = 384, k_Li6_to_n_p_He4_reaclib = 385, k_Be9_to_n_He4_He4_reaclib = 386, - k_C12_to_He4_He4_He4_reaclib = 387, - k_n_p_to_d_reaclib = 388, - k_p_p_to_d_reaclib_beta_pos = 389, - k_p_p_to_d_reaclib_electron_capture = 390, - k_p_d_to_He3_reaclib = 391, + k_C12_to_3He4_reaclib = 387, + k_p_n_to_d_reaclib = 388, + k_p_p_to_d_beta_pos_reaclib = 389, + k_p_p_to_d_electron_capture_reaclib = 390, + k_d_p_to_He3_reaclib = 391, k_d_d_to_He4_reaclib = 392, - k_He4_d_to_Li6_reaclib = 393, - k_n_He3_to_He4_reaclib = 394, - k_p_He3_to_He4_reaclib = 395, - k_He4_He3_to_Be7_reaclib = 396, - k_n_Li6_to_Li7_reaclib = 397, - k_p_Li6_to_Be7_reaclib = 398, - k_He4_Li6_to_B10_reaclib = 399, - k_He4_Li7_to_B11_reaclib = 400, - k_p_Be7_to_B8_reaclib = 401, - k_p_Be9_to_B10_reaclib = 402, - k_n_B10_to_B11_reaclib = 403, - k_p_B11_to_C12_reaclib = 404, - k_n_C12_to_C13_reaclib = 405, - k_p_C12_to_N13_reaclib = 406, - k_He4_C12_to_O16_reaclib = 407, - k_n_C13_to_C14_reaclib = 408, - k_p_C13_to_N14_reaclib = 409, - k_p_C14_to_N15_reaclib = 410, - k_He4_C14_to_O18_reaclib = 411, - k_n_N13_to_N14_reaclib = 412, - k_p_N13_to_O14_reaclib = 413, - k_n_N14_to_N15_reaclib = 414, - k_p_N14_to_O15_reaclib = 415, - k_He4_N14_to_F18_reaclib = 416, - k_p_N15_to_O16_reaclib = 417, - k_He4_N15_to_F19_reaclib = 418, - k_n_O14_to_O15_reaclib = 419, - k_He4_O14_to_Ne18_reaclib = 420, - k_n_O15_to_O16_reaclib = 421, - k_He4_O15_to_Ne19_reaclib = 422, - k_n_O16_to_O17_reaclib = 423, - k_p_O16_to_F17_reaclib = 424, - k_He4_O16_to_Ne20_reaclib = 425, - k_n_O17_to_O18_reaclib = 426, - k_p_O17_to_F18_reaclib = 427, - k_He4_O17_to_Ne21_reaclib = 428, - k_p_O18_to_F19_reaclib = 429, - k_He4_O18_to_Ne22_reaclib = 430, - k_n_F17_to_F18_reaclib = 431, - k_p_F17_to_Ne18_reaclib = 432, - k_He4_F17_to_Na21_reaclib = 433, - k_n_F18_to_F19_reaclib = 434, - k_p_F18_to_Ne19_reaclib = 435, - k_He4_F18_to_Na22_reaclib = 436, - k_p_F19_to_Ne20_reaclib = 437, - k_He4_F19_to_Na23_reaclib = 438, - k_n_Ne18_to_Ne19_reaclib = 439, - k_n_Ne19_to_Ne20_reaclib = 440, - k_He4_Ne19_to_Mg23_reaclib = 441, - k_n_Ne20_to_Ne21_reaclib = 442, - k_p_Ne20_to_Na21_reaclib = 443, - k_He4_Ne20_to_Mg24_reaclib = 444, - k_n_Ne21_to_Ne22_reaclib = 445, - k_p_Ne21_to_Na22_reaclib = 446, - k_He4_Ne21_to_Mg25_reaclib = 447, - k_p_Ne22_to_Na23_reaclib = 448, - k_He4_Ne22_to_Mg26_reaclib = 449, - k_n_Na21_to_Na22_reaclib = 450, - k_He4_Na21_to_Al25_reaclib = 451, - k_n_Na22_to_Na23_reaclib = 452, - k_p_Na22_to_Mg23_reaclib = 453, - k_He4_Na22_to_Al26_reaclib = 454, - k_p_Na23_to_Mg24_reaclib = 455, - k_He4_Na23_to_Al27_reaclib = 456, - k_n_Mg23_to_Mg24_reaclib = 457, - k_n_Mg24_to_Mg25_reaclib = 458, - k_p_Mg24_to_Al25_reaclib = 459, - k_He4_Mg24_to_Si28_reaclib = 460, - k_n_Mg25_to_Mg26_reaclib = 461, - k_p_Mg25_to_Al26_reaclib = 462, - k_He4_Mg25_to_Si29_reaclib = 463, - k_p_Mg26_to_Al27_reaclib = 464, - k_He4_Mg26_to_Si30_reaclib = 465, - k_n_Al25_to_Al26_reaclib = 466, - k_He4_Al25_to_P29_reaclib = 467, - k_n_Al26_to_Al27_reaclib = 468, - k_He4_Al26_to_P30_reaclib = 469, - k_p_Al27_to_Si28_reaclib = 470, - k_He4_Al27_to_P31_reaclib = 471, - k_n_Si28_to_Si29_reaclib = 472, - k_p_Si28_to_P29_reaclib = 473, - k_He4_Si28_to_S32_reaclib = 474, - k_n_Si29_to_Si30_reaclib = 475, - k_p_Si29_to_P30_reaclib = 476, - k_He4_Si29_to_S33_reaclib = 477, - k_n_Si30_to_Si31_reaclib = 478, - k_p_Si30_to_P31_reaclib = 479, - k_He4_Si30_to_S34_reaclib = 480, - k_n_Si31_to_Si32_reaclib = 481, - k_p_Si31_to_P32_reaclib = 482, - k_He4_Si31_to_S35_reaclib = 483, - k_p_Si32_to_P33_reaclib = 484, - k_He4_Si32_to_S36_reaclib = 485, - k_n_P29_to_P30_reaclib = 486, - k_He4_P29_to_Cl33_reaclib = 487, - k_n_P30_to_P31_reaclib = 488, - k_He4_P30_to_Cl34_reaclib = 489, - k_n_P31_to_P32_reaclib = 490, - k_p_P31_to_S32_reaclib = 491, - k_He4_P31_to_Cl35_reaclib = 492, - k_n_P32_to_P33_reaclib = 493, - k_p_P32_to_S33_reaclib = 494, - k_He4_P32_to_Cl36_reaclib = 495, - k_p_P33_to_S34_reaclib = 496, - k_He4_P33_to_Cl37_reaclib = 497, - k_n_S32_to_S33_reaclib = 498, - k_p_S32_to_Cl33_reaclib = 499, - k_He4_S32_to_Ar36_reaclib = 500, - k_n_S33_to_S34_reaclib = 501, - k_p_S33_to_Cl34_reaclib = 502, - k_He4_S33_to_Ar37_reaclib = 503, - k_n_S34_to_S35_reaclib = 504, - k_p_S34_to_Cl35_reaclib = 505, - k_He4_S34_to_Ar38_reaclib = 506, - k_n_S35_to_S36_reaclib = 507, - k_p_S35_to_Cl36_reaclib = 508, - k_He4_S35_to_Ar39_reaclib = 509, - k_p_S36_to_Cl37_reaclib = 510, - k_He4_S36_to_Ar40_reaclib = 511, - k_n_Cl33_to_Cl34_reaclib = 512, - k_He4_Cl33_to_K37_reaclib = 513, - k_n_Cl34_to_Cl35_reaclib = 514, - k_He4_Cl34_to_K38_reaclib = 515, - k_n_Cl35_to_Cl36_reaclib = 516, - k_p_Cl35_to_Ar36_reaclib = 517, - k_He4_Cl35_to_K39_reaclib = 518, - k_n_Cl36_to_Cl37_reaclib = 519, - k_p_Cl36_to_Ar37_reaclib = 520, - k_He4_Cl36_to_K40_reaclib = 521, - k_p_Cl37_to_Ar38_reaclib = 522, - k_He4_Cl37_to_K41_reaclib = 523, - k_n_Ar36_to_Ar37_reaclib = 524, - k_p_Ar36_to_K37_reaclib = 525, - k_He4_Ar36_to_Ca40_reaclib = 526, - k_n_Ar37_to_Ar38_reaclib = 527, - k_p_Ar37_to_K38_reaclib = 528, - k_He4_Ar37_to_Ca41_reaclib = 529, - k_n_Ar38_to_Ar39_reaclib = 530, - k_p_Ar38_to_K39_reaclib = 531, - k_He4_Ar38_to_Ca42_reaclib = 532, - k_n_Ar39_to_Ar40_reaclib = 533, - k_p_Ar39_to_K40_reaclib = 534, - k_He4_Ar39_to_Ca43_reaclib = 535, - k_p_Ar40_to_K41_reaclib = 536, - k_He4_Ar40_to_Ca44_reaclib = 537, - k_n_K37_to_K38_reaclib = 538, - k_n_K38_to_K39_reaclib = 539, - k_n_K39_to_K40_reaclib = 540, - k_p_K39_to_Ca40_reaclib = 541, - k_He4_K39_to_Sc43_reaclib = 542, - k_n_K40_to_K41_reaclib = 543, - k_p_K40_to_Ca41_reaclib = 544, - k_He4_K40_to_Sc44_reaclib = 545, - k_p_K41_to_Ca42_reaclib = 546, - k_He4_K41_to_Sc45_reaclib = 547, - k_n_Ca40_to_Ca41_reaclib = 548, - k_He4_Ca40_to_Ti44_reaclib = 549, - k_n_Ca41_to_Ca42_reaclib = 550, - k_He4_Ca41_to_Ti45_reaclib = 551, - k_n_Ca42_to_Ca43_reaclib = 552, - k_p_Ca42_to_Sc43_reaclib = 553, - k_He4_Ca42_to_Ti46_reaclib = 554, - k_n_Ca43_to_Ca44_reaclib = 555, - k_p_Ca43_to_Sc44_reaclib = 556, - k_He4_Ca43_to_Ti47_reaclib = 557, - k_n_Ca44_to_Ca45_reaclib = 558, - k_p_Ca44_to_Sc45_reaclib = 559, - k_He4_Ca44_to_Ti48_reaclib = 560, - k_n_Ca45_to_Ca46_reaclib = 561, - k_p_Ca45_to_Sc46_reaclib = 562, - k_He4_Ca45_to_Ti49_reaclib = 563, - k_n_Ca46_to_Ca47_reaclib = 564, - k_p_Ca46_to_Sc47_reaclib = 565, - k_He4_Ca46_to_Ti50_reaclib = 566, - k_n_Ca47_to_Ca48_reaclib = 567, - k_p_Ca47_to_Sc48_reaclib = 568, - k_He4_Ca47_to_Ti51_reaclib = 569, - k_p_Ca48_to_Sc49_reaclib = 570, - k_n_Sc43_to_Sc44_reaclib = 571, - k_p_Sc43_to_Ti44_reaclib = 572, - k_He4_Sc43_to_V47_reaclib = 573, - k_n_Sc44_to_Sc45_reaclib = 574, - k_p_Sc44_to_Ti45_reaclib = 575, - k_He4_Sc44_to_V48_reaclib = 576, - k_n_Sc45_to_Sc46_reaclib = 577, - k_p_Sc45_to_Ti46_reaclib = 578, - k_He4_Sc45_to_V49_reaclib = 579, - k_n_Sc46_to_Sc47_reaclib = 580, - k_p_Sc46_to_Ti47_reaclib = 581, - k_He4_Sc46_to_V50_reaclib = 582, - k_n_Sc47_to_Sc48_reaclib = 583, - k_p_Sc47_to_Ti48_reaclib = 584, - k_He4_Sc47_to_V51_reaclib = 585, - k_n_Sc48_to_Sc49_reaclib = 586, - k_p_Sc48_to_Ti49_reaclib = 587, - k_He4_Sc48_to_V52_reaclib = 588, - k_p_Sc49_to_Ti50_reaclib = 589, - k_n_Ti44_to_Ti45_reaclib = 590, - k_He4_Ti44_to_Cr48_reaclib = 591, - k_n_Ti45_to_Ti46_reaclib = 592, - k_p_Ti45_to_V46_reaclib = 593, - k_He4_Ti45_to_Cr49_reaclib = 594, - k_n_Ti46_to_Ti47_reaclib = 595, - k_p_Ti46_to_V47_reaclib = 596, - k_He4_Ti46_to_Cr50_reaclib = 597, - k_n_Ti47_to_Ti48_reaclib = 598, - k_p_Ti47_to_V48_reaclib = 599, - k_He4_Ti47_to_Cr51_reaclib = 600, - k_n_Ti48_to_Ti49_reaclib = 601, - k_p_Ti48_to_V49_reaclib = 602, - k_He4_Ti48_to_Cr52_reaclib = 603, - k_n_Ti49_to_Ti50_reaclib = 604, - k_p_Ti49_to_V50_reaclib = 605, - k_He4_Ti49_to_Cr53_reaclib = 606, - k_n_Ti50_to_Ti51_reaclib = 607, - k_p_Ti50_to_V51_reaclib = 608, - k_He4_Ti50_to_Cr54_reaclib = 609, - k_p_Ti51_to_V52_reaclib = 610, - k_n_V46_to_V47_reaclib = 611, - k_He4_V46_to_Mn50_reaclib = 612, - k_n_V47_to_V48_reaclib = 613, - k_p_V47_to_Cr48_reaclib = 614, - k_He4_V47_to_Mn51_reaclib = 615, - k_n_V48_to_V49_reaclib = 616, - k_p_V48_to_Cr49_reaclib = 617, - k_He4_V48_to_Mn52_reaclib = 618, - k_n_V49_to_V50_reaclib = 619, - k_p_V49_to_Cr50_reaclib = 620, - k_He4_V49_to_Mn53_reaclib = 621, - k_n_V50_to_V51_reaclib = 622, - k_p_V50_to_Cr51_reaclib = 623, - k_He4_V50_to_Mn54_reaclib = 624, - k_n_V51_to_V52_reaclib = 625, - k_p_V51_to_Cr52_reaclib = 626, - k_He4_V51_to_Mn55_reaclib = 627, - k_p_V52_to_Cr53_reaclib = 628, - k_n_Cr48_to_Cr49_reaclib = 629, - k_He4_Cr48_to_Fe52_reaclib = 630, - k_n_Cr49_to_Cr50_reaclib = 631, - k_p_Cr49_to_Mn50_reaclib = 632, - k_He4_Cr49_to_Fe53_reaclib = 633, - k_n_Cr50_to_Cr51_reaclib = 634, - k_p_Cr50_to_Mn51_reaclib = 635, - k_He4_Cr50_to_Fe54_reaclib = 636, - k_n_Cr51_to_Cr52_reaclib = 637, - k_p_Cr51_to_Mn52_reaclib = 638, - k_He4_Cr51_to_Fe55_reaclib = 639, - k_n_Cr52_to_Cr53_reaclib = 640, - k_p_Cr52_to_Mn53_reaclib = 641, - k_He4_Cr52_to_Fe56_reaclib = 642, - k_n_Cr53_to_Cr54_reaclib = 643, - k_p_Cr53_to_Mn54_reaclib = 644, - k_He4_Cr53_to_Fe57_reaclib = 645, - k_p_Cr54_to_Mn55_reaclib = 646, - k_He4_Cr54_to_Fe58_reaclib = 647, - k_n_Mn50_to_Mn51_reaclib = 648, - k_He4_Mn50_to_Co54_reaclib = 649, - k_n_Mn51_to_Mn52_reaclib = 650, - k_p_Mn51_to_Fe52_reaclib = 651, - k_He4_Mn51_to_Co55_reaclib = 652, - k_n_Mn52_to_Mn53_reaclib = 653, - k_p_Mn52_to_Fe53_reaclib = 654, - k_He4_Mn52_to_Co56_reaclib = 655, - k_n_Mn53_to_Mn54_reaclib = 656, - k_p_Mn53_to_Fe54_reaclib = 657, - k_He4_Mn53_to_Co57_reaclib = 658, - k_n_Mn54_to_Mn55_reaclib = 659, - k_p_Mn54_to_Fe55_reaclib = 660, - k_He4_Mn54_to_Co58_reaclib = 661, - k_p_Mn55_to_Fe56_reaclib = 662, - k_He4_Mn55_to_Co59_reaclib = 663, - k_n_Fe52_to_Fe53_reaclib = 664, - k_p_Fe52_to_Co53_reaclib = 665, - k_He4_Fe52_to_Ni56_reaclib = 666, - k_n_Fe53_to_Fe54_reaclib = 667, - k_p_Fe53_to_Co54_reaclib = 668, - k_He4_Fe53_to_Ni57_reaclib = 669, - k_n_Fe54_to_Fe55_reaclib = 670, - k_p_Fe54_to_Co55_reaclib = 671, - k_He4_Fe54_to_Ni58_reaclib = 672, - k_n_Fe55_to_Fe56_reaclib = 673, - k_p_Fe55_to_Co56_reaclib = 674, - k_He4_Fe55_to_Ni59_reaclib = 675, - k_n_Fe56_to_Fe57_reaclib = 676, - k_p_Fe56_to_Co57_reaclib = 677, - k_He4_Fe56_to_Ni60_reaclib = 678, - k_n_Fe57_to_Fe58_reaclib = 679, - k_p_Fe57_to_Co58_reaclib = 680, - k_He4_Fe57_to_Ni61_reaclib = 681, - k_p_Fe58_to_Co59_reaclib = 682, - k_He4_Fe58_to_Ni62_reaclib = 683, - k_n_Co53_to_Co54_reaclib = 684, - k_He4_Co53_to_Cu57_reaclib = 685, - k_n_Co54_to_Co55_reaclib = 686, - k_He4_Co54_to_Cu58_reaclib = 687, - k_n_Co55_to_Co56_reaclib = 688, - k_p_Co55_to_Ni56_reaclib = 689, - k_He4_Co55_to_Cu59_reaclib = 690, - k_n_Co56_to_Co57_reaclib = 691, - k_p_Co56_to_Ni57_reaclib = 692, - k_He4_Co56_to_Cu60_reaclib = 693, - k_n_Co57_to_Co58_reaclib = 694, - k_p_Co57_to_Ni58_reaclib = 695, - k_He4_Co57_to_Cu61_reaclib = 696, - k_n_Co58_to_Co59_reaclib = 697, - k_p_Co58_to_Ni59_reaclib = 698, - k_He4_Co58_to_Cu62_reaclib = 699, - k_p_Co59_to_Ni60_reaclib = 700, - k_He4_Co59_to_Cu63_reaclib = 701, - k_n_Ni56_to_Ni57_reaclib = 702, - k_p_Ni56_to_Cu57_reaclib = 703, - k_He4_Ni56_to_Zn60_reaclib = 704, - k_n_Ni57_to_Ni58_reaclib = 705, - k_p_Ni57_to_Cu58_reaclib = 706, - k_He4_Ni57_to_Zn61_reaclib = 707, - k_n_Ni58_to_Ni59_reaclib = 708, - k_p_Ni58_to_Cu59_reaclib = 709, - k_He4_Ni58_to_Zn62_reaclib = 710, - k_n_Ni59_to_Ni60_reaclib = 711, - k_p_Ni59_to_Cu60_reaclib = 712, - k_He4_Ni59_to_Zn63_reaclib = 713, - k_n_Ni60_to_Ni61_reaclib = 714, - k_p_Ni60_to_Cu61_reaclib = 715, - k_He4_Ni60_to_Zn64_reaclib = 716, - k_n_Ni61_to_Ni62_reaclib = 717, - k_p_Ni61_to_Cu62_reaclib = 718, - k_He4_Ni61_to_Zn65_reaclib = 719, - k_n_Ni62_to_Ni63_reaclib = 720, - k_p_Ni62_to_Cu63_reaclib = 721, - k_He4_Ni62_to_Zn66_reaclib = 722, - k_n_Ni63_to_Ni64_reaclib = 723, - k_p_Ni63_to_Cu64_reaclib = 724, - k_p_Ni64_to_Cu65_reaclib = 725, - k_n_Cu57_to_Cu58_reaclib = 726, - k_n_Cu58_to_Cu59_reaclib = 727, - k_p_Cu58_to_Zn59_reaclib = 728, - k_He4_Cu58_to_Ga62_reaclib = 729, - k_n_Cu59_to_Cu60_reaclib = 730, - k_p_Cu59_to_Zn60_reaclib = 731, - k_He4_Cu59_to_Ga63_reaclib = 732, - k_n_Cu60_to_Cu61_reaclib = 733, - k_p_Cu60_to_Zn61_reaclib = 734, - k_He4_Cu60_to_Ga64_reaclib = 735, - k_n_Cu61_to_Cu62_reaclib = 736, - k_p_Cu61_to_Zn62_reaclib = 737, - k_n_Cu62_to_Cu63_reaclib = 738, - k_p_Cu62_to_Zn63_reaclib = 739, - k_n_Cu63_to_Cu64_reaclib = 740, - k_p_Cu63_to_Zn64_reaclib = 741, - k_n_Cu64_to_Cu65_reaclib = 742, - k_p_Cu64_to_Zn65_reaclib = 743, - k_p_Cu65_to_Zn66_reaclib = 744, - k_n_Zn59_to_Zn60_reaclib = 745, - k_He4_Zn59_to_Ge63_reaclib = 746, - k_n_Zn60_to_Zn61_reaclib = 747, - k_He4_Zn60_to_Ge64_reaclib = 748, - k_n_Zn61_to_Zn62_reaclib = 749, - k_p_Zn61_to_Ga62_reaclib = 750, - k_n_Zn62_to_Zn63_reaclib = 751, - k_p_Zn62_to_Ga63_reaclib = 752, - k_n_Zn63_to_Zn64_reaclib = 753, - k_p_Zn63_to_Ga64_reaclib = 754, - k_n_Zn64_to_Zn65_reaclib = 755, - k_n_Zn65_to_Zn66_reaclib = 756, - k_n_Ga62_to_Ga63_reaclib = 757, - k_p_Ga62_to_Ge63_reaclib = 758, - k_n_Ga63_to_Ga64_reaclib = 759, - k_p_Ga63_to_Ge64_reaclib = 760, - k_n_Ge63_to_Ge64_reaclib = 761, + k_d_He4_to_Li6_reaclib = 393, + k_He3_n_to_He4_reaclib = 394, + k_He3_p_to_He4_beta_pos_reaclib = 395, + k_He3_He4_to_Be7_reaclib = 396, + k_Li6_n_to_Li7_reaclib = 397, + k_Li6_p_to_Be7_reaclib = 398, + k_Li6_He4_to_B10_reaclib = 399, + k_Li7_He4_to_B11_reaclib = 400, + k_Be7_p_to_B8_reaclib = 401, + k_Be9_p_to_B10_reaclib = 402, + k_B10_n_to_B11_reaclib = 403, + k_B11_p_to_C12_reaclib = 404, + k_C12_n_to_C13_reaclib = 405, + k_C12_p_to_N13_reaclib = 406, + k_C12_He4_to_O16_reaclib = 407, + k_C13_n_to_C14_reaclib = 408, + k_C13_p_to_N14_reaclib = 409, + k_C14_p_to_N15_reaclib = 410, + k_C14_He4_to_O18_reaclib = 411, + k_N13_n_to_N14_reaclib = 412, + k_N13_p_to_O14_reaclib = 413, + k_N14_n_to_N15_reaclib = 414, + k_N14_p_to_O15_reaclib = 415, + k_N14_He4_to_F18_reaclib = 416, + k_N15_p_to_O16_reaclib = 417, + k_N15_He4_to_F19_reaclib = 418, + k_O14_n_to_O15_reaclib = 419, + k_O14_He4_to_Ne18_reaclib = 420, + k_O15_n_to_O16_reaclib = 421, + k_O15_He4_to_Ne19_reaclib = 422, + k_O16_n_to_O17_reaclib = 423, + k_O16_p_to_F17_reaclib = 424, + k_O16_He4_to_Ne20_reaclib = 425, + k_O17_n_to_O18_reaclib = 426, + k_O17_p_to_F18_reaclib = 427, + k_O17_He4_to_Ne21_reaclib = 428, + k_O18_p_to_F19_reaclib = 429, + k_O18_He4_to_Ne22_reaclib = 430, + k_F17_n_to_F18_reaclib = 431, + k_F17_p_to_Ne18_reaclib = 432, + k_F17_He4_to_Na21_reaclib = 433, + k_F18_n_to_F19_reaclib = 434, + k_F18_p_to_Ne19_reaclib = 435, + k_F18_He4_to_Na22_reaclib = 436, + k_F19_p_to_Ne20_reaclib = 437, + k_F19_He4_to_Na23_reaclib = 438, + k_Ne18_n_to_Ne19_reaclib = 439, + k_Ne19_n_to_Ne20_reaclib = 440, + k_Ne19_He4_to_Mg23_reaclib = 441, + k_Ne20_n_to_Ne21_reaclib = 442, + k_Ne20_p_to_Na21_reaclib = 443, + k_Ne20_He4_to_Mg24_reaclib = 444, + k_Ne21_n_to_Ne22_reaclib = 445, + k_Ne21_p_to_Na22_reaclib = 446, + k_Ne21_He4_to_Mg25_reaclib = 447, + k_Ne22_p_to_Na23_reaclib = 448, + k_Ne22_He4_to_Mg26_reaclib = 449, + k_Na21_n_to_Na22_reaclib = 450, + k_Na21_He4_to_Al25_reaclib = 451, + k_Na22_n_to_Na23_reaclib = 452, + k_Na22_p_to_Mg23_reaclib = 453, + k_Na22_He4_to_Al26_reaclib = 454, + k_Na23_p_to_Mg24_reaclib = 455, + k_Na23_He4_to_Al27_reaclib = 456, + k_Mg23_n_to_Mg24_reaclib = 457, + k_Mg24_n_to_Mg25_reaclib = 458, + k_Mg24_p_to_Al25_reaclib = 459, + k_Mg24_He4_to_Si28_reaclib = 460, + k_Mg25_n_to_Mg26_reaclib = 461, + k_Mg25_p_to_Al26_reaclib = 462, + k_Mg25_He4_to_Si29_reaclib = 463, + k_Mg26_p_to_Al27_reaclib = 464, + k_Mg26_He4_to_Si30_reaclib = 465, + k_Al25_n_to_Al26_reaclib = 466, + k_Al25_He4_to_P29_reaclib = 467, + k_Al26_n_to_Al27_reaclib = 468, + k_Al26_He4_to_P30_reaclib = 469, + k_Al27_p_to_Si28_reaclib = 470, + k_Al27_He4_to_P31_reaclib = 471, + k_Si28_n_to_Si29_reaclib = 472, + k_Si28_p_to_P29_reaclib = 473, + k_Si28_He4_to_S32_reaclib = 474, + k_Si29_n_to_Si30_reaclib = 475, + k_Si29_p_to_P30_reaclib = 476, + k_Si29_He4_to_S33_reaclib = 477, + k_Si30_n_to_Si31_reaclib = 478, + k_Si30_p_to_P31_reaclib = 479, + k_Si30_He4_to_S34_reaclib = 480, + k_Si31_n_to_Si32_reaclib = 481, + k_Si31_p_to_P32_reaclib = 482, + k_Si31_He4_to_S35_reaclib = 483, + k_Si32_p_to_P33_reaclib = 484, + k_Si32_He4_to_S36_reaclib = 485, + k_P29_n_to_P30_reaclib = 486, + k_P29_He4_to_Cl33_reaclib = 487, + k_P30_n_to_P31_reaclib = 488, + k_P30_He4_to_Cl34_reaclib = 489, + k_P31_n_to_P32_reaclib = 490, + k_P31_p_to_S32_reaclib = 491, + k_P31_He4_to_Cl35_reaclib = 492, + k_P32_n_to_P33_reaclib = 493, + k_P32_p_to_S33_reaclib = 494, + k_P32_He4_to_Cl36_reaclib = 495, + k_P33_p_to_S34_reaclib = 496, + k_P33_He4_to_Cl37_reaclib = 497, + k_S32_n_to_S33_reaclib = 498, + k_S32_p_to_Cl33_reaclib = 499, + k_S32_He4_to_Ar36_reaclib = 500, + k_S33_n_to_S34_reaclib = 501, + k_S33_p_to_Cl34_reaclib = 502, + k_S33_He4_to_Ar37_reaclib = 503, + k_S34_n_to_S35_reaclib = 504, + k_S34_p_to_Cl35_reaclib = 505, + k_S34_He4_to_Ar38_reaclib = 506, + k_S35_n_to_S36_reaclib = 507, + k_S35_p_to_Cl36_reaclib = 508, + k_S35_He4_to_Ar39_reaclib = 509, + k_S36_p_to_Cl37_reaclib = 510, + k_S36_He4_to_Ar40_reaclib = 511, + k_Cl33_n_to_Cl34_reaclib = 512, + k_Cl33_He4_to_K37_reaclib = 513, + k_Cl34_n_to_Cl35_reaclib = 514, + k_Cl34_He4_to_K38_reaclib = 515, + k_Cl35_n_to_Cl36_reaclib = 516, + k_Cl35_p_to_Ar36_reaclib = 517, + k_Cl35_He4_to_K39_reaclib = 518, + k_Cl36_n_to_Cl37_reaclib = 519, + k_Cl36_p_to_Ar37_reaclib = 520, + k_Cl36_He4_to_K40_reaclib = 521, + k_Cl37_p_to_Ar38_reaclib = 522, + k_Cl37_He4_to_K41_reaclib = 523, + k_Ar36_n_to_Ar37_reaclib = 524, + k_Ar36_p_to_K37_reaclib = 525, + k_Ar36_He4_to_Ca40_reaclib = 526, + k_Ar37_n_to_Ar38_reaclib = 527, + k_Ar37_p_to_K38_reaclib = 528, + k_Ar37_He4_to_Ca41_reaclib = 529, + k_Ar38_n_to_Ar39_reaclib = 530, + k_Ar38_p_to_K39_reaclib = 531, + k_Ar38_He4_to_Ca42_reaclib = 532, + k_Ar39_n_to_Ar40_reaclib = 533, + k_Ar39_p_to_K40_reaclib = 534, + k_Ar39_He4_to_Ca43_reaclib = 535, + k_Ar40_p_to_K41_reaclib = 536, + k_Ar40_He4_to_Ca44_reaclib = 537, + k_K37_n_to_K38_reaclib = 538, + k_K38_n_to_K39_reaclib = 539, + k_K39_n_to_K40_reaclib = 540, + k_K39_p_to_Ca40_reaclib = 541, + k_K39_He4_to_Sc43_reaclib = 542, + k_K40_n_to_K41_reaclib = 543, + k_K40_p_to_Ca41_reaclib = 544, + k_K40_He4_to_Sc44_reaclib = 545, + k_K41_p_to_Ca42_reaclib = 546, + k_K41_He4_to_Sc45_reaclib = 547, + k_Ca40_n_to_Ca41_reaclib = 548, + k_Ca40_He4_to_Ti44_reaclib = 549, + k_Ca41_n_to_Ca42_reaclib = 550, + k_Ca41_He4_to_Ti45_reaclib = 551, + k_Ca42_n_to_Ca43_reaclib = 552, + k_Ca42_p_to_Sc43_reaclib = 553, + k_Ca42_He4_to_Ti46_reaclib = 554, + k_Ca43_n_to_Ca44_reaclib = 555, + k_Ca43_p_to_Sc44_reaclib = 556, + k_Ca43_He4_to_Ti47_reaclib = 557, + k_Ca44_n_to_Ca45_reaclib = 558, + k_Ca44_p_to_Sc45_reaclib = 559, + k_Ca44_He4_to_Ti48_reaclib = 560, + k_Ca45_n_to_Ca46_reaclib = 561, + k_Ca45_p_to_Sc46_reaclib = 562, + k_Ca45_He4_to_Ti49_reaclib = 563, + k_Ca46_n_to_Ca47_reaclib = 564, + k_Ca46_p_to_Sc47_reaclib = 565, + k_Ca46_He4_to_Ti50_reaclib = 566, + k_Ca47_n_to_Ca48_reaclib = 567, + k_Ca47_p_to_Sc48_reaclib = 568, + k_Ca47_He4_to_Ti51_reaclib = 569, + k_Ca48_p_to_Sc49_reaclib = 570, + k_Sc43_n_to_Sc44_reaclib = 571, + k_Sc43_p_to_Ti44_reaclib = 572, + k_Sc43_He4_to_V47_reaclib = 573, + k_Sc44_n_to_Sc45_reaclib = 574, + k_Sc44_p_to_Ti45_reaclib = 575, + k_Sc44_He4_to_V48_reaclib = 576, + k_Sc45_n_to_Sc46_reaclib = 577, + k_Sc45_p_to_Ti46_reaclib = 578, + k_Sc45_He4_to_V49_reaclib = 579, + k_Sc46_n_to_Sc47_reaclib = 580, + k_Sc46_p_to_Ti47_reaclib = 581, + k_Sc46_He4_to_V50_reaclib = 582, + k_Sc47_n_to_Sc48_reaclib = 583, + k_Sc47_p_to_Ti48_reaclib = 584, + k_Sc47_He4_to_V51_reaclib = 585, + k_Sc48_n_to_Sc49_reaclib = 586, + k_Sc48_p_to_Ti49_reaclib = 587, + k_Sc48_He4_to_V52_reaclib = 588, + k_Sc49_p_to_Ti50_reaclib = 589, + k_Ti44_n_to_Ti45_reaclib = 590, + k_Ti44_He4_to_Cr48_reaclib = 591, + k_Ti45_n_to_Ti46_reaclib = 592, + k_Ti45_p_to_V46_reaclib = 593, + k_Ti45_He4_to_Cr49_reaclib = 594, + k_Ti46_n_to_Ti47_reaclib = 595, + k_Ti46_p_to_V47_reaclib = 596, + k_Ti46_He4_to_Cr50_reaclib = 597, + k_Ti47_n_to_Ti48_reaclib = 598, + k_Ti47_p_to_V48_reaclib = 599, + k_Ti47_He4_to_Cr51_reaclib = 600, + k_Ti48_n_to_Ti49_reaclib = 601, + k_Ti48_p_to_V49_reaclib = 602, + k_Ti48_He4_to_Cr52_reaclib = 603, + k_Ti49_n_to_Ti50_reaclib = 604, + k_Ti49_p_to_V50_reaclib = 605, + k_Ti49_He4_to_Cr53_reaclib = 606, + k_Ti50_n_to_Ti51_reaclib = 607, + k_Ti50_p_to_V51_reaclib = 608, + k_Ti50_He4_to_Cr54_reaclib = 609, + k_Ti51_p_to_V52_reaclib = 610, + k_V46_n_to_V47_reaclib = 611, + k_V46_He4_to_Mn50_reaclib = 612, + k_V47_n_to_V48_reaclib = 613, + k_V47_p_to_Cr48_reaclib = 614, + k_V47_He4_to_Mn51_reaclib = 615, + k_V48_n_to_V49_reaclib = 616, + k_V48_p_to_Cr49_reaclib = 617, + k_V48_He4_to_Mn52_reaclib = 618, + k_V49_n_to_V50_reaclib = 619, + k_V49_p_to_Cr50_reaclib = 620, + k_V49_He4_to_Mn53_reaclib = 621, + k_V50_n_to_V51_reaclib = 622, + k_V50_p_to_Cr51_reaclib = 623, + k_V50_He4_to_Mn54_reaclib = 624, + k_V51_n_to_V52_reaclib = 625, + k_V51_p_to_Cr52_reaclib = 626, + k_V51_He4_to_Mn55_reaclib = 627, + k_V52_p_to_Cr53_reaclib = 628, + k_Cr48_n_to_Cr49_reaclib = 629, + k_Cr48_He4_to_Fe52_reaclib = 630, + k_Cr49_n_to_Cr50_reaclib = 631, + k_Cr49_p_to_Mn50_reaclib = 632, + k_Cr49_He4_to_Fe53_reaclib = 633, + k_Cr50_n_to_Cr51_reaclib = 634, + k_Cr50_p_to_Mn51_reaclib = 635, + k_Cr50_He4_to_Fe54_reaclib = 636, + k_Cr51_n_to_Cr52_reaclib = 637, + k_Cr51_p_to_Mn52_reaclib = 638, + k_Cr51_He4_to_Fe55_reaclib = 639, + k_Cr52_n_to_Cr53_reaclib = 640, + k_Cr52_p_to_Mn53_reaclib = 641, + k_Cr52_He4_to_Fe56_reaclib = 642, + k_Cr53_n_to_Cr54_reaclib = 643, + k_Cr53_p_to_Mn54_reaclib = 644, + k_Cr53_He4_to_Fe57_reaclib = 645, + k_Cr54_p_to_Mn55_reaclib = 646, + k_Cr54_He4_to_Fe58_reaclib = 647, + k_Mn50_n_to_Mn51_reaclib = 648, + k_Mn50_He4_to_Co54_reaclib = 649, + k_Mn51_n_to_Mn52_reaclib = 650, + k_Mn51_p_to_Fe52_reaclib = 651, + k_Mn51_He4_to_Co55_reaclib = 652, + k_Mn52_n_to_Mn53_reaclib = 653, + k_Mn52_p_to_Fe53_reaclib = 654, + k_Mn52_He4_to_Co56_reaclib = 655, + k_Mn53_n_to_Mn54_reaclib = 656, + k_Mn53_p_to_Fe54_reaclib = 657, + k_Mn53_He4_to_Co57_reaclib = 658, + k_Mn54_n_to_Mn55_reaclib = 659, + k_Mn54_p_to_Fe55_reaclib = 660, + k_Mn54_He4_to_Co58_reaclib = 661, + k_Mn55_p_to_Fe56_reaclib = 662, + k_Mn55_He4_to_Co59_reaclib = 663, + k_Fe52_n_to_Fe53_reaclib = 664, + k_Fe52_p_to_Co53_reaclib = 665, + k_Fe52_He4_to_Ni56_reaclib = 666, + k_Fe53_n_to_Fe54_reaclib = 667, + k_Fe53_p_to_Co54_reaclib = 668, + k_Fe53_He4_to_Ni57_reaclib = 669, + k_Fe54_n_to_Fe55_reaclib = 670, + k_Fe54_p_to_Co55_reaclib = 671, + k_Fe54_He4_to_Ni58_reaclib = 672, + k_Fe55_n_to_Fe56_reaclib = 673, + k_Fe55_p_to_Co56_reaclib = 674, + k_Fe55_He4_to_Ni59_reaclib = 675, + k_Fe56_n_to_Fe57_reaclib = 676, + k_Fe56_p_to_Co57_reaclib = 677, + k_Fe56_He4_to_Ni60_reaclib = 678, + k_Fe57_n_to_Fe58_reaclib = 679, + k_Fe57_p_to_Co58_reaclib = 680, + k_Fe57_He4_to_Ni61_reaclib = 681, + k_Fe58_p_to_Co59_reaclib = 682, + k_Fe58_He4_to_Ni62_reaclib = 683, + k_Co53_n_to_Co54_reaclib = 684, + k_Co53_He4_to_Cu57_reaclib = 685, + k_Co54_n_to_Co55_reaclib = 686, + k_Co54_He4_to_Cu58_reaclib = 687, + k_Co55_n_to_Co56_reaclib = 688, + k_Co55_p_to_Ni56_reaclib = 689, + k_Co55_He4_to_Cu59_reaclib = 690, + k_Co56_n_to_Co57_reaclib = 691, + k_Co56_p_to_Ni57_reaclib = 692, + k_Co56_He4_to_Cu60_reaclib = 693, + k_Co57_n_to_Co58_reaclib = 694, + k_Co57_p_to_Ni58_reaclib = 695, + k_Co57_He4_to_Cu61_reaclib = 696, + k_Co58_n_to_Co59_reaclib = 697, + k_Co58_p_to_Ni59_reaclib = 698, + k_Co58_He4_to_Cu62_reaclib = 699, + k_Co59_p_to_Ni60_reaclib = 700, + k_Co59_He4_to_Cu63_reaclib = 701, + k_Ni56_n_to_Ni57_reaclib = 702, + k_Ni56_p_to_Cu57_reaclib = 703, + k_Ni56_He4_to_Zn60_reaclib = 704, + k_Ni57_n_to_Ni58_reaclib = 705, + k_Ni57_p_to_Cu58_reaclib = 706, + k_Ni57_He4_to_Zn61_reaclib = 707, + k_Ni58_n_to_Ni59_reaclib = 708, + k_Ni58_p_to_Cu59_reaclib = 709, + k_Ni58_He4_to_Zn62_reaclib = 710, + k_Ni59_n_to_Ni60_reaclib = 711, + k_Ni59_p_to_Cu60_reaclib = 712, + k_Ni59_He4_to_Zn63_reaclib = 713, + k_Ni60_n_to_Ni61_reaclib = 714, + k_Ni60_p_to_Cu61_reaclib = 715, + k_Ni60_He4_to_Zn64_reaclib = 716, + k_Ni61_n_to_Ni62_reaclib = 717, + k_Ni61_p_to_Cu62_reaclib = 718, + k_Ni61_He4_to_Zn65_reaclib = 719, + k_Ni62_n_to_Ni63_reaclib = 720, + k_Ni62_p_to_Cu63_reaclib = 721, + k_Ni62_He4_to_Zn66_reaclib = 722, + k_Ni63_n_to_Ni64_reaclib = 723, + k_Ni63_p_to_Cu64_reaclib = 724, + k_Ni64_p_to_Cu65_reaclib = 725, + k_Cu57_n_to_Cu58_reaclib = 726, + k_Cu58_n_to_Cu59_reaclib = 727, + k_Cu58_p_to_Zn59_reaclib = 728, + k_Cu58_He4_to_Ga62_reaclib = 729, + k_Cu59_n_to_Cu60_reaclib = 730, + k_Cu59_p_to_Zn60_reaclib = 731, + k_Cu59_He4_to_Ga63_reaclib = 732, + k_Cu60_n_to_Cu61_reaclib = 733, + k_Cu60_p_to_Zn61_reaclib = 734, + k_Cu60_He4_to_Ga64_reaclib = 735, + k_Cu61_n_to_Cu62_reaclib = 736, + k_Cu61_p_to_Zn62_reaclib = 737, + k_Cu62_n_to_Cu63_reaclib = 738, + k_Cu62_p_to_Zn63_reaclib = 739, + k_Cu63_n_to_Cu64_reaclib = 740, + k_Cu63_p_to_Zn64_reaclib = 741, + k_Cu64_n_to_Cu65_reaclib = 742, + k_Cu64_p_to_Zn65_reaclib = 743, + k_Cu65_p_to_Zn66_reaclib = 744, + k_Zn59_n_to_Zn60_reaclib = 745, + k_Zn59_He4_to_Ge63_reaclib = 746, + k_Zn60_n_to_Zn61_reaclib = 747, + k_Zn60_He4_to_Ge64_reaclib = 748, + k_Zn61_n_to_Zn62_reaclib = 749, + k_Zn61_p_to_Ga62_reaclib = 750, + k_Zn62_n_to_Zn63_reaclib = 751, + k_Zn62_p_to_Ga63_reaclib = 752, + k_Zn63_n_to_Zn64_reaclib = 753, + k_Zn63_p_to_Ga64_reaclib = 754, + k_Zn64_n_to_Zn65_reaclib = 755, + k_Zn65_n_to_Zn66_reaclib = 756, + k_Ga62_n_to_Ga63_reaclib = 757, + k_Ga62_p_to_Ge63_reaclib = 758, + k_Ga63_n_to_Ga64_reaclib = 759, + k_Ga63_p_to_Ge64_reaclib = 760, + k_Ge63_n_to_Ge64_reaclib = 761, k_d_d_to_n_He3_reaclib = 762, - k_n_He3_to_d_d_reaclib = 763, - k_d_He3_to_p_He4_reaclib = 764, - k_He4_He3_to_p_Li6_reaclib = 765, - k_p_He4_to_d_He3_reaclib = 766, + k_He3_n_to_d_d_reaclib = 763, + k_He3_d_to_p_He4_reaclib = 764, + k_He3_He4_to_p_Li6_reaclib = 765, + k_He4_p_to_d_He3_reaclib = 766, k_He4_He4_to_n_Be7_reaclib = 767, k_He4_He4_to_p_Li7_reaclib = 768, - k_p_Li6_to_He4_He3_reaclib = 769, - k_d_Li6_to_n_Be7_reaclib = 770, - k_d_Li6_to_p_Li7_reaclib = 771, - k_He4_Li6_to_p_Be9_reaclib = 772, - k_p_Li7_to_n_Be7_reaclib = 773, - k_p_Li7_to_d_Li6_reaclib = 774, - k_p_Li7_to_He4_He4_reaclib = 775, - k_He4_Li7_to_n_B10_reaclib = 776, - k_n_Be7_to_p_Li7_reaclib = 777, - k_n_Be7_to_d_Li6_reaclib = 778, - k_n_Be7_to_He4_He4_reaclib = 779, - k_He4_Be7_to_p_B10_reaclib = 780, - k_p_Be9_to_He4_Li6_reaclib = 781, - k_He4_Be9_to_n_C12_reaclib = 782, - k_n_B10_to_He4_Li7_reaclib = 783, - k_p_B10_to_He4_Be7_reaclib = 784, - k_He4_B10_to_n_N13_reaclib = 785, - k_He4_B10_to_p_C13_reaclib = 786, - k_He4_B11_to_n_N14_reaclib = 787, - k_He4_B11_to_p_C14_reaclib = 788, - k_n_C12_to_He4_Be9_reaclib = 789, - k_He4_C12_to_n_O15_reaclib = 790, - k_He4_C12_to_p_N15_reaclib = 791, + k_Li6_p_to_He4_He3_reaclib = 769, + k_Li6_d_to_n_Be7_reaclib = 770, + k_Li6_d_to_p_Li7_reaclib = 771, + k_Li6_He4_to_p_Be9_reaclib = 772, + k_Li7_p_to_n_Be7_reaclib = 773, + k_Li7_p_to_d_Li6_reaclib = 774, + k_Li7_p_to_He4_He4_reaclib = 775, + k_Li7_He4_to_n_B10_reaclib = 776, + k_Be7_n_to_p_Li7_reaclib = 777, + k_Be7_n_to_d_Li6_reaclib = 778, + k_Be7_n_to_He4_He4_reaclib = 779, + k_Be7_He4_to_p_B10_reaclib = 780, + k_Be9_p_to_He4_Li6_reaclib = 781, + k_Be9_He4_to_n_C12_reaclib = 782, + k_B10_n_to_He4_Li7_reaclib = 783, + k_B10_p_to_He4_Be7_reaclib = 784, + k_B10_He4_to_n_N13_reaclib = 785, + k_B10_He4_to_p_C13_reaclib = 786, + k_B11_He4_to_n_N14_reaclib = 787, + k_B11_He4_to_p_C14_reaclib = 788, + k_C12_n_to_He4_Be9_reaclib = 789, + k_C12_He4_to_n_O15_reaclib = 790, + k_C12_He4_to_p_N15_reaclib = 791, k_C12_C12_to_n_Mg23_reaclib = 792, k_C12_C12_to_p_Na23_reaclib = 793, k_C12_C12_to_He4_Ne20_reaclib = 794, - k_p_C13_to_n_N13_reaclib = 795, - k_p_C13_to_He4_B10_reaclib = 796, - k_d_C13_to_n_N14_reaclib = 797, - k_He4_C13_to_n_O16_reaclib = 798, - k_p_C14_to_n_N14_reaclib = 799, - k_p_C14_to_He4_B11_reaclib = 800, - k_d_C14_to_n_N15_reaclib = 801, - k_He4_C14_to_n_O17_reaclib = 802, - k_n_N13_to_p_C13_reaclib = 803, - k_n_N13_to_He4_B10_reaclib = 804, - k_He4_N13_to_p_O16_reaclib = 805, - k_n_N14_to_p_C14_reaclib = 806, - k_n_N14_to_d_C13_reaclib = 807, - k_n_N14_to_He4_B11_reaclib = 808, - k_p_N14_to_n_O14_reaclib = 809, - k_He4_N14_to_n_F17_reaclib = 810, - k_He4_N14_to_p_O17_reaclib = 811, - k_n_N15_to_d_C14_reaclib = 812, - k_p_N15_to_n_O15_reaclib = 813, - k_p_N15_to_He4_C12_reaclib = 814, - k_He4_N15_to_n_F18_reaclib = 815, - k_He4_N15_to_p_O18_reaclib = 816, - k_n_O14_to_p_N14_reaclib = 817, - k_He4_O14_to_p_F17_reaclib = 818, - k_n_O15_to_p_N15_reaclib = 819, - k_n_O15_to_He4_C12_reaclib = 820, - k_He4_O15_to_n_Ne18_reaclib = 821, - k_He4_O15_to_p_F18_reaclib = 822, - k_n_O16_to_He4_C13_reaclib = 823, - k_p_O16_to_He4_N13_reaclib = 824, - k_He4_O16_to_n_Ne19_reaclib = 825, - k_He4_O16_to_p_F19_reaclib = 826, - k_C12_O16_to_p_Al27_reaclib = 827, - k_C12_O16_to_He4_Mg24_reaclib = 828, + k_C13_p_to_n_N13_reaclib = 795, + k_C13_p_to_He4_B10_reaclib = 796, + k_C13_d_to_n_N14_reaclib = 797, + k_C13_He4_to_n_O16_reaclib = 798, + k_C14_p_to_n_N14_reaclib = 799, + k_C14_p_to_He4_B11_reaclib = 800, + k_C14_d_to_n_N15_reaclib = 801, + k_C14_He4_to_n_O17_reaclib = 802, + k_N13_n_to_p_C13_reaclib = 803, + k_N13_n_to_He4_B10_reaclib = 804, + k_N13_He4_to_p_O16_reaclib = 805, + k_N14_n_to_p_C14_reaclib = 806, + k_N14_n_to_d_C13_reaclib = 807, + k_N14_n_to_He4_B11_reaclib = 808, + k_N14_p_to_n_O14_reaclib = 809, + k_N14_He4_to_n_F17_reaclib = 810, + k_N14_He4_to_p_O17_reaclib = 811, + k_N15_n_to_d_C14_reaclib = 812, + k_N15_p_to_n_O15_reaclib = 813, + k_N15_p_to_He4_C12_reaclib = 814, + k_N15_He4_to_n_F18_reaclib = 815, + k_N15_He4_to_p_O18_reaclib = 816, + k_O14_n_to_p_N14_reaclib = 817, + k_O14_He4_to_p_F17_reaclib = 818, + k_O15_n_to_p_N15_reaclib = 819, + k_O15_n_to_He4_C12_reaclib = 820, + k_O15_He4_to_n_Ne18_reaclib = 821, + k_O15_He4_to_p_F18_reaclib = 822, + k_O16_n_to_He4_C13_reaclib = 823, + k_O16_p_to_He4_N13_reaclib = 824, + k_O16_He4_to_n_Ne19_reaclib = 825, + k_O16_He4_to_p_F19_reaclib = 826, + k_O16_C12_to_p_Al27_reaclib = 827, + k_O16_C12_to_He4_Mg24_reaclib = 828, k_O16_O16_to_p_P31_reaclib = 829, k_O16_O16_to_He4_Si28_reaclib = 830, - k_n_O17_to_He4_C14_reaclib = 831, - k_p_O17_to_n_F17_reaclib = 832, - k_p_O17_to_He4_N14_reaclib = 833, - k_He4_O17_to_n_Ne20_reaclib = 834, - k_p_O18_to_n_F18_reaclib = 835, - k_p_O18_to_He4_N15_reaclib = 836, - k_He4_O18_to_n_Ne21_reaclib = 837, - k_n_F17_to_p_O17_reaclib = 838, - k_n_F17_to_He4_N14_reaclib = 839, - k_p_F17_to_He4_O14_reaclib = 840, - k_He4_F17_to_p_Ne20_reaclib = 841, - k_n_F18_to_p_O18_reaclib = 842, - k_n_F18_to_He4_N15_reaclib = 843, - k_p_F18_to_n_Ne18_reaclib = 844, - k_p_F18_to_He4_O15_reaclib = 845, - k_He4_F18_to_n_Na21_reaclib = 846, - k_He4_F18_to_p_Ne21_reaclib = 847, - k_p_F19_to_n_Ne19_reaclib = 848, - k_p_F19_to_He4_O16_reaclib = 849, - k_He4_F19_to_n_Na22_reaclib = 850, - k_He4_F19_to_p_Ne22_reaclib = 851, - k_n_Ne18_to_p_F18_reaclib = 852, - k_n_Ne18_to_He4_O15_reaclib = 853, - k_He4_Ne18_to_p_Na21_reaclib = 854, - k_n_Ne19_to_p_F19_reaclib = 855, - k_n_Ne19_to_He4_O16_reaclib = 856, - k_He4_Ne19_to_p_Na22_reaclib = 857, - k_n_Ne20_to_He4_O17_reaclib = 858, - k_p_Ne20_to_He4_F17_reaclib = 859, - k_He4_Ne20_to_n_Mg23_reaclib = 860, - k_He4_Ne20_to_p_Na23_reaclib = 861, - k_He4_Ne20_to_C12_C12_reaclib = 862, - k_C12_Ne20_to_p_P31_reaclib = 863, - k_C12_Ne20_to_He4_Si28_reaclib = 864, - k_n_Ne21_to_He4_O18_reaclib = 865, - k_p_Ne21_to_n_Na21_reaclib = 866, - k_p_Ne21_to_He4_F18_reaclib = 867, - k_He4_Ne21_to_n_Mg24_reaclib = 868, - k_p_Ne22_to_n_Na22_reaclib = 869, - k_p_Ne22_to_He4_F19_reaclib = 870, - k_He4_Ne22_to_n_Mg25_reaclib = 871, - k_n_Na21_to_p_Ne21_reaclib = 872, - k_n_Na21_to_He4_F18_reaclib = 873, - k_p_Na21_to_He4_Ne18_reaclib = 874, - k_He4_Na21_to_p_Mg24_reaclib = 875, - k_n_Na22_to_p_Ne22_reaclib = 876, - k_n_Na22_to_He4_F19_reaclib = 877, - k_p_Na22_to_He4_Ne19_reaclib = 878, - k_He4_Na22_to_n_Al25_reaclib = 879, - k_He4_Na22_to_p_Mg25_reaclib = 880, - k_p_Na23_to_n_Mg23_reaclib = 881, - k_p_Na23_to_He4_Ne20_reaclib = 882, - k_p_Na23_to_C12_C12_reaclib = 883, - k_He4_Na23_to_n_Al26_reaclib = 884, - k_He4_Na23_to_p_Mg26_reaclib = 885, - k_n_Mg23_to_p_Na23_reaclib = 886, - k_n_Mg23_to_He4_Ne20_reaclib = 887, - k_n_Mg23_to_C12_C12_reaclib = 888, - k_He4_Mg23_to_p_Al26_reaclib = 889, - k_n_Mg24_to_He4_Ne21_reaclib = 890, - k_p_Mg24_to_He4_Na21_reaclib = 891, - k_He4_Mg24_to_p_Al27_reaclib = 892, - k_He4_Mg24_to_C12_O16_reaclib = 893, - k_n_Mg25_to_He4_Ne22_reaclib = 894, - k_p_Mg25_to_n_Al25_reaclib = 895, - k_p_Mg25_to_He4_Na22_reaclib = 896, - k_He4_Mg25_to_n_Si28_reaclib = 897, - k_p_Mg26_to_n_Al26_reaclib = 898, - k_p_Mg26_to_He4_Na23_reaclib = 899, - k_He4_Mg26_to_n_Si29_reaclib = 900, - k_n_Al25_to_p_Mg25_reaclib = 901, - k_n_Al25_to_He4_Na22_reaclib = 902, - k_He4_Al25_to_p_Si28_reaclib = 903, - k_n_Al26_to_p_Mg26_reaclib = 904, - k_n_Al26_to_He4_Na23_reaclib = 905, - k_p_Al26_to_He4_Mg23_reaclib = 906, - k_He4_Al26_to_n_P29_reaclib = 907, - k_He4_Al26_to_p_Si29_reaclib = 908, - k_p_Al27_to_He4_Mg24_reaclib = 909, - k_p_Al27_to_C12_O16_reaclib = 910, - k_He4_Al27_to_n_P30_reaclib = 911, - k_He4_Al27_to_p_Si30_reaclib = 912, - k_n_Si28_to_He4_Mg25_reaclib = 913, - k_p_Si28_to_He4_Al25_reaclib = 914, - k_He4_Si28_to_p_P31_reaclib = 915, - k_He4_Si28_to_C12_Ne20_reaclib = 916, - k_He4_Si28_to_O16_O16_reaclib = 917, - k_n_Si29_to_He4_Mg26_reaclib = 918, - k_p_Si29_to_n_P29_reaclib = 919, - k_p_Si29_to_He4_Al26_reaclib = 920, - k_He4_Si29_to_n_S32_reaclib = 921, - k_He4_Si29_to_p_P32_reaclib = 922, - k_p_Si30_to_n_P30_reaclib = 923, - k_p_Si30_to_He4_Al27_reaclib = 924, - k_He4_Si30_to_n_S33_reaclib = 925, - k_He4_Si30_to_p_P33_reaclib = 926, - k_p_Si31_to_n_P31_reaclib = 927, - k_He4_Si31_to_n_S34_reaclib = 928, - k_p_Si32_to_n_P32_reaclib = 929, - k_He4_Si32_to_n_S35_reaclib = 930, - k_n_P29_to_p_Si29_reaclib = 931, - k_n_P29_to_He4_Al26_reaclib = 932, - k_He4_P29_to_p_S32_reaclib = 933, - k_n_P30_to_p_Si30_reaclib = 934, - k_n_P30_to_He4_Al27_reaclib = 935, - k_He4_P30_to_n_Cl33_reaclib = 936, - k_He4_P30_to_p_S33_reaclib = 937, - k_n_P31_to_p_Si31_reaclib = 938, - k_p_P31_to_He4_Si28_reaclib = 939, - k_p_P31_to_C12_Ne20_reaclib = 940, - k_p_P31_to_O16_O16_reaclib = 941, - k_He4_P31_to_n_Cl34_reaclib = 942, - k_He4_P31_to_p_S34_reaclib = 943, - k_n_P32_to_p_Si32_reaclib = 944, - k_p_P32_to_n_S32_reaclib = 945, - k_p_P32_to_He4_Si29_reaclib = 946, - k_He4_P32_to_n_Cl35_reaclib = 947, - k_He4_P32_to_p_S35_reaclib = 948, - k_p_P33_to_n_S33_reaclib = 949, - k_p_P33_to_He4_Si30_reaclib = 950, - k_He4_P33_to_n_Cl36_reaclib = 951, - k_He4_P33_to_p_S36_reaclib = 952, - k_n_S32_to_p_P32_reaclib = 953, - k_n_S32_to_He4_Si29_reaclib = 954, - k_p_S32_to_He4_P29_reaclib = 955, - k_He4_S32_to_p_Cl35_reaclib = 956, - k_n_S33_to_p_P33_reaclib = 957, - k_n_S33_to_He4_Si30_reaclib = 958, - k_p_S33_to_n_Cl33_reaclib = 959, - k_p_S33_to_He4_P30_reaclib = 960, - k_He4_S33_to_n_Ar36_reaclib = 961, - k_He4_S33_to_p_Cl36_reaclib = 962, - k_n_S34_to_He4_Si31_reaclib = 963, - k_p_S34_to_n_Cl34_reaclib = 964, - k_p_S34_to_He4_P31_reaclib = 965, - k_He4_S34_to_n_Ar37_reaclib = 966, - k_He4_S34_to_p_Cl37_reaclib = 967, - k_n_S35_to_He4_Si32_reaclib = 968, - k_p_S35_to_n_Cl35_reaclib = 969, - k_p_S35_to_He4_P32_reaclib = 970, - k_He4_S35_to_n_Ar38_reaclib = 971, - k_p_S36_to_n_Cl36_reaclib = 972, - k_p_S36_to_He4_P33_reaclib = 973, - k_He4_S36_to_n_Ar39_reaclib = 974, - k_n_Cl33_to_p_S33_reaclib = 975, - k_n_Cl33_to_He4_P30_reaclib = 976, - k_He4_Cl33_to_p_Ar36_reaclib = 977, - k_n_Cl34_to_p_S34_reaclib = 978, - k_n_Cl34_to_He4_P31_reaclib = 979, - k_He4_Cl34_to_n_K37_reaclib = 980, - k_He4_Cl34_to_p_Ar37_reaclib = 981, - k_n_Cl35_to_p_S35_reaclib = 982, - k_n_Cl35_to_He4_P32_reaclib = 983, - k_p_Cl35_to_He4_S32_reaclib = 984, - k_He4_Cl35_to_n_K38_reaclib = 985, - k_He4_Cl35_to_p_Ar38_reaclib = 986, - k_n_Cl36_to_p_S36_reaclib = 987, - k_n_Cl36_to_He4_P33_reaclib = 988, - k_p_Cl36_to_n_Ar36_reaclib = 989, - k_p_Cl36_to_He4_S33_reaclib = 990, - k_He4_Cl36_to_n_K39_reaclib = 991, - k_He4_Cl36_to_p_Ar39_reaclib = 992, - k_p_Cl37_to_n_Ar37_reaclib = 993, - k_p_Cl37_to_He4_S34_reaclib = 994, - k_He4_Cl37_to_n_K40_reaclib = 995, - k_He4_Cl37_to_p_Ar40_reaclib = 996, - k_n_Ar36_to_p_Cl36_reaclib = 997, - k_n_Ar36_to_He4_S33_reaclib = 998, - k_p_Ar36_to_He4_Cl33_reaclib = 999, - k_He4_Ar36_to_p_K39_reaclib = 1000, - k_n_Ar37_to_p_Cl37_reaclib = 1001, - k_n_Ar37_to_He4_S34_reaclib = 1002, - k_p_Ar37_to_n_K37_reaclib = 1003, - k_p_Ar37_to_He4_Cl34_reaclib = 1004, - k_He4_Ar37_to_n_Ca40_reaclib = 1005, - k_He4_Ar37_to_p_K40_reaclib = 1006, - k_n_Ar38_to_He4_S35_reaclib = 1007, - k_p_Ar38_to_n_K38_reaclib = 1008, - k_p_Ar38_to_He4_Cl35_reaclib = 1009, - k_He4_Ar38_to_n_Ca41_reaclib = 1010, - k_He4_Ar38_to_p_K41_reaclib = 1011, - k_n_Ar39_to_He4_S36_reaclib = 1012, - k_p_Ar39_to_n_K39_reaclib = 1013, - k_p_Ar39_to_He4_Cl36_reaclib = 1014, - k_He4_Ar39_to_n_Ca42_reaclib = 1015, - k_p_Ar40_to_n_K40_reaclib = 1016, - k_p_Ar40_to_He4_Cl37_reaclib = 1017, - k_He4_Ar40_to_n_Ca43_reaclib = 1018, - k_n_K37_to_p_Ar37_reaclib = 1019, - k_n_K37_to_He4_Cl34_reaclib = 1020, - k_He4_K37_to_p_Ca40_reaclib = 1021, - k_n_K38_to_p_Ar38_reaclib = 1022, - k_n_K38_to_He4_Cl35_reaclib = 1023, - k_He4_K38_to_p_Ca41_reaclib = 1024, - k_n_K39_to_p_Ar39_reaclib = 1025, - k_n_K39_to_He4_Cl36_reaclib = 1026, - k_p_K39_to_He4_Ar36_reaclib = 1027, - k_He4_K39_to_p_Ca42_reaclib = 1028, - k_n_K40_to_p_Ar40_reaclib = 1029, - k_n_K40_to_He4_Cl37_reaclib = 1030, - k_p_K40_to_n_Ca40_reaclib = 1031, - k_p_K40_to_He4_Ar37_reaclib = 1032, - k_He4_K40_to_n_Sc43_reaclib = 1033, - k_He4_K40_to_p_Ca43_reaclib = 1034, - k_p_K41_to_n_Ca41_reaclib = 1035, - k_p_K41_to_He4_Ar38_reaclib = 1036, - k_He4_K41_to_n_Sc44_reaclib = 1037, - k_He4_K41_to_p_Ca44_reaclib = 1038, - k_n_Ca40_to_p_K40_reaclib = 1039, - k_n_Ca40_to_He4_Ar37_reaclib = 1040, - k_p_Ca40_to_He4_K37_reaclib = 1041, - k_He4_Ca40_to_p_Sc43_reaclib = 1042, - k_n_Ca41_to_p_K41_reaclib = 1043, - k_n_Ca41_to_He4_Ar38_reaclib = 1044, - k_p_Ca41_to_He4_K38_reaclib = 1045, - k_He4_Ca41_to_n_Ti44_reaclib = 1046, - k_He4_Ca41_to_p_Sc44_reaclib = 1047, - k_n_Ca42_to_He4_Ar39_reaclib = 1048, - k_p_Ca42_to_He4_K39_reaclib = 1049, - k_He4_Ca42_to_n_Ti45_reaclib = 1050, - k_He4_Ca42_to_p_Sc45_reaclib = 1051, - k_n_Ca43_to_He4_Ar40_reaclib = 1052, - k_p_Ca43_to_n_Sc43_reaclib = 1053, - k_p_Ca43_to_He4_K40_reaclib = 1054, - k_He4_Ca43_to_n_Ti46_reaclib = 1055, - k_He4_Ca43_to_p_Sc46_reaclib = 1056, - k_p_Ca44_to_n_Sc44_reaclib = 1057, - k_p_Ca44_to_He4_K41_reaclib = 1058, - k_He4_Ca44_to_n_Ti47_reaclib = 1059, - k_He4_Ca44_to_p_Sc47_reaclib = 1060, - k_p_Ca45_to_n_Sc45_reaclib = 1061, - k_He4_Ca45_to_n_Ti48_reaclib = 1062, - k_He4_Ca45_to_p_Sc48_reaclib = 1063, - k_p_Ca46_to_n_Sc46_reaclib = 1064, - k_He4_Ca46_to_n_Ti49_reaclib = 1065, - k_He4_Ca46_to_p_Sc49_reaclib = 1066, - k_p_Ca47_to_n_Sc47_reaclib = 1067, - k_He4_Ca47_to_n_Ti50_reaclib = 1068, - k_p_Ca48_to_n_Sc48_reaclib = 1069, - k_He4_Ca48_to_n_Ti51_reaclib = 1070, - k_n_Sc43_to_p_Ca43_reaclib = 1071, - k_n_Sc43_to_He4_K40_reaclib = 1072, - k_p_Sc43_to_He4_Ca40_reaclib = 1073, - k_He4_Sc43_to_n_V46_reaclib = 1074, - k_He4_Sc43_to_p_Ti46_reaclib = 1075, - k_n_Sc44_to_p_Ca44_reaclib = 1076, - k_n_Sc44_to_He4_K41_reaclib = 1077, - k_p_Sc44_to_n_Ti44_reaclib = 1078, - k_p_Sc44_to_He4_Ca41_reaclib = 1079, - k_He4_Sc44_to_n_V47_reaclib = 1080, - k_He4_Sc44_to_p_Ti47_reaclib = 1081, - k_n_Sc45_to_p_Ca45_reaclib = 1082, - k_p_Sc45_to_n_Ti45_reaclib = 1083, - k_p_Sc45_to_He4_Ca42_reaclib = 1084, - k_He4_Sc45_to_n_V48_reaclib = 1085, - k_He4_Sc45_to_p_Ti48_reaclib = 1086, - k_n_Sc46_to_p_Ca46_reaclib = 1087, - k_p_Sc46_to_n_Ti46_reaclib = 1088, - k_p_Sc46_to_He4_Ca43_reaclib = 1089, - k_He4_Sc46_to_n_V49_reaclib = 1090, - k_He4_Sc46_to_p_Ti49_reaclib = 1091, - k_n_Sc47_to_p_Ca47_reaclib = 1092, - k_p_Sc47_to_n_Ti47_reaclib = 1093, - k_p_Sc47_to_He4_Ca44_reaclib = 1094, - k_He4_Sc47_to_n_V50_reaclib = 1095, - k_He4_Sc47_to_p_Ti50_reaclib = 1096, - k_n_Sc48_to_p_Ca48_reaclib = 1097, - k_p_Sc48_to_n_Ti48_reaclib = 1098, - k_p_Sc48_to_He4_Ca45_reaclib = 1099, - k_He4_Sc48_to_n_V51_reaclib = 1100, - k_He4_Sc48_to_p_Ti51_reaclib = 1101, - k_p_Sc49_to_n_Ti49_reaclib = 1102, - k_p_Sc49_to_He4_Ca46_reaclib = 1103, - k_He4_Sc49_to_n_V52_reaclib = 1104, - k_n_Ti44_to_p_Sc44_reaclib = 1105, - k_n_Ti44_to_He4_Ca41_reaclib = 1106, - k_He4_Ti44_to_p_V47_reaclib = 1107, - k_n_Ti45_to_p_Sc45_reaclib = 1108, - k_n_Ti45_to_He4_Ca42_reaclib = 1109, - k_He4_Ti45_to_n_Cr48_reaclib = 1110, - k_He4_Ti45_to_p_V48_reaclib = 1111, - k_n_Ti46_to_p_Sc46_reaclib = 1112, - k_n_Ti46_to_He4_Ca43_reaclib = 1113, - k_p_Ti46_to_n_V46_reaclib = 1114, - k_p_Ti46_to_He4_Sc43_reaclib = 1115, - k_He4_Ti46_to_n_Cr49_reaclib = 1116, - k_He4_Ti46_to_p_V49_reaclib = 1117, - k_n_Ti47_to_p_Sc47_reaclib = 1118, - k_n_Ti47_to_He4_Ca44_reaclib = 1119, - k_p_Ti47_to_n_V47_reaclib = 1120, - k_p_Ti47_to_He4_Sc44_reaclib = 1121, - k_He4_Ti47_to_n_Cr50_reaclib = 1122, - k_He4_Ti47_to_p_V50_reaclib = 1123, - k_n_Ti48_to_p_Sc48_reaclib = 1124, - k_n_Ti48_to_He4_Ca45_reaclib = 1125, - k_p_Ti48_to_n_V48_reaclib = 1126, - k_p_Ti48_to_He4_Sc45_reaclib = 1127, - k_He4_Ti48_to_n_Cr51_reaclib = 1128, - k_He4_Ti48_to_p_V51_reaclib = 1129, - k_n_Ti49_to_p_Sc49_reaclib = 1130, - k_n_Ti49_to_He4_Ca46_reaclib = 1131, - k_p_Ti49_to_n_V49_reaclib = 1132, - k_p_Ti49_to_He4_Sc46_reaclib = 1133, - k_He4_Ti49_to_n_Cr52_reaclib = 1134, - k_He4_Ti49_to_p_V52_reaclib = 1135, - k_n_Ti50_to_He4_Ca47_reaclib = 1136, - k_p_Ti50_to_n_V50_reaclib = 1137, - k_p_Ti50_to_He4_Sc47_reaclib = 1138, - k_He4_Ti50_to_n_Cr53_reaclib = 1139, - k_n_Ti51_to_He4_Ca48_reaclib = 1140, - k_p_Ti51_to_n_V51_reaclib = 1141, - k_p_Ti51_to_He4_Sc48_reaclib = 1142, - k_He4_Ti51_to_n_Cr54_reaclib = 1143, - k_n_V46_to_p_Ti46_reaclib = 1144, - k_n_V46_to_He4_Sc43_reaclib = 1145, - k_He4_V46_to_p_Cr49_reaclib = 1146, - k_n_V47_to_p_Ti47_reaclib = 1147, - k_n_V47_to_He4_Sc44_reaclib = 1148, - k_p_V47_to_He4_Ti44_reaclib = 1149, - k_He4_V47_to_n_Mn50_reaclib = 1150, - k_He4_V47_to_p_Cr50_reaclib = 1151, - k_n_V48_to_p_Ti48_reaclib = 1152, - k_n_V48_to_He4_Sc45_reaclib = 1153, - k_p_V48_to_n_Cr48_reaclib = 1154, - k_p_V48_to_He4_Ti45_reaclib = 1155, - k_He4_V48_to_n_Mn51_reaclib = 1156, - k_He4_V48_to_p_Cr51_reaclib = 1157, - k_n_V49_to_p_Ti49_reaclib = 1158, - k_n_V49_to_He4_Sc46_reaclib = 1159, - k_p_V49_to_n_Cr49_reaclib = 1160, - k_p_V49_to_He4_Ti46_reaclib = 1161, - k_He4_V49_to_n_Mn52_reaclib = 1162, - k_He4_V49_to_p_Cr52_reaclib = 1163, - k_n_V50_to_p_Ti50_reaclib = 1164, - k_n_V50_to_He4_Sc47_reaclib = 1165, - k_p_V50_to_n_Cr50_reaclib = 1166, - k_p_V50_to_He4_Ti47_reaclib = 1167, - k_He4_V50_to_n_Mn53_reaclib = 1168, - k_He4_V50_to_p_Cr53_reaclib = 1169, - k_n_V51_to_p_Ti51_reaclib = 1170, - k_n_V51_to_He4_Sc48_reaclib = 1171, - k_p_V51_to_n_Cr51_reaclib = 1172, - k_p_V51_to_He4_Ti48_reaclib = 1173, - k_He4_V51_to_n_Mn54_reaclib = 1174, - k_He4_V51_to_p_Cr54_reaclib = 1175, - k_n_V52_to_He4_Sc49_reaclib = 1176, - k_p_V52_to_n_Cr52_reaclib = 1177, - k_p_V52_to_He4_Ti49_reaclib = 1178, - k_He4_V52_to_n_Mn55_reaclib = 1179, - k_n_Cr48_to_p_V48_reaclib = 1180, - k_n_Cr48_to_He4_Ti45_reaclib = 1181, - k_He4_Cr48_to_p_Mn51_reaclib = 1182, - k_n_Cr49_to_p_V49_reaclib = 1183, - k_n_Cr49_to_He4_Ti46_reaclib = 1184, - k_p_Cr49_to_He4_V46_reaclib = 1185, - k_He4_Cr49_to_n_Fe52_reaclib = 1186, - k_He4_Cr49_to_p_Mn52_reaclib = 1187, - k_n_Cr50_to_p_V50_reaclib = 1188, - k_n_Cr50_to_He4_Ti47_reaclib = 1189, - k_p_Cr50_to_n_Mn50_reaclib = 1190, - k_p_Cr50_to_He4_V47_reaclib = 1191, - k_He4_Cr50_to_n_Fe53_reaclib = 1192, - k_He4_Cr50_to_p_Mn53_reaclib = 1193, - k_n_Cr51_to_p_V51_reaclib = 1194, - k_n_Cr51_to_He4_Ti48_reaclib = 1195, - k_p_Cr51_to_n_Mn51_reaclib = 1196, - k_p_Cr51_to_He4_V48_reaclib = 1197, - k_He4_Cr51_to_n_Fe54_reaclib = 1198, - k_He4_Cr51_to_p_Mn54_reaclib = 1199, - k_n_Cr52_to_p_V52_reaclib = 1200, - k_n_Cr52_to_He4_Ti49_reaclib = 1201, - k_p_Cr52_to_n_Mn52_reaclib = 1202, - k_p_Cr52_to_He4_V49_reaclib = 1203, - k_He4_Cr52_to_n_Fe55_reaclib = 1204, - k_He4_Cr52_to_p_Mn55_reaclib = 1205, - k_n_Cr53_to_He4_Ti50_reaclib = 1206, - k_p_Cr53_to_n_Mn53_reaclib = 1207, - k_p_Cr53_to_He4_V50_reaclib = 1208, - k_He4_Cr53_to_n_Fe56_reaclib = 1209, - k_n_Cr54_to_He4_Ti51_reaclib = 1210, - k_p_Cr54_to_n_Mn54_reaclib = 1211, - k_p_Cr54_to_He4_V51_reaclib = 1212, - k_He4_Cr54_to_n_Fe57_reaclib = 1213, - k_n_Mn50_to_p_Cr50_reaclib = 1214, - k_n_Mn50_to_He4_V47_reaclib = 1215, - k_He4_Mn50_to_n_Co53_reaclib = 1216, - k_He4_Mn50_to_p_Fe53_reaclib = 1217, - k_n_Mn51_to_p_Cr51_reaclib = 1218, - k_n_Mn51_to_He4_V48_reaclib = 1219, - k_p_Mn51_to_He4_Cr48_reaclib = 1220, - k_He4_Mn51_to_n_Co54_reaclib = 1221, - k_He4_Mn51_to_p_Fe54_reaclib = 1222, - k_n_Mn52_to_p_Cr52_reaclib = 1223, - k_n_Mn52_to_He4_V49_reaclib = 1224, - k_p_Mn52_to_n_Fe52_reaclib = 1225, - k_p_Mn52_to_He4_Cr49_reaclib = 1226, - k_He4_Mn52_to_n_Co55_reaclib = 1227, - k_He4_Mn52_to_p_Fe55_reaclib = 1228, - k_n_Mn53_to_p_Cr53_reaclib = 1229, - k_n_Mn53_to_He4_V50_reaclib = 1230, - k_p_Mn53_to_n_Fe53_reaclib = 1231, - k_p_Mn53_to_He4_Cr50_reaclib = 1232, - k_He4_Mn53_to_n_Co56_reaclib = 1233, - k_He4_Mn53_to_p_Fe56_reaclib = 1234, - k_n_Mn54_to_p_Cr54_reaclib = 1235, - k_n_Mn54_to_He4_V51_reaclib = 1236, - k_p_Mn54_to_n_Fe54_reaclib = 1237, - k_p_Mn54_to_He4_Cr51_reaclib = 1238, - k_He4_Mn54_to_n_Co57_reaclib = 1239, - k_He4_Mn54_to_p_Fe57_reaclib = 1240, - k_n_Mn55_to_He4_V52_reaclib = 1241, - k_p_Mn55_to_n_Fe55_reaclib = 1242, - k_p_Mn55_to_He4_Cr52_reaclib = 1243, - k_He4_Mn55_to_n_Co58_reaclib = 1244, - k_He4_Mn55_to_p_Fe58_reaclib = 1245, - k_n_Fe52_to_p_Mn52_reaclib = 1246, - k_n_Fe52_to_He4_Cr49_reaclib = 1247, - k_He4_Fe52_to_p_Co55_reaclib = 1248, - k_n_Fe53_to_p_Mn53_reaclib = 1249, - k_n_Fe53_to_He4_Cr50_reaclib = 1250, - k_p_Fe53_to_n_Co53_reaclib = 1251, - k_p_Fe53_to_He4_Mn50_reaclib = 1252, - k_He4_Fe53_to_n_Ni56_reaclib = 1253, - k_He4_Fe53_to_p_Co56_reaclib = 1254, - k_n_Fe54_to_p_Mn54_reaclib = 1255, - k_n_Fe54_to_He4_Cr51_reaclib = 1256, - k_p_Fe54_to_n_Co54_reaclib = 1257, - k_p_Fe54_to_He4_Mn51_reaclib = 1258, - k_He4_Fe54_to_n_Ni57_reaclib = 1259, - k_He4_Fe54_to_p_Co57_reaclib = 1260, - k_n_Fe55_to_p_Mn55_reaclib = 1261, - k_n_Fe55_to_He4_Cr52_reaclib = 1262, - k_p_Fe55_to_n_Co55_reaclib = 1263, - k_p_Fe55_to_He4_Mn52_reaclib = 1264, - k_He4_Fe55_to_n_Ni58_reaclib = 1265, - k_He4_Fe55_to_p_Co58_reaclib = 1266, - k_n_Fe56_to_He4_Cr53_reaclib = 1267, - k_p_Fe56_to_n_Co56_reaclib = 1268, - k_p_Fe56_to_He4_Mn53_reaclib = 1269, - k_He4_Fe56_to_n_Ni59_reaclib = 1270, - k_He4_Fe56_to_p_Co59_reaclib = 1271, - k_n_Fe57_to_He4_Cr54_reaclib = 1272, - k_p_Fe57_to_n_Co57_reaclib = 1273, - k_p_Fe57_to_He4_Mn54_reaclib = 1274, - k_He4_Fe57_to_n_Ni60_reaclib = 1275, - k_p_Fe58_to_n_Co58_reaclib = 1276, - k_p_Fe58_to_He4_Mn55_reaclib = 1277, - k_He4_Fe58_to_n_Ni61_reaclib = 1278, - k_n_Co53_to_p_Fe53_reaclib = 1279, - k_n_Co53_to_He4_Mn50_reaclib = 1280, - k_He4_Co53_to_p_Ni56_reaclib = 1281, - k_n_Co54_to_p_Fe54_reaclib = 1282, - k_n_Co54_to_He4_Mn51_reaclib = 1283, - k_He4_Co54_to_n_Cu57_reaclib = 1284, - k_He4_Co54_to_p_Ni57_reaclib = 1285, - k_n_Co55_to_p_Fe55_reaclib = 1286, - k_n_Co55_to_He4_Mn52_reaclib = 1287, - k_p_Co55_to_He4_Fe52_reaclib = 1288, - k_He4_Co55_to_n_Cu58_reaclib = 1289, - k_He4_Co55_to_p_Ni58_reaclib = 1290, - k_n_Co56_to_p_Fe56_reaclib = 1291, - k_n_Co56_to_He4_Mn53_reaclib = 1292, - k_p_Co56_to_n_Ni56_reaclib = 1293, - k_p_Co56_to_He4_Fe53_reaclib = 1294, - k_He4_Co56_to_n_Cu59_reaclib = 1295, - k_He4_Co56_to_p_Ni59_reaclib = 1296, - k_n_Co57_to_p_Fe57_reaclib = 1297, - k_n_Co57_to_He4_Mn54_reaclib = 1298, - k_p_Co57_to_n_Ni57_reaclib = 1299, - k_p_Co57_to_He4_Fe54_reaclib = 1300, - k_He4_Co57_to_n_Cu60_reaclib = 1301, - k_He4_Co57_to_p_Ni60_reaclib = 1302, - k_n_Co58_to_p_Fe58_reaclib = 1303, - k_n_Co58_to_He4_Mn55_reaclib = 1304, - k_p_Co58_to_n_Ni58_reaclib = 1305, - k_p_Co58_to_He4_Fe55_reaclib = 1306, - k_He4_Co58_to_n_Cu61_reaclib = 1307, - k_He4_Co58_to_p_Ni61_reaclib = 1308, - k_p_Co59_to_n_Ni59_reaclib = 1309, - k_p_Co59_to_He4_Fe56_reaclib = 1310, - k_He4_Co59_to_n_Cu62_reaclib = 1311, - k_He4_Co59_to_p_Ni62_reaclib = 1312, - k_n_Ni56_to_p_Co56_reaclib = 1313, - k_n_Ni56_to_He4_Fe53_reaclib = 1314, - k_p_Ni56_to_He4_Co53_reaclib = 1315, - k_He4_Ni56_to_n_Zn59_reaclib = 1316, - k_He4_Ni56_to_p_Cu59_reaclib = 1317, - k_n_Ni57_to_p_Co57_reaclib = 1318, - k_n_Ni57_to_He4_Fe54_reaclib = 1319, - k_p_Ni57_to_n_Cu57_reaclib = 1320, - k_p_Ni57_to_He4_Co54_reaclib = 1321, - k_He4_Ni57_to_n_Zn60_reaclib = 1322, - k_He4_Ni57_to_p_Cu60_reaclib = 1323, - k_n_Ni58_to_p_Co58_reaclib = 1324, - k_n_Ni58_to_He4_Fe55_reaclib = 1325, - k_p_Ni58_to_n_Cu58_reaclib = 1326, - k_p_Ni58_to_He4_Co55_reaclib = 1327, - k_He4_Ni58_to_n_Zn61_reaclib = 1328, - k_He4_Ni58_to_p_Cu61_reaclib = 1329, - k_n_Ni59_to_p_Co59_reaclib = 1330, - k_n_Ni59_to_He4_Fe56_reaclib = 1331, - k_p_Ni59_to_n_Cu59_reaclib = 1332, - k_p_Ni59_to_He4_Co56_reaclib = 1333, - k_He4_Ni59_to_n_Zn62_reaclib = 1334, - k_He4_Ni59_to_p_Cu62_reaclib = 1335, - k_n_Ni60_to_He4_Fe57_reaclib = 1336, - k_p_Ni60_to_n_Cu60_reaclib = 1337, - k_p_Ni60_to_He4_Co57_reaclib = 1338, - k_He4_Ni60_to_n_Zn63_reaclib = 1339, - k_He4_Ni60_to_p_Cu63_reaclib = 1340, - k_n_Ni61_to_He4_Fe58_reaclib = 1341, - k_p_Ni61_to_n_Cu61_reaclib = 1342, - k_p_Ni61_to_He4_Co58_reaclib = 1343, - k_He4_Ni61_to_n_Zn64_reaclib = 1344, - k_He4_Ni61_to_p_Cu64_reaclib = 1345, - k_p_Ni62_to_n_Cu62_reaclib = 1346, - k_p_Ni62_to_He4_Co59_reaclib = 1347, - k_He4_Ni62_to_n_Zn65_reaclib = 1348, - k_He4_Ni62_to_p_Cu65_reaclib = 1349, - k_p_Ni63_to_n_Cu63_reaclib = 1350, - k_He4_Ni63_to_n_Zn66_reaclib = 1351, - k_p_Ni64_to_n_Cu64_reaclib = 1352, - k_n_Cu57_to_p_Ni57_reaclib = 1353, - k_n_Cu57_to_He4_Co54_reaclib = 1354, - k_He4_Cu57_to_p_Zn60_reaclib = 1355, - k_n_Cu58_to_p_Ni58_reaclib = 1356, - k_n_Cu58_to_He4_Co55_reaclib = 1357, - k_He4_Cu58_to_p_Zn61_reaclib = 1358, - k_n_Cu59_to_p_Ni59_reaclib = 1359, - k_n_Cu59_to_He4_Co56_reaclib = 1360, - k_p_Cu59_to_n_Zn59_reaclib = 1361, - k_p_Cu59_to_He4_Ni56_reaclib = 1362, - k_He4_Cu59_to_n_Ga62_reaclib = 1363, - k_He4_Cu59_to_p_Zn62_reaclib = 1364, - k_n_Cu60_to_p_Ni60_reaclib = 1365, - k_n_Cu60_to_He4_Co57_reaclib = 1366, - k_p_Cu60_to_n_Zn60_reaclib = 1367, - k_p_Cu60_to_He4_Ni57_reaclib = 1368, - k_He4_Cu60_to_n_Ga63_reaclib = 1369, - k_He4_Cu60_to_p_Zn63_reaclib = 1370, - k_n_Cu61_to_p_Ni61_reaclib = 1371, - k_n_Cu61_to_He4_Co58_reaclib = 1372, - k_p_Cu61_to_n_Zn61_reaclib = 1373, - k_p_Cu61_to_He4_Ni58_reaclib = 1374, - k_He4_Cu61_to_n_Ga64_reaclib = 1375, - k_He4_Cu61_to_p_Zn64_reaclib = 1376, - k_n_Cu62_to_p_Ni62_reaclib = 1377, - k_n_Cu62_to_He4_Co59_reaclib = 1378, - k_p_Cu62_to_n_Zn62_reaclib = 1379, - k_p_Cu62_to_He4_Ni59_reaclib = 1380, - k_He4_Cu62_to_p_Zn65_reaclib = 1381, - k_n_Cu63_to_p_Ni63_reaclib = 1382, - k_p_Cu63_to_n_Zn63_reaclib = 1383, - k_p_Cu63_to_He4_Ni60_reaclib = 1384, - k_He4_Cu63_to_p_Zn66_reaclib = 1385, - k_n_Cu64_to_p_Ni64_reaclib = 1386, - k_p_Cu64_to_n_Zn64_reaclib = 1387, - k_p_Cu64_to_He4_Ni61_reaclib = 1388, - k_p_Cu65_to_n_Zn65_reaclib = 1389, - k_p_Cu65_to_He4_Ni62_reaclib = 1390, - k_n_Zn59_to_p_Cu59_reaclib = 1391, - k_n_Zn59_to_He4_Ni56_reaclib = 1392, - k_He4_Zn59_to_p_Ga62_reaclib = 1393, - k_n_Zn60_to_p_Cu60_reaclib = 1394, - k_n_Zn60_to_He4_Ni57_reaclib = 1395, - k_p_Zn60_to_He4_Cu57_reaclib = 1396, - k_He4_Zn60_to_n_Ge63_reaclib = 1397, - k_He4_Zn60_to_p_Ga63_reaclib = 1398, - k_n_Zn61_to_p_Cu61_reaclib = 1399, - k_n_Zn61_to_He4_Ni58_reaclib = 1400, - k_p_Zn61_to_He4_Cu58_reaclib = 1401, - k_He4_Zn61_to_n_Ge64_reaclib = 1402, - k_He4_Zn61_to_p_Ga64_reaclib = 1403, - k_n_Zn62_to_p_Cu62_reaclib = 1404, - k_n_Zn62_to_He4_Ni59_reaclib = 1405, - k_p_Zn62_to_n_Ga62_reaclib = 1406, - k_p_Zn62_to_He4_Cu59_reaclib = 1407, - k_n_Zn63_to_p_Cu63_reaclib = 1408, - k_n_Zn63_to_He4_Ni60_reaclib = 1409, - k_p_Zn63_to_n_Ga63_reaclib = 1410, - k_p_Zn63_to_He4_Cu60_reaclib = 1411, - k_n_Zn64_to_p_Cu64_reaclib = 1412, - k_n_Zn64_to_He4_Ni61_reaclib = 1413, - k_p_Zn64_to_n_Ga64_reaclib = 1414, - k_p_Zn64_to_He4_Cu61_reaclib = 1415, - k_n_Zn65_to_p_Cu65_reaclib = 1416, - k_n_Zn65_to_He4_Ni62_reaclib = 1417, - k_p_Zn65_to_He4_Cu62_reaclib = 1418, - k_n_Zn66_to_He4_Ni63_reaclib = 1419, - k_p_Zn66_to_He4_Cu63_reaclib = 1420, - k_n_Ga62_to_p_Zn62_reaclib = 1421, - k_n_Ga62_to_He4_Cu59_reaclib = 1422, - k_p_Ga62_to_He4_Zn59_reaclib = 1423, - k_n_Ga63_to_p_Zn63_reaclib = 1424, - k_n_Ga63_to_He4_Cu60_reaclib = 1425, - k_p_Ga63_to_n_Ge63_reaclib = 1426, - k_p_Ga63_to_He4_Zn60_reaclib = 1427, - k_n_Ga64_to_p_Zn64_reaclib = 1428, - k_n_Ga64_to_He4_Cu61_reaclib = 1429, - k_p_Ga64_to_n_Ge64_reaclib = 1430, - k_p_Ga64_to_He4_Zn61_reaclib = 1431, - k_n_Ge63_to_p_Ga63_reaclib = 1432, - k_n_Ge63_to_He4_Zn60_reaclib = 1433, - k_n_Ge64_to_p_Ga64_reaclib = 1434, - k_n_Ge64_to_He4_Zn61_reaclib = 1435, - k_p_d_to_n_p_p_reaclib = 1436, + k_O17_n_to_He4_C14_reaclib = 831, + k_O17_p_to_n_F17_reaclib = 832, + k_O17_p_to_He4_N14_reaclib = 833, + k_O17_He4_to_n_Ne20_reaclib = 834, + k_O18_p_to_n_F18_reaclib = 835, + k_O18_p_to_He4_N15_reaclib = 836, + k_O18_He4_to_n_Ne21_reaclib = 837, + k_F17_n_to_p_O17_reaclib = 838, + k_F17_n_to_He4_N14_reaclib = 839, + k_F17_p_to_He4_O14_reaclib = 840, + k_F17_He4_to_p_Ne20_reaclib = 841, + k_F18_n_to_p_O18_reaclib = 842, + k_F18_n_to_He4_N15_reaclib = 843, + k_F18_p_to_n_Ne18_reaclib = 844, + k_F18_p_to_He4_O15_reaclib = 845, + k_F18_He4_to_n_Na21_reaclib = 846, + k_F18_He4_to_p_Ne21_reaclib = 847, + k_F19_p_to_n_Ne19_reaclib = 848, + k_F19_p_to_He4_O16_reaclib = 849, + k_F19_He4_to_n_Na22_reaclib = 850, + k_F19_He4_to_p_Ne22_reaclib = 851, + k_Ne18_n_to_p_F18_reaclib = 852, + k_Ne18_n_to_He4_O15_reaclib = 853, + k_Ne18_He4_to_p_Na21_reaclib = 854, + k_Ne19_n_to_p_F19_reaclib = 855, + k_Ne19_n_to_He4_O16_reaclib = 856, + k_Ne19_He4_to_p_Na22_reaclib = 857, + k_Ne20_n_to_He4_O17_reaclib = 858, + k_Ne20_p_to_He4_F17_reaclib = 859, + k_Ne20_He4_to_n_Mg23_reaclib = 860, + k_Ne20_He4_to_p_Na23_reaclib = 861, + k_Ne20_He4_to_C12_C12_reaclib = 862, + k_Ne20_C12_to_p_P31_reaclib = 863, + k_Ne20_C12_to_He4_Si28_reaclib = 864, + k_Ne21_n_to_He4_O18_reaclib = 865, + k_Ne21_p_to_n_Na21_reaclib = 866, + k_Ne21_p_to_He4_F18_reaclib = 867, + k_Ne21_He4_to_n_Mg24_reaclib = 868, + k_Ne22_p_to_n_Na22_reaclib = 869, + k_Ne22_p_to_He4_F19_reaclib = 870, + k_Ne22_He4_to_n_Mg25_reaclib = 871, + k_Na21_n_to_p_Ne21_reaclib = 872, + k_Na21_n_to_He4_F18_reaclib = 873, + k_Na21_p_to_He4_Ne18_reaclib = 874, + k_Na21_He4_to_p_Mg24_reaclib = 875, + k_Na22_n_to_p_Ne22_reaclib = 876, + k_Na22_n_to_He4_F19_reaclib = 877, + k_Na22_p_to_He4_Ne19_reaclib = 878, + k_Na22_He4_to_n_Al25_reaclib = 879, + k_Na22_He4_to_p_Mg25_reaclib = 880, + k_Na23_p_to_n_Mg23_reaclib = 881, + k_Na23_p_to_He4_Ne20_reaclib = 882, + k_Na23_p_to_C12_C12_reaclib = 883, + k_Na23_He4_to_n_Al26_reaclib = 884, + k_Na23_He4_to_p_Mg26_reaclib = 885, + k_Mg23_n_to_p_Na23_reaclib = 886, + k_Mg23_n_to_He4_Ne20_reaclib = 887, + k_Mg23_n_to_C12_C12_reaclib = 888, + k_Mg23_He4_to_p_Al26_reaclib = 889, + k_Mg24_n_to_He4_Ne21_reaclib = 890, + k_Mg24_p_to_He4_Na21_reaclib = 891, + k_Mg24_He4_to_p_Al27_reaclib = 892, + k_Mg24_He4_to_C12_O16_reaclib = 893, + k_Mg25_n_to_He4_Ne22_reaclib = 894, + k_Mg25_p_to_n_Al25_reaclib = 895, + k_Mg25_p_to_He4_Na22_reaclib = 896, + k_Mg25_He4_to_n_Si28_reaclib = 897, + k_Mg26_p_to_n_Al26_reaclib = 898, + k_Mg26_p_to_He4_Na23_reaclib = 899, + k_Mg26_He4_to_n_Si29_reaclib = 900, + k_Al25_n_to_p_Mg25_reaclib = 901, + k_Al25_n_to_He4_Na22_reaclib = 902, + k_Al25_He4_to_p_Si28_reaclib = 903, + k_Al26_n_to_p_Mg26_reaclib = 904, + k_Al26_n_to_He4_Na23_reaclib = 905, + k_Al26_p_to_He4_Mg23_reaclib = 906, + k_Al26_He4_to_n_P29_reaclib = 907, + k_Al26_He4_to_p_Si29_reaclib = 908, + k_Al27_p_to_He4_Mg24_reaclib = 909, + k_Al27_p_to_C12_O16_reaclib = 910, + k_Al27_He4_to_n_P30_reaclib = 911, + k_Al27_He4_to_p_Si30_reaclib = 912, + k_Si28_n_to_He4_Mg25_reaclib = 913, + k_Si28_p_to_He4_Al25_reaclib = 914, + k_Si28_He4_to_p_P31_reaclib = 915, + k_Si28_He4_to_C12_Ne20_reaclib = 916, + k_Si28_He4_to_O16_O16_reaclib = 917, + k_Si29_n_to_He4_Mg26_reaclib = 918, + k_Si29_p_to_n_P29_reaclib = 919, + k_Si29_p_to_He4_Al26_reaclib = 920, + k_Si29_He4_to_n_S32_reaclib = 921, + k_Si29_He4_to_p_P32_reaclib = 922, + k_Si30_p_to_n_P30_reaclib = 923, + k_Si30_p_to_He4_Al27_reaclib = 924, + k_Si30_He4_to_n_S33_reaclib = 925, + k_Si30_He4_to_p_P33_reaclib = 926, + k_Si31_p_to_n_P31_reaclib = 927, + k_Si31_He4_to_n_S34_reaclib = 928, + k_Si32_p_to_n_P32_reaclib = 929, + k_Si32_He4_to_n_S35_reaclib = 930, + k_P29_n_to_p_Si29_reaclib = 931, + k_P29_n_to_He4_Al26_reaclib = 932, + k_P29_He4_to_p_S32_reaclib = 933, + k_P30_n_to_p_Si30_reaclib = 934, + k_P30_n_to_He4_Al27_reaclib = 935, + k_P30_He4_to_n_Cl33_reaclib = 936, + k_P30_He4_to_p_S33_reaclib = 937, + k_P31_n_to_p_Si31_reaclib = 938, + k_P31_p_to_He4_Si28_reaclib = 939, + k_P31_p_to_C12_Ne20_reaclib = 940, + k_P31_p_to_O16_O16_reaclib = 941, + k_P31_He4_to_n_Cl34_reaclib = 942, + k_P31_He4_to_p_S34_reaclib = 943, + k_P32_n_to_p_Si32_reaclib = 944, + k_P32_p_to_n_S32_reaclib = 945, + k_P32_p_to_He4_Si29_reaclib = 946, + k_P32_He4_to_n_Cl35_reaclib = 947, + k_P32_He4_to_p_S35_reaclib = 948, + k_P33_p_to_n_S33_reaclib = 949, + k_P33_p_to_He4_Si30_reaclib = 950, + k_P33_He4_to_n_Cl36_reaclib = 951, + k_P33_He4_to_p_S36_reaclib = 952, + k_S32_n_to_p_P32_reaclib = 953, + k_S32_n_to_He4_Si29_reaclib = 954, + k_S32_p_to_He4_P29_reaclib = 955, + k_S32_He4_to_p_Cl35_reaclib = 956, + k_S33_n_to_p_P33_reaclib = 957, + k_S33_n_to_He4_Si30_reaclib = 958, + k_S33_p_to_n_Cl33_reaclib = 959, + k_S33_p_to_He4_P30_reaclib = 960, + k_S33_He4_to_n_Ar36_reaclib = 961, + k_S33_He4_to_p_Cl36_reaclib = 962, + k_S34_n_to_He4_Si31_reaclib = 963, + k_S34_p_to_n_Cl34_reaclib = 964, + k_S34_p_to_He4_P31_reaclib = 965, + k_S34_He4_to_n_Ar37_reaclib = 966, + k_S34_He4_to_p_Cl37_reaclib = 967, + k_S35_n_to_He4_Si32_reaclib = 968, + k_S35_p_to_n_Cl35_reaclib = 969, + k_S35_p_to_He4_P32_reaclib = 970, + k_S35_He4_to_n_Ar38_reaclib = 971, + k_S36_p_to_n_Cl36_reaclib = 972, + k_S36_p_to_He4_P33_reaclib = 973, + k_S36_He4_to_n_Ar39_reaclib = 974, + k_Cl33_n_to_p_S33_reaclib = 975, + k_Cl33_n_to_He4_P30_reaclib = 976, + k_Cl33_He4_to_p_Ar36_reaclib = 977, + k_Cl34_n_to_p_S34_reaclib = 978, + k_Cl34_n_to_He4_P31_reaclib = 979, + k_Cl34_He4_to_n_K37_reaclib = 980, + k_Cl34_He4_to_p_Ar37_reaclib = 981, + k_Cl35_n_to_p_S35_reaclib = 982, + k_Cl35_n_to_He4_P32_reaclib = 983, + k_Cl35_p_to_He4_S32_reaclib = 984, + k_Cl35_He4_to_n_K38_reaclib = 985, + k_Cl35_He4_to_p_Ar38_reaclib = 986, + k_Cl36_n_to_p_S36_reaclib = 987, + k_Cl36_n_to_He4_P33_reaclib = 988, + k_Cl36_p_to_n_Ar36_reaclib = 989, + k_Cl36_p_to_He4_S33_reaclib = 990, + k_Cl36_He4_to_n_K39_reaclib = 991, + k_Cl36_He4_to_p_Ar39_reaclib = 992, + k_Cl37_p_to_n_Ar37_reaclib = 993, + k_Cl37_p_to_He4_S34_reaclib = 994, + k_Cl37_He4_to_n_K40_reaclib = 995, + k_Cl37_He4_to_p_Ar40_reaclib = 996, + k_Ar36_n_to_p_Cl36_reaclib = 997, + k_Ar36_n_to_He4_S33_reaclib = 998, + k_Ar36_p_to_He4_Cl33_reaclib = 999, + k_Ar36_He4_to_p_K39_reaclib = 1000, + k_Ar37_n_to_p_Cl37_reaclib = 1001, + k_Ar37_n_to_He4_S34_reaclib = 1002, + k_Ar37_p_to_n_K37_reaclib = 1003, + k_Ar37_p_to_He4_Cl34_reaclib = 1004, + k_Ar37_He4_to_n_Ca40_reaclib = 1005, + k_Ar37_He4_to_p_K40_reaclib = 1006, + k_Ar38_n_to_He4_S35_reaclib = 1007, + k_Ar38_p_to_n_K38_reaclib = 1008, + k_Ar38_p_to_He4_Cl35_reaclib = 1009, + k_Ar38_He4_to_n_Ca41_reaclib = 1010, + k_Ar38_He4_to_p_K41_reaclib = 1011, + k_Ar39_n_to_He4_S36_reaclib = 1012, + k_Ar39_p_to_n_K39_reaclib = 1013, + k_Ar39_p_to_He4_Cl36_reaclib = 1014, + k_Ar39_He4_to_n_Ca42_reaclib = 1015, + k_Ar40_p_to_n_K40_reaclib = 1016, + k_Ar40_p_to_He4_Cl37_reaclib = 1017, + k_Ar40_He4_to_n_Ca43_reaclib = 1018, + k_K37_n_to_p_Ar37_reaclib = 1019, + k_K37_n_to_He4_Cl34_reaclib = 1020, + k_K37_He4_to_p_Ca40_reaclib = 1021, + k_K38_n_to_p_Ar38_reaclib = 1022, + k_K38_n_to_He4_Cl35_reaclib = 1023, + k_K38_He4_to_p_Ca41_reaclib = 1024, + k_K39_n_to_p_Ar39_reaclib = 1025, + k_K39_n_to_He4_Cl36_reaclib = 1026, + k_K39_p_to_He4_Ar36_reaclib = 1027, + k_K39_He4_to_p_Ca42_reaclib = 1028, + k_K40_n_to_p_Ar40_reaclib = 1029, + k_K40_n_to_He4_Cl37_reaclib = 1030, + k_K40_p_to_n_Ca40_reaclib = 1031, + k_K40_p_to_He4_Ar37_reaclib = 1032, + k_K40_He4_to_n_Sc43_reaclib = 1033, + k_K40_He4_to_p_Ca43_reaclib = 1034, + k_K41_p_to_n_Ca41_reaclib = 1035, + k_K41_p_to_He4_Ar38_reaclib = 1036, + k_K41_He4_to_n_Sc44_reaclib = 1037, + k_K41_He4_to_p_Ca44_reaclib = 1038, + k_Ca40_n_to_p_K40_reaclib = 1039, + k_Ca40_n_to_He4_Ar37_reaclib = 1040, + k_Ca40_p_to_He4_K37_reaclib = 1041, + k_Ca40_He4_to_p_Sc43_reaclib = 1042, + k_Ca41_n_to_p_K41_reaclib = 1043, + k_Ca41_n_to_He4_Ar38_reaclib = 1044, + k_Ca41_p_to_He4_K38_reaclib = 1045, + k_Ca41_He4_to_n_Ti44_reaclib = 1046, + k_Ca41_He4_to_p_Sc44_reaclib = 1047, + k_Ca42_n_to_He4_Ar39_reaclib = 1048, + k_Ca42_p_to_He4_K39_reaclib = 1049, + k_Ca42_He4_to_n_Ti45_reaclib = 1050, + k_Ca42_He4_to_p_Sc45_reaclib = 1051, + k_Ca43_n_to_He4_Ar40_reaclib = 1052, + k_Ca43_p_to_n_Sc43_reaclib = 1053, + k_Ca43_p_to_He4_K40_reaclib = 1054, + k_Ca43_He4_to_n_Ti46_reaclib = 1055, + k_Ca43_He4_to_p_Sc46_reaclib = 1056, + k_Ca44_p_to_n_Sc44_reaclib = 1057, + k_Ca44_p_to_He4_K41_reaclib = 1058, + k_Ca44_He4_to_n_Ti47_reaclib = 1059, + k_Ca44_He4_to_p_Sc47_reaclib = 1060, + k_Ca45_p_to_n_Sc45_reaclib = 1061, + k_Ca45_He4_to_n_Ti48_reaclib = 1062, + k_Ca45_He4_to_p_Sc48_reaclib = 1063, + k_Ca46_p_to_n_Sc46_reaclib = 1064, + k_Ca46_He4_to_n_Ti49_reaclib = 1065, + k_Ca46_He4_to_p_Sc49_reaclib = 1066, + k_Ca47_p_to_n_Sc47_reaclib = 1067, + k_Ca47_He4_to_n_Ti50_reaclib = 1068, + k_Ca48_p_to_n_Sc48_reaclib = 1069, + k_Ca48_He4_to_n_Ti51_reaclib = 1070, + k_Sc43_n_to_p_Ca43_reaclib = 1071, + k_Sc43_n_to_He4_K40_reaclib = 1072, + k_Sc43_p_to_He4_Ca40_reaclib = 1073, + k_Sc43_He4_to_n_V46_reaclib = 1074, + k_Sc43_He4_to_p_Ti46_reaclib = 1075, + k_Sc44_n_to_p_Ca44_reaclib = 1076, + k_Sc44_n_to_He4_K41_reaclib = 1077, + k_Sc44_p_to_n_Ti44_reaclib = 1078, + k_Sc44_p_to_He4_Ca41_reaclib = 1079, + k_Sc44_He4_to_n_V47_reaclib = 1080, + k_Sc44_He4_to_p_Ti47_reaclib = 1081, + k_Sc45_n_to_p_Ca45_reaclib = 1082, + k_Sc45_p_to_n_Ti45_reaclib = 1083, + k_Sc45_p_to_He4_Ca42_reaclib = 1084, + k_Sc45_He4_to_n_V48_reaclib = 1085, + k_Sc45_He4_to_p_Ti48_reaclib = 1086, + k_Sc46_n_to_p_Ca46_reaclib = 1087, + k_Sc46_p_to_n_Ti46_reaclib = 1088, + k_Sc46_p_to_He4_Ca43_reaclib = 1089, + k_Sc46_He4_to_n_V49_reaclib = 1090, + k_Sc46_He4_to_p_Ti49_reaclib = 1091, + k_Sc47_n_to_p_Ca47_reaclib = 1092, + k_Sc47_p_to_n_Ti47_reaclib = 1093, + k_Sc47_p_to_He4_Ca44_reaclib = 1094, + k_Sc47_He4_to_n_V50_reaclib = 1095, + k_Sc47_He4_to_p_Ti50_reaclib = 1096, + k_Sc48_n_to_p_Ca48_reaclib = 1097, + k_Sc48_p_to_n_Ti48_reaclib = 1098, + k_Sc48_p_to_He4_Ca45_reaclib = 1099, + k_Sc48_He4_to_n_V51_reaclib = 1100, + k_Sc48_He4_to_p_Ti51_reaclib = 1101, + k_Sc49_p_to_n_Ti49_reaclib = 1102, + k_Sc49_p_to_He4_Ca46_reaclib = 1103, + k_Sc49_He4_to_n_V52_reaclib = 1104, + k_Ti44_n_to_p_Sc44_reaclib = 1105, + k_Ti44_n_to_He4_Ca41_reaclib = 1106, + k_Ti44_He4_to_p_V47_reaclib = 1107, + k_Ti45_n_to_p_Sc45_reaclib = 1108, + k_Ti45_n_to_He4_Ca42_reaclib = 1109, + k_Ti45_He4_to_n_Cr48_reaclib = 1110, + k_Ti45_He4_to_p_V48_reaclib = 1111, + k_Ti46_n_to_p_Sc46_reaclib = 1112, + k_Ti46_n_to_He4_Ca43_reaclib = 1113, + k_Ti46_p_to_n_V46_reaclib = 1114, + k_Ti46_p_to_He4_Sc43_reaclib = 1115, + k_Ti46_He4_to_n_Cr49_reaclib = 1116, + k_Ti46_He4_to_p_V49_reaclib = 1117, + k_Ti47_n_to_p_Sc47_reaclib = 1118, + k_Ti47_n_to_He4_Ca44_reaclib = 1119, + k_Ti47_p_to_n_V47_reaclib = 1120, + k_Ti47_p_to_He4_Sc44_reaclib = 1121, + k_Ti47_He4_to_n_Cr50_reaclib = 1122, + k_Ti47_He4_to_p_V50_reaclib = 1123, + k_Ti48_n_to_p_Sc48_reaclib = 1124, + k_Ti48_n_to_He4_Ca45_reaclib = 1125, + k_Ti48_p_to_n_V48_reaclib = 1126, + k_Ti48_p_to_He4_Sc45_reaclib = 1127, + k_Ti48_He4_to_n_Cr51_reaclib = 1128, + k_Ti48_He4_to_p_V51_reaclib = 1129, + k_Ti49_n_to_p_Sc49_reaclib = 1130, + k_Ti49_n_to_He4_Ca46_reaclib = 1131, + k_Ti49_p_to_n_V49_reaclib = 1132, + k_Ti49_p_to_He4_Sc46_reaclib = 1133, + k_Ti49_He4_to_n_Cr52_reaclib = 1134, + k_Ti49_He4_to_p_V52_reaclib = 1135, + k_Ti50_n_to_He4_Ca47_reaclib = 1136, + k_Ti50_p_to_n_V50_reaclib = 1137, + k_Ti50_p_to_He4_Sc47_reaclib = 1138, + k_Ti50_He4_to_n_Cr53_reaclib = 1139, + k_Ti51_n_to_He4_Ca48_reaclib = 1140, + k_Ti51_p_to_n_V51_reaclib = 1141, + k_Ti51_p_to_He4_Sc48_reaclib = 1142, + k_Ti51_He4_to_n_Cr54_reaclib = 1143, + k_V46_n_to_p_Ti46_reaclib = 1144, + k_V46_n_to_He4_Sc43_reaclib = 1145, + k_V46_He4_to_p_Cr49_reaclib = 1146, + k_V47_n_to_p_Ti47_reaclib = 1147, + k_V47_n_to_He4_Sc44_reaclib = 1148, + k_V47_p_to_He4_Ti44_reaclib = 1149, + k_V47_He4_to_n_Mn50_reaclib = 1150, + k_V47_He4_to_p_Cr50_reaclib = 1151, + k_V48_n_to_p_Ti48_reaclib = 1152, + k_V48_n_to_He4_Sc45_reaclib = 1153, + k_V48_p_to_n_Cr48_reaclib = 1154, + k_V48_p_to_He4_Ti45_reaclib = 1155, + k_V48_He4_to_n_Mn51_reaclib = 1156, + k_V48_He4_to_p_Cr51_reaclib = 1157, + k_V49_n_to_p_Ti49_reaclib = 1158, + k_V49_n_to_He4_Sc46_reaclib = 1159, + k_V49_p_to_n_Cr49_reaclib = 1160, + k_V49_p_to_He4_Ti46_reaclib = 1161, + k_V49_He4_to_n_Mn52_reaclib = 1162, + k_V49_He4_to_p_Cr52_reaclib = 1163, + k_V50_n_to_p_Ti50_reaclib = 1164, + k_V50_n_to_He4_Sc47_reaclib = 1165, + k_V50_p_to_n_Cr50_reaclib = 1166, + k_V50_p_to_He4_Ti47_reaclib = 1167, + k_V50_He4_to_n_Mn53_reaclib = 1168, + k_V50_He4_to_p_Cr53_reaclib = 1169, + k_V51_n_to_p_Ti51_reaclib = 1170, + k_V51_n_to_He4_Sc48_reaclib = 1171, + k_V51_p_to_n_Cr51_reaclib = 1172, + k_V51_p_to_He4_Ti48_reaclib = 1173, + k_V51_He4_to_n_Mn54_reaclib = 1174, + k_V51_He4_to_p_Cr54_reaclib = 1175, + k_V52_n_to_He4_Sc49_reaclib = 1176, + k_V52_p_to_n_Cr52_reaclib = 1177, + k_V52_p_to_He4_Ti49_reaclib = 1178, + k_V52_He4_to_n_Mn55_reaclib = 1179, + k_Cr48_n_to_p_V48_reaclib = 1180, + k_Cr48_n_to_He4_Ti45_reaclib = 1181, + k_Cr48_He4_to_p_Mn51_reaclib = 1182, + k_Cr49_n_to_p_V49_reaclib = 1183, + k_Cr49_n_to_He4_Ti46_reaclib = 1184, + k_Cr49_p_to_He4_V46_reaclib = 1185, + k_Cr49_He4_to_n_Fe52_reaclib = 1186, + k_Cr49_He4_to_p_Mn52_reaclib = 1187, + k_Cr50_n_to_p_V50_reaclib = 1188, + k_Cr50_n_to_He4_Ti47_reaclib = 1189, + k_Cr50_p_to_n_Mn50_reaclib = 1190, + k_Cr50_p_to_He4_V47_reaclib = 1191, + k_Cr50_He4_to_n_Fe53_reaclib = 1192, + k_Cr50_He4_to_p_Mn53_reaclib = 1193, + k_Cr51_n_to_p_V51_reaclib = 1194, + k_Cr51_n_to_He4_Ti48_reaclib = 1195, + k_Cr51_p_to_n_Mn51_reaclib = 1196, + k_Cr51_p_to_He4_V48_reaclib = 1197, + k_Cr51_He4_to_n_Fe54_reaclib = 1198, + k_Cr51_He4_to_p_Mn54_reaclib = 1199, + k_Cr52_n_to_p_V52_reaclib = 1200, + k_Cr52_n_to_He4_Ti49_reaclib = 1201, + k_Cr52_p_to_n_Mn52_reaclib = 1202, + k_Cr52_p_to_He4_V49_reaclib = 1203, + k_Cr52_He4_to_n_Fe55_reaclib = 1204, + k_Cr52_He4_to_p_Mn55_reaclib = 1205, + k_Cr53_n_to_He4_Ti50_reaclib = 1206, + k_Cr53_p_to_n_Mn53_reaclib = 1207, + k_Cr53_p_to_He4_V50_reaclib = 1208, + k_Cr53_He4_to_n_Fe56_reaclib = 1209, + k_Cr54_n_to_He4_Ti51_reaclib = 1210, + k_Cr54_p_to_n_Mn54_reaclib = 1211, + k_Cr54_p_to_He4_V51_reaclib = 1212, + k_Cr54_He4_to_n_Fe57_reaclib = 1213, + k_Mn50_n_to_p_Cr50_reaclib = 1214, + k_Mn50_n_to_He4_V47_reaclib = 1215, + k_Mn50_He4_to_n_Co53_reaclib = 1216, + k_Mn50_He4_to_p_Fe53_reaclib = 1217, + k_Mn51_n_to_p_Cr51_reaclib = 1218, + k_Mn51_n_to_He4_V48_reaclib = 1219, + k_Mn51_p_to_He4_Cr48_reaclib = 1220, + k_Mn51_He4_to_n_Co54_reaclib = 1221, + k_Mn51_He4_to_p_Fe54_reaclib = 1222, + k_Mn52_n_to_p_Cr52_reaclib = 1223, + k_Mn52_n_to_He4_V49_reaclib = 1224, + k_Mn52_p_to_n_Fe52_reaclib = 1225, + k_Mn52_p_to_He4_Cr49_reaclib = 1226, + k_Mn52_He4_to_n_Co55_reaclib = 1227, + k_Mn52_He4_to_p_Fe55_reaclib = 1228, + k_Mn53_n_to_p_Cr53_reaclib = 1229, + k_Mn53_n_to_He4_V50_reaclib = 1230, + k_Mn53_p_to_n_Fe53_reaclib = 1231, + k_Mn53_p_to_He4_Cr50_reaclib = 1232, + k_Mn53_He4_to_n_Co56_reaclib = 1233, + k_Mn53_He4_to_p_Fe56_reaclib = 1234, + k_Mn54_n_to_p_Cr54_reaclib = 1235, + k_Mn54_n_to_He4_V51_reaclib = 1236, + k_Mn54_p_to_n_Fe54_reaclib = 1237, + k_Mn54_p_to_He4_Cr51_reaclib = 1238, + k_Mn54_He4_to_n_Co57_reaclib = 1239, + k_Mn54_He4_to_p_Fe57_reaclib = 1240, + k_Mn55_n_to_He4_V52_reaclib = 1241, + k_Mn55_p_to_n_Fe55_reaclib = 1242, + k_Mn55_p_to_He4_Cr52_reaclib = 1243, + k_Mn55_He4_to_n_Co58_reaclib = 1244, + k_Mn55_He4_to_p_Fe58_reaclib = 1245, + k_Fe52_n_to_p_Mn52_reaclib = 1246, + k_Fe52_n_to_He4_Cr49_reaclib = 1247, + k_Fe52_He4_to_p_Co55_reaclib = 1248, + k_Fe53_n_to_p_Mn53_reaclib = 1249, + k_Fe53_n_to_He4_Cr50_reaclib = 1250, + k_Fe53_p_to_n_Co53_reaclib = 1251, + k_Fe53_p_to_He4_Mn50_reaclib = 1252, + k_Fe53_He4_to_n_Ni56_reaclib = 1253, + k_Fe53_He4_to_p_Co56_reaclib = 1254, + k_Fe54_n_to_p_Mn54_reaclib = 1255, + k_Fe54_n_to_He4_Cr51_reaclib = 1256, + k_Fe54_p_to_n_Co54_reaclib = 1257, + k_Fe54_p_to_He4_Mn51_reaclib = 1258, + k_Fe54_He4_to_n_Ni57_reaclib = 1259, + k_Fe54_He4_to_p_Co57_reaclib = 1260, + k_Fe55_n_to_p_Mn55_reaclib = 1261, + k_Fe55_n_to_He4_Cr52_reaclib = 1262, + k_Fe55_p_to_n_Co55_reaclib = 1263, + k_Fe55_p_to_He4_Mn52_reaclib = 1264, + k_Fe55_He4_to_n_Ni58_reaclib = 1265, + k_Fe55_He4_to_p_Co58_reaclib = 1266, + k_Fe56_n_to_He4_Cr53_reaclib = 1267, + k_Fe56_p_to_n_Co56_reaclib = 1268, + k_Fe56_p_to_He4_Mn53_reaclib = 1269, + k_Fe56_He4_to_n_Ni59_reaclib = 1270, + k_Fe56_He4_to_p_Co59_reaclib = 1271, + k_Fe57_n_to_He4_Cr54_reaclib = 1272, + k_Fe57_p_to_n_Co57_reaclib = 1273, + k_Fe57_p_to_He4_Mn54_reaclib = 1274, + k_Fe57_He4_to_n_Ni60_reaclib = 1275, + k_Fe58_p_to_n_Co58_reaclib = 1276, + k_Fe58_p_to_He4_Mn55_reaclib = 1277, + k_Fe58_He4_to_n_Ni61_reaclib = 1278, + k_Co53_n_to_p_Fe53_reaclib = 1279, + k_Co53_n_to_He4_Mn50_reaclib = 1280, + k_Co53_He4_to_p_Ni56_reaclib = 1281, + k_Co54_n_to_p_Fe54_reaclib = 1282, + k_Co54_n_to_He4_Mn51_reaclib = 1283, + k_Co54_He4_to_n_Cu57_reaclib = 1284, + k_Co54_He4_to_p_Ni57_reaclib = 1285, + k_Co55_n_to_p_Fe55_reaclib = 1286, + k_Co55_n_to_He4_Mn52_reaclib = 1287, + k_Co55_p_to_He4_Fe52_reaclib = 1288, + k_Co55_He4_to_n_Cu58_reaclib = 1289, + k_Co55_He4_to_p_Ni58_reaclib = 1290, + k_Co56_n_to_p_Fe56_reaclib = 1291, + k_Co56_n_to_He4_Mn53_reaclib = 1292, + k_Co56_p_to_n_Ni56_reaclib = 1293, + k_Co56_p_to_He4_Fe53_reaclib = 1294, + k_Co56_He4_to_n_Cu59_reaclib = 1295, + k_Co56_He4_to_p_Ni59_reaclib = 1296, + k_Co57_n_to_p_Fe57_reaclib = 1297, + k_Co57_n_to_He4_Mn54_reaclib = 1298, + k_Co57_p_to_n_Ni57_reaclib = 1299, + k_Co57_p_to_He4_Fe54_reaclib = 1300, + k_Co57_He4_to_n_Cu60_reaclib = 1301, + k_Co57_He4_to_p_Ni60_reaclib = 1302, + k_Co58_n_to_p_Fe58_reaclib = 1303, + k_Co58_n_to_He4_Mn55_reaclib = 1304, + k_Co58_p_to_n_Ni58_reaclib = 1305, + k_Co58_p_to_He4_Fe55_reaclib = 1306, + k_Co58_He4_to_n_Cu61_reaclib = 1307, + k_Co58_He4_to_p_Ni61_reaclib = 1308, + k_Co59_p_to_n_Ni59_reaclib = 1309, + k_Co59_p_to_He4_Fe56_reaclib = 1310, + k_Co59_He4_to_n_Cu62_reaclib = 1311, + k_Co59_He4_to_p_Ni62_reaclib = 1312, + k_Ni56_n_to_p_Co56_reaclib = 1313, + k_Ni56_n_to_He4_Fe53_reaclib = 1314, + k_Ni56_p_to_He4_Co53_reaclib = 1315, + k_Ni56_He4_to_n_Zn59_reaclib = 1316, + k_Ni56_He4_to_p_Cu59_reaclib = 1317, + k_Ni57_n_to_p_Co57_reaclib = 1318, + k_Ni57_n_to_He4_Fe54_reaclib = 1319, + k_Ni57_p_to_n_Cu57_reaclib = 1320, + k_Ni57_p_to_He4_Co54_reaclib = 1321, + k_Ni57_He4_to_n_Zn60_reaclib = 1322, + k_Ni57_He4_to_p_Cu60_reaclib = 1323, + k_Ni58_n_to_p_Co58_reaclib = 1324, + k_Ni58_n_to_He4_Fe55_reaclib = 1325, + k_Ni58_p_to_n_Cu58_reaclib = 1326, + k_Ni58_p_to_He4_Co55_reaclib = 1327, + k_Ni58_He4_to_n_Zn61_reaclib = 1328, + k_Ni58_He4_to_p_Cu61_reaclib = 1329, + k_Ni59_n_to_p_Co59_reaclib = 1330, + k_Ni59_n_to_He4_Fe56_reaclib = 1331, + k_Ni59_p_to_n_Cu59_reaclib = 1332, + k_Ni59_p_to_He4_Co56_reaclib = 1333, + k_Ni59_He4_to_n_Zn62_reaclib = 1334, + k_Ni59_He4_to_p_Cu62_reaclib = 1335, + k_Ni60_n_to_He4_Fe57_reaclib = 1336, + k_Ni60_p_to_n_Cu60_reaclib = 1337, + k_Ni60_p_to_He4_Co57_reaclib = 1338, + k_Ni60_He4_to_n_Zn63_reaclib = 1339, + k_Ni60_He4_to_p_Cu63_reaclib = 1340, + k_Ni61_n_to_He4_Fe58_reaclib = 1341, + k_Ni61_p_to_n_Cu61_reaclib = 1342, + k_Ni61_p_to_He4_Co58_reaclib = 1343, + k_Ni61_He4_to_n_Zn64_reaclib = 1344, + k_Ni61_He4_to_p_Cu64_reaclib = 1345, + k_Ni62_p_to_n_Cu62_reaclib = 1346, + k_Ni62_p_to_He4_Co59_reaclib = 1347, + k_Ni62_He4_to_n_Zn65_reaclib = 1348, + k_Ni62_He4_to_p_Cu65_reaclib = 1349, + k_Ni63_p_to_n_Cu63_reaclib = 1350, + k_Ni63_He4_to_n_Zn66_reaclib = 1351, + k_Ni64_p_to_n_Cu64_reaclib = 1352, + k_Cu57_n_to_p_Ni57_reaclib = 1353, + k_Cu57_n_to_He4_Co54_reaclib = 1354, + k_Cu57_He4_to_p_Zn60_reaclib = 1355, + k_Cu58_n_to_p_Ni58_reaclib = 1356, + k_Cu58_n_to_He4_Co55_reaclib = 1357, + k_Cu58_He4_to_p_Zn61_reaclib = 1358, + k_Cu59_n_to_p_Ni59_reaclib = 1359, + k_Cu59_n_to_He4_Co56_reaclib = 1360, + k_Cu59_p_to_n_Zn59_reaclib = 1361, + k_Cu59_p_to_He4_Ni56_reaclib = 1362, + k_Cu59_He4_to_n_Ga62_reaclib = 1363, + k_Cu59_He4_to_p_Zn62_reaclib = 1364, + k_Cu60_n_to_p_Ni60_reaclib = 1365, + k_Cu60_n_to_He4_Co57_reaclib = 1366, + k_Cu60_p_to_n_Zn60_reaclib = 1367, + k_Cu60_p_to_He4_Ni57_reaclib = 1368, + k_Cu60_He4_to_n_Ga63_reaclib = 1369, + k_Cu60_He4_to_p_Zn63_reaclib = 1370, + k_Cu61_n_to_p_Ni61_reaclib = 1371, + k_Cu61_n_to_He4_Co58_reaclib = 1372, + k_Cu61_p_to_n_Zn61_reaclib = 1373, + k_Cu61_p_to_He4_Ni58_reaclib = 1374, + k_Cu61_He4_to_n_Ga64_reaclib = 1375, + k_Cu61_He4_to_p_Zn64_reaclib = 1376, + k_Cu62_n_to_p_Ni62_reaclib = 1377, + k_Cu62_n_to_He4_Co59_reaclib = 1378, + k_Cu62_p_to_n_Zn62_reaclib = 1379, + k_Cu62_p_to_He4_Ni59_reaclib = 1380, + k_Cu62_He4_to_p_Zn65_reaclib = 1381, + k_Cu63_n_to_p_Ni63_reaclib = 1382, + k_Cu63_p_to_n_Zn63_reaclib = 1383, + k_Cu63_p_to_He4_Ni60_reaclib = 1384, + k_Cu63_He4_to_p_Zn66_reaclib = 1385, + k_Cu64_n_to_p_Ni64_reaclib = 1386, + k_Cu64_p_to_n_Zn64_reaclib = 1387, + k_Cu64_p_to_He4_Ni61_reaclib = 1388, + k_Cu65_p_to_n_Zn65_reaclib = 1389, + k_Cu65_p_to_He4_Ni62_reaclib = 1390, + k_Zn59_n_to_p_Cu59_reaclib = 1391, + k_Zn59_n_to_He4_Ni56_reaclib = 1392, + k_Zn59_He4_to_p_Ga62_reaclib = 1393, + k_Zn60_n_to_p_Cu60_reaclib = 1394, + k_Zn60_n_to_He4_Ni57_reaclib = 1395, + k_Zn60_p_to_He4_Cu57_reaclib = 1396, + k_Zn60_He4_to_n_Ge63_reaclib = 1397, + k_Zn60_He4_to_p_Ga63_reaclib = 1398, + k_Zn61_n_to_p_Cu61_reaclib = 1399, + k_Zn61_n_to_He4_Ni58_reaclib = 1400, + k_Zn61_p_to_He4_Cu58_reaclib = 1401, + k_Zn61_He4_to_n_Ge64_reaclib = 1402, + k_Zn61_He4_to_p_Ga64_reaclib = 1403, + k_Zn62_n_to_p_Cu62_reaclib = 1404, + k_Zn62_n_to_He4_Ni59_reaclib = 1405, + k_Zn62_p_to_n_Ga62_reaclib = 1406, + k_Zn62_p_to_He4_Cu59_reaclib = 1407, + k_Zn63_n_to_p_Cu63_reaclib = 1408, + k_Zn63_n_to_He4_Ni60_reaclib = 1409, + k_Zn63_p_to_n_Ga63_reaclib = 1410, + k_Zn63_p_to_He4_Cu60_reaclib = 1411, + k_Zn64_n_to_p_Cu64_reaclib = 1412, + k_Zn64_n_to_He4_Ni61_reaclib = 1413, + k_Zn64_p_to_n_Ga64_reaclib = 1414, + k_Zn64_p_to_He4_Cu61_reaclib = 1415, + k_Zn65_n_to_p_Cu65_reaclib = 1416, + k_Zn65_n_to_He4_Ni62_reaclib = 1417, + k_Zn65_p_to_He4_Cu62_reaclib = 1418, + k_Zn66_n_to_He4_Ni63_reaclib = 1419, + k_Zn66_p_to_He4_Cu63_reaclib = 1420, + k_Ga62_n_to_p_Zn62_reaclib = 1421, + k_Ga62_n_to_He4_Cu59_reaclib = 1422, + k_Ga62_p_to_He4_Zn59_reaclib = 1423, + k_Ga63_n_to_p_Zn63_reaclib = 1424, + k_Ga63_n_to_He4_Cu60_reaclib = 1425, + k_Ga63_p_to_n_Ge63_reaclib = 1426, + k_Ga63_p_to_He4_Zn60_reaclib = 1427, + k_Ga64_n_to_p_Zn64_reaclib = 1428, + k_Ga64_n_to_He4_Cu61_reaclib = 1429, + k_Ga64_p_to_n_Ge64_reaclib = 1430, + k_Ga64_p_to_He4_Zn61_reaclib = 1431, + k_Ge63_n_to_p_Ga63_reaclib = 1432, + k_Ge63_n_to_He4_Zn60_reaclib = 1433, + k_Ge64_n_to_p_Ga64_reaclib = 1434, + k_Ge64_n_to_He4_Zn61_reaclib = 1435, + k_d_p_to_n_p_p_reaclib = 1436, k_He3_He3_to_p_p_He4_reaclib = 1437, - k_d_Li7_to_n_He4_He4_reaclib = 1438, - k_d_Be7_to_p_He4_He4_reaclib = 1439, - k_p_Be9_to_d_He4_He4_reaclib = 1440, - k_n_B8_to_p_He4_He4_reaclib = 1441, - k_p_B11_to_He4_He4_He4_reaclib = 1442, - k_He3_Li7_to_n_p_He4_He4_reaclib = 1443, - k_He3_Be7_to_p_p_He4_He4_reaclib = 1444, - k_p_Be9_to_n_p_He4_He4_reaclib = 1445, - k_n_p_He4_to_Li6_reaclib = 1446, - k_n_He4_He4_to_Be9_reaclib = 1447, + k_Li7_d_to_n_He4_He4_reaclib = 1438, + k_Be7_d_to_p_He4_He4_reaclib = 1439, + k_Be9_p_to_d_He4_He4_reaclib = 1440, + k_B8_n_to_p_He4_He4_reaclib = 1441, + k_B11_p_to_3He4_reaclib = 1442, + k_Li7_He3_to_n_p_He4_He4_reaclib = 1443, + k_Be7_He3_to_p_p_He4_He4_reaclib = 1444, + k_Be9_p_to_n_p_He4_He4_reaclib = 1445, + k_He4_p_n_to_Li6_reaclib = 1446, + k_He4_He4_n_to_Be9_reaclib = 1447, k_He4_He4_He4_to_C12_reaclib = 1448, - k_n_p_p_to_p_d_reaclib = 1449, - k_p_p_He4_to_He3_He3_reaclib = 1450, - k_n_He4_He4_to_d_Li7_reaclib = 1451, - k_p_He4_He4_to_n_B8_reaclib = 1452, - k_p_He4_He4_to_d_Be7_reaclib = 1453, + k_p_p_n_to_p_d_reaclib = 1449, + k_He4_p_p_to_He3_He3_reaclib = 1450, + k_He4_He4_n_to_d_Li7_reaclib = 1451, + k_He4_He4_p_to_n_B8_reaclib = 1452, + k_He4_He4_p_to_d_Be7_reaclib = 1453, k_d_He4_He4_to_p_Be9_reaclib = 1454, k_He4_He4_He4_to_p_B11_reaclib = 1455, - k_n_p_He4_He4_to_He3_Li7_reaclib = 1456, - k_n_p_He4_He4_to_p_Be9_reaclib = 1457, - k_p_p_He4_He4_to_He3_Be7_reaclib = 1458, - k_Na21_to_Ne21_weaktab = 1459, - k_Ne21_to_Na21_weaktab = 1460, - k_Na22_to_Ne22_weaktab = 1461, - k_Ne22_to_Na22_weaktab = 1462, - k_Mg23_to_Na23_weaktab = 1463, - k_Na23_to_Mg23_weaktab = 1464, - k_Al25_to_Mg25_weaktab = 1465, - k_Mg25_to_Al25_weaktab = 1466, - k_Al26_to_Mg26_weaktab = 1467, - k_Mg26_to_Al26_weaktab = 1468, - k_P29_to_Si29_weaktab = 1469, - k_Si29_to_P29_weaktab = 1470, - k_P30_to_Si30_weaktab = 1471, - k_Si30_to_P30_weaktab = 1472, - k_P31_to_Si31_weaktab = 1473, - k_Si31_to_P31_weaktab = 1474, - k_P32_to_S32_weaktab = 1475, - k_P32_to_Si32_weaktab = 1476, - k_S32_to_P32_weaktab = 1477, - k_Si32_to_P32_weaktab = 1478, - k_Cl33_to_S33_weaktab = 1479, - k_P33_to_S33_weaktab = 1480, - k_S33_to_Cl33_weaktab = 1481, - k_S33_to_P33_weaktab = 1482, - k_Cl34_to_S34_weaktab = 1483, - k_S34_to_Cl34_weaktab = 1484, - k_Cl35_to_S35_weaktab = 1485, - k_S35_to_Cl35_weaktab = 1486, - k_Ar36_to_Cl36_weaktab = 1487, - k_Cl36_to_Ar36_weaktab = 1488, - k_Cl36_to_S36_weaktab = 1489, - k_S36_to_Cl36_weaktab = 1490, - k_Ar37_to_Cl37_weaktab = 1491, - k_Ar37_to_K37_weaktab = 1492, - k_Cl37_to_Ar37_weaktab = 1493, - k_K37_to_Ar37_weaktab = 1494, - k_Ar38_to_K38_weaktab = 1495, - k_K38_to_Ar38_weaktab = 1496, - k_Ar39_to_K39_weaktab = 1497, - k_K39_to_Ar39_weaktab = 1498, - k_Ar40_to_K40_weaktab = 1499, - k_Ca40_to_K40_weaktab = 1500, - k_K40_to_Ar40_weaktab = 1501, - k_K40_to_Ca40_weaktab = 1502, - k_Ca41_to_K41_weaktab = 1503, - k_K41_to_Ca41_weaktab = 1504, - k_Ca43_to_Sc43_weaktab = 1505, - k_Sc43_to_Ca43_weaktab = 1506, - k_Ca44_to_Sc44_weaktab = 1507, - k_Sc44_to_Ca44_weaktab = 1508, - k_Sc44_to_Ti44_weaktab = 1509, - k_Ti44_to_Sc44_weaktab = 1510, - k_Co53_to_Fe53_weaktab = 1511, - k_Fe53_to_Co53_weaktab = 1512, - k_Cu57_to_Ni57_weaktab = 1513, - k_Ni57_to_Cu57_weaktab = 1514, - k_Ca45_to_Sc45_weaktab = 1515, - k_Sc45_to_Ca45_weaktab = 1516, - k_Sc45_to_Ti45_weaktab = 1517, - k_Ti45_to_Sc45_weaktab = 1518, - k_Ca46_to_Sc46_weaktab = 1519, - k_Sc46_to_Ca46_weaktab = 1520, - k_Sc46_to_Ti46_weaktab = 1521, - k_Ti46_to_Sc46_weaktab = 1522, - k_Ti46_to_V46_weaktab = 1523, - k_V46_to_Ti46_weaktab = 1524, - k_Ca47_to_Sc47_weaktab = 1525, - k_Sc47_to_Ca47_weaktab = 1526, - k_Sc47_to_Ti47_weaktab = 1527, - k_Ti47_to_Sc47_weaktab = 1528, - k_Ti47_to_V47_weaktab = 1529, - k_V47_to_Ti47_weaktab = 1530, - k_Ca48_to_Sc48_weaktab = 1531, - k_Cr48_to_V48_weaktab = 1532, - k_Sc48_to_Ca48_weaktab = 1533, - k_Sc48_to_Ti48_weaktab = 1534, - k_Ti48_to_Sc48_weaktab = 1535, - k_Ti48_to_V48_weaktab = 1536, - k_V48_to_Cr48_weaktab = 1537, - k_V48_to_Ti48_weaktab = 1538, - k_Cr49_to_V49_weaktab = 1539, - k_Sc49_to_Ti49_weaktab = 1540, - k_Ti49_to_Sc49_weaktab = 1541, - k_Ti49_to_V49_weaktab = 1542, - k_V49_to_Cr49_weaktab = 1543, - k_V49_to_Ti49_weaktab = 1544, - k_Cr50_to_Mn50_weaktab = 1545, - k_Cr50_to_V50_weaktab = 1546, - k_Mn50_to_Cr50_weaktab = 1547, - k_Ti50_to_V50_weaktab = 1548, - k_V50_to_Cr50_weaktab = 1549, - k_V50_to_Ti50_weaktab = 1550, - k_Cr51_to_Mn51_weaktab = 1551, - k_Cr51_to_V51_weaktab = 1552, - k_Mn51_to_Cr51_weaktab = 1553, - k_Ti51_to_V51_weaktab = 1554, - k_V51_to_Cr51_weaktab = 1555, - k_V51_to_Ti51_weaktab = 1556, - k_Cr52_to_Mn52_weaktab = 1557, - k_Cr52_to_V52_weaktab = 1558, - k_Fe52_to_Mn52_weaktab = 1559, - k_Mn52_to_Cr52_weaktab = 1560, - k_Mn52_to_Fe52_weaktab = 1561, - k_V52_to_Cr52_weaktab = 1562, - k_Cr53_to_Mn53_weaktab = 1563, - k_Fe53_to_Mn53_weaktab = 1564, - k_Mn53_to_Cr53_weaktab = 1565, - k_Mn53_to_Fe53_weaktab = 1566, - k_Co54_to_Fe54_weaktab = 1567, - k_Cr54_to_Mn54_weaktab = 1568, - k_Fe54_to_Co54_weaktab = 1569, - k_Fe54_to_Mn54_weaktab = 1570, - k_Mn54_to_Cr54_weaktab = 1571, - k_Mn54_to_Fe54_weaktab = 1572, - k_Co55_to_Fe55_weaktab = 1573, - k_Fe55_to_Co55_weaktab = 1574, - k_Fe55_to_Mn55_weaktab = 1575, - k_Mn55_to_Fe55_weaktab = 1576, - k_Co56_to_Fe56_weaktab = 1577, - k_Co56_to_Ni56_weaktab = 1578, - k_Fe56_to_Co56_weaktab = 1579, - k_Ni56_to_Co56_weaktab = 1580, - k_Co57_to_Fe57_weaktab = 1581, - k_Co57_to_Ni57_weaktab = 1582, - k_Fe57_to_Co57_weaktab = 1583, - k_Ni57_to_Co57_weaktab = 1584, - k_Co58_to_Fe58_weaktab = 1585, - k_Co58_to_Ni58_weaktab = 1586, - k_Cu58_to_Ni58_weaktab = 1587, - k_Fe58_to_Co58_weaktab = 1588, - k_Ni58_to_Co58_weaktab = 1589, - k_Ni58_to_Cu58_weaktab = 1590, - k_Co59_to_Ni59_weaktab = 1591, - k_Cu59_to_Ni59_weaktab = 1592, - k_Ni59_to_Co59_weaktab = 1593, - k_Ni59_to_Cu59_weaktab = 1594, - k_Cu60_to_Ni60_weaktab = 1595, - k_Cu60_to_Zn60_weaktab = 1596, - k_Ni60_to_Cu60_weaktab = 1597, - k_Zn60_to_Cu60_weaktab = 1598, - k_Cu61_to_Ni61_weaktab = 1599, - k_Cu61_to_Zn61_weaktab = 1600, - k_Ni61_to_Cu61_weaktab = 1601, - k_Zn61_to_Cu61_weaktab = 1602, - k_Cu62_to_Ni62_weaktab = 1603, - k_Cu62_to_Zn62_weaktab = 1604, - k_Ga62_to_Zn62_weaktab = 1605, - k_Ni62_to_Cu62_weaktab = 1606, - k_Zn62_to_Cu62_weaktab = 1607, - k_Zn62_to_Ga62_weaktab = 1608, - k_Cu63_to_Ni63_weaktab = 1609, - k_Cu63_to_Zn63_weaktab = 1610, - k_Ga63_to_Zn63_weaktab = 1611, - k_Ni63_to_Cu63_weaktab = 1612, - k_Zn63_to_Cu63_weaktab = 1613, - k_Zn63_to_Ga63_weaktab = 1614, - k_Cu64_to_Ni64_weaktab = 1615, - k_Cu64_to_Zn64_weaktab = 1616, - k_Ga64_to_Ge64_weaktab = 1617, - k_Ga64_to_Zn64_weaktab = 1618, - k_Ge64_to_Ga64_weaktab = 1619, - k_Ni64_to_Cu64_weaktab = 1620, - k_Zn64_to_Cu64_weaktab = 1621, - k_Zn64_to_Ga64_weaktab = 1622, - k_Cu65_to_Zn65_weaktab = 1623, - k_Zn65_to_Cu65_weaktab = 1624, - k_n_to_p_weaktab = 1625, - k_p_to_n_weaktab = 1626, - NumRates = k_p_to_n_weaktab + k_He4_He4_p_n_to_He3_Li7_reaclib = 1456, + k_He4_He4_p_n_to_p_Be9_reaclib = 1457, + k_He4_He4_p_p_to_He3_Be7_reaclib = 1458, + k_Na21_to_Ne21_electron_capture_weaktab = 1459, + k_Ne21_to_Na21_beta_neg_weaktab = 1460, + k_Na22_to_Ne22_electron_capture_weaktab = 1461, + k_Ne22_to_Na22_beta_neg_weaktab = 1462, + k_Mg23_to_Na23_electron_capture_weaktab = 1463, + k_Na23_to_Mg23_beta_neg_weaktab = 1464, + k_Al25_to_Mg25_electron_capture_weaktab = 1465, + k_Mg25_to_Al25_beta_neg_weaktab = 1466, + k_Al26_to_Mg26_electron_capture_weaktab = 1467, + k_Mg26_to_Al26_beta_neg_weaktab = 1468, + k_P29_to_Si29_electron_capture_weaktab = 1469, + k_Si29_to_P29_beta_neg_weaktab = 1470, + k_P30_to_Si30_electron_capture_weaktab = 1471, + k_Si30_to_P30_beta_neg_weaktab = 1472, + k_P31_to_Si31_electron_capture_weaktab = 1473, + k_Si31_to_P31_beta_neg_weaktab = 1474, + k_P32_to_S32_beta_neg_weaktab = 1475, + k_P32_to_Si32_electron_capture_weaktab = 1476, + k_S32_to_P32_electron_capture_weaktab = 1477, + k_Si32_to_P32_beta_neg_weaktab = 1478, + k_Cl33_to_S33_electron_capture_weaktab = 1479, + k_P33_to_S33_beta_neg_weaktab = 1480, + k_S33_to_Cl33_beta_neg_weaktab = 1481, + k_S33_to_P33_electron_capture_weaktab = 1482, + k_Cl34_to_S34_electron_capture_weaktab = 1483, + k_S34_to_Cl34_beta_neg_weaktab = 1484, + k_Cl35_to_S35_electron_capture_weaktab = 1485, + k_S35_to_Cl35_beta_neg_weaktab = 1486, + k_Ar36_to_Cl36_electron_capture_weaktab = 1487, + k_Cl36_to_Ar36_beta_neg_weaktab = 1488, + k_Cl36_to_S36_electron_capture_weaktab = 1489, + k_S36_to_Cl36_beta_neg_weaktab = 1490, + k_Ar37_to_Cl37_electron_capture_weaktab = 1491, + k_Ar37_to_K37_beta_neg_weaktab = 1492, + k_Cl37_to_Ar37_beta_neg_weaktab = 1493, + k_K37_to_Ar37_electron_capture_weaktab = 1494, + k_Ar38_to_K38_beta_neg_weaktab = 1495, + k_K38_to_Ar38_electron_capture_weaktab = 1496, + k_Ar39_to_K39_beta_neg_weaktab = 1497, + k_K39_to_Ar39_electron_capture_weaktab = 1498, + k_Ar40_to_K40_beta_neg_weaktab = 1499, + k_Ca40_to_K40_electron_capture_weaktab = 1500, + k_K40_to_Ar40_electron_capture_weaktab = 1501, + k_K40_to_Ca40_beta_neg_weaktab = 1502, + k_Ca41_to_K41_electron_capture_weaktab = 1503, + k_K41_to_Ca41_beta_neg_weaktab = 1504, + k_Ca43_to_Sc43_beta_neg_weaktab = 1505, + k_Sc43_to_Ca43_electron_capture_weaktab = 1506, + k_Ca44_to_Sc44_beta_neg_weaktab = 1507, + k_Sc44_to_Ca44_electron_capture_weaktab = 1508, + k_Sc44_to_Ti44_beta_neg_weaktab = 1509, + k_Ti44_to_Sc44_electron_capture_weaktab = 1510, + k_Co53_to_Fe53_electron_capture_weaktab = 1511, + k_Fe53_to_Co53_beta_neg_weaktab = 1512, + k_Cu57_to_Ni57_electron_capture_weaktab = 1513, + k_Ni57_to_Cu57_beta_neg_weaktab = 1514, + k_Ca45_to_Sc45_beta_neg_weaktab = 1515, + k_Sc45_to_Ca45_electron_capture_weaktab = 1516, + k_Sc45_to_Ti45_beta_neg_weaktab = 1517, + k_Ti45_to_Sc45_electron_capture_weaktab = 1518, + k_Ca46_to_Sc46_beta_neg_weaktab = 1519, + k_Sc46_to_Ca46_electron_capture_weaktab = 1520, + k_Sc46_to_Ti46_beta_neg_weaktab = 1521, + k_Ti46_to_Sc46_electron_capture_weaktab = 1522, + k_Ti46_to_V46_beta_neg_weaktab = 1523, + k_V46_to_Ti46_electron_capture_weaktab = 1524, + k_Ca47_to_Sc47_beta_neg_weaktab = 1525, + k_Sc47_to_Ca47_electron_capture_weaktab = 1526, + k_Sc47_to_Ti47_beta_neg_weaktab = 1527, + k_Ti47_to_Sc47_electron_capture_weaktab = 1528, + k_Ti47_to_V47_beta_neg_weaktab = 1529, + k_V47_to_Ti47_electron_capture_weaktab = 1530, + k_Ca48_to_Sc48_beta_neg_weaktab = 1531, + k_Cr48_to_V48_electron_capture_weaktab = 1532, + k_Sc48_to_Ca48_electron_capture_weaktab = 1533, + k_Sc48_to_Ti48_beta_neg_weaktab = 1534, + k_Ti48_to_Sc48_electron_capture_weaktab = 1535, + k_Ti48_to_V48_beta_neg_weaktab = 1536, + k_V48_to_Cr48_beta_neg_weaktab = 1537, + k_V48_to_Ti48_electron_capture_weaktab = 1538, + k_Cr49_to_V49_electron_capture_weaktab = 1539, + k_Sc49_to_Ti49_beta_neg_weaktab = 1540, + k_Ti49_to_Sc49_electron_capture_weaktab = 1541, + k_Ti49_to_V49_beta_neg_weaktab = 1542, + k_V49_to_Cr49_beta_neg_weaktab = 1543, + k_V49_to_Ti49_electron_capture_weaktab = 1544, + k_Cr50_to_Mn50_beta_neg_weaktab = 1545, + k_Cr50_to_V50_electron_capture_weaktab = 1546, + k_Mn50_to_Cr50_electron_capture_weaktab = 1547, + k_Ti50_to_V50_beta_neg_weaktab = 1548, + k_V50_to_Cr50_beta_neg_weaktab = 1549, + k_V50_to_Ti50_electron_capture_weaktab = 1550, + k_Cr51_to_Mn51_beta_neg_weaktab = 1551, + k_Cr51_to_V51_electron_capture_weaktab = 1552, + k_Mn51_to_Cr51_electron_capture_weaktab = 1553, + k_Ti51_to_V51_beta_neg_weaktab = 1554, + k_V51_to_Cr51_beta_neg_weaktab = 1555, + k_V51_to_Ti51_electron_capture_weaktab = 1556, + k_Cr52_to_Mn52_beta_neg_weaktab = 1557, + k_Cr52_to_V52_electron_capture_weaktab = 1558, + k_Fe52_to_Mn52_electron_capture_weaktab = 1559, + k_Mn52_to_Cr52_electron_capture_weaktab = 1560, + k_Mn52_to_Fe52_beta_neg_weaktab = 1561, + k_V52_to_Cr52_beta_neg_weaktab = 1562, + k_Cr53_to_Mn53_beta_neg_weaktab = 1563, + k_Fe53_to_Mn53_electron_capture_weaktab = 1564, + k_Mn53_to_Cr53_electron_capture_weaktab = 1565, + k_Mn53_to_Fe53_beta_neg_weaktab = 1566, + k_Co54_to_Fe54_electron_capture_weaktab = 1567, + k_Cr54_to_Mn54_beta_neg_weaktab = 1568, + k_Fe54_to_Co54_beta_neg_weaktab = 1569, + k_Fe54_to_Mn54_electron_capture_weaktab = 1570, + k_Mn54_to_Cr54_electron_capture_weaktab = 1571, + k_Mn54_to_Fe54_beta_neg_weaktab = 1572, + k_Co55_to_Fe55_electron_capture_weaktab = 1573, + k_Fe55_to_Co55_beta_neg_weaktab = 1574, + k_Fe55_to_Mn55_electron_capture_weaktab = 1575, + k_Mn55_to_Fe55_beta_neg_weaktab = 1576, + k_Co56_to_Fe56_electron_capture_weaktab = 1577, + k_Co56_to_Ni56_beta_neg_weaktab = 1578, + k_Fe56_to_Co56_beta_neg_weaktab = 1579, + k_Ni56_to_Co56_electron_capture_weaktab = 1580, + k_Co57_to_Fe57_electron_capture_weaktab = 1581, + k_Co57_to_Ni57_beta_neg_weaktab = 1582, + k_Fe57_to_Co57_beta_neg_weaktab = 1583, + k_Ni57_to_Co57_electron_capture_weaktab = 1584, + k_Co58_to_Fe58_electron_capture_weaktab = 1585, + k_Co58_to_Ni58_beta_neg_weaktab = 1586, + k_Cu58_to_Ni58_electron_capture_weaktab = 1587, + k_Fe58_to_Co58_beta_neg_weaktab = 1588, + k_Ni58_to_Co58_electron_capture_weaktab = 1589, + k_Ni58_to_Cu58_beta_neg_weaktab = 1590, + k_Co59_to_Ni59_beta_neg_weaktab = 1591, + k_Cu59_to_Ni59_electron_capture_weaktab = 1592, + k_Ni59_to_Co59_electron_capture_weaktab = 1593, + k_Ni59_to_Cu59_beta_neg_weaktab = 1594, + k_Cu60_to_Ni60_electron_capture_weaktab = 1595, + k_Cu60_to_Zn60_beta_neg_weaktab = 1596, + k_Ni60_to_Cu60_beta_neg_weaktab = 1597, + k_Zn60_to_Cu60_electron_capture_weaktab = 1598, + k_Cu61_to_Ni61_electron_capture_weaktab = 1599, + k_Cu61_to_Zn61_beta_neg_weaktab = 1600, + k_Ni61_to_Cu61_beta_neg_weaktab = 1601, + k_Zn61_to_Cu61_electron_capture_weaktab = 1602, + k_Cu62_to_Ni62_electron_capture_weaktab = 1603, + k_Cu62_to_Zn62_beta_neg_weaktab = 1604, + k_Ga62_to_Zn62_electron_capture_weaktab = 1605, + k_Ni62_to_Cu62_beta_neg_weaktab = 1606, + k_Zn62_to_Cu62_electron_capture_weaktab = 1607, + k_Zn62_to_Ga62_beta_neg_weaktab = 1608, + k_Cu63_to_Ni63_electron_capture_weaktab = 1609, + k_Cu63_to_Zn63_beta_neg_weaktab = 1610, + k_Ga63_to_Zn63_electron_capture_weaktab = 1611, + k_Ni63_to_Cu63_beta_neg_weaktab = 1612, + k_Zn63_to_Cu63_electron_capture_weaktab = 1613, + k_Zn63_to_Ga63_beta_neg_weaktab = 1614, + k_Cu64_to_Ni64_electron_capture_weaktab = 1615, + k_Cu64_to_Zn64_beta_neg_weaktab = 1616, + k_Ga64_to_Ge64_beta_neg_weaktab = 1617, + k_Ga64_to_Zn64_electron_capture_weaktab = 1618, + k_Ge64_to_Ga64_electron_capture_weaktab = 1619, + k_Ni64_to_Cu64_beta_neg_weaktab = 1620, + k_Zn64_to_Cu64_electron_capture_weaktab = 1621, + k_Zn64_to_Ga64_beta_neg_weaktab = 1622, + k_Cu65_to_Zn65_beta_neg_weaktab = 1623, + k_Zn65_to_Cu65_electron_capture_weaktab = 1624, + k_n_to_p_beta_neg_weaktab = 1625, + k_p_to_n_electron_capture_weaktab = 1626, + NumRates = k_p_to_n_electron_capture_weaktab }; enum ScreenPairs : @@ -2996,17 +2996,17 @@ namespace Rates static const std::vector rate_names = { "", // 0 - "Be7_to_Li7_reaclib", // 1, - "C14_to_N14_reaclib", // 2, - "N13_to_C13_reaclib", // 3, - "O14_to_N14_reaclib", // 4, - "O15_to_N15_reaclib", // 5, - "F17_to_O17_reaclib", // 6, - "F18_to_O18_reaclib", // 7, - "Ne18_to_F18_reaclib", // 8, - "Ne19_to_F19_reaclib", // 9, - "Zn59_to_Cu59_reaclib", // 10, - "Ge63_to_Ga63_reaclib", // 11, + "Be7_to_Li7_electron_capture_reaclib", // 1, + "C14_to_N14_beta_neg_reaclib", // 2, + "N13_to_C13_beta_pos_reaclib", // 3, + "O14_to_N14_beta_pos_reaclib", // 4, + "O15_to_N15_beta_pos_reaclib", // 5, + "F17_to_O17_beta_pos_reaclib", // 6, + "F18_to_O18_beta_pos_reaclib", // 7, + "Ne18_to_F18_beta_pos_reaclib", // 8, + "Ne19_to_F19_beta_pos_reaclib", // 9, + "Zn59_to_Cu59_beta_pos_reaclib", // 10, + "Ge63_to_Ga63_beta_pos_reaclib", // 11, "d_to_n_p_reaclib", // 12, "He3_to_p_d_reaclib", // 13, "He4_to_n_He3_reaclib", // 14, @@ -3016,7 +3016,7 @@ namespace Rates "Be7_to_p_Li6_reaclib", // 18, "Be7_to_He4_He3_reaclib", // 19, "B8_to_p_Be7_reaclib", // 20, - "B8_to_He4_He4_reaclib", // 21, + "B8_to_He4_He4_beta_pos_reaclib", // 21, "B10_to_p_Be9_reaclib", // 22, "B10_to_He4_Li6_reaclib", // 23, "B11_to_n_B10_reaclib", // 24, @@ -3345,7 +3345,7 @@ namespace Rates "Cu65_to_n_Cu64_reaclib", // 347, "Cu65_to_p_Ni64_reaclib", // 348, "Zn59_to_p_Cu58_reaclib", // 349, - "Zn59_to_p_Ni58_reaclib", // 350, + "Zn59_to_p_Ni58_beta_pos_reaclib", // 350, "Zn60_to_n_Zn59_reaclib", // 351, "Zn60_to_p_Cu59_reaclib", // 352, "Zn60_to_He4_Ni56_reaclib", // 353, @@ -3382,1246 +3382,1246 @@ namespace Rates "Ge64_to_He4_Zn60_reaclib", // 384, "Li6_to_n_p_He4_reaclib", // 385, "Be9_to_n_He4_He4_reaclib", // 386, - "C12_to_He4_He4_He4_reaclib", // 387, - "n_p_to_d_reaclib", // 388, - "p_p_to_d_reaclib_beta_pos", // 389, - "p_p_to_d_reaclib_electron_capture", // 390, - "p_d_to_He3_reaclib", // 391, + "C12_to_3He4_reaclib", // 387, + "p_n_to_d_reaclib", // 388, + "p_p_to_d_beta_pos_reaclib", // 389, + "p_p_to_d_electron_capture_reaclib", // 390, + "d_p_to_He3_reaclib", // 391, "d_d_to_He4_reaclib", // 392, - "He4_d_to_Li6_reaclib", // 393, - "n_He3_to_He4_reaclib", // 394, - "p_He3_to_He4_reaclib", // 395, - "He4_He3_to_Be7_reaclib", // 396, - "n_Li6_to_Li7_reaclib", // 397, - "p_Li6_to_Be7_reaclib", // 398, - "He4_Li6_to_B10_reaclib", // 399, - "He4_Li7_to_B11_reaclib", // 400, - "p_Be7_to_B8_reaclib", // 401, - "p_Be9_to_B10_reaclib", // 402, - "n_B10_to_B11_reaclib", // 403, - "p_B11_to_C12_reaclib", // 404, - "n_C12_to_C13_reaclib", // 405, - "p_C12_to_N13_reaclib", // 406, - "He4_C12_to_O16_reaclib", // 407, - "n_C13_to_C14_reaclib", // 408, - "p_C13_to_N14_reaclib", // 409, - "p_C14_to_N15_reaclib", // 410, - "He4_C14_to_O18_reaclib", // 411, - "n_N13_to_N14_reaclib", // 412, - "p_N13_to_O14_reaclib", // 413, - "n_N14_to_N15_reaclib", // 414, - "p_N14_to_O15_reaclib", // 415, - "He4_N14_to_F18_reaclib", // 416, - "p_N15_to_O16_reaclib", // 417, - "He4_N15_to_F19_reaclib", // 418, - "n_O14_to_O15_reaclib", // 419, - "He4_O14_to_Ne18_reaclib", // 420, - "n_O15_to_O16_reaclib", // 421, - "He4_O15_to_Ne19_reaclib", // 422, - "n_O16_to_O17_reaclib", // 423, - "p_O16_to_F17_reaclib", // 424, - "He4_O16_to_Ne20_reaclib", // 425, - "n_O17_to_O18_reaclib", // 426, - "p_O17_to_F18_reaclib", // 427, - "He4_O17_to_Ne21_reaclib", // 428, - "p_O18_to_F19_reaclib", // 429, - "He4_O18_to_Ne22_reaclib", // 430, - "n_F17_to_F18_reaclib", // 431, - "p_F17_to_Ne18_reaclib", // 432, - "He4_F17_to_Na21_reaclib", // 433, - "n_F18_to_F19_reaclib", // 434, - "p_F18_to_Ne19_reaclib", // 435, - "He4_F18_to_Na22_reaclib", // 436, - "p_F19_to_Ne20_reaclib", // 437, - "He4_F19_to_Na23_reaclib", // 438, - "n_Ne18_to_Ne19_reaclib", // 439, - "n_Ne19_to_Ne20_reaclib", // 440, - "He4_Ne19_to_Mg23_reaclib", // 441, - "n_Ne20_to_Ne21_reaclib", // 442, - "p_Ne20_to_Na21_reaclib", // 443, - "He4_Ne20_to_Mg24_reaclib", // 444, - "n_Ne21_to_Ne22_reaclib", // 445, - "p_Ne21_to_Na22_reaclib", // 446, - "He4_Ne21_to_Mg25_reaclib", // 447, - "p_Ne22_to_Na23_reaclib", // 448, - "He4_Ne22_to_Mg26_reaclib", // 449, - "n_Na21_to_Na22_reaclib", // 450, - "He4_Na21_to_Al25_reaclib", // 451, - "n_Na22_to_Na23_reaclib", // 452, - "p_Na22_to_Mg23_reaclib", // 453, - "He4_Na22_to_Al26_reaclib", // 454, - "p_Na23_to_Mg24_reaclib", // 455, - "He4_Na23_to_Al27_reaclib", // 456, - "n_Mg23_to_Mg24_reaclib", // 457, - "n_Mg24_to_Mg25_reaclib", // 458, - "p_Mg24_to_Al25_reaclib", // 459, - "He4_Mg24_to_Si28_reaclib", // 460, - "n_Mg25_to_Mg26_reaclib", // 461, - "p_Mg25_to_Al26_reaclib", // 462, - "He4_Mg25_to_Si29_reaclib", // 463, - "p_Mg26_to_Al27_reaclib", // 464, - "He4_Mg26_to_Si30_reaclib", // 465, - "n_Al25_to_Al26_reaclib", // 466, - "He4_Al25_to_P29_reaclib", // 467, - "n_Al26_to_Al27_reaclib", // 468, - "He4_Al26_to_P30_reaclib", // 469, - "p_Al27_to_Si28_reaclib", // 470, - "He4_Al27_to_P31_reaclib", // 471, - "n_Si28_to_Si29_reaclib", // 472, - "p_Si28_to_P29_reaclib", // 473, - "He4_Si28_to_S32_reaclib", // 474, - "n_Si29_to_Si30_reaclib", // 475, - "p_Si29_to_P30_reaclib", // 476, - "He4_Si29_to_S33_reaclib", // 477, - "n_Si30_to_Si31_reaclib", // 478, - "p_Si30_to_P31_reaclib", // 479, - "He4_Si30_to_S34_reaclib", // 480, - "n_Si31_to_Si32_reaclib", // 481, - "p_Si31_to_P32_reaclib", // 482, - "He4_Si31_to_S35_reaclib", // 483, - "p_Si32_to_P33_reaclib", // 484, - "He4_Si32_to_S36_reaclib", // 485, - "n_P29_to_P30_reaclib", // 486, - "He4_P29_to_Cl33_reaclib", // 487, - "n_P30_to_P31_reaclib", // 488, - "He4_P30_to_Cl34_reaclib", // 489, - "n_P31_to_P32_reaclib", // 490, - "p_P31_to_S32_reaclib", // 491, - "He4_P31_to_Cl35_reaclib", // 492, - "n_P32_to_P33_reaclib", // 493, - "p_P32_to_S33_reaclib", // 494, - "He4_P32_to_Cl36_reaclib", // 495, - "p_P33_to_S34_reaclib", // 496, - "He4_P33_to_Cl37_reaclib", // 497, - "n_S32_to_S33_reaclib", // 498, - "p_S32_to_Cl33_reaclib", // 499, - "He4_S32_to_Ar36_reaclib", // 500, - "n_S33_to_S34_reaclib", // 501, - "p_S33_to_Cl34_reaclib", // 502, - "He4_S33_to_Ar37_reaclib", // 503, - "n_S34_to_S35_reaclib", // 504, - "p_S34_to_Cl35_reaclib", // 505, - "He4_S34_to_Ar38_reaclib", // 506, - "n_S35_to_S36_reaclib", // 507, - "p_S35_to_Cl36_reaclib", // 508, - "He4_S35_to_Ar39_reaclib", // 509, - "p_S36_to_Cl37_reaclib", // 510, - "He4_S36_to_Ar40_reaclib", // 511, - "n_Cl33_to_Cl34_reaclib", // 512, - "He4_Cl33_to_K37_reaclib", // 513, - "n_Cl34_to_Cl35_reaclib", // 514, - "He4_Cl34_to_K38_reaclib", // 515, - "n_Cl35_to_Cl36_reaclib", // 516, - "p_Cl35_to_Ar36_reaclib", // 517, - "He4_Cl35_to_K39_reaclib", // 518, - "n_Cl36_to_Cl37_reaclib", // 519, - "p_Cl36_to_Ar37_reaclib", // 520, - "He4_Cl36_to_K40_reaclib", // 521, - "p_Cl37_to_Ar38_reaclib", // 522, - "He4_Cl37_to_K41_reaclib", // 523, - "n_Ar36_to_Ar37_reaclib", // 524, - "p_Ar36_to_K37_reaclib", // 525, - "He4_Ar36_to_Ca40_reaclib", // 526, - "n_Ar37_to_Ar38_reaclib", // 527, - "p_Ar37_to_K38_reaclib", // 528, - "He4_Ar37_to_Ca41_reaclib", // 529, - "n_Ar38_to_Ar39_reaclib", // 530, - "p_Ar38_to_K39_reaclib", // 531, - "He4_Ar38_to_Ca42_reaclib", // 532, - "n_Ar39_to_Ar40_reaclib", // 533, - "p_Ar39_to_K40_reaclib", // 534, - "He4_Ar39_to_Ca43_reaclib", // 535, - "p_Ar40_to_K41_reaclib", // 536, - "He4_Ar40_to_Ca44_reaclib", // 537, - "n_K37_to_K38_reaclib", // 538, - "n_K38_to_K39_reaclib", // 539, - "n_K39_to_K40_reaclib", // 540, - "p_K39_to_Ca40_reaclib", // 541, - "He4_K39_to_Sc43_reaclib", // 542, - "n_K40_to_K41_reaclib", // 543, - "p_K40_to_Ca41_reaclib", // 544, - "He4_K40_to_Sc44_reaclib", // 545, - "p_K41_to_Ca42_reaclib", // 546, - "He4_K41_to_Sc45_reaclib", // 547, - "n_Ca40_to_Ca41_reaclib", // 548, - "He4_Ca40_to_Ti44_reaclib", // 549, - "n_Ca41_to_Ca42_reaclib", // 550, - "He4_Ca41_to_Ti45_reaclib", // 551, - "n_Ca42_to_Ca43_reaclib", // 552, - "p_Ca42_to_Sc43_reaclib", // 553, - "He4_Ca42_to_Ti46_reaclib", // 554, - "n_Ca43_to_Ca44_reaclib", // 555, - "p_Ca43_to_Sc44_reaclib", // 556, - "He4_Ca43_to_Ti47_reaclib", // 557, - "n_Ca44_to_Ca45_reaclib", // 558, - "p_Ca44_to_Sc45_reaclib", // 559, - "He4_Ca44_to_Ti48_reaclib", // 560, - "n_Ca45_to_Ca46_reaclib", // 561, - "p_Ca45_to_Sc46_reaclib", // 562, - "He4_Ca45_to_Ti49_reaclib", // 563, - "n_Ca46_to_Ca47_reaclib", // 564, - "p_Ca46_to_Sc47_reaclib", // 565, - "He4_Ca46_to_Ti50_reaclib", // 566, - "n_Ca47_to_Ca48_reaclib", // 567, - "p_Ca47_to_Sc48_reaclib", // 568, - "He4_Ca47_to_Ti51_reaclib", // 569, - "p_Ca48_to_Sc49_reaclib", // 570, - "n_Sc43_to_Sc44_reaclib", // 571, - "p_Sc43_to_Ti44_reaclib", // 572, - "He4_Sc43_to_V47_reaclib", // 573, - "n_Sc44_to_Sc45_reaclib", // 574, - "p_Sc44_to_Ti45_reaclib", // 575, - "He4_Sc44_to_V48_reaclib", // 576, - "n_Sc45_to_Sc46_reaclib", // 577, - "p_Sc45_to_Ti46_reaclib", // 578, - "He4_Sc45_to_V49_reaclib", // 579, - "n_Sc46_to_Sc47_reaclib", // 580, - "p_Sc46_to_Ti47_reaclib", // 581, - "He4_Sc46_to_V50_reaclib", // 582, - "n_Sc47_to_Sc48_reaclib", // 583, - "p_Sc47_to_Ti48_reaclib", // 584, - "He4_Sc47_to_V51_reaclib", // 585, - "n_Sc48_to_Sc49_reaclib", // 586, - "p_Sc48_to_Ti49_reaclib", // 587, - "He4_Sc48_to_V52_reaclib", // 588, - "p_Sc49_to_Ti50_reaclib", // 589, - "n_Ti44_to_Ti45_reaclib", // 590, - "He4_Ti44_to_Cr48_reaclib", // 591, - "n_Ti45_to_Ti46_reaclib", // 592, - "p_Ti45_to_V46_reaclib", // 593, - "He4_Ti45_to_Cr49_reaclib", // 594, - "n_Ti46_to_Ti47_reaclib", // 595, - "p_Ti46_to_V47_reaclib", // 596, - "He4_Ti46_to_Cr50_reaclib", // 597, - "n_Ti47_to_Ti48_reaclib", // 598, - "p_Ti47_to_V48_reaclib", // 599, - "He4_Ti47_to_Cr51_reaclib", // 600, - "n_Ti48_to_Ti49_reaclib", // 601, - "p_Ti48_to_V49_reaclib", // 602, - "He4_Ti48_to_Cr52_reaclib", // 603, - "n_Ti49_to_Ti50_reaclib", // 604, - "p_Ti49_to_V50_reaclib", // 605, - "He4_Ti49_to_Cr53_reaclib", // 606, - "n_Ti50_to_Ti51_reaclib", // 607, - "p_Ti50_to_V51_reaclib", // 608, - "He4_Ti50_to_Cr54_reaclib", // 609, - "p_Ti51_to_V52_reaclib", // 610, - "n_V46_to_V47_reaclib", // 611, - "He4_V46_to_Mn50_reaclib", // 612, - "n_V47_to_V48_reaclib", // 613, - "p_V47_to_Cr48_reaclib", // 614, - "He4_V47_to_Mn51_reaclib", // 615, - "n_V48_to_V49_reaclib", // 616, - "p_V48_to_Cr49_reaclib", // 617, - "He4_V48_to_Mn52_reaclib", // 618, - "n_V49_to_V50_reaclib", // 619, - "p_V49_to_Cr50_reaclib", // 620, - "He4_V49_to_Mn53_reaclib", // 621, - "n_V50_to_V51_reaclib", // 622, - "p_V50_to_Cr51_reaclib", // 623, - "He4_V50_to_Mn54_reaclib", // 624, - "n_V51_to_V52_reaclib", // 625, - "p_V51_to_Cr52_reaclib", // 626, - "He4_V51_to_Mn55_reaclib", // 627, - "p_V52_to_Cr53_reaclib", // 628, - "n_Cr48_to_Cr49_reaclib", // 629, - "He4_Cr48_to_Fe52_reaclib", // 630, - "n_Cr49_to_Cr50_reaclib", // 631, - "p_Cr49_to_Mn50_reaclib", // 632, - "He4_Cr49_to_Fe53_reaclib", // 633, - "n_Cr50_to_Cr51_reaclib", // 634, - "p_Cr50_to_Mn51_reaclib", // 635, - "He4_Cr50_to_Fe54_reaclib", // 636, - "n_Cr51_to_Cr52_reaclib", // 637, - "p_Cr51_to_Mn52_reaclib", // 638, - "He4_Cr51_to_Fe55_reaclib", // 639, - "n_Cr52_to_Cr53_reaclib", // 640, - "p_Cr52_to_Mn53_reaclib", // 641, - "He4_Cr52_to_Fe56_reaclib", // 642, - "n_Cr53_to_Cr54_reaclib", // 643, - "p_Cr53_to_Mn54_reaclib", // 644, - "He4_Cr53_to_Fe57_reaclib", // 645, - "p_Cr54_to_Mn55_reaclib", // 646, - "He4_Cr54_to_Fe58_reaclib", // 647, - "n_Mn50_to_Mn51_reaclib", // 648, - "He4_Mn50_to_Co54_reaclib", // 649, - "n_Mn51_to_Mn52_reaclib", // 650, - "p_Mn51_to_Fe52_reaclib", // 651, - "He4_Mn51_to_Co55_reaclib", // 652, - "n_Mn52_to_Mn53_reaclib", // 653, - "p_Mn52_to_Fe53_reaclib", // 654, - "He4_Mn52_to_Co56_reaclib", // 655, - "n_Mn53_to_Mn54_reaclib", // 656, - "p_Mn53_to_Fe54_reaclib", // 657, - "He4_Mn53_to_Co57_reaclib", // 658, - "n_Mn54_to_Mn55_reaclib", // 659, - "p_Mn54_to_Fe55_reaclib", // 660, - "He4_Mn54_to_Co58_reaclib", // 661, - "p_Mn55_to_Fe56_reaclib", // 662, - "He4_Mn55_to_Co59_reaclib", // 663, - "n_Fe52_to_Fe53_reaclib", // 664, - "p_Fe52_to_Co53_reaclib", // 665, - "He4_Fe52_to_Ni56_reaclib", // 666, - "n_Fe53_to_Fe54_reaclib", // 667, - "p_Fe53_to_Co54_reaclib", // 668, - "He4_Fe53_to_Ni57_reaclib", // 669, - "n_Fe54_to_Fe55_reaclib", // 670, - "p_Fe54_to_Co55_reaclib", // 671, - "He4_Fe54_to_Ni58_reaclib", // 672, - "n_Fe55_to_Fe56_reaclib", // 673, - "p_Fe55_to_Co56_reaclib", // 674, - "He4_Fe55_to_Ni59_reaclib", // 675, - "n_Fe56_to_Fe57_reaclib", // 676, - "p_Fe56_to_Co57_reaclib", // 677, - "He4_Fe56_to_Ni60_reaclib", // 678, - "n_Fe57_to_Fe58_reaclib", // 679, - "p_Fe57_to_Co58_reaclib", // 680, - "He4_Fe57_to_Ni61_reaclib", // 681, - "p_Fe58_to_Co59_reaclib", // 682, - "He4_Fe58_to_Ni62_reaclib", // 683, - "n_Co53_to_Co54_reaclib", // 684, - "He4_Co53_to_Cu57_reaclib", // 685, - "n_Co54_to_Co55_reaclib", // 686, - "He4_Co54_to_Cu58_reaclib", // 687, - "n_Co55_to_Co56_reaclib", // 688, - "p_Co55_to_Ni56_reaclib", // 689, - "He4_Co55_to_Cu59_reaclib", // 690, - "n_Co56_to_Co57_reaclib", // 691, - "p_Co56_to_Ni57_reaclib", // 692, - "He4_Co56_to_Cu60_reaclib", // 693, - "n_Co57_to_Co58_reaclib", // 694, - "p_Co57_to_Ni58_reaclib", // 695, - "He4_Co57_to_Cu61_reaclib", // 696, - "n_Co58_to_Co59_reaclib", // 697, - "p_Co58_to_Ni59_reaclib", // 698, - "He4_Co58_to_Cu62_reaclib", // 699, - "p_Co59_to_Ni60_reaclib", // 700, - "He4_Co59_to_Cu63_reaclib", // 701, - "n_Ni56_to_Ni57_reaclib", // 702, - "p_Ni56_to_Cu57_reaclib", // 703, - "He4_Ni56_to_Zn60_reaclib", // 704, - "n_Ni57_to_Ni58_reaclib", // 705, - "p_Ni57_to_Cu58_reaclib", // 706, - "He4_Ni57_to_Zn61_reaclib", // 707, - "n_Ni58_to_Ni59_reaclib", // 708, - "p_Ni58_to_Cu59_reaclib", // 709, - "He4_Ni58_to_Zn62_reaclib", // 710, - "n_Ni59_to_Ni60_reaclib", // 711, - "p_Ni59_to_Cu60_reaclib", // 712, - "He4_Ni59_to_Zn63_reaclib", // 713, - "n_Ni60_to_Ni61_reaclib", // 714, - "p_Ni60_to_Cu61_reaclib", // 715, - "He4_Ni60_to_Zn64_reaclib", // 716, - "n_Ni61_to_Ni62_reaclib", // 717, - "p_Ni61_to_Cu62_reaclib", // 718, - "He4_Ni61_to_Zn65_reaclib", // 719, - "n_Ni62_to_Ni63_reaclib", // 720, - "p_Ni62_to_Cu63_reaclib", // 721, - "He4_Ni62_to_Zn66_reaclib", // 722, - "n_Ni63_to_Ni64_reaclib", // 723, - "p_Ni63_to_Cu64_reaclib", // 724, - "p_Ni64_to_Cu65_reaclib", // 725, - "n_Cu57_to_Cu58_reaclib", // 726, - "n_Cu58_to_Cu59_reaclib", // 727, - "p_Cu58_to_Zn59_reaclib", // 728, - "He4_Cu58_to_Ga62_reaclib", // 729, - "n_Cu59_to_Cu60_reaclib", // 730, - "p_Cu59_to_Zn60_reaclib", // 731, - "He4_Cu59_to_Ga63_reaclib", // 732, - "n_Cu60_to_Cu61_reaclib", // 733, - "p_Cu60_to_Zn61_reaclib", // 734, - "He4_Cu60_to_Ga64_reaclib", // 735, - "n_Cu61_to_Cu62_reaclib", // 736, - "p_Cu61_to_Zn62_reaclib", // 737, - "n_Cu62_to_Cu63_reaclib", // 738, - "p_Cu62_to_Zn63_reaclib", // 739, - "n_Cu63_to_Cu64_reaclib", // 740, - "p_Cu63_to_Zn64_reaclib", // 741, - "n_Cu64_to_Cu65_reaclib", // 742, - "p_Cu64_to_Zn65_reaclib", // 743, - "p_Cu65_to_Zn66_reaclib", // 744, - "n_Zn59_to_Zn60_reaclib", // 745, - "He4_Zn59_to_Ge63_reaclib", // 746, - "n_Zn60_to_Zn61_reaclib", // 747, - "He4_Zn60_to_Ge64_reaclib", // 748, - "n_Zn61_to_Zn62_reaclib", // 749, - "p_Zn61_to_Ga62_reaclib", // 750, - "n_Zn62_to_Zn63_reaclib", // 751, - "p_Zn62_to_Ga63_reaclib", // 752, - "n_Zn63_to_Zn64_reaclib", // 753, - "p_Zn63_to_Ga64_reaclib", // 754, - "n_Zn64_to_Zn65_reaclib", // 755, - "n_Zn65_to_Zn66_reaclib", // 756, - "n_Ga62_to_Ga63_reaclib", // 757, - "p_Ga62_to_Ge63_reaclib", // 758, - "n_Ga63_to_Ga64_reaclib", // 759, - "p_Ga63_to_Ge64_reaclib", // 760, - "n_Ge63_to_Ge64_reaclib", // 761, + "d_He4_to_Li6_reaclib", // 393, + "He3_n_to_He4_reaclib", // 394, + "He3_p_to_He4_beta_pos_reaclib", // 395, + "He3_He4_to_Be7_reaclib", // 396, + "Li6_n_to_Li7_reaclib", // 397, + "Li6_p_to_Be7_reaclib", // 398, + "Li6_He4_to_B10_reaclib", // 399, + "Li7_He4_to_B11_reaclib", // 400, + "Be7_p_to_B8_reaclib", // 401, + "Be9_p_to_B10_reaclib", // 402, + "B10_n_to_B11_reaclib", // 403, + "B11_p_to_C12_reaclib", // 404, + "C12_n_to_C13_reaclib", // 405, + "C12_p_to_N13_reaclib", // 406, + "C12_He4_to_O16_reaclib", // 407, + "C13_n_to_C14_reaclib", // 408, + "C13_p_to_N14_reaclib", // 409, + "C14_p_to_N15_reaclib", // 410, + "C14_He4_to_O18_reaclib", // 411, + "N13_n_to_N14_reaclib", // 412, + "N13_p_to_O14_reaclib", // 413, + "N14_n_to_N15_reaclib", // 414, + "N14_p_to_O15_reaclib", // 415, + "N14_He4_to_F18_reaclib", // 416, + "N15_p_to_O16_reaclib", // 417, + "N15_He4_to_F19_reaclib", // 418, + "O14_n_to_O15_reaclib", // 419, + "O14_He4_to_Ne18_reaclib", // 420, + "O15_n_to_O16_reaclib", // 421, + "O15_He4_to_Ne19_reaclib", // 422, + "O16_n_to_O17_reaclib", // 423, + "O16_p_to_F17_reaclib", // 424, + "O16_He4_to_Ne20_reaclib", // 425, + "O17_n_to_O18_reaclib", // 426, + "O17_p_to_F18_reaclib", // 427, + "O17_He4_to_Ne21_reaclib", // 428, + "O18_p_to_F19_reaclib", // 429, + "O18_He4_to_Ne22_reaclib", // 430, + "F17_n_to_F18_reaclib", // 431, + "F17_p_to_Ne18_reaclib", // 432, + "F17_He4_to_Na21_reaclib", // 433, + "F18_n_to_F19_reaclib", // 434, + "F18_p_to_Ne19_reaclib", // 435, + "F18_He4_to_Na22_reaclib", // 436, + "F19_p_to_Ne20_reaclib", // 437, + "F19_He4_to_Na23_reaclib", // 438, + "Ne18_n_to_Ne19_reaclib", // 439, + "Ne19_n_to_Ne20_reaclib", // 440, + "Ne19_He4_to_Mg23_reaclib", // 441, + "Ne20_n_to_Ne21_reaclib", // 442, + "Ne20_p_to_Na21_reaclib", // 443, + "Ne20_He4_to_Mg24_reaclib", // 444, + "Ne21_n_to_Ne22_reaclib", // 445, + "Ne21_p_to_Na22_reaclib", // 446, + "Ne21_He4_to_Mg25_reaclib", // 447, + "Ne22_p_to_Na23_reaclib", // 448, + "Ne22_He4_to_Mg26_reaclib", // 449, + "Na21_n_to_Na22_reaclib", // 450, + "Na21_He4_to_Al25_reaclib", // 451, + "Na22_n_to_Na23_reaclib", // 452, + "Na22_p_to_Mg23_reaclib", // 453, + "Na22_He4_to_Al26_reaclib", // 454, + "Na23_p_to_Mg24_reaclib", // 455, + "Na23_He4_to_Al27_reaclib", // 456, + "Mg23_n_to_Mg24_reaclib", // 457, + "Mg24_n_to_Mg25_reaclib", // 458, + "Mg24_p_to_Al25_reaclib", // 459, + "Mg24_He4_to_Si28_reaclib", // 460, + "Mg25_n_to_Mg26_reaclib", // 461, + "Mg25_p_to_Al26_reaclib", // 462, + "Mg25_He4_to_Si29_reaclib", // 463, + "Mg26_p_to_Al27_reaclib", // 464, + "Mg26_He4_to_Si30_reaclib", // 465, + "Al25_n_to_Al26_reaclib", // 466, + "Al25_He4_to_P29_reaclib", // 467, + "Al26_n_to_Al27_reaclib", // 468, + "Al26_He4_to_P30_reaclib", // 469, + "Al27_p_to_Si28_reaclib", // 470, + "Al27_He4_to_P31_reaclib", // 471, + "Si28_n_to_Si29_reaclib", // 472, + "Si28_p_to_P29_reaclib", // 473, + "Si28_He4_to_S32_reaclib", // 474, + "Si29_n_to_Si30_reaclib", // 475, + "Si29_p_to_P30_reaclib", // 476, + "Si29_He4_to_S33_reaclib", // 477, + "Si30_n_to_Si31_reaclib", // 478, + "Si30_p_to_P31_reaclib", // 479, + "Si30_He4_to_S34_reaclib", // 480, + "Si31_n_to_Si32_reaclib", // 481, + "Si31_p_to_P32_reaclib", // 482, + "Si31_He4_to_S35_reaclib", // 483, + "Si32_p_to_P33_reaclib", // 484, + "Si32_He4_to_S36_reaclib", // 485, + "P29_n_to_P30_reaclib", // 486, + "P29_He4_to_Cl33_reaclib", // 487, + "P30_n_to_P31_reaclib", // 488, + "P30_He4_to_Cl34_reaclib", // 489, + "P31_n_to_P32_reaclib", // 490, + "P31_p_to_S32_reaclib", // 491, + "P31_He4_to_Cl35_reaclib", // 492, + "P32_n_to_P33_reaclib", // 493, + "P32_p_to_S33_reaclib", // 494, + "P32_He4_to_Cl36_reaclib", // 495, + "P33_p_to_S34_reaclib", // 496, + "P33_He4_to_Cl37_reaclib", // 497, + "S32_n_to_S33_reaclib", // 498, + "S32_p_to_Cl33_reaclib", // 499, + "S32_He4_to_Ar36_reaclib", // 500, + "S33_n_to_S34_reaclib", // 501, + "S33_p_to_Cl34_reaclib", // 502, + "S33_He4_to_Ar37_reaclib", // 503, + "S34_n_to_S35_reaclib", // 504, + "S34_p_to_Cl35_reaclib", // 505, + "S34_He4_to_Ar38_reaclib", // 506, + "S35_n_to_S36_reaclib", // 507, + "S35_p_to_Cl36_reaclib", // 508, + "S35_He4_to_Ar39_reaclib", // 509, + "S36_p_to_Cl37_reaclib", // 510, + "S36_He4_to_Ar40_reaclib", // 511, + "Cl33_n_to_Cl34_reaclib", // 512, + "Cl33_He4_to_K37_reaclib", // 513, + "Cl34_n_to_Cl35_reaclib", // 514, + "Cl34_He4_to_K38_reaclib", // 515, + "Cl35_n_to_Cl36_reaclib", // 516, + "Cl35_p_to_Ar36_reaclib", // 517, + "Cl35_He4_to_K39_reaclib", // 518, + "Cl36_n_to_Cl37_reaclib", // 519, + "Cl36_p_to_Ar37_reaclib", // 520, + "Cl36_He4_to_K40_reaclib", // 521, + "Cl37_p_to_Ar38_reaclib", // 522, + "Cl37_He4_to_K41_reaclib", // 523, + "Ar36_n_to_Ar37_reaclib", // 524, + "Ar36_p_to_K37_reaclib", // 525, + "Ar36_He4_to_Ca40_reaclib", // 526, + "Ar37_n_to_Ar38_reaclib", // 527, + "Ar37_p_to_K38_reaclib", // 528, + "Ar37_He4_to_Ca41_reaclib", // 529, + "Ar38_n_to_Ar39_reaclib", // 530, + "Ar38_p_to_K39_reaclib", // 531, + "Ar38_He4_to_Ca42_reaclib", // 532, + "Ar39_n_to_Ar40_reaclib", // 533, + "Ar39_p_to_K40_reaclib", // 534, + "Ar39_He4_to_Ca43_reaclib", // 535, + "Ar40_p_to_K41_reaclib", // 536, + "Ar40_He4_to_Ca44_reaclib", // 537, + "K37_n_to_K38_reaclib", // 538, + "K38_n_to_K39_reaclib", // 539, + "K39_n_to_K40_reaclib", // 540, + "K39_p_to_Ca40_reaclib", // 541, + "K39_He4_to_Sc43_reaclib", // 542, + "K40_n_to_K41_reaclib", // 543, + "K40_p_to_Ca41_reaclib", // 544, + "K40_He4_to_Sc44_reaclib", // 545, + "K41_p_to_Ca42_reaclib", // 546, + "K41_He4_to_Sc45_reaclib", // 547, + "Ca40_n_to_Ca41_reaclib", // 548, + "Ca40_He4_to_Ti44_reaclib", // 549, + "Ca41_n_to_Ca42_reaclib", // 550, + "Ca41_He4_to_Ti45_reaclib", // 551, + "Ca42_n_to_Ca43_reaclib", // 552, + "Ca42_p_to_Sc43_reaclib", // 553, + "Ca42_He4_to_Ti46_reaclib", // 554, + "Ca43_n_to_Ca44_reaclib", // 555, + "Ca43_p_to_Sc44_reaclib", // 556, + "Ca43_He4_to_Ti47_reaclib", // 557, + "Ca44_n_to_Ca45_reaclib", // 558, + "Ca44_p_to_Sc45_reaclib", // 559, + "Ca44_He4_to_Ti48_reaclib", // 560, + "Ca45_n_to_Ca46_reaclib", // 561, + "Ca45_p_to_Sc46_reaclib", // 562, + "Ca45_He4_to_Ti49_reaclib", // 563, + "Ca46_n_to_Ca47_reaclib", // 564, + "Ca46_p_to_Sc47_reaclib", // 565, + "Ca46_He4_to_Ti50_reaclib", // 566, + "Ca47_n_to_Ca48_reaclib", // 567, + "Ca47_p_to_Sc48_reaclib", // 568, + "Ca47_He4_to_Ti51_reaclib", // 569, + "Ca48_p_to_Sc49_reaclib", // 570, + "Sc43_n_to_Sc44_reaclib", // 571, + "Sc43_p_to_Ti44_reaclib", // 572, + "Sc43_He4_to_V47_reaclib", // 573, + "Sc44_n_to_Sc45_reaclib", // 574, + "Sc44_p_to_Ti45_reaclib", // 575, + "Sc44_He4_to_V48_reaclib", // 576, + "Sc45_n_to_Sc46_reaclib", // 577, + "Sc45_p_to_Ti46_reaclib", // 578, + "Sc45_He4_to_V49_reaclib", // 579, + "Sc46_n_to_Sc47_reaclib", // 580, + "Sc46_p_to_Ti47_reaclib", // 581, + "Sc46_He4_to_V50_reaclib", // 582, + "Sc47_n_to_Sc48_reaclib", // 583, + "Sc47_p_to_Ti48_reaclib", // 584, + "Sc47_He4_to_V51_reaclib", // 585, + "Sc48_n_to_Sc49_reaclib", // 586, + "Sc48_p_to_Ti49_reaclib", // 587, + "Sc48_He4_to_V52_reaclib", // 588, + "Sc49_p_to_Ti50_reaclib", // 589, + "Ti44_n_to_Ti45_reaclib", // 590, + "Ti44_He4_to_Cr48_reaclib", // 591, + "Ti45_n_to_Ti46_reaclib", // 592, + "Ti45_p_to_V46_reaclib", // 593, + "Ti45_He4_to_Cr49_reaclib", // 594, + "Ti46_n_to_Ti47_reaclib", // 595, + "Ti46_p_to_V47_reaclib", // 596, + "Ti46_He4_to_Cr50_reaclib", // 597, + "Ti47_n_to_Ti48_reaclib", // 598, + "Ti47_p_to_V48_reaclib", // 599, + "Ti47_He4_to_Cr51_reaclib", // 600, + "Ti48_n_to_Ti49_reaclib", // 601, + "Ti48_p_to_V49_reaclib", // 602, + "Ti48_He4_to_Cr52_reaclib", // 603, + "Ti49_n_to_Ti50_reaclib", // 604, + "Ti49_p_to_V50_reaclib", // 605, + "Ti49_He4_to_Cr53_reaclib", // 606, + "Ti50_n_to_Ti51_reaclib", // 607, + "Ti50_p_to_V51_reaclib", // 608, + "Ti50_He4_to_Cr54_reaclib", // 609, + "Ti51_p_to_V52_reaclib", // 610, + "V46_n_to_V47_reaclib", // 611, + "V46_He4_to_Mn50_reaclib", // 612, + "V47_n_to_V48_reaclib", // 613, + "V47_p_to_Cr48_reaclib", // 614, + "V47_He4_to_Mn51_reaclib", // 615, + "V48_n_to_V49_reaclib", // 616, + "V48_p_to_Cr49_reaclib", // 617, + "V48_He4_to_Mn52_reaclib", // 618, + "V49_n_to_V50_reaclib", // 619, + "V49_p_to_Cr50_reaclib", // 620, + "V49_He4_to_Mn53_reaclib", // 621, + "V50_n_to_V51_reaclib", // 622, + "V50_p_to_Cr51_reaclib", // 623, + "V50_He4_to_Mn54_reaclib", // 624, + "V51_n_to_V52_reaclib", // 625, + "V51_p_to_Cr52_reaclib", // 626, + "V51_He4_to_Mn55_reaclib", // 627, + "V52_p_to_Cr53_reaclib", // 628, + "Cr48_n_to_Cr49_reaclib", // 629, + "Cr48_He4_to_Fe52_reaclib", // 630, + "Cr49_n_to_Cr50_reaclib", // 631, + "Cr49_p_to_Mn50_reaclib", // 632, + "Cr49_He4_to_Fe53_reaclib", // 633, + "Cr50_n_to_Cr51_reaclib", // 634, + "Cr50_p_to_Mn51_reaclib", // 635, + "Cr50_He4_to_Fe54_reaclib", // 636, + "Cr51_n_to_Cr52_reaclib", // 637, + "Cr51_p_to_Mn52_reaclib", // 638, + "Cr51_He4_to_Fe55_reaclib", // 639, + "Cr52_n_to_Cr53_reaclib", // 640, + "Cr52_p_to_Mn53_reaclib", // 641, + "Cr52_He4_to_Fe56_reaclib", // 642, + "Cr53_n_to_Cr54_reaclib", // 643, + "Cr53_p_to_Mn54_reaclib", // 644, + "Cr53_He4_to_Fe57_reaclib", // 645, + "Cr54_p_to_Mn55_reaclib", // 646, + "Cr54_He4_to_Fe58_reaclib", // 647, + "Mn50_n_to_Mn51_reaclib", // 648, + "Mn50_He4_to_Co54_reaclib", // 649, + "Mn51_n_to_Mn52_reaclib", // 650, + "Mn51_p_to_Fe52_reaclib", // 651, + "Mn51_He4_to_Co55_reaclib", // 652, + "Mn52_n_to_Mn53_reaclib", // 653, + "Mn52_p_to_Fe53_reaclib", // 654, + "Mn52_He4_to_Co56_reaclib", // 655, + "Mn53_n_to_Mn54_reaclib", // 656, + "Mn53_p_to_Fe54_reaclib", // 657, + "Mn53_He4_to_Co57_reaclib", // 658, + "Mn54_n_to_Mn55_reaclib", // 659, + "Mn54_p_to_Fe55_reaclib", // 660, + "Mn54_He4_to_Co58_reaclib", // 661, + "Mn55_p_to_Fe56_reaclib", // 662, + "Mn55_He4_to_Co59_reaclib", // 663, + "Fe52_n_to_Fe53_reaclib", // 664, + "Fe52_p_to_Co53_reaclib", // 665, + "Fe52_He4_to_Ni56_reaclib", // 666, + "Fe53_n_to_Fe54_reaclib", // 667, + "Fe53_p_to_Co54_reaclib", // 668, + "Fe53_He4_to_Ni57_reaclib", // 669, + "Fe54_n_to_Fe55_reaclib", // 670, + "Fe54_p_to_Co55_reaclib", // 671, + "Fe54_He4_to_Ni58_reaclib", // 672, + "Fe55_n_to_Fe56_reaclib", // 673, + "Fe55_p_to_Co56_reaclib", // 674, + "Fe55_He4_to_Ni59_reaclib", // 675, + "Fe56_n_to_Fe57_reaclib", // 676, + "Fe56_p_to_Co57_reaclib", // 677, + "Fe56_He4_to_Ni60_reaclib", // 678, + "Fe57_n_to_Fe58_reaclib", // 679, + "Fe57_p_to_Co58_reaclib", // 680, + "Fe57_He4_to_Ni61_reaclib", // 681, + "Fe58_p_to_Co59_reaclib", // 682, + "Fe58_He4_to_Ni62_reaclib", // 683, + "Co53_n_to_Co54_reaclib", // 684, + "Co53_He4_to_Cu57_reaclib", // 685, + "Co54_n_to_Co55_reaclib", // 686, + "Co54_He4_to_Cu58_reaclib", // 687, + "Co55_n_to_Co56_reaclib", // 688, + "Co55_p_to_Ni56_reaclib", // 689, + "Co55_He4_to_Cu59_reaclib", // 690, + "Co56_n_to_Co57_reaclib", // 691, + "Co56_p_to_Ni57_reaclib", // 692, + "Co56_He4_to_Cu60_reaclib", // 693, + "Co57_n_to_Co58_reaclib", // 694, + "Co57_p_to_Ni58_reaclib", // 695, + "Co57_He4_to_Cu61_reaclib", // 696, + "Co58_n_to_Co59_reaclib", // 697, + "Co58_p_to_Ni59_reaclib", // 698, + "Co58_He4_to_Cu62_reaclib", // 699, + "Co59_p_to_Ni60_reaclib", // 700, + "Co59_He4_to_Cu63_reaclib", // 701, + "Ni56_n_to_Ni57_reaclib", // 702, + "Ni56_p_to_Cu57_reaclib", // 703, + "Ni56_He4_to_Zn60_reaclib", // 704, + "Ni57_n_to_Ni58_reaclib", // 705, + "Ni57_p_to_Cu58_reaclib", // 706, + "Ni57_He4_to_Zn61_reaclib", // 707, + "Ni58_n_to_Ni59_reaclib", // 708, + "Ni58_p_to_Cu59_reaclib", // 709, + "Ni58_He4_to_Zn62_reaclib", // 710, + "Ni59_n_to_Ni60_reaclib", // 711, + "Ni59_p_to_Cu60_reaclib", // 712, + "Ni59_He4_to_Zn63_reaclib", // 713, + "Ni60_n_to_Ni61_reaclib", // 714, + "Ni60_p_to_Cu61_reaclib", // 715, + "Ni60_He4_to_Zn64_reaclib", // 716, + "Ni61_n_to_Ni62_reaclib", // 717, + "Ni61_p_to_Cu62_reaclib", // 718, + "Ni61_He4_to_Zn65_reaclib", // 719, + "Ni62_n_to_Ni63_reaclib", // 720, + "Ni62_p_to_Cu63_reaclib", // 721, + "Ni62_He4_to_Zn66_reaclib", // 722, + "Ni63_n_to_Ni64_reaclib", // 723, + "Ni63_p_to_Cu64_reaclib", // 724, + "Ni64_p_to_Cu65_reaclib", // 725, + "Cu57_n_to_Cu58_reaclib", // 726, + "Cu58_n_to_Cu59_reaclib", // 727, + "Cu58_p_to_Zn59_reaclib", // 728, + "Cu58_He4_to_Ga62_reaclib", // 729, + "Cu59_n_to_Cu60_reaclib", // 730, + "Cu59_p_to_Zn60_reaclib", // 731, + "Cu59_He4_to_Ga63_reaclib", // 732, + "Cu60_n_to_Cu61_reaclib", // 733, + "Cu60_p_to_Zn61_reaclib", // 734, + "Cu60_He4_to_Ga64_reaclib", // 735, + "Cu61_n_to_Cu62_reaclib", // 736, + "Cu61_p_to_Zn62_reaclib", // 737, + "Cu62_n_to_Cu63_reaclib", // 738, + "Cu62_p_to_Zn63_reaclib", // 739, + "Cu63_n_to_Cu64_reaclib", // 740, + "Cu63_p_to_Zn64_reaclib", // 741, + "Cu64_n_to_Cu65_reaclib", // 742, + "Cu64_p_to_Zn65_reaclib", // 743, + "Cu65_p_to_Zn66_reaclib", // 744, + "Zn59_n_to_Zn60_reaclib", // 745, + "Zn59_He4_to_Ge63_reaclib", // 746, + "Zn60_n_to_Zn61_reaclib", // 747, + "Zn60_He4_to_Ge64_reaclib", // 748, + "Zn61_n_to_Zn62_reaclib", // 749, + "Zn61_p_to_Ga62_reaclib", // 750, + "Zn62_n_to_Zn63_reaclib", // 751, + "Zn62_p_to_Ga63_reaclib", // 752, + "Zn63_n_to_Zn64_reaclib", // 753, + "Zn63_p_to_Ga64_reaclib", // 754, + "Zn64_n_to_Zn65_reaclib", // 755, + "Zn65_n_to_Zn66_reaclib", // 756, + "Ga62_n_to_Ga63_reaclib", // 757, + "Ga62_p_to_Ge63_reaclib", // 758, + "Ga63_n_to_Ga64_reaclib", // 759, + "Ga63_p_to_Ge64_reaclib", // 760, + "Ge63_n_to_Ge64_reaclib", // 761, "d_d_to_n_He3_reaclib", // 762, - "n_He3_to_d_d_reaclib", // 763, - "d_He3_to_p_He4_reaclib", // 764, - "He4_He3_to_p_Li6_reaclib", // 765, - "p_He4_to_d_He3_reaclib", // 766, + "He3_n_to_d_d_reaclib", // 763, + "He3_d_to_p_He4_reaclib", // 764, + "He3_He4_to_p_Li6_reaclib", // 765, + "He4_p_to_d_He3_reaclib", // 766, "He4_He4_to_n_Be7_reaclib", // 767, "He4_He4_to_p_Li7_reaclib", // 768, - "p_Li6_to_He4_He3_reaclib", // 769, - "d_Li6_to_n_Be7_reaclib", // 770, - "d_Li6_to_p_Li7_reaclib", // 771, - "He4_Li6_to_p_Be9_reaclib", // 772, - "p_Li7_to_n_Be7_reaclib", // 773, - "p_Li7_to_d_Li6_reaclib", // 774, - "p_Li7_to_He4_He4_reaclib", // 775, - "He4_Li7_to_n_B10_reaclib", // 776, - "n_Be7_to_p_Li7_reaclib", // 777, - "n_Be7_to_d_Li6_reaclib", // 778, - "n_Be7_to_He4_He4_reaclib", // 779, - "He4_Be7_to_p_B10_reaclib", // 780, - "p_Be9_to_He4_Li6_reaclib", // 781, - "He4_Be9_to_n_C12_reaclib", // 782, - "n_B10_to_He4_Li7_reaclib", // 783, - "p_B10_to_He4_Be7_reaclib", // 784, - "He4_B10_to_n_N13_reaclib", // 785, - "He4_B10_to_p_C13_reaclib", // 786, - "He4_B11_to_n_N14_reaclib", // 787, - "He4_B11_to_p_C14_reaclib", // 788, - "n_C12_to_He4_Be9_reaclib", // 789, - "He4_C12_to_n_O15_reaclib", // 790, - "He4_C12_to_p_N15_reaclib", // 791, + "Li6_p_to_He4_He3_reaclib", // 769, + "Li6_d_to_n_Be7_reaclib", // 770, + "Li6_d_to_p_Li7_reaclib", // 771, + "Li6_He4_to_p_Be9_reaclib", // 772, + "Li7_p_to_n_Be7_reaclib", // 773, + "Li7_p_to_d_Li6_reaclib", // 774, + "Li7_p_to_He4_He4_reaclib", // 775, + "Li7_He4_to_n_B10_reaclib", // 776, + "Be7_n_to_p_Li7_reaclib", // 777, + "Be7_n_to_d_Li6_reaclib", // 778, + "Be7_n_to_He4_He4_reaclib", // 779, + "Be7_He4_to_p_B10_reaclib", // 780, + "Be9_p_to_He4_Li6_reaclib", // 781, + "Be9_He4_to_n_C12_reaclib", // 782, + "B10_n_to_He4_Li7_reaclib", // 783, + "B10_p_to_He4_Be7_reaclib", // 784, + "B10_He4_to_n_N13_reaclib", // 785, + "B10_He4_to_p_C13_reaclib", // 786, + "B11_He4_to_n_N14_reaclib", // 787, + "B11_He4_to_p_C14_reaclib", // 788, + "C12_n_to_He4_Be9_reaclib", // 789, + "C12_He4_to_n_O15_reaclib", // 790, + "C12_He4_to_p_N15_reaclib", // 791, "C12_C12_to_n_Mg23_reaclib", // 792, "C12_C12_to_p_Na23_reaclib", // 793, "C12_C12_to_He4_Ne20_reaclib", // 794, - "p_C13_to_n_N13_reaclib", // 795, - "p_C13_to_He4_B10_reaclib", // 796, - "d_C13_to_n_N14_reaclib", // 797, - "He4_C13_to_n_O16_reaclib", // 798, - "p_C14_to_n_N14_reaclib", // 799, - "p_C14_to_He4_B11_reaclib", // 800, - "d_C14_to_n_N15_reaclib", // 801, - "He4_C14_to_n_O17_reaclib", // 802, - "n_N13_to_p_C13_reaclib", // 803, - "n_N13_to_He4_B10_reaclib", // 804, - "He4_N13_to_p_O16_reaclib", // 805, - "n_N14_to_p_C14_reaclib", // 806, - "n_N14_to_d_C13_reaclib", // 807, - "n_N14_to_He4_B11_reaclib", // 808, - "p_N14_to_n_O14_reaclib", // 809, - "He4_N14_to_n_F17_reaclib", // 810, - "He4_N14_to_p_O17_reaclib", // 811, - "n_N15_to_d_C14_reaclib", // 812, - "p_N15_to_n_O15_reaclib", // 813, - "p_N15_to_He4_C12_reaclib", // 814, - "He4_N15_to_n_F18_reaclib", // 815, - "He4_N15_to_p_O18_reaclib", // 816, - "n_O14_to_p_N14_reaclib", // 817, - "He4_O14_to_p_F17_reaclib", // 818, - "n_O15_to_p_N15_reaclib", // 819, - "n_O15_to_He4_C12_reaclib", // 820, - "He4_O15_to_n_Ne18_reaclib", // 821, - "He4_O15_to_p_F18_reaclib", // 822, - "n_O16_to_He4_C13_reaclib", // 823, - "p_O16_to_He4_N13_reaclib", // 824, - "He4_O16_to_n_Ne19_reaclib", // 825, - "He4_O16_to_p_F19_reaclib", // 826, - "C12_O16_to_p_Al27_reaclib", // 827, - "C12_O16_to_He4_Mg24_reaclib", // 828, + "C13_p_to_n_N13_reaclib", // 795, + "C13_p_to_He4_B10_reaclib", // 796, + "C13_d_to_n_N14_reaclib", // 797, + "C13_He4_to_n_O16_reaclib", // 798, + "C14_p_to_n_N14_reaclib", // 799, + "C14_p_to_He4_B11_reaclib", // 800, + "C14_d_to_n_N15_reaclib", // 801, + "C14_He4_to_n_O17_reaclib", // 802, + "N13_n_to_p_C13_reaclib", // 803, + "N13_n_to_He4_B10_reaclib", // 804, + "N13_He4_to_p_O16_reaclib", // 805, + "N14_n_to_p_C14_reaclib", // 806, + "N14_n_to_d_C13_reaclib", // 807, + "N14_n_to_He4_B11_reaclib", // 808, + "N14_p_to_n_O14_reaclib", // 809, + "N14_He4_to_n_F17_reaclib", // 810, + "N14_He4_to_p_O17_reaclib", // 811, + "N15_n_to_d_C14_reaclib", // 812, + "N15_p_to_n_O15_reaclib", // 813, + "N15_p_to_He4_C12_reaclib", // 814, + "N15_He4_to_n_F18_reaclib", // 815, + "N15_He4_to_p_O18_reaclib", // 816, + "O14_n_to_p_N14_reaclib", // 817, + "O14_He4_to_p_F17_reaclib", // 818, + "O15_n_to_p_N15_reaclib", // 819, + "O15_n_to_He4_C12_reaclib", // 820, + "O15_He4_to_n_Ne18_reaclib", // 821, + "O15_He4_to_p_F18_reaclib", // 822, + "O16_n_to_He4_C13_reaclib", // 823, + "O16_p_to_He4_N13_reaclib", // 824, + "O16_He4_to_n_Ne19_reaclib", // 825, + "O16_He4_to_p_F19_reaclib", // 826, + "O16_C12_to_p_Al27_reaclib", // 827, + "O16_C12_to_He4_Mg24_reaclib", // 828, "O16_O16_to_p_P31_reaclib", // 829, "O16_O16_to_He4_Si28_reaclib", // 830, - "n_O17_to_He4_C14_reaclib", // 831, - "p_O17_to_n_F17_reaclib", // 832, - "p_O17_to_He4_N14_reaclib", // 833, - "He4_O17_to_n_Ne20_reaclib", // 834, - "p_O18_to_n_F18_reaclib", // 835, - "p_O18_to_He4_N15_reaclib", // 836, - "He4_O18_to_n_Ne21_reaclib", // 837, - "n_F17_to_p_O17_reaclib", // 838, - "n_F17_to_He4_N14_reaclib", // 839, - "p_F17_to_He4_O14_reaclib", // 840, - "He4_F17_to_p_Ne20_reaclib", // 841, - "n_F18_to_p_O18_reaclib", // 842, - "n_F18_to_He4_N15_reaclib", // 843, - "p_F18_to_n_Ne18_reaclib", // 844, - "p_F18_to_He4_O15_reaclib", // 845, - "He4_F18_to_n_Na21_reaclib", // 846, - "He4_F18_to_p_Ne21_reaclib", // 847, - "p_F19_to_n_Ne19_reaclib", // 848, - "p_F19_to_He4_O16_reaclib", // 849, - "He4_F19_to_n_Na22_reaclib", // 850, - "He4_F19_to_p_Ne22_reaclib", // 851, - "n_Ne18_to_p_F18_reaclib", // 852, - "n_Ne18_to_He4_O15_reaclib", // 853, - "He4_Ne18_to_p_Na21_reaclib", // 854, - "n_Ne19_to_p_F19_reaclib", // 855, - "n_Ne19_to_He4_O16_reaclib", // 856, - "He4_Ne19_to_p_Na22_reaclib", // 857, - "n_Ne20_to_He4_O17_reaclib", // 858, - "p_Ne20_to_He4_F17_reaclib", // 859, - "He4_Ne20_to_n_Mg23_reaclib", // 860, - "He4_Ne20_to_p_Na23_reaclib", // 861, - "He4_Ne20_to_C12_C12_reaclib", // 862, - "C12_Ne20_to_p_P31_reaclib", // 863, - "C12_Ne20_to_He4_Si28_reaclib", // 864, - "n_Ne21_to_He4_O18_reaclib", // 865, - "p_Ne21_to_n_Na21_reaclib", // 866, - "p_Ne21_to_He4_F18_reaclib", // 867, - "He4_Ne21_to_n_Mg24_reaclib", // 868, - "p_Ne22_to_n_Na22_reaclib", // 869, - "p_Ne22_to_He4_F19_reaclib", // 870, - "He4_Ne22_to_n_Mg25_reaclib", // 871, - "n_Na21_to_p_Ne21_reaclib", // 872, - "n_Na21_to_He4_F18_reaclib", // 873, - "p_Na21_to_He4_Ne18_reaclib", // 874, - "He4_Na21_to_p_Mg24_reaclib", // 875, - "n_Na22_to_p_Ne22_reaclib", // 876, - "n_Na22_to_He4_F19_reaclib", // 877, - "p_Na22_to_He4_Ne19_reaclib", // 878, - "He4_Na22_to_n_Al25_reaclib", // 879, - "He4_Na22_to_p_Mg25_reaclib", // 880, - "p_Na23_to_n_Mg23_reaclib", // 881, - "p_Na23_to_He4_Ne20_reaclib", // 882, - "p_Na23_to_C12_C12_reaclib", // 883, - "He4_Na23_to_n_Al26_reaclib", // 884, - "He4_Na23_to_p_Mg26_reaclib", // 885, - "n_Mg23_to_p_Na23_reaclib", // 886, - "n_Mg23_to_He4_Ne20_reaclib", // 887, - "n_Mg23_to_C12_C12_reaclib", // 888, - "He4_Mg23_to_p_Al26_reaclib", // 889, - "n_Mg24_to_He4_Ne21_reaclib", // 890, - "p_Mg24_to_He4_Na21_reaclib", // 891, - "He4_Mg24_to_p_Al27_reaclib", // 892, - "He4_Mg24_to_C12_O16_reaclib", // 893, - "n_Mg25_to_He4_Ne22_reaclib", // 894, - "p_Mg25_to_n_Al25_reaclib", // 895, - "p_Mg25_to_He4_Na22_reaclib", // 896, - "He4_Mg25_to_n_Si28_reaclib", // 897, - "p_Mg26_to_n_Al26_reaclib", // 898, - "p_Mg26_to_He4_Na23_reaclib", // 899, - "He4_Mg26_to_n_Si29_reaclib", // 900, - "n_Al25_to_p_Mg25_reaclib", // 901, - "n_Al25_to_He4_Na22_reaclib", // 902, - "He4_Al25_to_p_Si28_reaclib", // 903, - "n_Al26_to_p_Mg26_reaclib", // 904, - "n_Al26_to_He4_Na23_reaclib", // 905, - "p_Al26_to_He4_Mg23_reaclib", // 906, - "He4_Al26_to_n_P29_reaclib", // 907, - "He4_Al26_to_p_Si29_reaclib", // 908, - "p_Al27_to_He4_Mg24_reaclib", // 909, - "p_Al27_to_C12_O16_reaclib", // 910, - "He4_Al27_to_n_P30_reaclib", // 911, - "He4_Al27_to_p_Si30_reaclib", // 912, - "n_Si28_to_He4_Mg25_reaclib", // 913, - "p_Si28_to_He4_Al25_reaclib", // 914, - "He4_Si28_to_p_P31_reaclib", // 915, - "He4_Si28_to_C12_Ne20_reaclib", // 916, - "He4_Si28_to_O16_O16_reaclib", // 917, - "n_Si29_to_He4_Mg26_reaclib", // 918, - "p_Si29_to_n_P29_reaclib", // 919, - "p_Si29_to_He4_Al26_reaclib", // 920, - "He4_Si29_to_n_S32_reaclib", // 921, - "He4_Si29_to_p_P32_reaclib", // 922, - "p_Si30_to_n_P30_reaclib", // 923, - "p_Si30_to_He4_Al27_reaclib", // 924, - "He4_Si30_to_n_S33_reaclib", // 925, - "He4_Si30_to_p_P33_reaclib", // 926, - "p_Si31_to_n_P31_reaclib", // 927, - "He4_Si31_to_n_S34_reaclib", // 928, - "p_Si32_to_n_P32_reaclib", // 929, - "He4_Si32_to_n_S35_reaclib", // 930, - "n_P29_to_p_Si29_reaclib", // 931, - "n_P29_to_He4_Al26_reaclib", // 932, - "He4_P29_to_p_S32_reaclib", // 933, - "n_P30_to_p_Si30_reaclib", // 934, - "n_P30_to_He4_Al27_reaclib", // 935, - "He4_P30_to_n_Cl33_reaclib", // 936, - "He4_P30_to_p_S33_reaclib", // 937, - "n_P31_to_p_Si31_reaclib", // 938, - "p_P31_to_He4_Si28_reaclib", // 939, - "p_P31_to_C12_Ne20_reaclib", // 940, - "p_P31_to_O16_O16_reaclib", // 941, - "He4_P31_to_n_Cl34_reaclib", // 942, - "He4_P31_to_p_S34_reaclib", // 943, - "n_P32_to_p_Si32_reaclib", // 944, - "p_P32_to_n_S32_reaclib", // 945, - "p_P32_to_He4_Si29_reaclib", // 946, - "He4_P32_to_n_Cl35_reaclib", // 947, - "He4_P32_to_p_S35_reaclib", // 948, - "p_P33_to_n_S33_reaclib", // 949, - "p_P33_to_He4_Si30_reaclib", // 950, - "He4_P33_to_n_Cl36_reaclib", // 951, - "He4_P33_to_p_S36_reaclib", // 952, - "n_S32_to_p_P32_reaclib", // 953, - "n_S32_to_He4_Si29_reaclib", // 954, - "p_S32_to_He4_P29_reaclib", // 955, - "He4_S32_to_p_Cl35_reaclib", // 956, - "n_S33_to_p_P33_reaclib", // 957, - "n_S33_to_He4_Si30_reaclib", // 958, - "p_S33_to_n_Cl33_reaclib", // 959, - "p_S33_to_He4_P30_reaclib", // 960, - "He4_S33_to_n_Ar36_reaclib", // 961, - "He4_S33_to_p_Cl36_reaclib", // 962, - "n_S34_to_He4_Si31_reaclib", // 963, - "p_S34_to_n_Cl34_reaclib", // 964, - "p_S34_to_He4_P31_reaclib", // 965, - "He4_S34_to_n_Ar37_reaclib", // 966, - "He4_S34_to_p_Cl37_reaclib", // 967, - "n_S35_to_He4_Si32_reaclib", // 968, - "p_S35_to_n_Cl35_reaclib", // 969, - "p_S35_to_He4_P32_reaclib", // 970, - "He4_S35_to_n_Ar38_reaclib", // 971, - "p_S36_to_n_Cl36_reaclib", // 972, - "p_S36_to_He4_P33_reaclib", // 973, - "He4_S36_to_n_Ar39_reaclib", // 974, - "n_Cl33_to_p_S33_reaclib", // 975, - "n_Cl33_to_He4_P30_reaclib", // 976, - "He4_Cl33_to_p_Ar36_reaclib", // 977, - "n_Cl34_to_p_S34_reaclib", // 978, - "n_Cl34_to_He4_P31_reaclib", // 979, - "He4_Cl34_to_n_K37_reaclib", // 980, - "He4_Cl34_to_p_Ar37_reaclib", // 981, - "n_Cl35_to_p_S35_reaclib", // 982, - "n_Cl35_to_He4_P32_reaclib", // 983, - "p_Cl35_to_He4_S32_reaclib", // 984, - "He4_Cl35_to_n_K38_reaclib", // 985, - "He4_Cl35_to_p_Ar38_reaclib", // 986, - "n_Cl36_to_p_S36_reaclib", // 987, - "n_Cl36_to_He4_P33_reaclib", // 988, - "p_Cl36_to_n_Ar36_reaclib", // 989, - "p_Cl36_to_He4_S33_reaclib", // 990, - "He4_Cl36_to_n_K39_reaclib", // 991, - "He4_Cl36_to_p_Ar39_reaclib", // 992, - "p_Cl37_to_n_Ar37_reaclib", // 993, - "p_Cl37_to_He4_S34_reaclib", // 994, - "He4_Cl37_to_n_K40_reaclib", // 995, - "He4_Cl37_to_p_Ar40_reaclib", // 996, - "n_Ar36_to_p_Cl36_reaclib", // 997, - "n_Ar36_to_He4_S33_reaclib", // 998, - "p_Ar36_to_He4_Cl33_reaclib", // 999, - "He4_Ar36_to_p_K39_reaclib", // 1000, - "n_Ar37_to_p_Cl37_reaclib", // 1001, - "n_Ar37_to_He4_S34_reaclib", // 1002, - "p_Ar37_to_n_K37_reaclib", // 1003, - "p_Ar37_to_He4_Cl34_reaclib", // 1004, - "He4_Ar37_to_n_Ca40_reaclib", // 1005, - "He4_Ar37_to_p_K40_reaclib", // 1006, - "n_Ar38_to_He4_S35_reaclib", // 1007, - "p_Ar38_to_n_K38_reaclib", // 1008, - "p_Ar38_to_He4_Cl35_reaclib", // 1009, - "He4_Ar38_to_n_Ca41_reaclib", // 1010, - "He4_Ar38_to_p_K41_reaclib", // 1011, - "n_Ar39_to_He4_S36_reaclib", // 1012, - "p_Ar39_to_n_K39_reaclib", // 1013, - "p_Ar39_to_He4_Cl36_reaclib", // 1014, - "He4_Ar39_to_n_Ca42_reaclib", // 1015, - "p_Ar40_to_n_K40_reaclib", // 1016, - "p_Ar40_to_He4_Cl37_reaclib", // 1017, - "He4_Ar40_to_n_Ca43_reaclib", // 1018, - "n_K37_to_p_Ar37_reaclib", // 1019, - "n_K37_to_He4_Cl34_reaclib", // 1020, - "He4_K37_to_p_Ca40_reaclib", // 1021, - "n_K38_to_p_Ar38_reaclib", // 1022, - "n_K38_to_He4_Cl35_reaclib", // 1023, - "He4_K38_to_p_Ca41_reaclib", // 1024, - "n_K39_to_p_Ar39_reaclib", // 1025, - "n_K39_to_He4_Cl36_reaclib", // 1026, - "p_K39_to_He4_Ar36_reaclib", // 1027, - "He4_K39_to_p_Ca42_reaclib", // 1028, - "n_K40_to_p_Ar40_reaclib", // 1029, - "n_K40_to_He4_Cl37_reaclib", // 1030, - "p_K40_to_n_Ca40_reaclib", // 1031, - "p_K40_to_He4_Ar37_reaclib", // 1032, - "He4_K40_to_n_Sc43_reaclib", // 1033, - "He4_K40_to_p_Ca43_reaclib", // 1034, - "p_K41_to_n_Ca41_reaclib", // 1035, - "p_K41_to_He4_Ar38_reaclib", // 1036, - "He4_K41_to_n_Sc44_reaclib", // 1037, - "He4_K41_to_p_Ca44_reaclib", // 1038, - "n_Ca40_to_p_K40_reaclib", // 1039, - "n_Ca40_to_He4_Ar37_reaclib", // 1040, - "p_Ca40_to_He4_K37_reaclib", // 1041, - "He4_Ca40_to_p_Sc43_reaclib", // 1042, - "n_Ca41_to_p_K41_reaclib", // 1043, - "n_Ca41_to_He4_Ar38_reaclib", // 1044, - "p_Ca41_to_He4_K38_reaclib", // 1045, - "He4_Ca41_to_n_Ti44_reaclib", // 1046, - "He4_Ca41_to_p_Sc44_reaclib", // 1047, - "n_Ca42_to_He4_Ar39_reaclib", // 1048, - "p_Ca42_to_He4_K39_reaclib", // 1049, - "He4_Ca42_to_n_Ti45_reaclib", // 1050, - "He4_Ca42_to_p_Sc45_reaclib", // 1051, - "n_Ca43_to_He4_Ar40_reaclib", // 1052, - "p_Ca43_to_n_Sc43_reaclib", // 1053, - "p_Ca43_to_He4_K40_reaclib", // 1054, - "He4_Ca43_to_n_Ti46_reaclib", // 1055, - "He4_Ca43_to_p_Sc46_reaclib", // 1056, - "p_Ca44_to_n_Sc44_reaclib", // 1057, - "p_Ca44_to_He4_K41_reaclib", // 1058, - "He4_Ca44_to_n_Ti47_reaclib", // 1059, - "He4_Ca44_to_p_Sc47_reaclib", // 1060, - "p_Ca45_to_n_Sc45_reaclib", // 1061, - "He4_Ca45_to_n_Ti48_reaclib", // 1062, - "He4_Ca45_to_p_Sc48_reaclib", // 1063, - "p_Ca46_to_n_Sc46_reaclib", // 1064, - "He4_Ca46_to_n_Ti49_reaclib", // 1065, - "He4_Ca46_to_p_Sc49_reaclib", // 1066, - "p_Ca47_to_n_Sc47_reaclib", // 1067, - "He4_Ca47_to_n_Ti50_reaclib", // 1068, - "p_Ca48_to_n_Sc48_reaclib", // 1069, - "He4_Ca48_to_n_Ti51_reaclib", // 1070, - "n_Sc43_to_p_Ca43_reaclib", // 1071, - "n_Sc43_to_He4_K40_reaclib", // 1072, - "p_Sc43_to_He4_Ca40_reaclib", // 1073, - "He4_Sc43_to_n_V46_reaclib", // 1074, - "He4_Sc43_to_p_Ti46_reaclib", // 1075, - "n_Sc44_to_p_Ca44_reaclib", // 1076, - "n_Sc44_to_He4_K41_reaclib", // 1077, - "p_Sc44_to_n_Ti44_reaclib", // 1078, - "p_Sc44_to_He4_Ca41_reaclib", // 1079, - "He4_Sc44_to_n_V47_reaclib", // 1080, - "He4_Sc44_to_p_Ti47_reaclib", // 1081, - "n_Sc45_to_p_Ca45_reaclib", // 1082, - "p_Sc45_to_n_Ti45_reaclib", // 1083, - "p_Sc45_to_He4_Ca42_reaclib", // 1084, - "He4_Sc45_to_n_V48_reaclib", // 1085, - "He4_Sc45_to_p_Ti48_reaclib", // 1086, - "n_Sc46_to_p_Ca46_reaclib", // 1087, - "p_Sc46_to_n_Ti46_reaclib", // 1088, - "p_Sc46_to_He4_Ca43_reaclib", // 1089, - "He4_Sc46_to_n_V49_reaclib", // 1090, - "He4_Sc46_to_p_Ti49_reaclib", // 1091, - "n_Sc47_to_p_Ca47_reaclib", // 1092, - "p_Sc47_to_n_Ti47_reaclib", // 1093, - "p_Sc47_to_He4_Ca44_reaclib", // 1094, - "He4_Sc47_to_n_V50_reaclib", // 1095, - "He4_Sc47_to_p_Ti50_reaclib", // 1096, - "n_Sc48_to_p_Ca48_reaclib", // 1097, - "p_Sc48_to_n_Ti48_reaclib", // 1098, - "p_Sc48_to_He4_Ca45_reaclib", // 1099, - "He4_Sc48_to_n_V51_reaclib", // 1100, - "He4_Sc48_to_p_Ti51_reaclib", // 1101, - "p_Sc49_to_n_Ti49_reaclib", // 1102, - "p_Sc49_to_He4_Ca46_reaclib", // 1103, - "He4_Sc49_to_n_V52_reaclib", // 1104, - "n_Ti44_to_p_Sc44_reaclib", // 1105, - "n_Ti44_to_He4_Ca41_reaclib", // 1106, - "He4_Ti44_to_p_V47_reaclib", // 1107, - "n_Ti45_to_p_Sc45_reaclib", // 1108, - "n_Ti45_to_He4_Ca42_reaclib", // 1109, - "He4_Ti45_to_n_Cr48_reaclib", // 1110, - "He4_Ti45_to_p_V48_reaclib", // 1111, - "n_Ti46_to_p_Sc46_reaclib", // 1112, - "n_Ti46_to_He4_Ca43_reaclib", // 1113, - "p_Ti46_to_n_V46_reaclib", // 1114, - "p_Ti46_to_He4_Sc43_reaclib", // 1115, - "He4_Ti46_to_n_Cr49_reaclib", // 1116, - "He4_Ti46_to_p_V49_reaclib", // 1117, - "n_Ti47_to_p_Sc47_reaclib", // 1118, - "n_Ti47_to_He4_Ca44_reaclib", // 1119, - "p_Ti47_to_n_V47_reaclib", // 1120, - "p_Ti47_to_He4_Sc44_reaclib", // 1121, - "He4_Ti47_to_n_Cr50_reaclib", // 1122, - "He4_Ti47_to_p_V50_reaclib", // 1123, - "n_Ti48_to_p_Sc48_reaclib", // 1124, - "n_Ti48_to_He4_Ca45_reaclib", // 1125, - "p_Ti48_to_n_V48_reaclib", // 1126, - "p_Ti48_to_He4_Sc45_reaclib", // 1127, - "He4_Ti48_to_n_Cr51_reaclib", // 1128, - "He4_Ti48_to_p_V51_reaclib", // 1129, - "n_Ti49_to_p_Sc49_reaclib", // 1130, - "n_Ti49_to_He4_Ca46_reaclib", // 1131, - "p_Ti49_to_n_V49_reaclib", // 1132, - "p_Ti49_to_He4_Sc46_reaclib", // 1133, - "He4_Ti49_to_n_Cr52_reaclib", // 1134, - "He4_Ti49_to_p_V52_reaclib", // 1135, - "n_Ti50_to_He4_Ca47_reaclib", // 1136, - "p_Ti50_to_n_V50_reaclib", // 1137, - "p_Ti50_to_He4_Sc47_reaclib", // 1138, - "He4_Ti50_to_n_Cr53_reaclib", // 1139, - "n_Ti51_to_He4_Ca48_reaclib", // 1140, - "p_Ti51_to_n_V51_reaclib", // 1141, - "p_Ti51_to_He4_Sc48_reaclib", // 1142, - "He4_Ti51_to_n_Cr54_reaclib", // 1143, - "n_V46_to_p_Ti46_reaclib", // 1144, - "n_V46_to_He4_Sc43_reaclib", // 1145, - "He4_V46_to_p_Cr49_reaclib", // 1146, - "n_V47_to_p_Ti47_reaclib", // 1147, - "n_V47_to_He4_Sc44_reaclib", // 1148, - "p_V47_to_He4_Ti44_reaclib", // 1149, - "He4_V47_to_n_Mn50_reaclib", // 1150, - "He4_V47_to_p_Cr50_reaclib", // 1151, - "n_V48_to_p_Ti48_reaclib", // 1152, - "n_V48_to_He4_Sc45_reaclib", // 1153, - "p_V48_to_n_Cr48_reaclib", // 1154, - "p_V48_to_He4_Ti45_reaclib", // 1155, - "He4_V48_to_n_Mn51_reaclib", // 1156, - "He4_V48_to_p_Cr51_reaclib", // 1157, - "n_V49_to_p_Ti49_reaclib", // 1158, - "n_V49_to_He4_Sc46_reaclib", // 1159, - "p_V49_to_n_Cr49_reaclib", // 1160, - "p_V49_to_He4_Ti46_reaclib", // 1161, - "He4_V49_to_n_Mn52_reaclib", // 1162, - "He4_V49_to_p_Cr52_reaclib", // 1163, - "n_V50_to_p_Ti50_reaclib", // 1164, - "n_V50_to_He4_Sc47_reaclib", // 1165, - "p_V50_to_n_Cr50_reaclib", // 1166, - "p_V50_to_He4_Ti47_reaclib", // 1167, - "He4_V50_to_n_Mn53_reaclib", // 1168, - "He4_V50_to_p_Cr53_reaclib", // 1169, - "n_V51_to_p_Ti51_reaclib", // 1170, - "n_V51_to_He4_Sc48_reaclib", // 1171, - "p_V51_to_n_Cr51_reaclib", // 1172, - "p_V51_to_He4_Ti48_reaclib", // 1173, - "He4_V51_to_n_Mn54_reaclib", // 1174, - "He4_V51_to_p_Cr54_reaclib", // 1175, - "n_V52_to_He4_Sc49_reaclib", // 1176, - "p_V52_to_n_Cr52_reaclib", // 1177, - "p_V52_to_He4_Ti49_reaclib", // 1178, - "He4_V52_to_n_Mn55_reaclib", // 1179, - "n_Cr48_to_p_V48_reaclib", // 1180, - "n_Cr48_to_He4_Ti45_reaclib", // 1181, - "He4_Cr48_to_p_Mn51_reaclib", // 1182, - "n_Cr49_to_p_V49_reaclib", // 1183, - "n_Cr49_to_He4_Ti46_reaclib", // 1184, - "p_Cr49_to_He4_V46_reaclib", // 1185, - "He4_Cr49_to_n_Fe52_reaclib", // 1186, - "He4_Cr49_to_p_Mn52_reaclib", // 1187, - "n_Cr50_to_p_V50_reaclib", // 1188, - "n_Cr50_to_He4_Ti47_reaclib", // 1189, - "p_Cr50_to_n_Mn50_reaclib", // 1190, - "p_Cr50_to_He4_V47_reaclib", // 1191, - "He4_Cr50_to_n_Fe53_reaclib", // 1192, - "He4_Cr50_to_p_Mn53_reaclib", // 1193, - "n_Cr51_to_p_V51_reaclib", // 1194, - "n_Cr51_to_He4_Ti48_reaclib", // 1195, - "p_Cr51_to_n_Mn51_reaclib", // 1196, - "p_Cr51_to_He4_V48_reaclib", // 1197, - "He4_Cr51_to_n_Fe54_reaclib", // 1198, - "He4_Cr51_to_p_Mn54_reaclib", // 1199, - "n_Cr52_to_p_V52_reaclib", // 1200, - "n_Cr52_to_He4_Ti49_reaclib", // 1201, - "p_Cr52_to_n_Mn52_reaclib", // 1202, - "p_Cr52_to_He4_V49_reaclib", // 1203, - "He4_Cr52_to_n_Fe55_reaclib", // 1204, - "He4_Cr52_to_p_Mn55_reaclib", // 1205, - "n_Cr53_to_He4_Ti50_reaclib", // 1206, - "p_Cr53_to_n_Mn53_reaclib", // 1207, - "p_Cr53_to_He4_V50_reaclib", // 1208, - "He4_Cr53_to_n_Fe56_reaclib", // 1209, - "n_Cr54_to_He4_Ti51_reaclib", // 1210, - "p_Cr54_to_n_Mn54_reaclib", // 1211, - "p_Cr54_to_He4_V51_reaclib", // 1212, - "He4_Cr54_to_n_Fe57_reaclib", // 1213, - "n_Mn50_to_p_Cr50_reaclib", // 1214, - "n_Mn50_to_He4_V47_reaclib", // 1215, - "He4_Mn50_to_n_Co53_reaclib", // 1216, - "He4_Mn50_to_p_Fe53_reaclib", // 1217, - "n_Mn51_to_p_Cr51_reaclib", // 1218, - "n_Mn51_to_He4_V48_reaclib", // 1219, - "p_Mn51_to_He4_Cr48_reaclib", // 1220, - "He4_Mn51_to_n_Co54_reaclib", // 1221, - "He4_Mn51_to_p_Fe54_reaclib", // 1222, - "n_Mn52_to_p_Cr52_reaclib", // 1223, - "n_Mn52_to_He4_V49_reaclib", // 1224, - "p_Mn52_to_n_Fe52_reaclib", // 1225, - "p_Mn52_to_He4_Cr49_reaclib", // 1226, - "He4_Mn52_to_n_Co55_reaclib", // 1227, - "He4_Mn52_to_p_Fe55_reaclib", // 1228, - "n_Mn53_to_p_Cr53_reaclib", // 1229, - "n_Mn53_to_He4_V50_reaclib", // 1230, - "p_Mn53_to_n_Fe53_reaclib", // 1231, - "p_Mn53_to_He4_Cr50_reaclib", // 1232, - "He4_Mn53_to_n_Co56_reaclib", // 1233, - "He4_Mn53_to_p_Fe56_reaclib", // 1234, - "n_Mn54_to_p_Cr54_reaclib", // 1235, - "n_Mn54_to_He4_V51_reaclib", // 1236, - "p_Mn54_to_n_Fe54_reaclib", // 1237, - "p_Mn54_to_He4_Cr51_reaclib", // 1238, - "He4_Mn54_to_n_Co57_reaclib", // 1239, - "He4_Mn54_to_p_Fe57_reaclib", // 1240, - "n_Mn55_to_He4_V52_reaclib", // 1241, - "p_Mn55_to_n_Fe55_reaclib", // 1242, - "p_Mn55_to_He4_Cr52_reaclib", // 1243, - "He4_Mn55_to_n_Co58_reaclib", // 1244, - "He4_Mn55_to_p_Fe58_reaclib", // 1245, - "n_Fe52_to_p_Mn52_reaclib", // 1246, - "n_Fe52_to_He4_Cr49_reaclib", // 1247, - "He4_Fe52_to_p_Co55_reaclib", // 1248, - "n_Fe53_to_p_Mn53_reaclib", // 1249, - "n_Fe53_to_He4_Cr50_reaclib", // 1250, - "p_Fe53_to_n_Co53_reaclib", // 1251, - "p_Fe53_to_He4_Mn50_reaclib", // 1252, - "He4_Fe53_to_n_Ni56_reaclib", // 1253, - "He4_Fe53_to_p_Co56_reaclib", // 1254, - "n_Fe54_to_p_Mn54_reaclib", // 1255, - "n_Fe54_to_He4_Cr51_reaclib", // 1256, - "p_Fe54_to_n_Co54_reaclib", // 1257, - "p_Fe54_to_He4_Mn51_reaclib", // 1258, - "He4_Fe54_to_n_Ni57_reaclib", // 1259, - "He4_Fe54_to_p_Co57_reaclib", // 1260, - "n_Fe55_to_p_Mn55_reaclib", // 1261, - "n_Fe55_to_He4_Cr52_reaclib", // 1262, - "p_Fe55_to_n_Co55_reaclib", // 1263, - "p_Fe55_to_He4_Mn52_reaclib", // 1264, - "He4_Fe55_to_n_Ni58_reaclib", // 1265, - "He4_Fe55_to_p_Co58_reaclib", // 1266, - "n_Fe56_to_He4_Cr53_reaclib", // 1267, - "p_Fe56_to_n_Co56_reaclib", // 1268, - "p_Fe56_to_He4_Mn53_reaclib", // 1269, - "He4_Fe56_to_n_Ni59_reaclib", // 1270, - "He4_Fe56_to_p_Co59_reaclib", // 1271, - "n_Fe57_to_He4_Cr54_reaclib", // 1272, - "p_Fe57_to_n_Co57_reaclib", // 1273, - "p_Fe57_to_He4_Mn54_reaclib", // 1274, - "He4_Fe57_to_n_Ni60_reaclib", // 1275, - "p_Fe58_to_n_Co58_reaclib", // 1276, - "p_Fe58_to_He4_Mn55_reaclib", // 1277, - "He4_Fe58_to_n_Ni61_reaclib", // 1278, - "n_Co53_to_p_Fe53_reaclib", // 1279, - "n_Co53_to_He4_Mn50_reaclib", // 1280, - "He4_Co53_to_p_Ni56_reaclib", // 1281, - "n_Co54_to_p_Fe54_reaclib", // 1282, - "n_Co54_to_He4_Mn51_reaclib", // 1283, - "He4_Co54_to_n_Cu57_reaclib", // 1284, - "He4_Co54_to_p_Ni57_reaclib", // 1285, - "n_Co55_to_p_Fe55_reaclib", // 1286, - "n_Co55_to_He4_Mn52_reaclib", // 1287, - "p_Co55_to_He4_Fe52_reaclib", // 1288, - "He4_Co55_to_n_Cu58_reaclib", // 1289, - "He4_Co55_to_p_Ni58_reaclib", // 1290, - "n_Co56_to_p_Fe56_reaclib", // 1291, - "n_Co56_to_He4_Mn53_reaclib", // 1292, - "p_Co56_to_n_Ni56_reaclib", // 1293, - "p_Co56_to_He4_Fe53_reaclib", // 1294, - "He4_Co56_to_n_Cu59_reaclib", // 1295, - "He4_Co56_to_p_Ni59_reaclib", // 1296, - "n_Co57_to_p_Fe57_reaclib", // 1297, - "n_Co57_to_He4_Mn54_reaclib", // 1298, - "p_Co57_to_n_Ni57_reaclib", // 1299, - "p_Co57_to_He4_Fe54_reaclib", // 1300, - "He4_Co57_to_n_Cu60_reaclib", // 1301, - "He4_Co57_to_p_Ni60_reaclib", // 1302, - "n_Co58_to_p_Fe58_reaclib", // 1303, - "n_Co58_to_He4_Mn55_reaclib", // 1304, - "p_Co58_to_n_Ni58_reaclib", // 1305, - "p_Co58_to_He4_Fe55_reaclib", // 1306, - "He4_Co58_to_n_Cu61_reaclib", // 1307, - "He4_Co58_to_p_Ni61_reaclib", // 1308, - "p_Co59_to_n_Ni59_reaclib", // 1309, - "p_Co59_to_He4_Fe56_reaclib", // 1310, - "He4_Co59_to_n_Cu62_reaclib", // 1311, - "He4_Co59_to_p_Ni62_reaclib", // 1312, - "n_Ni56_to_p_Co56_reaclib", // 1313, - "n_Ni56_to_He4_Fe53_reaclib", // 1314, - "p_Ni56_to_He4_Co53_reaclib", // 1315, - "He4_Ni56_to_n_Zn59_reaclib", // 1316, - "He4_Ni56_to_p_Cu59_reaclib", // 1317, - "n_Ni57_to_p_Co57_reaclib", // 1318, - "n_Ni57_to_He4_Fe54_reaclib", // 1319, - "p_Ni57_to_n_Cu57_reaclib", // 1320, - "p_Ni57_to_He4_Co54_reaclib", // 1321, - "He4_Ni57_to_n_Zn60_reaclib", // 1322, - "He4_Ni57_to_p_Cu60_reaclib", // 1323, - "n_Ni58_to_p_Co58_reaclib", // 1324, - "n_Ni58_to_He4_Fe55_reaclib", // 1325, - "p_Ni58_to_n_Cu58_reaclib", // 1326, - "p_Ni58_to_He4_Co55_reaclib", // 1327, - "He4_Ni58_to_n_Zn61_reaclib", // 1328, - "He4_Ni58_to_p_Cu61_reaclib", // 1329, - "n_Ni59_to_p_Co59_reaclib", // 1330, - "n_Ni59_to_He4_Fe56_reaclib", // 1331, - "p_Ni59_to_n_Cu59_reaclib", // 1332, - "p_Ni59_to_He4_Co56_reaclib", // 1333, - "He4_Ni59_to_n_Zn62_reaclib", // 1334, - "He4_Ni59_to_p_Cu62_reaclib", // 1335, - "n_Ni60_to_He4_Fe57_reaclib", // 1336, - "p_Ni60_to_n_Cu60_reaclib", // 1337, - "p_Ni60_to_He4_Co57_reaclib", // 1338, - "He4_Ni60_to_n_Zn63_reaclib", // 1339, - "He4_Ni60_to_p_Cu63_reaclib", // 1340, - "n_Ni61_to_He4_Fe58_reaclib", // 1341, - "p_Ni61_to_n_Cu61_reaclib", // 1342, - "p_Ni61_to_He4_Co58_reaclib", // 1343, - "He4_Ni61_to_n_Zn64_reaclib", // 1344, - "He4_Ni61_to_p_Cu64_reaclib", // 1345, - "p_Ni62_to_n_Cu62_reaclib", // 1346, - "p_Ni62_to_He4_Co59_reaclib", // 1347, - "He4_Ni62_to_n_Zn65_reaclib", // 1348, - "He4_Ni62_to_p_Cu65_reaclib", // 1349, - "p_Ni63_to_n_Cu63_reaclib", // 1350, - "He4_Ni63_to_n_Zn66_reaclib", // 1351, - "p_Ni64_to_n_Cu64_reaclib", // 1352, - "n_Cu57_to_p_Ni57_reaclib", // 1353, - "n_Cu57_to_He4_Co54_reaclib", // 1354, - "He4_Cu57_to_p_Zn60_reaclib", // 1355, - "n_Cu58_to_p_Ni58_reaclib", // 1356, - "n_Cu58_to_He4_Co55_reaclib", // 1357, - "He4_Cu58_to_p_Zn61_reaclib", // 1358, - "n_Cu59_to_p_Ni59_reaclib", // 1359, - "n_Cu59_to_He4_Co56_reaclib", // 1360, - "p_Cu59_to_n_Zn59_reaclib", // 1361, - "p_Cu59_to_He4_Ni56_reaclib", // 1362, - "He4_Cu59_to_n_Ga62_reaclib", // 1363, - "He4_Cu59_to_p_Zn62_reaclib", // 1364, - "n_Cu60_to_p_Ni60_reaclib", // 1365, - "n_Cu60_to_He4_Co57_reaclib", // 1366, - "p_Cu60_to_n_Zn60_reaclib", // 1367, - "p_Cu60_to_He4_Ni57_reaclib", // 1368, - "He4_Cu60_to_n_Ga63_reaclib", // 1369, - "He4_Cu60_to_p_Zn63_reaclib", // 1370, - "n_Cu61_to_p_Ni61_reaclib", // 1371, - "n_Cu61_to_He4_Co58_reaclib", // 1372, - "p_Cu61_to_n_Zn61_reaclib", // 1373, - "p_Cu61_to_He4_Ni58_reaclib", // 1374, - "He4_Cu61_to_n_Ga64_reaclib", // 1375, - "He4_Cu61_to_p_Zn64_reaclib", // 1376, - "n_Cu62_to_p_Ni62_reaclib", // 1377, - "n_Cu62_to_He4_Co59_reaclib", // 1378, - "p_Cu62_to_n_Zn62_reaclib", // 1379, - "p_Cu62_to_He4_Ni59_reaclib", // 1380, - "He4_Cu62_to_p_Zn65_reaclib", // 1381, - "n_Cu63_to_p_Ni63_reaclib", // 1382, - "p_Cu63_to_n_Zn63_reaclib", // 1383, - "p_Cu63_to_He4_Ni60_reaclib", // 1384, - "He4_Cu63_to_p_Zn66_reaclib", // 1385, - "n_Cu64_to_p_Ni64_reaclib", // 1386, - "p_Cu64_to_n_Zn64_reaclib", // 1387, - "p_Cu64_to_He4_Ni61_reaclib", // 1388, - "p_Cu65_to_n_Zn65_reaclib", // 1389, - "p_Cu65_to_He4_Ni62_reaclib", // 1390, - "n_Zn59_to_p_Cu59_reaclib", // 1391, - "n_Zn59_to_He4_Ni56_reaclib", // 1392, - "He4_Zn59_to_p_Ga62_reaclib", // 1393, - "n_Zn60_to_p_Cu60_reaclib", // 1394, - "n_Zn60_to_He4_Ni57_reaclib", // 1395, - "p_Zn60_to_He4_Cu57_reaclib", // 1396, - "He4_Zn60_to_n_Ge63_reaclib", // 1397, - "He4_Zn60_to_p_Ga63_reaclib", // 1398, - "n_Zn61_to_p_Cu61_reaclib", // 1399, - "n_Zn61_to_He4_Ni58_reaclib", // 1400, - "p_Zn61_to_He4_Cu58_reaclib", // 1401, - "He4_Zn61_to_n_Ge64_reaclib", // 1402, - "He4_Zn61_to_p_Ga64_reaclib", // 1403, - "n_Zn62_to_p_Cu62_reaclib", // 1404, - "n_Zn62_to_He4_Ni59_reaclib", // 1405, - "p_Zn62_to_n_Ga62_reaclib", // 1406, - "p_Zn62_to_He4_Cu59_reaclib", // 1407, - "n_Zn63_to_p_Cu63_reaclib", // 1408, - "n_Zn63_to_He4_Ni60_reaclib", // 1409, - "p_Zn63_to_n_Ga63_reaclib", // 1410, - "p_Zn63_to_He4_Cu60_reaclib", // 1411, - "n_Zn64_to_p_Cu64_reaclib", // 1412, - "n_Zn64_to_He4_Ni61_reaclib", // 1413, - "p_Zn64_to_n_Ga64_reaclib", // 1414, - "p_Zn64_to_He4_Cu61_reaclib", // 1415, - "n_Zn65_to_p_Cu65_reaclib", // 1416, - "n_Zn65_to_He4_Ni62_reaclib", // 1417, - "p_Zn65_to_He4_Cu62_reaclib", // 1418, - "n_Zn66_to_He4_Ni63_reaclib", // 1419, - "p_Zn66_to_He4_Cu63_reaclib", // 1420, - "n_Ga62_to_p_Zn62_reaclib", // 1421, - "n_Ga62_to_He4_Cu59_reaclib", // 1422, - "p_Ga62_to_He4_Zn59_reaclib", // 1423, - "n_Ga63_to_p_Zn63_reaclib", // 1424, - "n_Ga63_to_He4_Cu60_reaclib", // 1425, - "p_Ga63_to_n_Ge63_reaclib", // 1426, - "p_Ga63_to_He4_Zn60_reaclib", // 1427, - "n_Ga64_to_p_Zn64_reaclib", // 1428, - "n_Ga64_to_He4_Cu61_reaclib", // 1429, - "p_Ga64_to_n_Ge64_reaclib", // 1430, - "p_Ga64_to_He4_Zn61_reaclib", // 1431, - "n_Ge63_to_p_Ga63_reaclib", // 1432, - "n_Ge63_to_He4_Zn60_reaclib", // 1433, - "n_Ge64_to_p_Ga64_reaclib", // 1434, - "n_Ge64_to_He4_Zn61_reaclib", // 1435, - "p_d_to_n_p_p_reaclib", // 1436, + "O17_n_to_He4_C14_reaclib", // 831, + "O17_p_to_n_F17_reaclib", // 832, + "O17_p_to_He4_N14_reaclib", // 833, + "O17_He4_to_n_Ne20_reaclib", // 834, + "O18_p_to_n_F18_reaclib", // 835, + "O18_p_to_He4_N15_reaclib", // 836, + "O18_He4_to_n_Ne21_reaclib", // 837, + "F17_n_to_p_O17_reaclib", // 838, + "F17_n_to_He4_N14_reaclib", // 839, + "F17_p_to_He4_O14_reaclib", // 840, + "F17_He4_to_p_Ne20_reaclib", // 841, + "F18_n_to_p_O18_reaclib", // 842, + "F18_n_to_He4_N15_reaclib", // 843, + "F18_p_to_n_Ne18_reaclib", // 844, + "F18_p_to_He4_O15_reaclib", // 845, + "F18_He4_to_n_Na21_reaclib", // 846, + "F18_He4_to_p_Ne21_reaclib", // 847, + "F19_p_to_n_Ne19_reaclib", // 848, + "F19_p_to_He4_O16_reaclib", // 849, + "F19_He4_to_n_Na22_reaclib", // 850, + "F19_He4_to_p_Ne22_reaclib", // 851, + "Ne18_n_to_p_F18_reaclib", // 852, + "Ne18_n_to_He4_O15_reaclib", // 853, + "Ne18_He4_to_p_Na21_reaclib", // 854, + "Ne19_n_to_p_F19_reaclib", // 855, + "Ne19_n_to_He4_O16_reaclib", // 856, + "Ne19_He4_to_p_Na22_reaclib", // 857, + "Ne20_n_to_He4_O17_reaclib", // 858, + "Ne20_p_to_He4_F17_reaclib", // 859, + "Ne20_He4_to_n_Mg23_reaclib", // 860, + "Ne20_He4_to_p_Na23_reaclib", // 861, + "Ne20_He4_to_C12_C12_reaclib", // 862, + "Ne20_C12_to_p_P31_reaclib", // 863, + "Ne20_C12_to_He4_Si28_reaclib", // 864, + "Ne21_n_to_He4_O18_reaclib", // 865, + "Ne21_p_to_n_Na21_reaclib", // 866, + "Ne21_p_to_He4_F18_reaclib", // 867, + "Ne21_He4_to_n_Mg24_reaclib", // 868, + "Ne22_p_to_n_Na22_reaclib", // 869, + "Ne22_p_to_He4_F19_reaclib", // 870, + "Ne22_He4_to_n_Mg25_reaclib", // 871, + "Na21_n_to_p_Ne21_reaclib", // 872, + "Na21_n_to_He4_F18_reaclib", // 873, + "Na21_p_to_He4_Ne18_reaclib", // 874, + "Na21_He4_to_p_Mg24_reaclib", // 875, + "Na22_n_to_p_Ne22_reaclib", // 876, + "Na22_n_to_He4_F19_reaclib", // 877, + "Na22_p_to_He4_Ne19_reaclib", // 878, + "Na22_He4_to_n_Al25_reaclib", // 879, + "Na22_He4_to_p_Mg25_reaclib", // 880, + "Na23_p_to_n_Mg23_reaclib", // 881, + "Na23_p_to_He4_Ne20_reaclib", // 882, + "Na23_p_to_C12_C12_reaclib", // 883, + "Na23_He4_to_n_Al26_reaclib", // 884, + "Na23_He4_to_p_Mg26_reaclib", // 885, + "Mg23_n_to_p_Na23_reaclib", // 886, + "Mg23_n_to_He4_Ne20_reaclib", // 887, + "Mg23_n_to_C12_C12_reaclib", // 888, + "Mg23_He4_to_p_Al26_reaclib", // 889, + "Mg24_n_to_He4_Ne21_reaclib", // 890, + "Mg24_p_to_He4_Na21_reaclib", // 891, + "Mg24_He4_to_p_Al27_reaclib", // 892, + "Mg24_He4_to_C12_O16_reaclib", // 893, + "Mg25_n_to_He4_Ne22_reaclib", // 894, + "Mg25_p_to_n_Al25_reaclib", // 895, + "Mg25_p_to_He4_Na22_reaclib", // 896, + "Mg25_He4_to_n_Si28_reaclib", // 897, + "Mg26_p_to_n_Al26_reaclib", // 898, + "Mg26_p_to_He4_Na23_reaclib", // 899, + "Mg26_He4_to_n_Si29_reaclib", // 900, + "Al25_n_to_p_Mg25_reaclib", // 901, + "Al25_n_to_He4_Na22_reaclib", // 902, + "Al25_He4_to_p_Si28_reaclib", // 903, + "Al26_n_to_p_Mg26_reaclib", // 904, + "Al26_n_to_He4_Na23_reaclib", // 905, + "Al26_p_to_He4_Mg23_reaclib", // 906, + "Al26_He4_to_n_P29_reaclib", // 907, + "Al26_He4_to_p_Si29_reaclib", // 908, + "Al27_p_to_He4_Mg24_reaclib", // 909, + "Al27_p_to_C12_O16_reaclib", // 910, + "Al27_He4_to_n_P30_reaclib", // 911, + "Al27_He4_to_p_Si30_reaclib", // 912, + "Si28_n_to_He4_Mg25_reaclib", // 913, + "Si28_p_to_He4_Al25_reaclib", // 914, + "Si28_He4_to_p_P31_reaclib", // 915, + "Si28_He4_to_C12_Ne20_reaclib", // 916, + "Si28_He4_to_O16_O16_reaclib", // 917, + "Si29_n_to_He4_Mg26_reaclib", // 918, + "Si29_p_to_n_P29_reaclib", // 919, + "Si29_p_to_He4_Al26_reaclib", // 920, + "Si29_He4_to_n_S32_reaclib", // 921, + "Si29_He4_to_p_P32_reaclib", // 922, + "Si30_p_to_n_P30_reaclib", // 923, + "Si30_p_to_He4_Al27_reaclib", // 924, + "Si30_He4_to_n_S33_reaclib", // 925, + "Si30_He4_to_p_P33_reaclib", // 926, + "Si31_p_to_n_P31_reaclib", // 927, + "Si31_He4_to_n_S34_reaclib", // 928, + "Si32_p_to_n_P32_reaclib", // 929, + "Si32_He4_to_n_S35_reaclib", // 930, + "P29_n_to_p_Si29_reaclib", // 931, + "P29_n_to_He4_Al26_reaclib", // 932, + "P29_He4_to_p_S32_reaclib", // 933, + "P30_n_to_p_Si30_reaclib", // 934, + "P30_n_to_He4_Al27_reaclib", // 935, + "P30_He4_to_n_Cl33_reaclib", // 936, + "P30_He4_to_p_S33_reaclib", // 937, + "P31_n_to_p_Si31_reaclib", // 938, + "P31_p_to_He4_Si28_reaclib", // 939, + "P31_p_to_C12_Ne20_reaclib", // 940, + "P31_p_to_O16_O16_reaclib", // 941, + "P31_He4_to_n_Cl34_reaclib", // 942, + "P31_He4_to_p_S34_reaclib", // 943, + "P32_n_to_p_Si32_reaclib", // 944, + "P32_p_to_n_S32_reaclib", // 945, + "P32_p_to_He4_Si29_reaclib", // 946, + "P32_He4_to_n_Cl35_reaclib", // 947, + "P32_He4_to_p_S35_reaclib", // 948, + "P33_p_to_n_S33_reaclib", // 949, + "P33_p_to_He4_Si30_reaclib", // 950, + "P33_He4_to_n_Cl36_reaclib", // 951, + "P33_He4_to_p_S36_reaclib", // 952, + "S32_n_to_p_P32_reaclib", // 953, + "S32_n_to_He4_Si29_reaclib", // 954, + "S32_p_to_He4_P29_reaclib", // 955, + "S32_He4_to_p_Cl35_reaclib", // 956, + "S33_n_to_p_P33_reaclib", // 957, + "S33_n_to_He4_Si30_reaclib", // 958, + "S33_p_to_n_Cl33_reaclib", // 959, + "S33_p_to_He4_P30_reaclib", // 960, + "S33_He4_to_n_Ar36_reaclib", // 961, + "S33_He4_to_p_Cl36_reaclib", // 962, + "S34_n_to_He4_Si31_reaclib", // 963, + "S34_p_to_n_Cl34_reaclib", // 964, + "S34_p_to_He4_P31_reaclib", // 965, + "S34_He4_to_n_Ar37_reaclib", // 966, + "S34_He4_to_p_Cl37_reaclib", // 967, + "S35_n_to_He4_Si32_reaclib", // 968, + "S35_p_to_n_Cl35_reaclib", // 969, + "S35_p_to_He4_P32_reaclib", // 970, + "S35_He4_to_n_Ar38_reaclib", // 971, + "S36_p_to_n_Cl36_reaclib", // 972, + "S36_p_to_He4_P33_reaclib", // 973, + "S36_He4_to_n_Ar39_reaclib", // 974, + "Cl33_n_to_p_S33_reaclib", // 975, + "Cl33_n_to_He4_P30_reaclib", // 976, + "Cl33_He4_to_p_Ar36_reaclib", // 977, + "Cl34_n_to_p_S34_reaclib", // 978, + "Cl34_n_to_He4_P31_reaclib", // 979, + "Cl34_He4_to_n_K37_reaclib", // 980, + "Cl34_He4_to_p_Ar37_reaclib", // 981, + "Cl35_n_to_p_S35_reaclib", // 982, + "Cl35_n_to_He4_P32_reaclib", // 983, + "Cl35_p_to_He4_S32_reaclib", // 984, + "Cl35_He4_to_n_K38_reaclib", // 985, + "Cl35_He4_to_p_Ar38_reaclib", // 986, + "Cl36_n_to_p_S36_reaclib", // 987, + "Cl36_n_to_He4_P33_reaclib", // 988, + "Cl36_p_to_n_Ar36_reaclib", // 989, + "Cl36_p_to_He4_S33_reaclib", // 990, + "Cl36_He4_to_n_K39_reaclib", // 991, + "Cl36_He4_to_p_Ar39_reaclib", // 992, + "Cl37_p_to_n_Ar37_reaclib", // 993, + "Cl37_p_to_He4_S34_reaclib", // 994, + "Cl37_He4_to_n_K40_reaclib", // 995, + "Cl37_He4_to_p_Ar40_reaclib", // 996, + "Ar36_n_to_p_Cl36_reaclib", // 997, + "Ar36_n_to_He4_S33_reaclib", // 998, + "Ar36_p_to_He4_Cl33_reaclib", // 999, + "Ar36_He4_to_p_K39_reaclib", // 1000, + "Ar37_n_to_p_Cl37_reaclib", // 1001, + "Ar37_n_to_He4_S34_reaclib", // 1002, + "Ar37_p_to_n_K37_reaclib", // 1003, + "Ar37_p_to_He4_Cl34_reaclib", // 1004, + "Ar37_He4_to_n_Ca40_reaclib", // 1005, + "Ar37_He4_to_p_K40_reaclib", // 1006, + "Ar38_n_to_He4_S35_reaclib", // 1007, + "Ar38_p_to_n_K38_reaclib", // 1008, + "Ar38_p_to_He4_Cl35_reaclib", // 1009, + "Ar38_He4_to_n_Ca41_reaclib", // 1010, + "Ar38_He4_to_p_K41_reaclib", // 1011, + "Ar39_n_to_He4_S36_reaclib", // 1012, + "Ar39_p_to_n_K39_reaclib", // 1013, + "Ar39_p_to_He4_Cl36_reaclib", // 1014, + "Ar39_He4_to_n_Ca42_reaclib", // 1015, + "Ar40_p_to_n_K40_reaclib", // 1016, + "Ar40_p_to_He4_Cl37_reaclib", // 1017, + "Ar40_He4_to_n_Ca43_reaclib", // 1018, + "K37_n_to_p_Ar37_reaclib", // 1019, + "K37_n_to_He4_Cl34_reaclib", // 1020, + "K37_He4_to_p_Ca40_reaclib", // 1021, + "K38_n_to_p_Ar38_reaclib", // 1022, + "K38_n_to_He4_Cl35_reaclib", // 1023, + "K38_He4_to_p_Ca41_reaclib", // 1024, + "K39_n_to_p_Ar39_reaclib", // 1025, + "K39_n_to_He4_Cl36_reaclib", // 1026, + "K39_p_to_He4_Ar36_reaclib", // 1027, + "K39_He4_to_p_Ca42_reaclib", // 1028, + "K40_n_to_p_Ar40_reaclib", // 1029, + "K40_n_to_He4_Cl37_reaclib", // 1030, + "K40_p_to_n_Ca40_reaclib", // 1031, + "K40_p_to_He4_Ar37_reaclib", // 1032, + "K40_He4_to_n_Sc43_reaclib", // 1033, + "K40_He4_to_p_Ca43_reaclib", // 1034, + "K41_p_to_n_Ca41_reaclib", // 1035, + "K41_p_to_He4_Ar38_reaclib", // 1036, + "K41_He4_to_n_Sc44_reaclib", // 1037, + "K41_He4_to_p_Ca44_reaclib", // 1038, + "Ca40_n_to_p_K40_reaclib", // 1039, + "Ca40_n_to_He4_Ar37_reaclib", // 1040, + "Ca40_p_to_He4_K37_reaclib", // 1041, + "Ca40_He4_to_p_Sc43_reaclib", // 1042, + "Ca41_n_to_p_K41_reaclib", // 1043, + "Ca41_n_to_He4_Ar38_reaclib", // 1044, + "Ca41_p_to_He4_K38_reaclib", // 1045, + "Ca41_He4_to_n_Ti44_reaclib", // 1046, + "Ca41_He4_to_p_Sc44_reaclib", // 1047, + "Ca42_n_to_He4_Ar39_reaclib", // 1048, + "Ca42_p_to_He4_K39_reaclib", // 1049, + "Ca42_He4_to_n_Ti45_reaclib", // 1050, + "Ca42_He4_to_p_Sc45_reaclib", // 1051, + "Ca43_n_to_He4_Ar40_reaclib", // 1052, + "Ca43_p_to_n_Sc43_reaclib", // 1053, + "Ca43_p_to_He4_K40_reaclib", // 1054, + "Ca43_He4_to_n_Ti46_reaclib", // 1055, + "Ca43_He4_to_p_Sc46_reaclib", // 1056, + "Ca44_p_to_n_Sc44_reaclib", // 1057, + "Ca44_p_to_He4_K41_reaclib", // 1058, + "Ca44_He4_to_n_Ti47_reaclib", // 1059, + "Ca44_He4_to_p_Sc47_reaclib", // 1060, + "Ca45_p_to_n_Sc45_reaclib", // 1061, + "Ca45_He4_to_n_Ti48_reaclib", // 1062, + "Ca45_He4_to_p_Sc48_reaclib", // 1063, + "Ca46_p_to_n_Sc46_reaclib", // 1064, + "Ca46_He4_to_n_Ti49_reaclib", // 1065, + "Ca46_He4_to_p_Sc49_reaclib", // 1066, + "Ca47_p_to_n_Sc47_reaclib", // 1067, + "Ca47_He4_to_n_Ti50_reaclib", // 1068, + "Ca48_p_to_n_Sc48_reaclib", // 1069, + "Ca48_He4_to_n_Ti51_reaclib", // 1070, + "Sc43_n_to_p_Ca43_reaclib", // 1071, + "Sc43_n_to_He4_K40_reaclib", // 1072, + "Sc43_p_to_He4_Ca40_reaclib", // 1073, + "Sc43_He4_to_n_V46_reaclib", // 1074, + "Sc43_He4_to_p_Ti46_reaclib", // 1075, + "Sc44_n_to_p_Ca44_reaclib", // 1076, + "Sc44_n_to_He4_K41_reaclib", // 1077, + "Sc44_p_to_n_Ti44_reaclib", // 1078, + "Sc44_p_to_He4_Ca41_reaclib", // 1079, + "Sc44_He4_to_n_V47_reaclib", // 1080, + "Sc44_He4_to_p_Ti47_reaclib", // 1081, + "Sc45_n_to_p_Ca45_reaclib", // 1082, + "Sc45_p_to_n_Ti45_reaclib", // 1083, + "Sc45_p_to_He4_Ca42_reaclib", // 1084, + "Sc45_He4_to_n_V48_reaclib", // 1085, + "Sc45_He4_to_p_Ti48_reaclib", // 1086, + "Sc46_n_to_p_Ca46_reaclib", // 1087, + "Sc46_p_to_n_Ti46_reaclib", // 1088, + "Sc46_p_to_He4_Ca43_reaclib", // 1089, + "Sc46_He4_to_n_V49_reaclib", // 1090, + "Sc46_He4_to_p_Ti49_reaclib", // 1091, + "Sc47_n_to_p_Ca47_reaclib", // 1092, + "Sc47_p_to_n_Ti47_reaclib", // 1093, + "Sc47_p_to_He4_Ca44_reaclib", // 1094, + "Sc47_He4_to_n_V50_reaclib", // 1095, + "Sc47_He4_to_p_Ti50_reaclib", // 1096, + "Sc48_n_to_p_Ca48_reaclib", // 1097, + "Sc48_p_to_n_Ti48_reaclib", // 1098, + "Sc48_p_to_He4_Ca45_reaclib", // 1099, + "Sc48_He4_to_n_V51_reaclib", // 1100, + "Sc48_He4_to_p_Ti51_reaclib", // 1101, + "Sc49_p_to_n_Ti49_reaclib", // 1102, + "Sc49_p_to_He4_Ca46_reaclib", // 1103, + "Sc49_He4_to_n_V52_reaclib", // 1104, + "Ti44_n_to_p_Sc44_reaclib", // 1105, + "Ti44_n_to_He4_Ca41_reaclib", // 1106, + "Ti44_He4_to_p_V47_reaclib", // 1107, + "Ti45_n_to_p_Sc45_reaclib", // 1108, + "Ti45_n_to_He4_Ca42_reaclib", // 1109, + "Ti45_He4_to_n_Cr48_reaclib", // 1110, + "Ti45_He4_to_p_V48_reaclib", // 1111, + "Ti46_n_to_p_Sc46_reaclib", // 1112, + "Ti46_n_to_He4_Ca43_reaclib", // 1113, + "Ti46_p_to_n_V46_reaclib", // 1114, + "Ti46_p_to_He4_Sc43_reaclib", // 1115, + "Ti46_He4_to_n_Cr49_reaclib", // 1116, + "Ti46_He4_to_p_V49_reaclib", // 1117, + "Ti47_n_to_p_Sc47_reaclib", // 1118, + "Ti47_n_to_He4_Ca44_reaclib", // 1119, + "Ti47_p_to_n_V47_reaclib", // 1120, + "Ti47_p_to_He4_Sc44_reaclib", // 1121, + "Ti47_He4_to_n_Cr50_reaclib", // 1122, + "Ti47_He4_to_p_V50_reaclib", // 1123, + "Ti48_n_to_p_Sc48_reaclib", // 1124, + "Ti48_n_to_He4_Ca45_reaclib", // 1125, + "Ti48_p_to_n_V48_reaclib", // 1126, + "Ti48_p_to_He4_Sc45_reaclib", // 1127, + "Ti48_He4_to_n_Cr51_reaclib", // 1128, + "Ti48_He4_to_p_V51_reaclib", // 1129, + "Ti49_n_to_p_Sc49_reaclib", // 1130, + "Ti49_n_to_He4_Ca46_reaclib", // 1131, + "Ti49_p_to_n_V49_reaclib", // 1132, + "Ti49_p_to_He4_Sc46_reaclib", // 1133, + "Ti49_He4_to_n_Cr52_reaclib", // 1134, + "Ti49_He4_to_p_V52_reaclib", // 1135, + "Ti50_n_to_He4_Ca47_reaclib", // 1136, + "Ti50_p_to_n_V50_reaclib", // 1137, + "Ti50_p_to_He4_Sc47_reaclib", // 1138, + "Ti50_He4_to_n_Cr53_reaclib", // 1139, + "Ti51_n_to_He4_Ca48_reaclib", // 1140, + "Ti51_p_to_n_V51_reaclib", // 1141, + "Ti51_p_to_He4_Sc48_reaclib", // 1142, + "Ti51_He4_to_n_Cr54_reaclib", // 1143, + "V46_n_to_p_Ti46_reaclib", // 1144, + "V46_n_to_He4_Sc43_reaclib", // 1145, + "V46_He4_to_p_Cr49_reaclib", // 1146, + "V47_n_to_p_Ti47_reaclib", // 1147, + "V47_n_to_He4_Sc44_reaclib", // 1148, + "V47_p_to_He4_Ti44_reaclib", // 1149, + "V47_He4_to_n_Mn50_reaclib", // 1150, + "V47_He4_to_p_Cr50_reaclib", // 1151, + "V48_n_to_p_Ti48_reaclib", // 1152, + "V48_n_to_He4_Sc45_reaclib", // 1153, + "V48_p_to_n_Cr48_reaclib", // 1154, + "V48_p_to_He4_Ti45_reaclib", // 1155, + "V48_He4_to_n_Mn51_reaclib", // 1156, + "V48_He4_to_p_Cr51_reaclib", // 1157, + "V49_n_to_p_Ti49_reaclib", // 1158, + "V49_n_to_He4_Sc46_reaclib", // 1159, + "V49_p_to_n_Cr49_reaclib", // 1160, + "V49_p_to_He4_Ti46_reaclib", // 1161, + "V49_He4_to_n_Mn52_reaclib", // 1162, + "V49_He4_to_p_Cr52_reaclib", // 1163, + "V50_n_to_p_Ti50_reaclib", // 1164, + "V50_n_to_He4_Sc47_reaclib", // 1165, + "V50_p_to_n_Cr50_reaclib", // 1166, + "V50_p_to_He4_Ti47_reaclib", // 1167, + "V50_He4_to_n_Mn53_reaclib", // 1168, + "V50_He4_to_p_Cr53_reaclib", // 1169, + "V51_n_to_p_Ti51_reaclib", // 1170, + "V51_n_to_He4_Sc48_reaclib", // 1171, + "V51_p_to_n_Cr51_reaclib", // 1172, + "V51_p_to_He4_Ti48_reaclib", // 1173, + "V51_He4_to_n_Mn54_reaclib", // 1174, + "V51_He4_to_p_Cr54_reaclib", // 1175, + "V52_n_to_He4_Sc49_reaclib", // 1176, + "V52_p_to_n_Cr52_reaclib", // 1177, + "V52_p_to_He4_Ti49_reaclib", // 1178, + "V52_He4_to_n_Mn55_reaclib", // 1179, + "Cr48_n_to_p_V48_reaclib", // 1180, + "Cr48_n_to_He4_Ti45_reaclib", // 1181, + "Cr48_He4_to_p_Mn51_reaclib", // 1182, + "Cr49_n_to_p_V49_reaclib", // 1183, + "Cr49_n_to_He4_Ti46_reaclib", // 1184, + "Cr49_p_to_He4_V46_reaclib", // 1185, + "Cr49_He4_to_n_Fe52_reaclib", // 1186, + "Cr49_He4_to_p_Mn52_reaclib", // 1187, + "Cr50_n_to_p_V50_reaclib", // 1188, + "Cr50_n_to_He4_Ti47_reaclib", // 1189, + "Cr50_p_to_n_Mn50_reaclib", // 1190, + "Cr50_p_to_He4_V47_reaclib", // 1191, + "Cr50_He4_to_n_Fe53_reaclib", // 1192, + "Cr50_He4_to_p_Mn53_reaclib", // 1193, + "Cr51_n_to_p_V51_reaclib", // 1194, + "Cr51_n_to_He4_Ti48_reaclib", // 1195, + "Cr51_p_to_n_Mn51_reaclib", // 1196, + "Cr51_p_to_He4_V48_reaclib", // 1197, + "Cr51_He4_to_n_Fe54_reaclib", // 1198, + "Cr51_He4_to_p_Mn54_reaclib", // 1199, + "Cr52_n_to_p_V52_reaclib", // 1200, + "Cr52_n_to_He4_Ti49_reaclib", // 1201, + "Cr52_p_to_n_Mn52_reaclib", // 1202, + "Cr52_p_to_He4_V49_reaclib", // 1203, + "Cr52_He4_to_n_Fe55_reaclib", // 1204, + "Cr52_He4_to_p_Mn55_reaclib", // 1205, + "Cr53_n_to_He4_Ti50_reaclib", // 1206, + "Cr53_p_to_n_Mn53_reaclib", // 1207, + "Cr53_p_to_He4_V50_reaclib", // 1208, + "Cr53_He4_to_n_Fe56_reaclib", // 1209, + "Cr54_n_to_He4_Ti51_reaclib", // 1210, + "Cr54_p_to_n_Mn54_reaclib", // 1211, + "Cr54_p_to_He4_V51_reaclib", // 1212, + "Cr54_He4_to_n_Fe57_reaclib", // 1213, + "Mn50_n_to_p_Cr50_reaclib", // 1214, + "Mn50_n_to_He4_V47_reaclib", // 1215, + "Mn50_He4_to_n_Co53_reaclib", // 1216, + "Mn50_He4_to_p_Fe53_reaclib", // 1217, + "Mn51_n_to_p_Cr51_reaclib", // 1218, + "Mn51_n_to_He4_V48_reaclib", // 1219, + "Mn51_p_to_He4_Cr48_reaclib", // 1220, + "Mn51_He4_to_n_Co54_reaclib", // 1221, + "Mn51_He4_to_p_Fe54_reaclib", // 1222, + "Mn52_n_to_p_Cr52_reaclib", // 1223, + "Mn52_n_to_He4_V49_reaclib", // 1224, + "Mn52_p_to_n_Fe52_reaclib", // 1225, + "Mn52_p_to_He4_Cr49_reaclib", // 1226, + "Mn52_He4_to_n_Co55_reaclib", // 1227, + "Mn52_He4_to_p_Fe55_reaclib", // 1228, + "Mn53_n_to_p_Cr53_reaclib", // 1229, + "Mn53_n_to_He4_V50_reaclib", // 1230, + "Mn53_p_to_n_Fe53_reaclib", // 1231, + "Mn53_p_to_He4_Cr50_reaclib", // 1232, + "Mn53_He4_to_n_Co56_reaclib", // 1233, + "Mn53_He4_to_p_Fe56_reaclib", // 1234, + "Mn54_n_to_p_Cr54_reaclib", // 1235, + "Mn54_n_to_He4_V51_reaclib", // 1236, + "Mn54_p_to_n_Fe54_reaclib", // 1237, + "Mn54_p_to_He4_Cr51_reaclib", // 1238, + "Mn54_He4_to_n_Co57_reaclib", // 1239, + "Mn54_He4_to_p_Fe57_reaclib", // 1240, + "Mn55_n_to_He4_V52_reaclib", // 1241, + "Mn55_p_to_n_Fe55_reaclib", // 1242, + "Mn55_p_to_He4_Cr52_reaclib", // 1243, + "Mn55_He4_to_n_Co58_reaclib", // 1244, + "Mn55_He4_to_p_Fe58_reaclib", // 1245, + "Fe52_n_to_p_Mn52_reaclib", // 1246, + "Fe52_n_to_He4_Cr49_reaclib", // 1247, + "Fe52_He4_to_p_Co55_reaclib", // 1248, + "Fe53_n_to_p_Mn53_reaclib", // 1249, + "Fe53_n_to_He4_Cr50_reaclib", // 1250, + "Fe53_p_to_n_Co53_reaclib", // 1251, + "Fe53_p_to_He4_Mn50_reaclib", // 1252, + "Fe53_He4_to_n_Ni56_reaclib", // 1253, + "Fe53_He4_to_p_Co56_reaclib", // 1254, + "Fe54_n_to_p_Mn54_reaclib", // 1255, + "Fe54_n_to_He4_Cr51_reaclib", // 1256, + "Fe54_p_to_n_Co54_reaclib", // 1257, + "Fe54_p_to_He4_Mn51_reaclib", // 1258, + "Fe54_He4_to_n_Ni57_reaclib", // 1259, + "Fe54_He4_to_p_Co57_reaclib", // 1260, + "Fe55_n_to_p_Mn55_reaclib", // 1261, + "Fe55_n_to_He4_Cr52_reaclib", // 1262, + "Fe55_p_to_n_Co55_reaclib", // 1263, + "Fe55_p_to_He4_Mn52_reaclib", // 1264, + "Fe55_He4_to_n_Ni58_reaclib", // 1265, + "Fe55_He4_to_p_Co58_reaclib", // 1266, + "Fe56_n_to_He4_Cr53_reaclib", // 1267, + "Fe56_p_to_n_Co56_reaclib", // 1268, + "Fe56_p_to_He4_Mn53_reaclib", // 1269, + "Fe56_He4_to_n_Ni59_reaclib", // 1270, + "Fe56_He4_to_p_Co59_reaclib", // 1271, + "Fe57_n_to_He4_Cr54_reaclib", // 1272, + "Fe57_p_to_n_Co57_reaclib", // 1273, + "Fe57_p_to_He4_Mn54_reaclib", // 1274, + "Fe57_He4_to_n_Ni60_reaclib", // 1275, + "Fe58_p_to_n_Co58_reaclib", // 1276, + "Fe58_p_to_He4_Mn55_reaclib", // 1277, + "Fe58_He4_to_n_Ni61_reaclib", // 1278, + "Co53_n_to_p_Fe53_reaclib", // 1279, + "Co53_n_to_He4_Mn50_reaclib", // 1280, + "Co53_He4_to_p_Ni56_reaclib", // 1281, + "Co54_n_to_p_Fe54_reaclib", // 1282, + "Co54_n_to_He4_Mn51_reaclib", // 1283, + "Co54_He4_to_n_Cu57_reaclib", // 1284, + "Co54_He4_to_p_Ni57_reaclib", // 1285, + "Co55_n_to_p_Fe55_reaclib", // 1286, + "Co55_n_to_He4_Mn52_reaclib", // 1287, + "Co55_p_to_He4_Fe52_reaclib", // 1288, + "Co55_He4_to_n_Cu58_reaclib", // 1289, + "Co55_He4_to_p_Ni58_reaclib", // 1290, + "Co56_n_to_p_Fe56_reaclib", // 1291, + "Co56_n_to_He4_Mn53_reaclib", // 1292, + "Co56_p_to_n_Ni56_reaclib", // 1293, + "Co56_p_to_He4_Fe53_reaclib", // 1294, + "Co56_He4_to_n_Cu59_reaclib", // 1295, + "Co56_He4_to_p_Ni59_reaclib", // 1296, + "Co57_n_to_p_Fe57_reaclib", // 1297, + "Co57_n_to_He4_Mn54_reaclib", // 1298, + "Co57_p_to_n_Ni57_reaclib", // 1299, + "Co57_p_to_He4_Fe54_reaclib", // 1300, + "Co57_He4_to_n_Cu60_reaclib", // 1301, + "Co57_He4_to_p_Ni60_reaclib", // 1302, + "Co58_n_to_p_Fe58_reaclib", // 1303, + "Co58_n_to_He4_Mn55_reaclib", // 1304, + "Co58_p_to_n_Ni58_reaclib", // 1305, + "Co58_p_to_He4_Fe55_reaclib", // 1306, + "Co58_He4_to_n_Cu61_reaclib", // 1307, + "Co58_He4_to_p_Ni61_reaclib", // 1308, + "Co59_p_to_n_Ni59_reaclib", // 1309, + "Co59_p_to_He4_Fe56_reaclib", // 1310, + "Co59_He4_to_n_Cu62_reaclib", // 1311, + "Co59_He4_to_p_Ni62_reaclib", // 1312, + "Ni56_n_to_p_Co56_reaclib", // 1313, + "Ni56_n_to_He4_Fe53_reaclib", // 1314, + "Ni56_p_to_He4_Co53_reaclib", // 1315, + "Ni56_He4_to_n_Zn59_reaclib", // 1316, + "Ni56_He4_to_p_Cu59_reaclib", // 1317, + "Ni57_n_to_p_Co57_reaclib", // 1318, + "Ni57_n_to_He4_Fe54_reaclib", // 1319, + "Ni57_p_to_n_Cu57_reaclib", // 1320, + "Ni57_p_to_He4_Co54_reaclib", // 1321, + "Ni57_He4_to_n_Zn60_reaclib", // 1322, + "Ni57_He4_to_p_Cu60_reaclib", // 1323, + "Ni58_n_to_p_Co58_reaclib", // 1324, + "Ni58_n_to_He4_Fe55_reaclib", // 1325, + "Ni58_p_to_n_Cu58_reaclib", // 1326, + "Ni58_p_to_He4_Co55_reaclib", // 1327, + "Ni58_He4_to_n_Zn61_reaclib", // 1328, + "Ni58_He4_to_p_Cu61_reaclib", // 1329, + "Ni59_n_to_p_Co59_reaclib", // 1330, + "Ni59_n_to_He4_Fe56_reaclib", // 1331, + "Ni59_p_to_n_Cu59_reaclib", // 1332, + "Ni59_p_to_He4_Co56_reaclib", // 1333, + "Ni59_He4_to_n_Zn62_reaclib", // 1334, + "Ni59_He4_to_p_Cu62_reaclib", // 1335, + "Ni60_n_to_He4_Fe57_reaclib", // 1336, + "Ni60_p_to_n_Cu60_reaclib", // 1337, + "Ni60_p_to_He4_Co57_reaclib", // 1338, + "Ni60_He4_to_n_Zn63_reaclib", // 1339, + "Ni60_He4_to_p_Cu63_reaclib", // 1340, + "Ni61_n_to_He4_Fe58_reaclib", // 1341, + "Ni61_p_to_n_Cu61_reaclib", // 1342, + "Ni61_p_to_He4_Co58_reaclib", // 1343, + "Ni61_He4_to_n_Zn64_reaclib", // 1344, + "Ni61_He4_to_p_Cu64_reaclib", // 1345, + "Ni62_p_to_n_Cu62_reaclib", // 1346, + "Ni62_p_to_He4_Co59_reaclib", // 1347, + "Ni62_He4_to_n_Zn65_reaclib", // 1348, + "Ni62_He4_to_p_Cu65_reaclib", // 1349, + "Ni63_p_to_n_Cu63_reaclib", // 1350, + "Ni63_He4_to_n_Zn66_reaclib", // 1351, + "Ni64_p_to_n_Cu64_reaclib", // 1352, + "Cu57_n_to_p_Ni57_reaclib", // 1353, + "Cu57_n_to_He4_Co54_reaclib", // 1354, + "Cu57_He4_to_p_Zn60_reaclib", // 1355, + "Cu58_n_to_p_Ni58_reaclib", // 1356, + "Cu58_n_to_He4_Co55_reaclib", // 1357, + "Cu58_He4_to_p_Zn61_reaclib", // 1358, + "Cu59_n_to_p_Ni59_reaclib", // 1359, + "Cu59_n_to_He4_Co56_reaclib", // 1360, + "Cu59_p_to_n_Zn59_reaclib", // 1361, + "Cu59_p_to_He4_Ni56_reaclib", // 1362, + "Cu59_He4_to_n_Ga62_reaclib", // 1363, + "Cu59_He4_to_p_Zn62_reaclib", // 1364, + "Cu60_n_to_p_Ni60_reaclib", // 1365, + "Cu60_n_to_He4_Co57_reaclib", // 1366, + "Cu60_p_to_n_Zn60_reaclib", // 1367, + "Cu60_p_to_He4_Ni57_reaclib", // 1368, + "Cu60_He4_to_n_Ga63_reaclib", // 1369, + "Cu60_He4_to_p_Zn63_reaclib", // 1370, + "Cu61_n_to_p_Ni61_reaclib", // 1371, + "Cu61_n_to_He4_Co58_reaclib", // 1372, + "Cu61_p_to_n_Zn61_reaclib", // 1373, + "Cu61_p_to_He4_Ni58_reaclib", // 1374, + "Cu61_He4_to_n_Ga64_reaclib", // 1375, + "Cu61_He4_to_p_Zn64_reaclib", // 1376, + "Cu62_n_to_p_Ni62_reaclib", // 1377, + "Cu62_n_to_He4_Co59_reaclib", // 1378, + "Cu62_p_to_n_Zn62_reaclib", // 1379, + "Cu62_p_to_He4_Ni59_reaclib", // 1380, + "Cu62_He4_to_p_Zn65_reaclib", // 1381, + "Cu63_n_to_p_Ni63_reaclib", // 1382, + "Cu63_p_to_n_Zn63_reaclib", // 1383, + "Cu63_p_to_He4_Ni60_reaclib", // 1384, + "Cu63_He4_to_p_Zn66_reaclib", // 1385, + "Cu64_n_to_p_Ni64_reaclib", // 1386, + "Cu64_p_to_n_Zn64_reaclib", // 1387, + "Cu64_p_to_He4_Ni61_reaclib", // 1388, + "Cu65_p_to_n_Zn65_reaclib", // 1389, + "Cu65_p_to_He4_Ni62_reaclib", // 1390, + "Zn59_n_to_p_Cu59_reaclib", // 1391, + "Zn59_n_to_He4_Ni56_reaclib", // 1392, + "Zn59_He4_to_p_Ga62_reaclib", // 1393, + "Zn60_n_to_p_Cu60_reaclib", // 1394, + "Zn60_n_to_He4_Ni57_reaclib", // 1395, + "Zn60_p_to_He4_Cu57_reaclib", // 1396, + "Zn60_He4_to_n_Ge63_reaclib", // 1397, + "Zn60_He4_to_p_Ga63_reaclib", // 1398, + "Zn61_n_to_p_Cu61_reaclib", // 1399, + "Zn61_n_to_He4_Ni58_reaclib", // 1400, + "Zn61_p_to_He4_Cu58_reaclib", // 1401, + "Zn61_He4_to_n_Ge64_reaclib", // 1402, + "Zn61_He4_to_p_Ga64_reaclib", // 1403, + "Zn62_n_to_p_Cu62_reaclib", // 1404, + "Zn62_n_to_He4_Ni59_reaclib", // 1405, + "Zn62_p_to_n_Ga62_reaclib", // 1406, + "Zn62_p_to_He4_Cu59_reaclib", // 1407, + "Zn63_n_to_p_Cu63_reaclib", // 1408, + "Zn63_n_to_He4_Ni60_reaclib", // 1409, + "Zn63_p_to_n_Ga63_reaclib", // 1410, + "Zn63_p_to_He4_Cu60_reaclib", // 1411, + "Zn64_n_to_p_Cu64_reaclib", // 1412, + "Zn64_n_to_He4_Ni61_reaclib", // 1413, + "Zn64_p_to_n_Ga64_reaclib", // 1414, + "Zn64_p_to_He4_Cu61_reaclib", // 1415, + "Zn65_n_to_p_Cu65_reaclib", // 1416, + "Zn65_n_to_He4_Ni62_reaclib", // 1417, + "Zn65_p_to_He4_Cu62_reaclib", // 1418, + "Zn66_n_to_He4_Ni63_reaclib", // 1419, + "Zn66_p_to_He4_Cu63_reaclib", // 1420, + "Ga62_n_to_p_Zn62_reaclib", // 1421, + "Ga62_n_to_He4_Cu59_reaclib", // 1422, + "Ga62_p_to_He4_Zn59_reaclib", // 1423, + "Ga63_n_to_p_Zn63_reaclib", // 1424, + "Ga63_n_to_He4_Cu60_reaclib", // 1425, + "Ga63_p_to_n_Ge63_reaclib", // 1426, + "Ga63_p_to_He4_Zn60_reaclib", // 1427, + "Ga64_n_to_p_Zn64_reaclib", // 1428, + "Ga64_n_to_He4_Cu61_reaclib", // 1429, + "Ga64_p_to_n_Ge64_reaclib", // 1430, + "Ga64_p_to_He4_Zn61_reaclib", // 1431, + "Ge63_n_to_p_Ga63_reaclib", // 1432, + "Ge63_n_to_He4_Zn60_reaclib", // 1433, + "Ge64_n_to_p_Ga64_reaclib", // 1434, + "Ge64_n_to_He4_Zn61_reaclib", // 1435, + "d_p_to_n_p_p_reaclib", // 1436, "He3_He3_to_p_p_He4_reaclib", // 1437, - "d_Li7_to_n_He4_He4_reaclib", // 1438, - "d_Be7_to_p_He4_He4_reaclib", // 1439, - "p_Be9_to_d_He4_He4_reaclib", // 1440, - "n_B8_to_p_He4_He4_reaclib", // 1441, - "p_B11_to_He4_He4_He4_reaclib", // 1442, - "He3_Li7_to_n_p_He4_He4_reaclib", // 1443, - "He3_Be7_to_p_p_He4_He4_reaclib", // 1444, - "p_Be9_to_n_p_He4_He4_reaclib", // 1445, - "n_p_He4_to_Li6_reaclib", // 1446, - "n_He4_He4_to_Be9_reaclib", // 1447, + "Li7_d_to_n_He4_He4_reaclib", // 1438, + "Be7_d_to_p_He4_He4_reaclib", // 1439, + "Be9_p_to_d_He4_He4_reaclib", // 1440, + "B8_n_to_p_He4_He4_reaclib", // 1441, + "B11_p_to_3He4_reaclib", // 1442, + "Li7_He3_to_n_p_He4_He4_reaclib", // 1443, + "Be7_He3_to_p_p_He4_He4_reaclib", // 1444, + "Be9_p_to_n_p_He4_He4_reaclib", // 1445, + "He4_p_n_to_Li6_reaclib", // 1446, + "He4_He4_n_to_Be9_reaclib", // 1447, "He4_He4_He4_to_C12_reaclib", // 1448, - "n_p_p_to_p_d_reaclib", // 1449, - "p_p_He4_to_He3_He3_reaclib", // 1450, - "n_He4_He4_to_d_Li7_reaclib", // 1451, - "p_He4_He4_to_n_B8_reaclib", // 1452, - "p_He4_He4_to_d_Be7_reaclib", // 1453, + "p_p_n_to_p_d_reaclib", // 1449, + "He4_p_p_to_He3_He3_reaclib", // 1450, + "He4_He4_n_to_d_Li7_reaclib", // 1451, + "He4_He4_p_to_n_B8_reaclib", // 1452, + "He4_He4_p_to_d_Be7_reaclib", // 1453, "d_He4_He4_to_p_Be9_reaclib", // 1454, "He4_He4_He4_to_p_B11_reaclib", // 1455, - "n_p_He4_He4_to_He3_Li7_reaclib", // 1456, - "n_p_He4_He4_to_p_Be9_reaclib", // 1457, - "p_p_He4_He4_to_He3_Be7_reaclib", // 1458, - "Na21_to_Ne21_weaktab", // 1459, - "Ne21_to_Na21_weaktab", // 1460, - "Na22_to_Ne22_weaktab", // 1461, - "Ne22_to_Na22_weaktab", // 1462, - "Mg23_to_Na23_weaktab", // 1463, - "Na23_to_Mg23_weaktab", // 1464, - "Al25_to_Mg25_weaktab", // 1465, - "Mg25_to_Al25_weaktab", // 1466, - "Al26_to_Mg26_weaktab", // 1467, - "Mg26_to_Al26_weaktab", // 1468, - "P29_to_Si29_weaktab", // 1469, - "Si29_to_P29_weaktab", // 1470, - "P30_to_Si30_weaktab", // 1471, - "Si30_to_P30_weaktab", // 1472, - "P31_to_Si31_weaktab", // 1473, - "Si31_to_P31_weaktab", // 1474, - "P32_to_S32_weaktab", // 1475, - "P32_to_Si32_weaktab", // 1476, - "S32_to_P32_weaktab", // 1477, - "Si32_to_P32_weaktab", // 1478, - "Cl33_to_S33_weaktab", // 1479, - "P33_to_S33_weaktab", // 1480, - "S33_to_Cl33_weaktab", // 1481, - "S33_to_P33_weaktab", // 1482, - "Cl34_to_S34_weaktab", // 1483, - "S34_to_Cl34_weaktab", // 1484, - "Cl35_to_S35_weaktab", // 1485, - "S35_to_Cl35_weaktab", // 1486, - "Ar36_to_Cl36_weaktab", // 1487, - "Cl36_to_Ar36_weaktab", // 1488, - "Cl36_to_S36_weaktab", // 1489, - "S36_to_Cl36_weaktab", // 1490, - "Ar37_to_Cl37_weaktab", // 1491, - "Ar37_to_K37_weaktab", // 1492, - "Cl37_to_Ar37_weaktab", // 1493, - "K37_to_Ar37_weaktab", // 1494, - "Ar38_to_K38_weaktab", // 1495, - "K38_to_Ar38_weaktab", // 1496, - "Ar39_to_K39_weaktab", // 1497, - "K39_to_Ar39_weaktab", // 1498, - "Ar40_to_K40_weaktab", // 1499, - "Ca40_to_K40_weaktab", // 1500, - "K40_to_Ar40_weaktab", // 1501, - "K40_to_Ca40_weaktab", // 1502, - "Ca41_to_K41_weaktab", // 1503, - "K41_to_Ca41_weaktab", // 1504, - "Ca43_to_Sc43_weaktab", // 1505, - "Sc43_to_Ca43_weaktab", // 1506, - "Ca44_to_Sc44_weaktab", // 1507, - "Sc44_to_Ca44_weaktab", // 1508, - "Sc44_to_Ti44_weaktab", // 1509, - "Ti44_to_Sc44_weaktab", // 1510, - "Co53_to_Fe53_weaktab", // 1511, - "Fe53_to_Co53_weaktab", // 1512, - "Cu57_to_Ni57_weaktab", // 1513, - "Ni57_to_Cu57_weaktab", // 1514, - "Ca45_to_Sc45_weaktab", // 1515, - "Sc45_to_Ca45_weaktab", // 1516, - "Sc45_to_Ti45_weaktab", // 1517, - "Ti45_to_Sc45_weaktab", // 1518, - "Ca46_to_Sc46_weaktab", // 1519, - "Sc46_to_Ca46_weaktab", // 1520, - "Sc46_to_Ti46_weaktab", // 1521, - "Ti46_to_Sc46_weaktab", // 1522, - "Ti46_to_V46_weaktab", // 1523, - "V46_to_Ti46_weaktab", // 1524, - "Ca47_to_Sc47_weaktab", // 1525, - "Sc47_to_Ca47_weaktab", // 1526, - "Sc47_to_Ti47_weaktab", // 1527, - "Ti47_to_Sc47_weaktab", // 1528, - "Ti47_to_V47_weaktab", // 1529, - "V47_to_Ti47_weaktab", // 1530, - "Ca48_to_Sc48_weaktab", // 1531, - "Cr48_to_V48_weaktab", // 1532, - "Sc48_to_Ca48_weaktab", // 1533, - "Sc48_to_Ti48_weaktab", // 1534, - "Ti48_to_Sc48_weaktab", // 1535, - "Ti48_to_V48_weaktab", // 1536, - "V48_to_Cr48_weaktab", // 1537, - "V48_to_Ti48_weaktab", // 1538, - "Cr49_to_V49_weaktab", // 1539, - "Sc49_to_Ti49_weaktab", // 1540, - "Ti49_to_Sc49_weaktab", // 1541, - "Ti49_to_V49_weaktab", // 1542, - "V49_to_Cr49_weaktab", // 1543, - "V49_to_Ti49_weaktab", // 1544, - "Cr50_to_Mn50_weaktab", // 1545, - "Cr50_to_V50_weaktab", // 1546, - "Mn50_to_Cr50_weaktab", // 1547, - "Ti50_to_V50_weaktab", // 1548, - "V50_to_Cr50_weaktab", // 1549, - "V50_to_Ti50_weaktab", // 1550, - "Cr51_to_Mn51_weaktab", // 1551, - "Cr51_to_V51_weaktab", // 1552, - "Mn51_to_Cr51_weaktab", // 1553, - "Ti51_to_V51_weaktab", // 1554, - "V51_to_Cr51_weaktab", // 1555, - "V51_to_Ti51_weaktab", // 1556, - "Cr52_to_Mn52_weaktab", // 1557, - "Cr52_to_V52_weaktab", // 1558, - "Fe52_to_Mn52_weaktab", // 1559, - "Mn52_to_Cr52_weaktab", // 1560, - "Mn52_to_Fe52_weaktab", // 1561, - "V52_to_Cr52_weaktab", // 1562, - "Cr53_to_Mn53_weaktab", // 1563, - "Fe53_to_Mn53_weaktab", // 1564, - "Mn53_to_Cr53_weaktab", // 1565, - "Mn53_to_Fe53_weaktab", // 1566, - "Co54_to_Fe54_weaktab", // 1567, - "Cr54_to_Mn54_weaktab", // 1568, - "Fe54_to_Co54_weaktab", // 1569, - "Fe54_to_Mn54_weaktab", // 1570, - "Mn54_to_Cr54_weaktab", // 1571, - "Mn54_to_Fe54_weaktab", // 1572, - "Co55_to_Fe55_weaktab", // 1573, - "Fe55_to_Co55_weaktab", // 1574, - "Fe55_to_Mn55_weaktab", // 1575, - "Mn55_to_Fe55_weaktab", // 1576, - "Co56_to_Fe56_weaktab", // 1577, - "Co56_to_Ni56_weaktab", // 1578, - "Fe56_to_Co56_weaktab", // 1579, - "Ni56_to_Co56_weaktab", // 1580, - "Co57_to_Fe57_weaktab", // 1581, - "Co57_to_Ni57_weaktab", // 1582, - "Fe57_to_Co57_weaktab", // 1583, - "Ni57_to_Co57_weaktab", // 1584, - "Co58_to_Fe58_weaktab", // 1585, - "Co58_to_Ni58_weaktab", // 1586, - "Cu58_to_Ni58_weaktab", // 1587, - "Fe58_to_Co58_weaktab", // 1588, - "Ni58_to_Co58_weaktab", // 1589, - "Ni58_to_Cu58_weaktab", // 1590, - "Co59_to_Ni59_weaktab", // 1591, - "Cu59_to_Ni59_weaktab", // 1592, - "Ni59_to_Co59_weaktab", // 1593, - "Ni59_to_Cu59_weaktab", // 1594, - "Cu60_to_Ni60_weaktab", // 1595, - "Cu60_to_Zn60_weaktab", // 1596, - "Ni60_to_Cu60_weaktab", // 1597, - "Zn60_to_Cu60_weaktab", // 1598, - "Cu61_to_Ni61_weaktab", // 1599, - "Cu61_to_Zn61_weaktab", // 1600, - "Ni61_to_Cu61_weaktab", // 1601, - "Zn61_to_Cu61_weaktab", // 1602, - "Cu62_to_Ni62_weaktab", // 1603, - "Cu62_to_Zn62_weaktab", // 1604, - "Ga62_to_Zn62_weaktab", // 1605, - "Ni62_to_Cu62_weaktab", // 1606, - "Zn62_to_Cu62_weaktab", // 1607, - "Zn62_to_Ga62_weaktab", // 1608, - "Cu63_to_Ni63_weaktab", // 1609, - "Cu63_to_Zn63_weaktab", // 1610, - "Ga63_to_Zn63_weaktab", // 1611, - "Ni63_to_Cu63_weaktab", // 1612, - "Zn63_to_Cu63_weaktab", // 1613, - "Zn63_to_Ga63_weaktab", // 1614, - "Cu64_to_Ni64_weaktab", // 1615, - "Cu64_to_Zn64_weaktab", // 1616, - "Ga64_to_Ge64_weaktab", // 1617, - "Ga64_to_Zn64_weaktab", // 1618, - "Ge64_to_Ga64_weaktab", // 1619, - "Ni64_to_Cu64_weaktab", // 1620, - "Zn64_to_Cu64_weaktab", // 1621, - "Zn64_to_Ga64_weaktab", // 1622, - "Cu65_to_Zn65_weaktab", // 1623, - "Zn65_to_Cu65_weaktab", // 1624, - "n_to_p_weaktab", // 1625, - "p_to_n_weaktab" // 1626, + "He4_He4_p_n_to_He3_Li7_reaclib", // 1456, + "He4_He4_p_n_to_p_Be9_reaclib", // 1457, + "He4_He4_p_p_to_He3_Be7_reaclib", // 1458, + "Na21_to_Ne21_electron_capture_weaktab", // 1459, + "Ne21_to_Na21_beta_neg_weaktab", // 1460, + "Na22_to_Ne22_electron_capture_weaktab", // 1461, + "Ne22_to_Na22_beta_neg_weaktab", // 1462, + "Mg23_to_Na23_electron_capture_weaktab", // 1463, + "Na23_to_Mg23_beta_neg_weaktab", // 1464, + "Al25_to_Mg25_electron_capture_weaktab", // 1465, + "Mg25_to_Al25_beta_neg_weaktab", // 1466, + "Al26_to_Mg26_electron_capture_weaktab", // 1467, + "Mg26_to_Al26_beta_neg_weaktab", // 1468, + "P29_to_Si29_electron_capture_weaktab", // 1469, + "Si29_to_P29_beta_neg_weaktab", // 1470, + "P30_to_Si30_electron_capture_weaktab", // 1471, + "Si30_to_P30_beta_neg_weaktab", // 1472, + "P31_to_Si31_electron_capture_weaktab", // 1473, + "Si31_to_P31_beta_neg_weaktab", // 1474, + "P32_to_S32_beta_neg_weaktab", // 1475, + "P32_to_Si32_electron_capture_weaktab", // 1476, + "S32_to_P32_electron_capture_weaktab", // 1477, + "Si32_to_P32_beta_neg_weaktab", // 1478, + "Cl33_to_S33_electron_capture_weaktab", // 1479, + "P33_to_S33_beta_neg_weaktab", // 1480, + "S33_to_Cl33_beta_neg_weaktab", // 1481, + "S33_to_P33_electron_capture_weaktab", // 1482, + "Cl34_to_S34_electron_capture_weaktab", // 1483, + "S34_to_Cl34_beta_neg_weaktab", // 1484, + "Cl35_to_S35_electron_capture_weaktab", // 1485, + "S35_to_Cl35_beta_neg_weaktab", // 1486, + "Ar36_to_Cl36_electron_capture_weaktab", // 1487, + "Cl36_to_Ar36_beta_neg_weaktab", // 1488, + "Cl36_to_S36_electron_capture_weaktab", // 1489, + "S36_to_Cl36_beta_neg_weaktab", // 1490, + "Ar37_to_Cl37_electron_capture_weaktab", // 1491, + "Ar37_to_K37_beta_neg_weaktab", // 1492, + "Cl37_to_Ar37_beta_neg_weaktab", // 1493, + "K37_to_Ar37_electron_capture_weaktab", // 1494, + "Ar38_to_K38_beta_neg_weaktab", // 1495, + "K38_to_Ar38_electron_capture_weaktab", // 1496, + "Ar39_to_K39_beta_neg_weaktab", // 1497, + "K39_to_Ar39_electron_capture_weaktab", // 1498, + "Ar40_to_K40_beta_neg_weaktab", // 1499, + "Ca40_to_K40_electron_capture_weaktab", // 1500, + "K40_to_Ar40_electron_capture_weaktab", // 1501, + "K40_to_Ca40_beta_neg_weaktab", // 1502, + "Ca41_to_K41_electron_capture_weaktab", // 1503, + "K41_to_Ca41_beta_neg_weaktab", // 1504, + "Ca43_to_Sc43_beta_neg_weaktab", // 1505, + "Sc43_to_Ca43_electron_capture_weaktab", // 1506, + "Ca44_to_Sc44_beta_neg_weaktab", // 1507, + "Sc44_to_Ca44_electron_capture_weaktab", // 1508, + "Sc44_to_Ti44_beta_neg_weaktab", // 1509, + "Ti44_to_Sc44_electron_capture_weaktab", // 1510, + "Co53_to_Fe53_electron_capture_weaktab", // 1511, + "Fe53_to_Co53_beta_neg_weaktab", // 1512, + "Cu57_to_Ni57_electron_capture_weaktab", // 1513, + "Ni57_to_Cu57_beta_neg_weaktab", // 1514, + "Ca45_to_Sc45_beta_neg_weaktab", // 1515, + "Sc45_to_Ca45_electron_capture_weaktab", // 1516, + "Sc45_to_Ti45_beta_neg_weaktab", // 1517, + "Ti45_to_Sc45_electron_capture_weaktab", // 1518, + "Ca46_to_Sc46_beta_neg_weaktab", // 1519, + "Sc46_to_Ca46_electron_capture_weaktab", // 1520, + "Sc46_to_Ti46_beta_neg_weaktab", // 1521, + "Ti46_to_Sc46_electron_capture_weaktab", // 1522, + "Ti46_to_V46_beta_neg_weaktab", // 1523, + "V46_to_Ti46_electron_capture_weaktab", // 1524, + "Ca47_to_Sc47_beta_neg_weaktab", // 1525, + "Sc47_to_Ca47_electron_capture_weaktab", // 1526, + "Sc47_to_Ti47_beta_neg_weaktab", // 1527, + "Ti47_to_Sc47_electron_capture_weaktab", // 1528, + "Ti47_to_V47_beta_neg_weaktab", // 1529, + "V47_to_Ti47_electron_capture_weaktab", // 1530, + "Ca48_to_Sc48_beta_neg_weaktab", // 1531, + "Cr48_to_V48_electron_capture_weaktab", // 1532, + "Sc48_to_Ca48_electron_capture_weaktab", // 1533, + "Sc48_to_Ti48_beta_neg_weaktab", // 1534, + "Ti48_to_Sc48_electron_capture_weaktab", // 1535, + "Ti48_to_V48_beta_neg_weaktab", // 1536, + "V48_to_Cr48_beta_neg_weaktab", // 1537, + "V48_to_Ti48_electron_capture_weaktab", // 1538, + "Cr49_to_V49_electron_capture_weaktab", // 1539, + "Sc49_to_Ti49_beta_neg_weaktab", // 1540, + "Ti49_to_Sc49_electron_capture_weaktab", // 1541, + "Ti49_to_V49_beta_neg_weaktab", // 1542, + "V49_to_Cr49_beta_neg_weaktab", // 1543, + "V49_to_Ti49_electron_capture_weaktab", // 1544, + "Cr50_to_Mn50_beta_neg_weaktab", // 1545, + "Cr50_to_V50_electron_capture_weaktab", // 1546, + "Mn50_to_Cr50_electron_capture_weaktab", // 1547, + "Ti50_to_V50_beta_neg_weaktab", // 1548, + "V50_to_Cr50_beta_neg_weaktab", // 1549, + "V50_to_Ti50_electron_capture_weaktab", // 1550, + "Cr51_to_Mn51_beta_neg_weaktab", // 1551, + "Cr51_to_V51_electron_capture_weaktab", // 1552, + "Mn51_to_Cr51_electron_capture_weaktab", // 1553, + "Ti51_to_V51_beta_neg_weaktab", // 1554, + "V51_to_Cr51_beta_neg_weaktab", // 1555, + "V51_to_Ti51_electron_capture_weaktab", // 1556, + "Cr52_to_Mn52_beta_neg_weaktab", // 1557, + "Cr52_to_V52_electron_capture_weaktab", // 1558, + "Fe52_to_Mn52_electron_capture_weaktab", // 1559, + "Mn52_to_Cr52_electron_capture_weaktab", // 1560, + "Mn52_to_Fe52_beta_neg_weaktab", // 1561, + "V52_to_Cr52_beta_neg_weaktab", // 1562, + "Cr53_to_Mn53_beta_neg_weaktab", // 1563, + "Fe53_to_Mn53_electron_capture_weaktab", // 1564, + "Mn53_to_Cr53_electron_capture_weaktab", // 1565, + "Mn53_to_Fe53_beta_neg_weaktab", // 1566, + "Co54_to_Fe54_electron_capture_weaktab", // 1567, + "Cr54_to_Mn54_beta_neg_weaktab", // 1568, + "Fe54_to_Co54_beta_neg_weaktab", // 1569, + "Fe54_to_Mn54_electron_capture_weaktab", // 1570, + "Mn54_to_Cr54_electron_capture_weaktab", // 1571, + "Mn54_to_Fe54_beta_neg_weaktab", // 1572, + "Co55_to_Fe55_electron_capture_weaktab", // 1573, + "Fe55_to_Co55_beta_neg_weaktab", // 1574, + "Fe55_to_Mn55_electron_capture_weaktab", // 1575, + "Mn55_to_Fe55_beta_neg_weaktab", // 1576, + "Co56_to_Fe56_electron_capture_weaktab", // 1577, + "Co56_to_Ni56_beta_neg_weaktab", // 1578, + "Fe56_to_Co56_beta_neg_weaktab", // 1579, + "Ni56_to_Co56_electron_capture_weaktab", // 1580, + "Co57_to_Fe57_electron_capture_weaktab", // 1581, + "Co57_to_Ni57_beta_neg_weaktab", // 1582, + "Fe57_to_Co57_beta_neg_weaktab", // 1583, + "Ni57_to_Co57_electron_capture_weaktab", // 1584, + "Co58_to_Fe58_electron_capture_weaktab", // 1585, + "Co58_to_Ni58_beta_neg_weaktab", // 1586, + "Cu58_to_Ni58_electron_capture_weaktab", // 1587, + "Fe58_to_Co58_beta_neg_weaktab", // 1588, + "Ni58_to_Co58_electron_capture_weaktab", // 1589, + "Ni58_to_Cu58_beta_neg_weaktab", // 1590, + "Co59_to_Ni59_beta_neg_weaktab", // 1591, + "Cu59_to_Ni59_electron_capture_weaktab", // 1592, + "Ni59_to_Co59_electron_capture_weaktab", // 1593, + "Ni59_to_Cu59_beta_neg_weaktab", // 1594, + "Cu60_to_Ni60_electron_capture_weaktab", // 1595, + "Cu60_to_Zn60_beta_neg_weaktab", // 1596, + "Ni60_to_Cu60_beta_neg_weaktab", // 1597, + "Zn60_to_Cu60_electron_capture_weaktab", // 1598, + "Cu61_to_Ni61_electron_capture_weaktab", // 1599, + "Cu61_to_Zn61_beta_neg_weaktab", // 1600, + "Ni61_to_Cu61_beta_neg_weaktab", // 1601, + "Zn61_to_Cu61_electron_capture_weaktab", // 1602, + "Cu62_to_Ni62_electron_capture_weaktab", // 1603, + "Cu62_to_Zn62_beta_neg_weaktab", // 1604, + "Ga62_to_Zn62_electron_capture_weaktab", // 1605, + "Ni62_to_Cu62_beta_neg_weaktab", // 1606, + "Zn62_to_Cu62_electron_capture_weaktab", // 1607, + "Zn62_to_Ga62_beta_neg_weaktab", // 1608, + "Cu63_to_Ni63_electron_capture_weaktab", // 1609, + "Cu63_to_Zn63_beta_neg_weaktab", // 1610, + "Ga63_to_Zn63_electron_capture_weaktab", // 1611, + "Ni63_to_Cu63_beta_neg_weaktab", // 1612, + "Zn63_to_Cu63_electron_capture_weaktab", // 1613, + "Zn63_to_Ga63_beta_neg_weaktab", // 1614, + "Cu64_to_Ni64_electron_capture_weaktab", // 1615, + "Cu64_to_Zn64_beta_neg_weaktab", // 1616, + "Ga64_to_Ge64_beta_neg_weaktab", // 1617, + "Ga64_to_Zn64_electron_capture_weaktab", // 1618, + "Ge64_to_Ga64_electron_capture_weaktab", // 1619, + "Ni64_to_Cu64_beta_neg_weaktab", // 1620, + "Zn64_to_Cu64_electron_capture_weaktab", // 1621, + "Zn64_to_Ga64_beta_neg_weaktab", // 1622, + "Cu65_to_Zn65_beta_neg_weaktab", // 1623, + "Zn65_to_Cu65_electron_capture_weaktab", // 1624, + "n_to_p_beta_neg_weaktab", // 1625, + "p_to_n_electron_capture_weaktab" // 1626, }; template @@ -4654,701 +4654,701 @@ namespace NSE_INDEX constexpr int NumNSERatePairs = 695; inline AMREX_GPU_MANAGED amrex::Array2D rate_pair_data { - N, H1, -1, H2, -1, -1, H2, -1, k_n_p_to_d_reaclib, k_d_to_n_p_reaclib, - H1, H2, -1, He3, -1, -1, H2, He3, k_p_d_to_He3_reaclib, k_He3_to_p_d_reaclib, + N, H1, -1, H2, -1, -1, H2, -1, k_p_n_to_d_reaclib, k_d_to_n_p_reaclib, + H1, H2, -1, He3, -1, -1, H2, He3, k_d_p_to_He3_reaclib, k_He3_to_p_d_reaclib, H2, H2, -1, He4, -1, -1, H2, H2, k_d_d_to_He4_reaclib, k_He4_to_d_d_reaclib, - He4, H2, -1, Li6, -1, -1, H2, Li6, k_He4_d_to_Li6_reaclib, k_Li6_to_He4_d_reaclib, - N, He3, -1, He4, -1, -1, He3, -1, k_n_He3_to_He4_reaclib, k_He4_to_n_He3_reaclib, - He4, He3, -1, Be7, -1, -1, He3, Be7, k_He4_He3_to_Be7_reaclib, k_Be7_to_He4_He3_reaclib, - N, Li6, -1, Li7, -1, -1, Li6, Li7, k_n_Li6_to_Li7_reaclib, k_Li7_to_n_Li6_reaclib, - H1, Li6, -1, Be7, -1, -1, Li6, Be7, k_p_Li6_to_Be7_reaclib, k_Be7_to_p_Li6_reaclib, - He4, Li6, -1, B10, -1, -1, Li6, B10, k_He4_Li6_to_B10_reaclib, k_B10_to_He4_Li6_reaclib, - He4, Li7, -1, B11, -1, -1, Li7, B11, k_He4_Li7_to_B11_reaclib, k_B11_to_He4_Li7_reaclib, - H1, Be7, -1, B8, -1, -1, Be7, B8, k_p_Be7_to_B8_reaclib, k_B8_to_p_Be7_reaclib, - H1, Be9, -1, B10, -1, -1, Be9, B10, k_p_Be9_to_B10_reaclib, k_B10_to_p_Be9_reaclib, - N, B10, -1, B11, -1, -1, B10, B11, k_n_B10_to_B11_reaclib, k_B11_to_n_B10_reaclib, - H1, B11, -1, C12, -1, -1, B11, C12, k_p_B11_to_C12_reaclib, k_C12_to_p_B11_reaclib, - N, C12, -1, C13, -1, -1, C12, C13, k_n_C12_to_C13_reaclib, k_C13_to_n_C12_reaclib, - H1, C12, -1, N13, -1, -1, C12, N13, k_p_C12_to_N13_reaclib, k_N13_to_p_C12_reaclib, - He4, C12, -1, O16, -1, -1, C12, O16, k_He4_C12_to_O16_reaclib, k_O16_to_He4_C12_reaclib, - N, C13, -1, C14, -1, -1, C13, C14, k_n_C13_to_C14_reaclib, k_C14_to_n_C13_reaclib, - H1, C13, -1, N14, -1, -1, C13, N14, k_p_C13_to_N14_reaclib, k_N14_to_p_C13_reaclib, - H1, C14, -1, N15, -1, -1, C14, N15, k_p_C14_to_N15_reaclib, k_N15_to_p_C14_reaclib, - He4, C14, -1, O18, -1, -1, C14, O18, k_He4_C14_to_O18_reaclib, k_O18_to_He4_C14_reaclib, - N, N13, -1, N14, -1, -1, N13, N14, k_n_N13_to_N14_reaclib, k_N14_to_n_N13_reaclib, - H1, N13, -1, O14, -1, -1, N13, O14, k_p_N13_to_O14_reaclib, k_O14_to_p_N13_reaclib, - N, N14, -1, N15, -1, -1, N14, N15, k_n_N14_to_N15_reaclib, k_N15_to_n_N14_reaclib, - H1, N14, -1, O15, -1, -1, N14, O15, k_p_N14_to_O15_reaclib, k_O15_to_p_N14_reaclib, - He4, N14, -1, F18, -1, -1, N14, F18, k_He4_N14_to_F18_reaclib, k_F18_to_He4_N14_reaclib, - H1, N15, -1, O16, -1, -1, N15, O16, k_p_N15_to_O16_reaclib, k_O16_to_p_N15_reaclib, - He4, N15, -1, F19, -1, -1, N15, F19, k_He4_N15_to_F19_reaclib, k_F19_to_He4_N15_reaclib, - N, O14, -1, O15, -1, -1, O14, O15, k_n_O14_to_O15_reaclib, k_O15_to_n_O14_reaclib, - He4, O14, -1, Ne18, -1, -1, O14, Ne18, k_He4_O14_to_Ne18_reaclib, k_Ne18_to_He4_O14_reaclib, - N, O15, -1, O16, -1, -1, O15, O16, k_n_O15_to_O16_reaclib, k_O16_to_n_O15_reaclib, - He4, O15, -1, Ne19, -1, -1, O15, Ne19, k_He4_O15_to_Ne19_reaclib, k_Ne19_to_He4_O15_reaclib, - N, O16, -1, O17, -1, -1, O16, O17, k_n_O16_to_O17_reaclib, k_O17_to_n_O16_reaclib, - H1, O16, -1, F17, -1, -1, O16, F17, k_p_O16_to_F17_reaclib, k_F17_to_p_O16_reaclib, - He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_He4_O16_to_Ne20_reaclib, k_Ne20_to_He4_O16_reaclib, - N, O17, -1, O18, -1, -1, O17, O18, k_n_O17_to_O18_reaclib, k_O18_to_n_O17_reaclib, - H1, O17, -1, F18, -1, -1, O17, F18, k_p_O17_to_F18_reaclib, k_F18_to_p_O17_reaclib, - He4, O17, -1, Ne21, -1, -1, O17, Ne21, k_He4_O17_to_Ne21_reaclib, k_Ne21_to_He4_O17_reaclib, - H1, O18, -1, F19, -1, -1, O18, F19, k_p_O18_to_F19_reaclib, k_F19_to_p_O18_reaclib, - He4, O18, -1, Ne22, -1, -1, O18, Ne22, k_He4_O18_to_Ne22_reaclib, k_Ne22_to_He4_O18_reaclib, - N, F17, -1, F18, -1, -1, F17, F18, k_n_F17_to_F18_reaclib, k_F18_to_n_F17_reaclib, - H1, F17, -1, Ne18, -1, -1, F17, Ne18, k_p_F17_to_Ne18_reaclib, k_Ne18_to_p_F17_reaclib, - He4, F17, -1, Na21, -1, -1, F17, Na21, k_He4_F17_to_Na21_reaclib, k_Na21_to_He4_F17_reaclib, - N, F18, -1, F19, -1, -1, F18, F19, k_n_F18_to_F19_reaclib, k_F19_to_n_F18_reaclib, - H1, F18, -1, Ne19, -1, -1, F18, Ne19, k_p_F18_to_Ne19_reaclib, k_Ne19_to_p_F18_reaclib, - He4, F18, -1, Na22, -1, -1, F18, Na22, k_He4_F18_to_Na22_reaclib, k_Na22_to_He4_F18_reaclib, - H1, F19, -1, Ne20, -1, -1, F19, Ne20, k_p_F19_to_Ne20_reaclib, k_Ne20_to_p_F19_reaclib, - He4, F19, -1, Na23, -1, -1, F19, Na23, k_He4_F19_to_Na23_reaclib, k_Na23_to_He4_F19_reaclib, - N, Ne18, -1, Ne19, -1, -1, Ne18, Ne19, k_n_Ne18_to_Ne19_reaclib, k_Ne19_to_n_Ne18_reaclib, - N, Ne19, -1, Ne20, -1, -1, Ne19, Ne20, k_n_Ne19_to_Ne20_reaclib, k_Ne20_to_n_Ne19_reaclib, - He4, Ne19, -1, Mg23, -1, -1, Ne19, Mg23, k_He4_Ne19_to_Mg23_reaclib, k_Mg23_to_He4_Ne19_reaclib, - N, Ne20, -1, Ne21, -1, -1, Ne20, Ne21, k_n_Ne20_to_Ne21_reaclib, k_Ne21_to_n_Ne20_reaclib, - H1, Ne20, -1, Na21, -1, -1, Ne20, Na21, k_p_Ne20_to_Na21_reaclib, k_Na21_to_p_Ne20_reaclib, - He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_He4_Ne20_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_reaclib, - N, Ne21, -1, Ne22, -1, -1, Ne21, Ne22, k_n_Ne21_to_Ne22_reaclib, k_Ne22_to_n_Ne21_reaclib, - H1, Ne21, -1, Na22, -1, -1, Ne21, Na22, k_p_Ne21_to_Na22_reaclib, k_Na22_to_p_Ne21_reaclib, - He4, Ne21, -1, Mg25, -1, -1, Ne21, Mg25, k_He4_Ne21_to_Mg25_reaclib, k_Mg25_to_He4_Ne21_reaclib, - H1, Ne22, -1, Na23, -1, -1, Ne22, Na23, k_p_Ne22_to_Na23_reaclib, k_Na23_to_p_Ne22_reaclib, - He4, Ne22, -1, Mg26, -1, -1, Ne22, Mg26, k_He4_Ne22_to_Mg26_reaclib, k_Mg26_to_He4_Ne22_reaclib, - N, Na21, -1, Na22, -1, -1, Na21, Na22, k_n_Na21_to_Na22_reaclib, k_Na22_to_n_Na21_reaclib, - He4, Na21, -1, Al25, -1, -1, Na21, Al25, k_He4_Na21_to_Al25_reaclib, k_Al25_to_He4_Na21_reaclib, - N, Na22, -1, Na23, -1, -1, Na22, Na23, k_n_Na22_to_Na23_reaclib, k_Na23_to_n_Na22_reaclib, - H1, Na22, -1, Mg23, -1, -1, Na22, Mg23, k_p_Na22_to_Mg23_reaclib, k_Mg23_to_p_Na22_reaclib, - He4, Na22, -1, Al26, -1, -1, Na22, Al26, k_He4_Na22_to_Al26_reaclib, k_Al26_to_He4_Na22_reaclib, - H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_p_Na23_to_Mg24_reaclib, k_Mg24_to_p_Na23_reaclib, - He4, Na23, -1, Al27, -1, -1, Na23, Al27, k_He4_Na23_to_Al27_reaclib, k_Al27_to_He4_Na23_reaclib, - N, Mg23, -1, Mg24, -1, -1, Mg23, Mg24, k_n_Mg23_to_Mg24_reaclib, k_Mg24_to_n_Mg23_reaclib, - N, Mg24, -1, Mg25, -1, -1, Mg24, Mg25, k_n_Mg24_to_Mg25_reaclib, k_Mg25_to_n_Mg24_reaclib, - H1, Mg24, -1, Al25, -1, -1, Mg24, Al25, k_p_Mg24_to_Al25_reaclib, k_Al25_to_p_Mg24_reaclib, - He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_He4_Mg24_to_Si28_reaclib, k_Si28_to_He4_Mg24_reaclib, - N, Mg25, -1, Mg26, -1, -1, Mg25, Mg26, k_n_Mg25_to_Mg26_reaclib, k_Mg26_to_n_Mg25_reaclib, - H1, Mg25, -1, Al26, -1, -1, Mg25, Al26, k_p_Mg25_to_Al26_reaclib, k_Al26_to_p_Mg25_reaclib, - He4, Mg25, -1, Si29, -1, -1, Mg25, Si29, k_He4_Mg25_to_Si29_reaclib, k_Si29_to_He4_Mg25_reaclib, - H1, Mg26, -1, Al27, -1, -1, Mg26, Al27, k_p_Mg26_to_Al27_reaclib, k_Al27_to_p_Mg26_reaclib, - He4, Mg26, -1, Si30, -1, -1, Mg26, Si30, k_He4_Mg26_to_Si30_reaclib, k_Si30_to_He4_Mg26_reaclib, - N, Al25, -1, Al26, -1, -1, Al25, Al26, k_n_Al25_to_Al26_reaclib, k_Al26_to_n_Al25_reaclib, - He4, Al25, -1, P29, -1, -1, Al25, P29, k_He4_Al25_to_P29_reaclib, k_P29_to_He4_Al25_reaclib, - N, Al26, -1, Al27, -1, -1, Al26, Al27, k_n_Al26_to_Al27_reaclib, k_Al27_to_n_Al26_reaclib, - He4, Al26, -1, P30, -1, -1, Al26, P30, k_He4_Al26_to_P30_reaclib, k_P30_to_He4_Al26_reaclib, - H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_p_Al27_to_Si28_reaclib, k_Si28_to_p_Al27_reaclib, - He4, Al27, -1, P31, -1, -1, Al27, P31, k_He4_Al27_to_P31_reaclib, k_P31_to_He4_Al27_reaclib, - N, Si28, -1, Si29, -1, -1, Si28, Si29, k_n_Si28_to_Si29_reaclib, k_Si29_to_n_Si28_reaclib, - H1, Si28, -1, P29, -1, -1, Si28, P29, k_p_Si28_to_P29_reaclib, k_P29_to_p_Si28_reaclib, - He4, Si28, -1, S32, -1, -1, Si28, S32, k_He4_Si28_to_S32_reaclib, k_S32_to_He4_Si28_reaclib, - N, Si29, -1, Si30, -1, -1, Si29, Si30, k_n_Si29_to_Si30_reaclib, k_Si30_to_n_Si29_reaclib, - H1, Si29, -1, P30, -1, -1, Si29, P30, k_p_Si29_to_P30_reaclib, k_P30_to_p_Si29_reaclib, - He4, Si29, -1, S33, -1, -1, Si29, S33, k_He4_Si29_to_S33_reaclib, k_S33_to_He4_Si29_reaclib, - N, Si30, -1, Si31, -1, -1, Si30, Si31, k_n_Si30_to_Si31_reaclib, k_Si31_to_n_Si30_reaclib, - H1, Si30, -1, P31, -1, -1, Si30, P31, k_p_Si30_to_P31_reaclib, k_P31_to_p_Si30_reaclib, - He4, Si30, -1, S34, -1, -1, Si30, S34, k_He4_Si30_to_S34_reaclib, k_S34_to_He4_Si30_reaclib, - N, Si31, -1, Si32, -1, -1, Si31, Si32, k_n_Si31_to_Si32_reaclib, k_Si32_to_n_Si31_reaclib, - H1, Si31, -1, P32, -1, -1, Si31, P32, k_p_Si31_to_P32_reaclib, k_P32_to_p_Si31_reaclib, - He4, Si31, -1, S35, -1, -1, Si31, S35, k_He4_Si31_to_S35_reaclib, k_S35_to_He4_Si31_reaclib, - H1, Si32, -1, P33, -1, -1, Si32, P33, k_p_Si32_to_P33_reaclib, k_P33_to_p_Si32_reaclib, - He4, Si32, -1, S36, -1, -1, Si32, S36, k_He4_Si32_to_S36_reaclib, k_S36_to_He4_Si32_reaclib, - N, P29, -1, P30, -1, -1, P29, P30, k_n_P29_to_P30_reaclib, k_P30_to_n_P29_reaclib, - He4, P29, -1, Cl33, -1, -1, P29, Cl33, k_He4_P29_to_Cl33_reaclib, k_Cl33_to_He4_P29_reaclib, - N, P30, -1, P31, -1, -1, P30, P31, k_n_P30_to_P31_reaclib, k_P31_to_n_P30_reaclib, - He4, P30, -1, Cl34, -1, -1, P30, Cl34, k_He4_P30_to_Cl34_reaclib, k_Cl34_to_He4_P30_reaclib, - N, P31, -1, P32, -1, -1, P31, P32, k_n_P31_to_P32_reaclib, k_P32_to_n_P31_reaclib, - H1, P31, -1, S32, -1, -1, P31, S32, k_p_P31_to_S32_reaclib, k_S32_to_p_P31_reaclib, - He4, P31, -1, Cl35, -1, -1, P31, Cl35, k_He4_P31_to_Cl35_reaclib, k_Cl35_to_He4_P31_reaclib, - N, P32, -1, P33, -1, -1, P32, P33, k_n_P32_to_P33_reaclib, k_P33_to_n_P32_reaclib, - H1, P32, -1, S33, -1, -1, P32, S33, k_p_P32_to_S33_reaclib, k_S33_to_p_P32_reaclib, - He4, P32, -1, Cl36, -1, -1, P32, Cl36, k_He4_P32_to_Cl36_reaclib, k_Cl36_to_He4_P32_reaclib, - H1, P33, -1, S34, -1, -1, P33, S34, k_p_P33_to_S34_reaclib, k_S34_to_p_P33_reaclib, - He4, P33, -1, Cl37, -1, -1, P33, Cl37, k_He4_P33_to_Cl37_reaclib, k_Cl37_to_He4_P33_reaclib, - N, S32, -1, S33, -1, -1, S32, S33, k_n_S32_to_S33_reaclib, k_S33_to_n_S32_reaclib, - H1, S32, -1, Cl33, -1, -1, S32, Cl33, k_p_S32_to_Cl33_reaclib, k_Cl33_to_p_S32_reaclib, - He4, S32, -1, Ar36, -1, -1, S32, Ar36, k_He4_S32_to_Ar36_reaclib, k_Ar36_to_He4_S32_reaclib, - N, S33, -1, S34, -1, -1, S33, S34, k_n_S33_to_S34_reaclib, k_S34_to_n_S33_reaclib, - H1, S33, -1, Cl34, -1, -1, S33, Cl34, k_p_S33_to_Cl34_reaclib, k_Cl34_to_p_S33_reaclib, - He4, S33, -1, Ar37, -1, -1, S33, Ar37, k_He4_S33_to_Ar37_reaclib, k_Ar37_to_He4_S33_reaclib, - N, S34, -1, S35, -1, -1, S34, S35, k_n_S34_to_S35_reaclib, k_S35_to_n_S34_reaclib, - H1, S34, -1, Cl35, -1, -1, S34, Cl35, k_p_S34_to_Cl35_reaclib, k_Cl35_to_p_S34_reaclib, - He4, S34, -1, Ar38, -1, -1, S34, Ar38, k_He4_S34_to_Ar38_reaclib, k_Ar38_to_He4_S34_reaclib, - N, S35, -1, S36, -1, -1, S35, S36, k_n_S35_to_S36_reaclib, k_S36_to_n_S35_reaclib, - H1, S35, -1, Cl36, -1, -1, S35, Cl36, k_p_S35_to_Cl36_reaclib, k_Cl36_to_p_S35_reaclib, - He4, S35, -1, Ar39, -1, -1, S35, Ar39, k_He4_S35_to_Ar39_reaclib, k_Ar39_to_He4_S35_reaclib, - H1, S36, -1, Cl37, -1, -1, S36, Cl37, k_p_S36_to_Cl37_reaclib, k_Cl37_to_p_S36_reaclib, - He4, S36, -1, Ar40, -1, -1, S36, Ar40, k_He4_S36_to_Ar40_reaclib, k_Ar40_to_He4_S36_reaclib, - N, Cl33, -1, Cl34, -1, -1, Cl33, Cl34, k_n_Cl33_to_Cl34_reaclib, k_Cl34_to_n_Cl33_reaclib, - He4, Cl33, -1, K37, -1, -1, Cl33, K37, k_He4_Cl33_to_K37_reaclib, k_K37_to_He4_Cl33_reaclib, - N, Cl34, -1, Cl35, -1, -1, Cl34, Cl35, k_n_Cl34_to_Cl35_reaclib, k_Cl35_to_n_Cl34_reaclib, - He4, Cl34, -1, K38, -1, -1, Cl34, K38, k_He4_Cl34_to_K38_reaclib, k_K38_to_He4_Cl34_reaclib, - N, Cl35, -1, Cl36, -1, -1, Cl35, Cl36, k_n_Cl35_to_Cl36_reaclib, k_Cl36_to_n_Cl35_reaclib, - H1, Cl35, -1, Ar36, -1, -1, Cl35, Ar36, k_p_Cl35_to_Ar36_reaclib, k_Ar36_to_p_Cl35_reaclib, - He4, Cl35, -1, K39, -1, -1, Cl35, K39, k_He4_Cl35_to_K39_reaclib, k_K39_to_He4_Cl35_reaclib, - N, Cl36, -1, Cl37, -1, -1, Cl36, Cl37, k_n_Cl36_to_Cl37_reaclib, k_Cl37_to_n_Cl36_reaclib, - H1, Cl36, -1, Ar37, -1, -1, Cl36, Ar37, k_p_Cl36_to_Ar37_reaclib, k_Ar37_to_p_Cl36_reaclib, - He4, Cl36, -1, K40, -1, -1, Cl36, K40, k_He4_Cl36_to_K40_reaclib, k_K40_to_He4_Cl36_reaclib, - H1, Cl37, -1, Ar38, -1, -1, Cl37, Ar38, k_p_Cl37_to_Ar38_reaclib, k_Ar38_to_p_Cl37_reaclib, - He4, Cl37, -1, K41, -1, -1, Cl37, K41, k_He4_Cl37_to_K41_reaclib, k_K41_to_He4_Cl37_reaclib, - N, Ar36, -1, Ar37, -1, -1, Ar36, Ar37, k_n_Ar36_to_Ar37_reaclib, k_Ar37_to_n_Ar36_reaclib, - H1, Ar36, -1, K37, -1, -1, Ar36, K37, k_p_Ar36_to_K37_reaclib, k_K37_to_p_Ar36_reaclib, - He4, Ar36, -1, Ca40, -1, -1, Ar36, Ca40, k_He4_Ar36_to_Ca40_reaclib, k_Ca40_to_He4_Ar36_reaclib, - N, Ar37, -1, Ar38, -1, -1, Ar37, Ar38, k_n_Ar37_to_Ar38_reaclib, k_Ar38_to_n_Ar37_reaclib, - H1, Ar37, -1, K38, -1, -1, Ar37, K38, k_p_Ar37_to_K38_reaclib, k_K38_to_p_Ar37_reaclib, - He4, Ar37, -1, Ca41, -1, -1, Ar37, Ca41, k_He4_Ar37_to_Ca41_reaclib, k_Ca41_to_He4_Ar37_reaclib, - N, Ar38, -1, Ar39, -1, -1, Ar38, Ar39, k_n_Ar38_to_Ar39_reaclib, k_Ar39_to_n_Ar38_reaclib, - H1, Ar38, -1, K39, -1, -1, Ar38, K39, k_p_Ar38_to_K39_reaclib, k_K39_to_p_Ar38_reaclib, - He4, Ar38, -1, Ca42, -1, -1, Ar38, Ca42, k_He4_Ar38_to_Ca42_reaclib, k_Ca42_to_He4_Ar38_reaclib, - N, Ar39, -1, Ar40, -1, -1, Ar39, Ar40, k_n_Ar39_to_Ar40_reaclib, k_Ar40_to_n_Ar39_reaclib, - H1, Ar39, -1, K40, -1, -1, Ar39, K40, k_p_Ar39_to_K40_reaclib, k_K40_to_p_Ar39_reaclib, - He4, Ar39, -1, Ca43, -1, -1, Ar39, Ca43, k_He4_Ar39_to_Ca43_reaclib, k_Ca43_to_He4_Ar39_reaclib, - H1, Ar40, -1, K41, -1, -1, Ar40, K41, k_p_Ar40_to_K41_reaclib, k_K41_to_p_Ar40_reaclib, - He4, Ar40, -1, Ca44, -1, -1, Ar40, Ca44, k_He4_Ar40_to_Ca44_reaclib, k_Ca44_to_He4_Ar40_reaclib, - N, K37, -1, K38, -1, -1, K37, K38, k_n_K37_to_K38_reaclib, k_K38_to_n_K37_reaclib, - N, K38, -1, K39, -1, -1, K38, K39, k_n_K38_to_K39_reaclib, k_K39_to_n_K38_reaclib, - N, K39, -1, K40, -1, -1, K39, K40, k_n_K39_to_K40_reaclib, k_K40_to_n_K39_reaclib, - H1, K39, -1, Ca40, -1, -1, K39, Ca40, k_p_K39_to_Ca40_reaclib, k_Ca40_to_p_K39_reaclib, - He4, K39, -1, Sc43, -1, -1, K39, Sc43, k_He4_K39_to_Sc43_reaclib, k_Sc43_to_He4_K39_reaclib, - N, K40, -1, K41, -1, -1, K40, K41, k_n_K40_to_K41_reaclib, k_K41_to_n_K40_reaclib, - H1, K40, -1, Ca41, -1, -1, K40, Ca41, k_p_K40_to_Ca41_reaclib, k_Ca41_to_p_K40_reaclib, - He4, K40, -1, Sc44, -1, -1, K40, Sc44, k_He4_K40_to_Sc44_reaclib, k_Sc44_to_He4_K40_reaclib, - H1, K41, -1, Ca42, -1, -1, K41, Ca42, k_p_K41_to_Ca42_reaclib, k_Ca42_to_p_K41_reaclib, - He4, K41, -1, Sc45, -1, -1, K41, Sc45, k_He4_K41_to_Sc45_reaclib, k_Sc45_to_He4_K41_reaclib, - N, Ca40, -1, Ca41, -1, -1, Ca40, Ca41, k_n_Ca40_to_Ca41_reaclib, k_Ca41_to_n_Ca40_reaclib, - He4, Ca40, -1, Ti44, -1, -1, Ca40, Ti44, k_He4_Ca40_to_Ti44_reaclib, k_Ti44_to_He4_Ca40_reaclib, - N, Ca41, -1, Ca42, -1, -1, Ca41, Ca42, k_n_Ca41_to_Ca42_reaclib, k_Ca42_to_n_Ca41_reaclib, - He4, Ca41, -1, Ti45, -1, -1, Ca41, Ti45, k_He4_Ca41_to_Ti45_reaclib, k_Ti45_to_He4_Ca41_reaclib, - N, Ca42, -1, Ca43, -1, -1, Ca42, Ca43, k_n_Ca42_to_Ca43_reaclib, k_Ca43_to_n_Ca42_reaclib, - H1, Ca42, -1, Sc43, -1, -1, Ca42, Sc43, k_p_Ca42_to_Sc43_reaclib, k_Sc43_to_p_Ca42_reaclib, - He4, Ca42, -1, Ti46, -1, -1, Ca42, Ti46, k_He4_Ca42_to_Ti46_reaclib, k_Ti46_to_He4_Ca42_reaclib, - N, Ca43, -1, Ca44, -1, -1, Ca43, Ca44, k_n_Ca43_to_Ca44_reaclib, k_Ca44_to_n_Ca43_reaclib, - H1, Ca43, -1, Sc44, -1, -1, Ca43, Sc44, k_p_Ca43_to_Sc44_reaclib, k_Sc44_to_p_Ca43_reaclib, - He4, Ca43, -1, Ti47, -1, -1, Ca43, Ti47, k_He4_Ca43_to_Ti47_reaclib, k_Ti47_to_He4_Ca43_reaclib, - N, Ca44, -1, Ca45, -1, -1, Ca44, Ca45, k_n_Ca44_to_Ca45_reaclib, k_Ca45_to_n_Ca44_reaclib, - H1, Ca44, -1, Sc45, -1, -1, Ca44, Sc45, k_p_Ca44_to_Sc45_reaclib, k_Sc45_to_p_Ca44_reaclib, - He4, Ca44, -1, Ti48, -1, -1, Ca44, Ti48, k_He4_Ca44_to_Ti48_reaclib, k_Ti48_to_He4_Ca44_reaclib, - N, Ca45, -1, Ca46, -1, -1, Ca45, Ca46, k_n_Ca45_to_Ca46_reaclib, k_Ca46_to_n_Ca45_reaclib, - H1, Ca45, -1, Sc46, -1, -1, Ca45, Sc46, k_p_Ca45_to_Sc46_reaclib, k_Sc46_to_p_Ca45_reaclib, - He4, Ca45, -1, Ti49, -1, -1, Ca45, Ti49, k_He4_Ca45_to_Ti49_reaclib, k_Ti49_to_He4_Ca45_reaclib, - N, Ca46, -1, Ca47, -1, -1, Ca46, Ca47, k_n_Ca46_to_Ca47_reaclib, k_Ca47_to_n_Ca46_reaclib, - H1, Ca46, -1, Sc47, -1, -1, Ca46, Sc47, k_p_Ca46_to_Sc47_reaclib, k_Sc47_to_p_Ca46_reaclib, - He4, Ca46, -1, Ti50, -1, -1, Ca46, Ti50, k_He4_Ca46_to_Ti50_reaclib, k_Ti50_to_He4_Ca46_reaclib, - N, Ca47, -1, Ca48, -1, -1, Ca47, Ca48, k_n_Ca47_to_Ca48_reaclib, k_Ca48_to_n_Ca47_reaclib, - H1, Ca47, -1, Sc48, -1, -1, Ca47, Sc48, k_p_Ca47_to_Sc48_reaclib, k_Sc48_to_p_Ca47_reaclib, - He4, Ca47, -1, Ti51, -1, -1, Ca47, Ti51, k_He4_Ca47_to_Ti51_reaclib, k_Ti51_to_He4_Ca47_reaclib, - H1, Ca48, -1, Sc49, -1, -1, Ca48, Sc49, k_p_Ca48_to_Sc49_reaclib, k_Sc49_to_p_Ca48_reaclib, - N, Sc43, -1, Sc44, -1, -1, Sc43, Sc44, k_n_Sc43_to_Sc44_reaclib, k_Sc44_to_n_Sc43_reaclib, - H1, Sc43, -1, Ti44, -1, -1, Sc43, Ti44, k_p_Sc43_to_Ti44_reaclib, k_Ti44_to_p_Sc43_reaclib, - He4, Sc43, -1, V47, -1, -1, Sc43, V47, k_He4_Sc43_to_V47_reaclib, k_V47_to_He4_Sc43_reaclib, - N, Sc44, -1, Sc45, -1, -1, Sc44, Sc45, k_n_Sc44_to_Sc45_reaclib, k_Sc45_to_n_Sc44_reaclib, - H1, Sc44, -1, Ti45, -1, -1, Sc44, Ti45, k_p_Sc44_to_Ti45_reaclib, k_Ti45_to_p_Sc44_reaclib, - He4, Sc44, -1, V48, -1, -1, Sc44, V48, k_He4_Sc44_to_V48_reaclib, k_V48_to_He4_Sc44_reaclib, - N, Sc45, -1, Sc46, -1, -1, Sc45, Sc46, k_n_Sc45_to_Sc46_reaclib, k_Sc46_to_n_Sc45_reaclib, - H1, Sc45, -1, Ti46, -1, -1, Sc45, Ti46, k_p_Sc45_to_Ti46_reaclib, k_Ti46_to_p_Sc45_reaclib, - He4, Sc45, -1, V49, -1, -1, Sc45, V49, k_He4_Sc45_to_V49_reaclib, k_V49_to_He4_Sc45_reaclib, - N, Sc46, -1, Sc47, -1, -1, Sc46, Sc47, k_n_Sc46_to_Sc47_reaclib, k_Sc47_to_n_Sc46_reaclib, - H1, Sc46, -1, Ti47, -1, -1, Sc46, Ti47, k_p_Sc46_to_Ti47_reaclib, k_Ti47_to_p_Sc46_reaclib, - He4, Sc46, -1, V50, -1, -1, Sc46, V50, k_He4_Sc46_to_V50_reaclib, k_V50_to_He4_Sc46_reaclib, - N, Sc47, -1, Sc48, -1, -1, Sc47, Sc48, k_n_Sc47_to_Sc48_reaclib, k_Sc48_to_n_Sc47_reaclib, - H1, Sc47, -1, Ti48, -1, -1, Sc47, Ti48, k_p_Sc47_to_Ti48_reaclib, k_Ti48_to_p_Sc47_reaclib, - He4, Sc47, -1, V51, -1, -1, Sc47, V51, k_He4_Sc47_to_V51_reaclib, k_V51_to_He4_Sc47_reaclib, - N, Sc48, -1, Sc49, -1, -1, Sc48, Sc49, k_n_Sc48_to_Sc49_reaclib, k_Sc49_to_n_Sc48_reaclib, - H1, Sc48, -1, Ti49, -1, -1, Sc48, Ti49, k_p_Sc48_to_Ti49_reaclib, k_Ti49_to_p_Sc48_reaclib, - He4, Sc48, -1, V52, -1, -1, Sc48, V52, k_He4_Sc48_to_V52_reaclib, k_V52_to_He4_Sc48_reaclib, - H1, Sc49, -1, Ti50, -1, -1, Sc49, Ti50, k_p_Sc49_to_Ti50_reaclib, k_Ti50_to_p_Sc49_reaclib, - N, Ti44, -1, Ti45, -1, -1, Ti44, Ti45, k_n_Ti44_to_Ti45_reaclib, k_Ti45_to_n_Ti44_reaclib, - He4, Ti44, -1, Cr48, -1, -1, Ti44, Cr48, k_He4_Ti44_to_Cr48_reaclib, k_Cr48_to_He4_Ti44_reaclib, - N, Ti45, -1, Ti46, -1, -1, Ti45, Ti46, k_n_Ti45_to_Ti46_reaclib, k_Ti46_to_n_Ti45_reaclib, - H1, Ti45, -1, V46, -1, -1, Ti45, V46, k_p_Ti45_to_V46_reaclib, k_V46_to_p_Ti45_reaclib, - He4, Ti45, -1, Cr49, -1, -1, Ti45, Cr49, k_He4_Ti45_to_Cr49_reaclib, k_Cr49_to_He4_Ti45_reaclib, - N, Ti46, -1, Ti47, -1, -1, Ti46, Ti47, k_n_Ti46_to_Ti47_reaclib, k_Ti47_to_n_Ti46_reaclib, - H1, Ti46, -1, V47, -1, -1, Ti46, V47, k_p_Ti46_to_V47_reaclib, k_V47_to_p_Ti46_reaclib, - He4, Ti46, -1, Cr50, -1, -1, Ti46, Cr50, k_He4_Ti46_to_Cr50_reaclib, k_Cr50_to_He4_Ti46_reaclib, - N, Ti47, -1, Ti48, -1, -1, Ti47, Ti48, k_n_Ti47_to_Ti48_reaclib, k_Ti48_to_n_Ti47_reaclib, - H1, Ti47, -1, V48, -1, -1, Ti47, V48, k_p_Ti47_to_V48_reaclib, k_V48_to_p_Ti47_reaclib, - He4, Ti47, -1, Cr51, -1, -1, Ti47, Cr51, k_He4_Ti47_to_Cr51_reaclib, k_Cr51_to_He4_Ti47_reaclib, - N, Ti48, -1, Ti49, -1, -1, Ti48, Ti49, k_n_Ti48_to_Ti49_reaclib, k_Ti49_to_n_Ti48_reaclib, - H1, Ti48, -1, V49, -1, -1, Ti48, V49, k_p_Ti48_to_V49_reaclib, k_V49_to_p_Ti48_reaclib, - He4, Ti48, -1, Cr52, -1, -1, Ti48, Cr52, k_He4_Ti48_to_Cr52_reaclib, k_Cr52_to_He4_Ti48_reaclib, - N, Ti49, -1, Ti50, -1, -1, Ti49, Ti50, k_n_Ti49_to_Ti50_reaclib, k_Ti50_to_n_Ti49_reaclib, - H1, Ti49, -1, V50, -1, -1, Ti49, V50, k_p_Ti49_to_V50_reaclib, k_V50_to_p_Ti49_reaclib, - He4, Ti49, -1, Cr53, -1, -1, Ti49, Cr53, k_He4_Ti49_to_Cr53_reaclib, k_Cr53_to_He4_Ti49_reaclib, - N, Ti50, -1, Ti51, -1, -1, Ti50, Ti51, k_n_Ti50_to_Ti51_reaclib, k_Ti51_to_n_Ti50_reaclib, - H1, Ti50, -1, V51, -1, -1, Ti50, V51, k_p_Ti50_to_V51_reaclib, k_V51_to_p_Ti50_reaclib, - He4, Ti50, -1, Cr54, -1, -1, Ti50, Cr54, k_He4_Ti50_to_Cr54_reaclib, k_Cr54_to_He4_Ti50_reaclib, - H1, Ti51, -1, V52, -1, -1, Ti51, V52, k_p_Ti51_to_V52_reaclib, k_V52_to_p_Ti51_reaclib, - N, V46, -1, V47, -1, -1, V46, V47, k_n_V46_to_V47_reaclib, k_V47_to_n_V46_reaclib, - He4, V46, -1, Mn50, -1, -1, V46, Mn50, k_He4_V46_to_Mn50_reaclib, k_Mn50_to_He4_V46_reaclib, - N, V47, -1, V48, -1, -1, V47, V48, k_n_V47_to_V48_reaclib, k_V48_to_n_V47_reaclib, - H1, V47, -1, Cr48, -1, -1, V47, Cr48, k_p_V47_to_Cr48_reaclib, k_Cr48_to_p_V47_reaclib, - He4, V47, -1, Mn51, -1, -1, V47, Mn51, k_He4_V47_to_Mn51_reaclib, k_Mn51_to_He4_V47_reaclib, - N, V48, -1, V49, -1, -1, V48, V49, k_n_V48_to_V49_reaclib, k_V49_to_n_V48_reaclib, - H1, V48, -1, Cr49, -1, -1, V48, Cr49, k_p_V48_to_Cr49_reaclib, k_Cr49_to_p_V48_reaclib, - He4, V48, -1, Mn52, -1, -1, V48, Mn52, k_He4_V48_to_Mn52_reaclib, k_Mn52_to_He4_V48_reaclib, - N, V49, -1, V50, -1, -1, V49, V50, k_n_V49_to_V50_reaclib, k_V50_to_n_V49_reaclib, - H1, V49, -1, Cr50, -1, -1, V49, Cr50, k_p_V49_to_Cr50_reaclib, k_Cr50_to_p_V49_reaclib, - He4, V49, -1, Mn53, -1, -1, V49, Mn53, k_He4_V49_to_Mn53_reaclib, k_Mn53_to_He4_V49_reaclib, - N, V50, -1, V51, -1, -1, V50, V51, k_n_V50_to_V51_reaclib, k_V51_to_n_V50_reaclib, - H1, V50, -1, Cr51, -1, -1, V50, Cr51, k_p_V50_to_Cr51_reaclib, k_Cr51_to_p_V50_reaclib, - He4, V50, -1, Mn54, -1, -1, V50, Mn54, k_He4_V50_to_Mn54_reaclib, k_Mn54_to_He4_V50_reaclib, - N, V51, -1, V52, -1, -1, V51, V52, k_n_V51_to_V52_reaclib, k_V52_to_n_V51_reaclib, - H1, V51, -1, Cr52, -1, -1, V51, Cr52, k_p_V51_to_Cr52_reaclib, k_Cr52_to_p_V51_reaclib, - He4, V51, -1, Mn55, -1, -1, V51, Mn55, k_He4_V51_to_Mn55_reaclib, k_Mn55_to_He4_V51_reaclib, - H1, V52, -1, Cr53, -1, -1, V52, Cr53, k_p_V52_to_Cr53_reaclib, k_Cr53_to_p_V52_reaclib, - N, Cr48, -1, Cr49, -1, -1, Cr48, Cr49, k_n_Cr48_to_Cr49_reaclib, k_Cr49_to_n_Cr48_reaclib, - He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_He4_Cr48_to_Fe52_reaclib, k_Fe52_to_He4_Cr48_reaclib, - N, Cr49, -1, Cr50, -1, -1, Cr49, Cr50, k_n_Cr49_to_Cr50_reaclib, k_Cr50_to_n_Cr49_reaclib, - H1, Cr49, -1, Mn50, -1, -1, Cr49, Mn50, k_p_Cr49_to_Mn50_reaclib, k_Mn50_to_p_Cr49_reaclib, - He4, Cr49, -1, Fe53, -1, -1, Cr49, Fe53, k_He4_Cr49_to_Fe53_reaclib, k_Fe53_to_He4_Cr49_reaclib, - N, Cr50, -1, Cr51, -1, -1, Cr50, Cr51, k_n_Cr50_to_Cr51_reaclib, k_Cr51_to_n_Cr50_reaclib, - H1, Cr50, -1, Mn51, -1, -1, Cr50, Mn51, k_p_Cr50_to_Mn51_reaclib, k_Mn51_to_p_Cr50_reaclib, - He4, Cr50, -1, Fe54, -1, -1, Cr50, Fe54, k_He4_Cr50_to_Fe54_reaclib, k_Fe54_to_He4_Cr50_reaclib, - N, Cr51, -1, Cr52, -1, -1, Cr51, Cr52, k_n_Cr51_to_Cr52_reaclib, k_Cr52_to_n_Cr51_reaclib, - H1, Cr51, -1, Mn52, -1, -1, Cr51, Mn52, k_p_Cr51_to_Mn52_reaclib, k_Mn52_to_p_Cr51_reaclib, - He4, Cr51, -1, Fe55, -1, -1, Cr51, Fe55, k_He4_Cr51_to_Fe55_reaclib, k_Fe55_to_He4_Cr51_reaclib, - N, Cr52, -1, Cr53, -1, -1, Cr52, Cr53, k_n_Cr52_to_Cr53_reaclib, k_Cr53_to_n_Cr52_reaclib, - H1, Cr52, -1, Mn53, -1, -1, Cr52, Mn53, k_p_Cr52_to_Mn53_reaclib, k_Mn53_to_p_Cr52_reaclib, - He4, Cr52, -1, Fe56, -1, -1, Cr52, Fe56, k_He4_Cr52_to_Fe56_reaclib, k_Fe56_to_He4_Cr52_reaclib, - N, Cr53, -1, Cr54, -1, -1, Cr53, Cr54, k_n_Cr53_to_Cr54_reaclib, k_Cr54_to_n_Cr53_reaclib, - H1, Cr53, -1, Mn54, -1, -1, Cr53, Mn54, k_p_Cr53_to_Mn54_reaclib, k_Mn54_to_p_Cr53_reaclib, - He4, Cr53, -1, Fe57, -1, -1, Cr53, Fe57, k_He4_Cr53_to_Fe57_reaclib, k_Fe57_to_He4_Cr53_reaclib, - H1, Cr54, -1, Mn55, -1, -1, Cr54, Mn55, k_p_Cr54_to_Mn55_reaclib, k_Mn55_to_p_Cr54_reaclib, - He4, Cr54, -1, Fe58, -1, -1, Cr54, Fe58, k_He4_Cr54_to_Fe58_reaclib, k_Fe58_to_He4_Cr54_reaclib, - N, Mn50, -1, Mn51, -1, -1, Mn50, Mn51, k_n_Mn50_to_Mn51_reaclib, k_Mn51_to_n_Mn50_reaclib, - He4, Mn50, -1, Co54, -1, -1, Mn50, Co54, k_He4_Mn50_to_Co54_reaclib, k_Co54_to_He4_Mn50_reaclib, - N, Mn51, -1, Mn52, -1, -1, Mn51, Mn52, k_n_Mn51_to_Mn52_reaclib, k_Mn52_to_n_Mn51_reaclib, - H1, Mn51, -1, Fe52, -1, -1, Mn51, Fe52, k_p_Mn51_to_Fe52_reaclib, k_Fe52_to_p_Mn51_reaclib, - He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_He4_Mn51_to_Co55_reaclib, k_Co55_to_He4_Mn51_reaclib, - N, Mn52, -1, Mn53, -1, -1, Mn52, Mn53, k_n_Mn52_to_Mn53_reaclib, k_Mn53_to_n_Mn52_reaclib, - H1, Mn52, -1, Fe53, -1, -1, Mn52, Fe53, k_p_Mn52_to_Fe53_reaclib, k_Fe53_to_p_Mn52_reaclib, - He4, Mn52, -1, Co56, -1, -1, Mn52, Co56, k_He4_Mn52_to_Co56_reaclib, k_Co56_to_He4_Mn52_reaclib, - N, Mn53, -1, Mn54, -1, -1, Mn53, Mn54, k_n_Mn53_to_Mn54_reaclib, k_Mn54_to_n_Mn53_reaclib, - H1, Mn53, -1, Fe54, -1, -1, Mn53, Fe54, k_p_Mn53_to_Fe54_reaclib, k_Fe54_to_p_Mn53_reaclib, - He4, Mn53, -1, Co57, -1, -1, Mn53, Co57, k_He4_Mn53_to_Co57_reaclib, k_Co57_to_He4_Mn53_reaclib, - N, Mn54, -1, Mn55, -1, -1, Mn54, Mn55, k_n_Mn54_to_Mn55_reaclib, k_Mn55_to_n_Mn54_reaclib, - H1, Mn54, -1, Fe55, -1, -1, Mn54, Fe55, k_p_Mn54_to_Fe55_reaclib, k_Fe55_to_p_Mn54_reaclib, - He4, Mn54, -1, Co58, -1, -1, Mn54, Co58, k_He4_Mn54_to_Co58_reaclib, k_Co58_to_He4_Mn54_reaclib, - H1, Mn55, -1, Fe56, -1, -1, Mn55, Fe56, k_p_Mn55_to_Fe56_reaclib, k_Fe56_to_p_Mn55_reaclib, - He4, Mn55, -1, Co59, -1, -1, Mn55, Co59, k_He4_Mn55_to_Co59_reaclib, k_Co59_to_He4_Mn55_reaclib, - N, Fe52, -1, Fe53, -1, -1, Fe52, Fe53, k_n_Fe52_to_Fe53_reaclib, k_Fe53_to_n_Fe52_reaclib, - H1, Fe52, -1, Co53, -1, -1, Fe52, Co53, k_p_Fe52_to_Co53_reaclib, k_Co53_to_p_Fe52_reaclib, - He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_He4_Fe52_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_reaclib, - N, Fe53, -1, Fe54, -1, -1, Fe53, Fe54, k_n_Fe53_to_Fe54_reaclib, k_Fe54_to_n_Fe53_reaclib, - H1, Fe53, -1, Co54, -1, -1, Fe53, Co54, k_p_Fe53_to_Co54_reaclib, k_Co54_to_p_Fe53_reaclib, - He4, Fe53, -1, Ni57, -1, -1, Fe53, Ni57, k_He4_Fe53_to_Ni57_reaclib, k_Ni57_to_He4_Fe53_reaclib, - N, Fe54, -1, Fe55, -1, -1, Fe54, Fe55, k_n_Fe54_to_Fe55_reaclib, k_Fe55_to_n_Fe54_reaclib, - H1, Fe54, -1, Co55, -1, -1, Fe54, Co55, k_p_Fe54_to_Co55_reaclib, k_Co55_to_p_Fe54_reaclib, - He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_He4_Fe54_to_Ni58_reaclib, k_Ni58_to_He4_Fe54_reaclib, - N, Fe55, -1, Fe56, -1, -1, Fe55, Fe56, k_n_Fe55_to_Fe56_reaclib, k_Fe56_to_n_Fe55_reaclib, - H1, Fe55, -1, Co56, -1, -1, Fe55, Co56, k_p_Fe55_to_Co56_reaclib, k_Co56_to_p_Fe55_reaclib, - He4, Fe55, -1, Ni59, -1, -1, Fe55, Ni59, k_He4_Fe55_to_Ni59_reaclib, k_Ni59_to_He4_Fe55_reaclib, - N, Fe56, -1, Fe57, -1, -1, Fe56, Fe57, k_n_Fe56_to_Fe57_reaclib, k_Fe57_to_n_Fe56_reaclib, - H1, Fe56, -1, Co57, -1, -1, Fe56, Co57, k_p_Fe56_to_Co57_reaclib, k_Co57_to_p_Fe56_reaclib, - He4, Fe56, -1, Ni60, -1, -1, Fe56, Ni60, k_He4_Fe56_to_Ni60_reaclib, k_Ni60_to_He4_Fe56_reaclib, - N, Fe57, -1, Fe58, -1, -1, Fe57, Fe58, k_n_Fe57_to_Fe58_reaclib, k_Fe58_to_n_Fe57_reaclib, - H1, Fe57, -1, Co58, -1, -1, Fe57, Co58, k_p_Fe57_to_Co58_reaclib, k_Co58_to_p_Fe57_reaclib, - He4, Fe57, -1, Ni61, -1, -1, Fe57, Ni61, k_He4_Fe57_to_Ni61_reaclib, k_Ni61_to_He4_Fe57_reaclib, - H1, Fe58, -1, Co59, -1, -1, Fe58, Co59, k_p_Fe58_to_Co59_reaclib, k_Co59_to_p_Fe58_reaclib, - He4, Fe58, -1, Ni62, -1, -1, Fe58, Ni62, k_He4_Fe58_to_Ni62_reaclib, k_Ni62_to_He4_Fe58_reaclib, - N, Co53, -1, Co54, -1, -1, Co53, Co54, k_n_Co53_to_Co54_reaclib, k_Co54_to_n_Co53_reaclib, - He4, Co53, -1, Cu57, -1, -1, Co53, Cu57, k_He4_Co53_to_Cu57_reaclib, k_Cu57_to_He4_Co53_reaclib, - N, Co54, -1, Co55, -1, -1, Co54, Co55, k_n_Co54_to_Co55_reaclib, k_Co55_to_n_Co54_reaclib, - He4, Co54, -1, Cu58, -1, -1, Co54, Cu58, k_He4_Co54_to_Cu58_reaclib, k_Cu58_to_He4_Co54_reaclib, - N, Co55, -1, Co56, -1, -1, Co55, Co56, k_n_Co55_to_Co56_reaclib, k_Co56_to_n_Co55_reaclib, - H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_p_Co55_to_Ni56_reaclib, k_Ni56_to_p_Co55_reaclib, - He4, Co55, -1, Cu59, -1, -1, Co55, Cu59, k_He4_Co55_to_Cu59_reaclib, k_Cu59_to_He4_Co55_reaclib, - N, Co56, -1, Co57, -1, -1, Co56, Co57, k_n_Co56_to_Co57_reaclib, k_Co57_to_n_Co56_reaclib, - H1, Co56, -1, Ni57, -1, -1, Co56, Ni57, k_p_Co56_to_Ni57_reaclib, k_Ni57_to_p_Co56_reaclib, - He4, Co56, -1, Cu60, -1, -1, Co56, Cu60, k_He4_Co56_to_Cu60_reaclib, k_Cu60_to_He4_Co56_reaclib, - N, Co57, -1, Co58, -1, -1, Co57, Co58, k_n_Co57_to_Co58_reaclib, k_Co58_to_n_Co57_reaclib, - H1, Co57, -1, Ni58, -1, -1, Co57, Ni58, k_p_Co57_to_Ni58_reaclib, k_Ni58_to_p_Co57_reaclib, - He4, Co57, -1, Cu61, -1, -1, Co57, Cu61, k_He4_Co57_to_Cu61_reaclib, k_Cu61_to_He4_Co57_reaclib, - N, Co58, -1, Co59, -1, -1, Co58, Co59, k_n_Co58_to_Co59_reaclib, k_Co59_to_n_Co58_reaclib, - H1, Co58, -1, Ni59, -1, -1, Co58, Ni59, k_p_Co58_to_Ni59_reaclib, k_Ni59_to_p_Co58_reaclib, - He4, Co58, -1, Cu62, -1, -1, Co58, Cu62, k_He4_Co58_to_Cu62_reaclib, k_Cu62_to_He4_Co58_reaclib, - H1, Co59, -1, Ni60, -1, -1, Co59, Ni60, k_p_Co59_to_Ni60_reaclib, k_Ni60_to_p_Co59_reaclib, - He4, Co59, -1, Cu63, -1, -1, Co59, Cu63, k_He4_Co59_to_Cu63_reaclib, k_Cu63_to_He4_Co59_reaclib, - N, Ni56, -1, Ni57, -1, -1, Ni56, Ni57, k_n_Ni56_to_Ni57_reaclib, k_Ni57_to_n_Ni56_reaclib, - H1, Ni56, -1, Cu57, -1, -1, Ni56, Cu57, k_p_Ni56_to_Cu57_reaclib, k_Cu57_to_p_Ni56_reaclib, - He4, Ni56, -1, Zn60, -1, -1, Ni56, Zn60, k_He4_Ni56_to_Zn60_reaclib, k_Zn60_to_He4_Ni56_reaclib, - N, Ni57, -1, Ni58, -1, -1, Ni57, Ni58, k_n_Ni57_to_Ni58_reaclib, k_Ni58_to_n_Ni57_reaclib, - H1, Ni57, -1, Cu58, -1, -1, Ni57, Cu58, k_p_Ni57_to_Cu58_reaclib, k_Cu58_to_p_Ni57_reaclib, - He4, Ni57, -1, Zn61, -1, -1, Ni57, Zn61, k_He4_Ni57_to_Zn61_reaclib, k_Zn61_to_He4_Ni57_reaclib, - N, Ni58, -1, Ni59, -1, -1, Ni58, Ni59, k_n_Ni58_to_Ni59_reaclib, k_Ni59_to_n_Ni58_reaclib, - H1, Ni58, -1, Cu59, -1, -1, Ni58, Cu59, k_p_Ni58_to_Cu59_reaclib, k_Cu59_to_p_Ni58_reaclib, - He4, Ni58, -1, Zn62, -1, -1, Ni58, Zn62, k_He4_Ni58_to_Zn62_reaclib, k_Zn62_to_He4_Ni58_reaclib, - N, Ni59, -1, Ni60, -1, -1, Ni59, Ni60, k_n_Ni59_to_Ni60_reaclib, k_Ni60_to_n_Ni59_reaclib, - H1, Ni59, -1, Cu60, -1, -1, Ni59, Cu60, k_p_Ni59_to_Cu60_reaclib, k_Cu60_to_p_Ni59_reaclib, - He4, Ni59, -1, Zn63, -1, -1, Ni59, Zn63, k_He4_Ni59_to_Zn63_reaclib, k_Zn63_to_He4_Ni59_reaclib, - N, Ni60, -1, Ni61, -1, -1, Ni60, Ni61, k_n_Ni60_to_Ni61_reaclib, k_Ni61_to_n_Ni60_reaclib, - H1, Ni60, -1, Cu61, -1, -1, Ni60, Cu61, k_p_Ni60_to_Cu61_reaclib, k_Cu61_to_p_Ni60_reaclib, - He4, Ni60, -1, Zn64, -1, -1, Ni60, Zn64, k_He4_Ni60_to_Zn64_reaclib, k_Zn64_to_He4_Ni60_reaclib, - N, Ni61, -1, Ni62, -1, -1, Ni61, Ni62, k_n_Ni61_to_Ni62_reaclib, k_Ni62_to_n_Ni61_reaclib, - H1, Ni61, -1, Cu62, -1, -1, Ni61, Cu62, k_p_Ni61_to_Cu62_reaclib, k_Cu62_to_p_Ni61_reaclib, - He4, Ni61, -1, Zn65, -1, -1, Ni61, Zn65, k_He4_Ni61_to_Zn65_reaclib, k_Zn65_to_He4_Ni61_reaclib, - N, Ni62, -1, Ni63, -1, -1, Ni62, Ni63, k_n_Ni62_to_Ni63_reaclib, k_Ni63_to_n_Ni62_reaclib, - H1, Ni62, -1, Cu63, -1, -1, Ni62, Cu63, k_p_Ni62_to_Cu63_reaclib, k_Cu63_to_p_Ni62_reaclib, - He4, Ni62, -1, Zn66, -1, -1, Ni62, Zn66, k_He4_Ni62_to_Zn66_reaclib, k_Zn66_to_He4_Ni62_reaclib, - N, Ni63, -1, Ni64, -1, -1, Ni63, Ni64, k_n_Ni63_to_Ni64_reaclib, k_Ni64_to_n_Ni63_reaclib, - H1, Ni63, -1, Cu64, -1, -1, Ni63, Cu64, k_p_Ni63_to_Cu64_reaclib, k_Cu64_to_p_Ni63_reaclib, - H1, Ni64, -1, Cu65, -1, -1, Ni64, Cu65, k_p_Ni64_to_Cu65_reaclib, k_Cu65_to_p_Ni64_reaclib, - N, Cu57, -1, Cu58, -1, -1, Cu57, Cu58, k_n_Cu57_to_Cu58_reaclib, k_Cu58_to_n_Cu57_reaclib, - N, Cu58, -1, Cu59, -1, -1, Cu58, Cu59, k_n_Cu58_to_Cu59_reaclib, k_Cu59_to_n_Cu58_reaclib, - H1, Cu58, -1, Zn59, -1, -1, Cu58, Zn59, k_p_Cu58_to_Zn59_reaclib, k_Zn59_to_p_Cu58_reaclib, - He4, Cu58, -1, Ga62, -1, -1, Cu58, Ga62, k_He4_Cu58_to_Ga62_reaclib, k_Ga62_to_He4_Cu58_reaclib, - N, Cu59, -1, Cu60, -1, -1, Cu59, Cu60, k_n_Cu59_to_Cu60_reaclib, k_Cu60_to_n_Cu59_reaclib, - H1, Cu59, -1, Zn60, -1, -1, Cu59, Zn60, k_p_Cu59_to_Zn60_reaclib, k_Zn60_to_p_Cu59_reaclib, - He4, Cu59, -1, Ga63, -1, -1, Cu59, Ga63, k_He4_Cu59_to_Ga63_reaclib, k_Ga63_to_He4_Cu59_reaclib, - N, Cu60, -1, Cu61, -1, -1, Cu60, Cu61, k_n_Cu60_to_Cu61_reaclib, k_Cu61_to_n_Cu60_reaclib, - H1, Cu60, -1, Zn61, -1, -1, Cu60, Zn61, k_p_Cu60_to_Zn61_reaclib, k_Zn61_to_p_Cu60_reaclib, - He4, Cu60, -1, Ga64, -1, -1, Cu60, Ga64, k_He4_Cu60_to_Ga64_reaclib, k_Ga64_to_He4_Cu60_reaclib, - N, Cu61, -1, Cu62, -1, -1, Cu61, Cu62, k_n_Cu61_to_Cu62_reaclib, k_Cu62_to_n_Cu61_reaclib, - H1, Cu61, -1, Zn62, -1, -1, Cu61, Zn62, k_p_Cu61_to_Zn62_reaclib, k_Zn62_to_p_Cu61_reaclib, - N, Cu62, -1, Cu63, -1, -1, Cu62, Cu63, k_n_Cu62_to_Cu63_reaclib, k_Cu63_to_n_Cu62_reaclib, - H1, Cu62, -1, Zn63, -1, -1, Cu62, Zn63, k_p_Cu62_to_Zn63_reaclib, k_Zn63_to_p_Cu62_reaclib, - N, Cu63, -1, Cu64, -1, -1, Cu63, Cu64, k_n_Cu63_to_Cu64_reaclib, k_Cu64_to_n_Cu63_reaclib, - H1, Cu63, -1, Zn64, -1, -1, Cu63, Zn64, k_p_Cu63_to_Zn64_reaclib, k_Zn64_to_p_Cu63_reaclib, - N, Cu64, -1, Cu65, -1, -1, Cu64, Cu65, k_n_Cu64_to_Cu65_reaclib, k_Cu65_to_n_Cu64_reaclib, - H1, Cu64, -1, Zn65, -1, -1, Cu64, Zn65, k_p_Cu64_to_Zn65_reaclib, k_Zn65_to_p_Cu64_reaclib, - H1, Cu65, -1, Zn66, -1, -1, Cu65, Zn66, k_p_Cu65_to_Zn66_reaclib, k_Zn66_to_p_Cu65_reaclib, - N, Zn59, -1, Zn60, -1, -1, Zn59, Zn60, k_n_Zn59_to_Zn60_reaclib, k_Zn60_to_n_Zn59_reaclib, - He4, Zn59, -1, Ge63, -1, -1, Zn59, Ge63, k_He4_Zn59_to_Ge63_reaclib, k_Ge63_to_He4_Zn59_reaclib, - N, Zn60, -1, Zn61, -1, -1, Zn60, Zn61, k_n_Zn60_to_Zn61_reaclib, k_Zn61_to_n_Zn60_reaclib, - He4, Zn60, -1, Ge64, -1, -1, Zn60, Ge64, k_He4_Zn60_to_Ge64_reaclib, k_Ge64_to_He4_Zn60_reaclib, - N, Zn61, -1, Zn62, -1, -1, Zn61, Zn62, k_n_Zn61_to_Zn62_reaclib, k_Zn62_to_n_Zn61_reaclib, - H1, Zn61, -1, Ga62, -1, -1, Zn61, Ga62, k_p_Zn61_to_Ga62_reaclib, k_Ga62_to_p_Zn61_reaclib, - N, Zn62, -1, Zn63, -1, -1, Zn62, Zn63, k_n_Zn62_to_Zn63_reaclib, k_Zn63_to_n_Zn62_reaclib, - H1, Zn62, -1, Ga63, -1, -1, Zn62, Ga63, k_p_Zn62_to_Ga63_reaclib, k_Ga63_to_p_Zn62_reaclib, - N, Zn63, -1, Zn64, -1, -1, Zn63, Zn64, k_n_Zn63_to_Zn64_reaclib, k_Zn64_to_n_Zn63_reaclib, - H1, Zn63, -1, Ga64, -1, -1, Zn63, Ga64, k_p_Zn63_to_Ga64_reaclib, k_Ga64_to_p_Zn63_reaclib, - N, Zn64, -1, Zn65, -1, -1, Zn64, Zn65, k_n_Zn64_to_Zn65_reaclib, k_Zn65_to_n_Zn64_reaclib, - N, Zn65, -1, Zn66, -1, -1, Zn65, Zn66, k_n_Zn65_to_Zn66_reaclib, k_Zn66_to_n_Zn65_reaclib, - N, Ga62, -1, Ga63, -1, -1, Ga62, Ga63, k_n_Ga62_to_Ga63_reaclib, k_Ga63_to_n_Ga62_reaclib, - H1, Ga62, -1, Ge63, -1, -1, Ga62, Ge63, k_p_Ga62_to_Ge63_reaclib, k_Ge63_to_p_Ga62_reaclib, - N, Ga63, -1, Ga64, -1, -1, Ga63, Ga64, k_n_Ga63_to_Ga64_reaclib, k_Ga64_to_n_Ga63_reaclib, - H1, Ga63, -1, Ge64, -1, -1, Ga63, Ge64, k_p_Ga63_to_Ge64_reaclib, k_Ge64_to_p_Ga63_reaclib, - N, Ge63, -1, Ge64, -1, -1, Ge63, Ge64, k_n_Ge63_to_Ge64_reaclib, k_Ge64_to_n_Ge63_reaclib, - H2, He3, -1, H1, He4, -1, H2, He3, k_d_He3_to_p_He4_reaclib, k_p_He4_to_d_He3_reaclib, - H1, Li6, -1, He4, He3, -1, Li6, He3, k_p_Li6_to_He4_He3_reaclib, k_He4_He3_to_p_Li6_reaclib, - H1, Li7, -1, He4, He4, -1, Li7, -1, k_p_Li7_to_He4_He4_reaclib, k_He4_He4_to_p_Li7_reaclib, - N, Be7, -1, H1, Li7, -1, Be7, Li7, k_n_Be7_to_p_Li7_reaclib, k_p_Li7_to_n_Be7_reaclib, - N, Be7, -1, He4, He4, -1, Be7, -1, k_n_Be7_to_He4_He4_reaclib, k_He4_He4_to_n_Be7_reaclib, - H1, Be9, -1, He4, Li6, -1, Be9, Li6, k_p_Be9_to_He4_Li6_reaclib, k_He4_Li6_to_p_Be9_reaclib, - He4, Be9, -1, N, C12, -1, Be9, C12, k_He4_Be9_to_n_C12_reaclib, k_n_C12_to_He4_Be9_reaclib, - N, B10, -1, He4, Li7, -1, B10, Li7, k_n_B10_to_He4_Li7_reaclib, k_He4_Li7_to_n_B10_reaclib, - H1, B10, -1, He4, Be7, -1, B10, Be7, k_p_B10_to_He4_Be7_reaclib, k_He4_Be7_to_p_B10_reaclib, - He4, B10, -1, N, N13, -1, B10, N13, k_He4_B10_to_n_N13_reaclib, k_n_N13_to_He4_B10_reaclib, - He4, B10, -1, H1, C13, -1, B10, C13, k_He4_B10_to_p_C13_reaclib, k_p_C13_to_He4_B10_reaclib, - He4, B11, -1, N, N14, -1, B11, N14, k_He4_B11_to_n_N14_reaclib, k_n_N14_to_He4_B11_reaclib, - He4, B11, -1, H1, C14, -1, B11, C14, k_He4_B11_to_p_C14_reaclib, k_p_C14_to_He4_B11_reaclib, - He4, C13, -1, N, O16, -1, C13, O16, k_He4_C13_to_n_O16_reaclib, k_n_O16_to_He4_C13_reaclib, - N, N13, -1, H1, C13, -1, N13, C13, k_n_N13_to_p_C13_reaclib, k_p_C13_to_n_N13_reaclib, - He4, N13, -1, H1, O16, -1, N13, O16, k_He4_N13_to_p_O16_reaclib, k_p_O16_to_He4_N13_reaclib, - N, N14, -1, H1, C14, -1, N14, C14, k_n_N14_to_p_C14_reaclib, k_p_C14_to_n_N14_reaclib, - H1, N15, -1, He4, C12, -1, N15, C12, k_p_N15_to_He4_C12_reaclib, k_He4_C12_to_p_N15_reaclib, - N, O14, -1, H1, N14, -1, O14, N14, k_n_O14_to_p_N14_reaclib, k_p_N14_to_n_O14_reaclib, - He4, O14, -1, H1, F17, -1, O14, F17, k_He4_O14_to_p_F17_reaclib, k_p_F17_to_He4_O14_reaclib, - N, O15, -1, H1, N15, -1, O15, N15, k_n_O15_to_p_N15_reaclib, k_p_N15_to_n_O15_reaclib, - N, O15, -1, He4, C12, -1, O15, C12, k_n_O15_to_He4_C12_reaclib, k_He4_C12_to_n_O15_reaclib, - N, O17, -1, He4, C14, -1, O17, C14, k_n_O17_to_He4_C14_reaclib, k_He4_C14_to_n_O17_reaclib, - H1, O17, -1, He4, N14, -1, O17, N14, k_p_O17_to_He4_N14_reaclib, k_He4_N14_to_p_O17_reaclib, - He4, O17, -1, N, Ne20, -1, O17, Ne20, k_He4_O17_to_n_Ne20_reaclib, k_n_Ne20_to_He4_O17_reaclib, - H1, O18, -1, He4, N15, -1, O18, N15, k_p_O18_to_He4_N15_reaclib, k_He4_N15_to_p_O18_reaclib, - N, F17, -1, H1, O17, -1, F17, O17, k_n_F17_to_p_O17_reaclib, k_p_O17_to_n_F17_reaclib, - N, F17, -1, He4, N14, -1, F17, N14, k_n_F17_to_He4_N14_reaclib, k_He4_N14_to_n_F17_reaclib, - He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_He4_F17_to_p_Ne20_reaclib, k_p_Ne20_to_He4_F17_reaclib, - N, F18, -1, H1, O18, -1, F18, O18, k_n_F18_to_p_O18_reaclib, k_p_O18_to_n_F18_reaclib, - N, F18, -1, He4, N15, -1, F18, N15, k_n_F18_to_He4_N15_reaclib, k_He4_N15_to_n_F18_reaclib, - H1, F18, -1, He4, O15, -1, F18, O15, k_p_F18_to_He4_O15_reaclib, k_He4_O15_to_p_F18_reaclib, - He4, F18, -1, H1, Ne21, -1, F18, Ne21, k_He4_F18_to_p_Ne21_reaclib, k_p_Ne21_to_He4_F18_reaclib, - H1, F19, -1, He4, O16, -1, F19, O16, k_p_F19_to_He4_O16_reaclib, k_He4_O16_to_p_F19_reaclib, - He4, F19, -1, H1, Ne22, -1, F19, Ne22, k_He4_F19_to_p_Ne22_reaclib, k_p_Ne22_to_He4_F19_reaclib, - N, Ne18, -1, H1, F18, -1, Ne18, F18, k_n_Ne18_to_p_F18_reaclib, k_p_F18_to_n_Ne18_reaclib, - N, Ne18, -1, He4, O15, -1, Ne18, O15, k_n_Ne18_to_He4_O15_reaclib, k_He4_O15_to_n_Ne18_reaclib, - He4, Ne18, -1, H1, Na21, -1, Ne18, Na21, k_He4_Ne18_to_p_Na21_reaclib, k_p_Na21_to_He4_Ne18_reaclib, - N, Ne19, -1, H1, F19, -1, Ne19, F19, k_n_Ne19_to_p_F19_reaclib, k_p_F19_to_n_Ne19_reaclib, - N, Ne19, -1, He4, O16, -1, Ne19, O16, k_n_Ne19_to_He4_O16_reaclib, k_He4_O16_to_n_Ne19_reaclib, - He4, Ne19, -1, H1, Na22, -1, Ne19, Na22, k_He4_Ne19_to_p_Na22_reaclib, k_p_Na22_to_He4_Ne19_reaclib, - N, Ne21, -1, He4, O18, -1, Ne21, O18, k_n_Ne21_to_He4_O18_reaclib, k_He4_O18_to_n_Ne21_reaclib, - He4, Ne21, -1, N, Mg24, -1, Ne21, Mg24, k_He4_Ne21_to_n_Mg24_reaclib, k_n_Mg24_to_He4_Ne21_reaclib, - N, Na21, -1, H1, Ne21, -1, Na21, Ne21, k_n_Na21_to_p_Ne21_reaclib, k_p_Ne21_to_n_Na21_reaclib, - N, Na21, -1, He4, F18, -1, Na21, F18, k_n_Na21_to_He4_F18_reaclib, k_He4_F18_to_n_Na21_reaclib, - He4, Na21, -1, H1, Mg24, -1, Na21, Mg24, k_He4_Na21_to_p_Mg24_reaclib, k_p_Mg24_to_He4_Na21_reaclib, - N, Na22, -1, H1, Ne22, -1, Na22, Ne22, k_n_Na22_to_p_Ne22_reaclib, k_p_Ne22_to_n_Na22_reaclib, - N, Na22, -1, He4, F19, -1, Na22, F19, k_n_Na22_to_He4_F19_reaclib, k_He4_F19_to_n_Na22_reaclib, - He4, Na22, -1, H1, Mg25, -1, Na22, Mg25, k_He4_Na22_to_p_Mg25_reaclib, k_p_Mg25_to_He4_Na22_reaclib, - H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_p_Na23_to_He4_Ne20_reaclib, k_He4_Ne20_to_p_Na23_reaclib, - He4, Na23, -1, H1, Mg26, -1, Na23, Mg26, k_He4_Na23_to_p_Mg26_reaclib, k_p_Mg26_to_He4_Na23_reaclib, - N, Mg23, -1, H1, Na23, -1, Mg23, Na23, k_n_Mg23_to_p_Na23_reaclib, k_p_Na23_to_n_Mg23_reaclib, - N, Mg23, -1, He4, Ne20, -1, Mg23, Ne20, k_n_Mg23_to_He4_Ne20_reaclib, k_He4_Ne20_to_n_Mg23_reaclib, - He4, Mg23, -1, H1, Al26, -1, Mg23, Al26, k_He4_Mg23_to_p_Al26_reaclib, k_p_Al26_to_He4_Mg23_reaclib, - N, Mg25, -1, He4, Ne22, -1, Mg25, Ne22, k_n_Mg25_to_He4_Ne22_reaclib, k_He4_Ne22_to_n_Mg25_reaclib, - He4, Mg25, -1, N, Si28, -1, Mg25, Si28, k_He4_Mg25_to_n_Si28_reaclib, k_n_Si28_to_He4_Mg25_reaclib, - He4, Mg26, -1, N, Si29, -1, Mg26, Si29, k_He4_Mg26_to_n_Si29_reaclib, k_n_Si29_to_He4_Mg26_reaclib, - N, Al25, -1, H1, Mg25, -1, Al25, Mg25, k_n_Al25_to_p_Mg25_reaclib, k_p_Mg25_to_n_Al25_reaclib, - N, Al25, -1, He4, Na22, -1, Al25, Na22, k_n_Al25_to_He4_Na22_reaclib, k_He4_Na22_to_n_Al25_reaclib, - He4, Al25, -1, H1, Si28, -1, Al25, Si28, k_He4_Al25_to_p_Si28_reaclib, k_p_Si28_to_He4_Al25_reaclib, - N, Al26, -1, H1, Mg26, -1, Al26, Mg26, k_n_Al26_to_p_Mg26_reaclib, k_p_Mg26_to_n_Al26_reaclib, - N, Al26, -1, He4, Na23, -1, Al26, Na23, k_n_Al26_to_He4_Na23_reaclib, k_He4_Na23_to_n_Al26_reaclib, - He4, Al26, -1, H1, Si29, -1, Al26, Si29, k_He4_Al26_to_p_Si29_reaclib, k_p_Si29_to_He4_Al26_reaclib, - H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_p_Al27_to_He4_Mg24_reaclib, k_He4_Mg24_to_p_Al27_reaclib, - He4, Al27, -1, H1, Si30, -1, Al27, Si30, k_He4_Al27_to_p_Si30_reaclib, k_p_Si30_to_He4_Al27_reaclib, - H1, Si31, -1, N, P31, -1, Si31, P31, k_p_Si31_to_n_P31_reaclib, k_n_P31_to_p_Si31_reaclib, - He4, Si31, -1, N, S34, -1, Si31, S34, k_He4_Si31_to_n_S34_reaclib, k_n_S34_to_He4_Si31_reaclib, - N, P29, -1, H1, Si29, -1, P29, Si29, k_n_P29_to_p_Si29_reaclib, k_p_Si29_to_n_P29_reaclib, - N, P29, -1, He4, Al26, -1, P29, Al26, k_n_P29_to_He4_Al26_reaclib, k_He4_Al26_to_n_P29_reaclib, - He4, P29, -1, H1, S32, -1, P29, S32, k_He4_P29_to_p_S32_reaclib, k_p_S32_to_He4_P29_reaclib, - N, P30, -1, H1, Si30, -1, P30, Si30, k_n_P30_to_p_Si30_reaclib, k_p_Si30_to_n_P30_reaclib, - N, P30, -1, He4, Al27, -1, P30, Al27, k_n_P30_to_He4_Al27_reaclib, k_He4_Al27_to_n_P30_reaclib, - He4, P30, -1, H1, S33, -1, P30, S33, k_He4_P30_to_p_S33_reaclib, k_p_S33_to_He4_P30_reaclib, - H1, P31, -1, He4, Si28, -1, P31, Si28, k_p_P31_to_He4_Si28_reaclib, k_He4_Si28_to_p_P31_reaclib, - He4, P31, -1, H1, S34, -1, P31, S34, k_He4_P31_to_p_S34_reaclib, k_p_S34_to_He4_P31_reaclib, - N, P32, -1, H1, Si32, -1, P32, Si32, k_n_P32_to_p_Si32_reaclib, k_p_Si32_to_n_P32_reaclib, - H1, P32, -1, N, S32, -1, P32, S32, k_p_P32_to_n_S32_reaclib, k_n_S32_to_p_P32_reaclib, - H1, P32, -1, He4, Si29, -1, P32, Si29, k_p_P32_to_He4_Si29_reaclib, k_He4_Si29_to_p_P32_reaclib, - H1, P33, -1, He4, Si30, -1, P33, Si30, k_p_P33_to_He4_Si30_reaclib, k_He4_Si30_to_p_P33_reaclib, - N, S32, -1, He4, Si29, -1, S32, Si29, k_n_S32_to_He4_Si29_reaclib, k_He4_Si29_to_n_S32_reaclib, - N, S33, -1, H1, P33, -1, S33, P33, k_n_S33_to_p_P33_reaclib, k_p_P33_to_n_S33_reaclib, - N, S33, -1, He4, Si30, -1, S33, Si30, k_n_S33_to_He4_Si30_reaclib, k_He4_Si30_to_n_S33_reaclib, - N, S35, -1, He4, Si32, -1, S35, Si32, k_n_S35_to_He4_Si32_reaclib, k_He4_Si32_to_n_S35_reaclib, - H1, S35, -1, He4, P32, -1, S35, P32, k_p_S35_to_He4_P32_reaclib, k_He4_P32_to_p_S35_reaclib, - He4, S35, -1, N, Ar38, -1, S35, Ar38, k_He4_S35_to_n_Ar38_reaclib, k_n_Ar38_to_He4_S35_reaclib, - H1, S36, -1, He4, P33, -1, S36, P33, k_p_S36_to_He4_P33_reaclib, k_He4_P33_to_p_S36_reaclib, - N, Cl33, -1, H1, S33, -1, Cl33, S33, k_n_Cl33_to_p_S33_reaclib, k_p_S33_to_n_Cl33_reaclib, - N, Cl33, -1, He4, P30, -1, Cl33, P30, k_n_Cl33_to_He4_P30_reaclib, k_He4_P30_to_n_Cl33_reaclib, - He4, Cl33, -1, H1, Ar36, -1, Cl33, Ar36, k_He4_Cl33_to_p_Ar36_reaclib, k_p_Ar36_to_He4_Cl33_reaclib, - N, Cl34, -1, H1, S34, -1, Cl34, S34, k_n_Cl34_to_p_S34_reaclib, k_p_S34_to_n_Cl34_reaclib, - N, Cl34, -1, He4, P31, -1, Cl34, P31, k_n_Cl34_to_He4_P31_reaclib, k_He4_P31_to_n_Cl34_reaclib, - He4, Cl34, -1, H1, Ar37, -1, Cl34, Ar37, k_He4_Cl34_to_p_Ar37_reaclib, k_p_Ar37_to_He4_Cl34_reaclib, - N, Cl35, -1, H1, S35, -1, Cl35, S35, k_n_Cl35_to_p_S35_reaclib, k_p_S35_to_n_Cl35_reaclib, - N, Cl35, -1, He4, P32, -1, Cl35, P32, k_n_Cl35_to_He4_P32_reaclib, k_He4_P32_to_n_Cl35_reaclib, - H1, Cl35, -1, He4, S32, -1, Cl35, S32, k_p_Cl35_to_He4_S32_reaclib, k_He4_S32_to_p_Cl35_reaclib, - He4, Cl35, -1, H1, Ar38, -1, Cl35, Ar38, k_He4_Cl35_to_p_Ar38_reaclib, k_p_Ar38_to_He4_Cl35_reaclib, - N, Cl36, -1, H1, S36, -1, Cl36, S36, k_n_Cl36_to_p_S36_reaclib, k_p_S36_to_n_Cl36_reaclib, - N, Cl36, -1, He4, P33, -1, Cl36, P33, k_n_Cl36_to_He4_P33_reaclib, k_He4_P33_to_n_Cl36_reaclib, - H1, Cl36, -1, He4, S33, -1, Cl36, S33, k_p_Cl36_to_He4_S33_reaclib, k_He4_S33_to_p_Cl36_reaclib, - H1, Cl37, -1, He4, S34, -1, Cl37, S34, k_p_Cl37_to_He4_S34_reaclib, k_He4_S34_to_p_Cl37_reaclib, - N, Ar36, -1, H1, Cl36, -1, Ar36, Cl36, k_n_Ar36_to_p_Cl36_reaclib, k_p_Cl36_to_n_Ar36_reaclib, - N, Ar36, -1, He4, S33, -1, Ar36, S33, k_n_Ar36_to_He4_S33_reaclib, k_He4_S33_to_n_Ar36_reaclib, - N, Ar37, -1, H1, Cl37, -1, Ar37, Cl37, k_n_Ar37_to_p_Cl37_reaclib, k_p_Cl37_to_n_Ar37_reaclib, - N, Ar37, -1, He4, S34, -1, Ar37, S34, k_n_Ar37_to_He4_S34_reaclib, k_He4_S34_to_n_Ar37_reaclib, - N, Ar39, -1, He4, S36, -1, Ar39, S36, k_n_Ar39_to_He4_S36_reaclib, k_He4_S36_to_n_Ar39_reaclib, - H1, Ar39, -1, He4, Cl36, -1, Ar39, Cl36, k_p_Ar39_to_He4_Cl36_reaclib, k_He4_Cl36_to_p_Ar39_reaclib, - H1, Ar40, -1, He4, Cl37, -1, Ar40, Cl37, k_p_Ar40_to_He4_Cl37_reaclib, k_He4_Cl37_to_p_Ar40_reaclib, - N, K37, -1, H1, Ar37, -1, K37, Ar37, k_n_K37_to_p_Ar37_reaclib, k_p_Ar37_to_n_K37_reaclib, - N, K37, -1, He4, Cl34, -1, K37, Cl34, k_n_K37_to_He4_Cl34_reaclib, k_He4_Cl34_to_n_K37_reaclib, - He4, K37, -1, H1, Ca40, -1, K37, Ca40, k_He4_K37_to_p_Ca40_reaclib, k_p_Ca40_to_He4_K37_reaclib, - N, K38, -1, H1, Ar38, -1, K38, Ar38, k_n_K38_to_p_Ar38_reaclib, k_p_Ar38_to_n_K38_reaclib, - N, K38, -1, He4, Cl35, -1, K38, Cl35, k_n_K38_to_He4_Cl35_reaclib, k_He4_Cl35_to_n_K38_reaclib, - He4, K38, -1, H1, Ca41, -1, K38, Ca41, k_He4_K38_to_p_Ca41_reaclib, k_p_Ca41_to_He4_K38_reaclib, - N, K39, -1, H1, Ar39, -1, K39, Ar39, k_n_K39_to_p_Ar39_reaclib, k_p_Ar39_to_n_K39_reaclib, - N, K39, -1, He4, Cl36, -1, K39, Cl36, k_n_K39_to_He4_Cl36_reaclib, k_He4_Cl36_to_n_K39_reaclib, - H1, K39, -1, He4, Ar36, -1, K39, Ar36, k_p_K39_to_He4_Ar36_reaclib, k_He4_Ar36_to_p_K39_reaclib, - N, K40, -1, H1, Ar40, -1, K40, Ar40, k_n_K40_to_p_Ar40_reaclib, k_p_Ar40_to_n_K40_reaclib, - N, K40, -1, He4, Cl37, -1, K40, Cl37, k_n_K40_to_He4_Cl37_reaclib, k_He4_Cl37_to_n_K40_reaclib, - H1, K40, -1, N, Ca40, -1, K40, Ca40, k_p_K40_to_n_Ca40_reaclib, k_n_Ca40_to_p_K40_reaclib, - H1, K40, -1, He4, Ar37, -1, K40, Ar37, k_p_K40_to_He4_Ar37_reaclib, k_He4_Ar37_to_p_K40_reaclib, - He4, K40, -1, H1, Ca43, -1, K40, Ca43, k_He4_K40_to_p_Ca43_reaclib, k_p_Ca43_to_He4_K40_reaclib, - H1, K41, -1, He4, Ar38, -1, K41, Ar38, k_p_K41_to_He4_Ar38_reaclib, k_He4_Ar38_to_p_K41_reaclib, - He4, K41, -1, H1, Ca44, -1, K41, Ca44, k_He4_K41_to_p_Ca44_reaclib, k_p_Ca44_to_He4_K41_reaclib, - N, Ca40, -1, He4, Ar37, -1, Ca40, Ar37, k_n_Ca40_to_He4_Ar37_reaclib, k_He4_Ar37_to_n_Ca40_reaclib, - N, Ca41, -1, H1, K41, -1, Ca41, K41, k_n_Ca41_to_p_K41_reaclib, k_p_K41_to_n_Ca41_reaclib, - N, Ca41, -1, He4, Ar38, -1, Ca41, Ar38, k_n_Ca41_to_He4_Ar38_reaclib, k_He4_Ar38_to_n_Ca41_reaclib, - N, Ca42, -1, He4, Ar39, -1, Ca42, Ar39, k_n_Ca42_to_He4_Ar39_reaclib, k_He4_Ar39_to_n_Ca42_reaclib, - H1, Ca42, -1, He4, K39, -1, Ca42, K39, k_p_Ca42_to_He4_K39_reaclib, k_He4_K39_to_p_Ca42_reaclib, - N, Ca43, -1, He4, Ar40, -1, Ca43, Ar40, k_n_Ca43_to_He4_Ar40_reaclib, k_He4_Ar40_to_n_Ca43_reaclib, - He4, Ca43, -1, N, Ti46, -1, Ca43, Ti46, k_He4_Ca43_to_n_Ti46_reaclib, k_n_Ti46_to_He4_Ca43_reaclib, - He4, Ca45, -1, N, Ti48, -1, Ca45, Ti48, k_He4_Ca45_to_n_Ti48_reaclib, k_n_Ti48_to_He4_Ca45_reaclib, - H1, Ca47, -1, N, Sc47, -1, Ca47, Sc47, k_p_Ca47_to_n_Sc47_reaclib, k_n_Sc47_to_p_Ca47_reaclib, - He4, Ca47, -1, N, Ti50, -1, Ca47, Ti50, k_He4_Ca47_to_n_Ti50_reaclib, k_n_Ti50_to_He4_Ca47_reaclib, - N, Sc43, -1, H1, Ca43, -1, Sc43, Ca43, k_n_Sc43_to_p_Ca43_reaclib, k_p_Ca43_to_n_Sc43_reaclib, - N, Sc43, -1, He4, K40, -1, Sc43, K40, k_n_Sc43_to_He4_K40_reaclib, k_He4_K40_to_n_Sc43_reaclib, - H1, Sc43, -1, He4, Ca40, -1, Sc43, Ca40, k_p_Sc43_to_He4_Ca40_reaclib, k_He4_Ca40_to_p_Sc43_reaclib, - He4, Sc43, -1, H1, Ti46, -1, Sc43, Ti46, k_He4_Sc43_to_p_Ti46_reaclib, k_p_Ti46_to_He4_Sc43_reaclib, - N, Sc44, -1, H1, Ca44, -1, Sc44, Ca44, k_n_Sc44_to_p_Ca44_reaclib, k_p_Ca44_to_n_Sc44_reaclib, - N, Sc44, -1, He4, K41, -1, Sc44, K41, k_n_Sc44_to_He4_K41_reaclib, k_He4_K41_to_n_Sc44_reaclib, - H1, Sc44, -1, He4, Ca41, -1, Sc44, Ca41, k_p_Sc44_to_He4_Ca41_reaclib, k_He4_Ca41_to_p_Sc44_reaclib, - He4, Sc44, -1, H1, Ti47, -1, Sc44, Ti47, k_He4_Sc44_to_p_Ti47_reaclib, k_p_Ti47_to_He4_Sc44_reaclib, - N, Sc45, -1, H1, Ca45, -1, Sc45, Ca45, k_n_Sc45_to_p_Ca45_reaclib, k_p_Ca45_to_n_Sc45_reaclib, - H1, Sc45, -1, He4, Ca42, -1, Sc45, Ca42, k_p_Sc45_to_He4_Ca42_reaclib, k_He4_Ca42_to_p_Sc45_reaclib, - He4, Sc45, -1, H1, Ti48, -1, Sc45, Ti48, k_He4_Sc45_to_p_Ti48_reaclib, k_p_Ti48_to_He4_Sc45_reaclib, - N, Sc46, -1, H1, Ca46, -1, Sc46, Ca46, k_n_Sc46_to_p_Ca46_reaclib, k_p_Ca46_to_n_Sc46_reaclib, - H1, Sc46, -1, N, Ti46, -1, Sc46, Ti46, k_p_Sc46_to_n_Ti46_reaclib, k_n_Ti46_to_p_Sc46_reaclib, - H1, Sc46, -1, He4, Ca43, -1, Sc46, Ca43, k_p_Sc46_to_He4_Ca43_reaclib, k_He4_Ca43_to_p_Sc46_reaclib, - He4, Sc46, -1, N, V49, -1, Sc46, V49, k_He4_Sc46_to_n_V49_reaclib, k_n_V49_to_He4_Sc46_reaclib, - He4, Sc46, -1, H1, Ti49, -1, Sc46, Ti49, k_He4_Sc46_to_p_Ti49_reaclib, k_p_Ti49_to_He4_Sc46_reaclib, - H1, Sc47, -1, He4, Ca44, -1, Sc47, Ca44, k_p_Sc47_to_He4_Ca44_reaclib, k_He4_Ca44_to_p_Sc47_reaclib, - He4, Sc47, -1, H1, Ti50, -1, Sc47, Ti50, k_He4_Sc47_to_p_Ti50_reaclib, k_p_Ti50_to_He4_Sc47_reaclib, - N, Sc48, -1, H1, Ca48, -1, Sc48, Ca48, k_n_Sc48_to_p_Ca48_reaclib, k_p_Ca48_to_n_Sc48_reaclib, - H1, Sc48, -1, N, Ti48, -1, Sc48, Ti48, k_p_Sc48_to_n_Ti48_reaclib, k_n_Ti48_to_p_Sc48_reaclib, - H1, Sc48, -1, He4, Ca45, -1, Sc48, Ca45, k_p_Sc48_to_He4_Ca45_reaclib, k_He4_Ca45_to_p_Sc48_reaclib, - He4, Sc48, -1, N, V51, -1, Sc48, V51, k_He4_Sc48_to_n_V51_reaclib, k_n_V51_to_He4_Sc48_reaclib, - He4, Sc48, -1, H1, Ti51, -1, Sc48, Ti51, k_He4_Sc48_to_p_Ti51_reaclib, k_p_Ti51_to_He4_Sc48_reaclib, - H1, Sc49, -1, N, Ti49, -1, Sc49, Ti49, k_p_Sc49_to_n_Ti49_reaclib, k_n_Ti49_to_p_Sc49_reaclib, - H1, Sc49, -1, He4, Ca46, -1, Sc49, Ca46, k_p_Sc49_to_He4_Ca46_reaclib, k_He4_Ca46_to_p_Sc49_reaclib, - N, Ti44, -1, H1, Sc44, -1, Ti44, Sc44, k_n_Ti44_to_p_Sc44_reaclib, k_p_Sc44_to_n_Ti44_reaclib, - N, Ti44, -1, He4, Ca41, -1, Ti44, Ca41, k_n_Ti44_to_He4_Ca41_reaclib, k_He4_Ca41_to_n_Ti44_reaclib, - N, Ti45, -1, H1, Sc45, -1, Ti45, Sc45, k_n_Ti45_to_p_Sc45_reaclib, k_p_Sc45_to_n_Ti45_reaclib, - N, Ti45, -1, He4, Ca42, -1, Ti45, Ca42, k_n_Ti45_to_He4_Ca42_reaclib, k_He4_Ca42_to_n_Ti45_reaclib, - He4, Ti45, -1, H1, V48, -1, Ti45, V48, k_He4_Ti45_to_p_V48_reaclib, k_p_V48_to_He4_Ti45_reaclib, - N, Ti47, -1, H1, Sc47, -1, Ti47, Sc47, k_n_Ti47_to_p_Sc47_reaclib, k_p_Sc47_to_n_Ti47_reaclib, - N, Ti47, -1, He4, Ca44, -1, Ti47, Ca44, k_n_Ti47_to_He4_Ca44_reaclib, k_He4_Ca44_to_n_Ti47_reaclib, - N, Ti49, -1, He4, Ca46, -1, Ti49, Ca46, k_n_Ti49_to_He4_Ca46_reaclib, k_He4_Ca46_to_n_Ti49_reaclib, - He4, Ti49, -1, N, Cr52, -1, Ti49, Cr52, k_He4_Ti49_to_n_Cr52_reaclib, k_n_Cr52_to_He4_Ti49_reaclib, - N, Ti51, -1, He4, Ca48, -1, Ti51, Ca48, k_n_Ti51_to_He4_Ca48_reaclib, k_He4_Ca48_to_n_Ti51_reaclib, - H1, Ti51, -1, N, V51, -1, Ti51, V51, k_p_Ti51_to_n_V51_reaclib, k_n_V51_to_p_Ti51_reaclib, - He4, Ti51, -1, N, Cr54, -1, Ti51, Cr54, k_He4_Ti51_to_n_Cr54_reaclib, k_n_Cr54_to_He4_Ti51_reaclib, - N, V46, -1, H1, Ti46, -1, V46, Ti46, k_n_V46_to_p_Ti46_reaclib, k_p_Ti46_to_n_V46_reaclib, - N, V46, -1, He4, Sc43, -1, V46, Sc43, k_n_V46_to_He4_Sc43_reaclib, k_He4_Sc43_to_n_V46_reaclib, - He4, V46, -1, H1, Cr49, -1, V46, Cr49, k_He4_V46_to_p_Cr49_reaclib, k_p_Cr49_to_He4_V46_reaclib, - N, V47, -1, H1, Ti47, -1, V47, Ti47, k_n_V47_to_p_Ti47_reaclib, k_p_Ti47_to_n_V47_reaclib, - N, V47, -1, He4, Sc44, -1, V47, Sc44, k_n_V47_to_He4_Sc44_reaclib, k_He4_Sc44_to_n_V47_reaclib, - H1, V47, -1, He4, Ti44, -1, V47, Ti44, k_p_V47_to_He4_Ti44_reaclib, k_He4_Ti44_to_p_V47_reaclib, - He4, V47, -1, H1, Cr50, -1, V47, Cr50, k_He4_V47_to_p_Cr50_reaclib, k_p_Cr50_to_He4_V47_reaclib, - N, V48, -1, H1, Ti48, -1, V48, Ti48, k_n_V48_to_p_Ti48_reaclib, k_p_Ti48_to_n_V48_reaclib, - N, V48, -1, He4, Sc45, -1, V48, Sc45, k_n_V48_to_He4_Sc45_reaclib, k_He4_Sc45_to_n_V48_reaclib, - He4, V48, -1, H1, Cr51, -1, V48, Cr51, k_He4_V48_to_p_Cr51_reaclib, k_p_Cr51_to_He4_V48_reaclib, - N, V49, -1, H1, Ti49, -1, V49, Ti49, k_n_V49_to_p_Ti49_reaclib, k_p_Ti49_to_n_V49_reaclib, - H1, V49, -1, He4, Ti46, -1, V49, Ti46, k_p_V49_to_He4_Ti46_reaclib, k_He4_Ti46_to_p_V49_reaclib, - He4, V49, -1, H1, Cr52, -1, V49, Cr52, k_He4_V49_to_p_Cr52_reaclib, k_p_Cr52_to_He4_V49_reaclib, - N, V50, -1, H1, Ti50, -1, V50, Ti50, k_n_V50_to_p_Ti50_reaclib, k_p_Ti50_to_n_V50_reaclib, - N, V50, -1, He4, Sc47, -1, V50, Sc47, k_n_V50_to_He4_Sc47_reaclib, k_He4_Sc47_to_n_V50_reaclib, - H1, V50, -1, N, Cr50, -1, V50, Cr50, k_p_V50_to_n_Cr50_reaclib, k_n_Cr50_to_p_V50_reaclib, - H1, V50, -1, He4, Ti47, -1, V50, Ti47, k_p_V50_to_He4_Ti47_reaclib, k_He4_Ti47_to_p_V50_reaclib, - He4, V50, -1, H1, Cr53, -1, V50, Cr53, k_He4_V50_to_p_Cr53_reaclib, k_p_Cr53_to_He4_V50_reaclib, - H1, V51, -1, He4, Ti48, -1, V51, Ti48, k_p_V51_to_He4_Ti48_reaclib, k_He4_Ti48_to_p_V51_reaclib, - N, V52, -1, He4, Sc49, -1, V52, Sc49, k_n_V52_to_He4_Sc49_reaclib, k_He4_Sc49_to_n_V52_reaclib, - H1, V52, -1, N, Cr52, -1, V52, Cr52, k_p_V52_to_n_Cr52_reaclib, k_n_Cr52_to_p_V52_reaclib, - H1, V52, -1, He4, Ti49, -1, V52, Ti49, k_p_V52_to_He4_Ti49_reaclib, k_He4_Ti49_to_p_V52_reaclib, - He4, V52, -1, N, Mn55, -1, V52, Mn55, k_He4_V52_to_n_Mn55_reaclib, k_n_Mn55_to_He4_V52_reaclib, - N, Cr48, -1, H1, V48, -1, Cr48, V48, k_n_Cr48_to_p_V48_reaclib, k_p_V48_to_n_Cr48_reaclib, - N, Cr48, -1, He4, Ti45, -1, Cr48, Ti45, k_n_Cr48_to_He4_Ti45_reaclib, k_He4_Ti45_to_n_Cr48_reaclib, - He4, Cr48, -1, H1, Mn51, -1, Cr48, Mn51, k_He4_Cr48_to_p_Mn51_reaclib, k_p_Mn51_to_He4_Cr48_reaclib, - N, Cr49, -1, H1, V49, -1, Cr49, V49, k_n_Cr49_to_p_V49_reaclib, k_p_V49_to_n_Cr49_reaclib, - N, Cr49, -1, He4, Ti46, -1, Cr49, Ti46, k_n_Cr49_to_He4_Ti46_reaclib, k_He4_Ti46_to_n_Cr49_reaclib, - He4, Cr49, -1, H1, Mn52, -1, Cr49, Mn52, k_He4_Cr49_to_p_Mn52_reaclib, k_p_Mn52_to_He4_Cr49_reaclib, - N, Cr50, -1, He4, Ti47, -1, Cr50, Ti47, k_n_Cr50_to_He4_Ti47_reaclib, k_He4_Ti47_to_n_Cr50_reaclib, - N, Cr51, -1, H1, V51, -1, Cr51, V51, k_n_Cr51_to_p_V51_reaclib, k_p_V51_to_n_Cr51_reaclib, - N, Cr51, -1, He4, Ti48, -1, Cr51, Ti48, k_n_Cr51_to_He4_Ti48_reaclib, k_He4_Ti48_to_n_Cr51_reaclib, - N, Cr53, -1, He4, Ti50, -1, Cr53, Ti50, k_n_Cr53_to_He4_Ti50_reaclib, k_He4_Ti50_to_n_Cr53_reaclib, - H1, Cr54, -1, He4, V51, -1, Cr54, V51, k_p_Cr54_to_He4_V51_reaclib, k_He4_V51_to_p_Cr54_reaclib, - N, Mn50, -1, H1, Cr50, -1, Mn50, Cr50, k_n_Mn50_to_p_Cr50_reaclib, k_p_Cr50_to_n_Mn50_reaclib, - N, Mn50, -1, He4, V47, -1, Mn50, V47, k_n_Mn50_to_He4_V47_reaclib, k_He4_V47_to_n_Mn50_reaclib, - He4, Mn50, -1, H1, Fe53, -1, Mn50, Fe53, k_He4_Mn50_to_p_Fe53_reaclib, k_p_Fe53_to_He4_Mn50_reaclib, - N, Mn51, -1, H1, Cr51, -1, Mn51, Cr51, k_n_Mn51_to_p_Cr51_reaclib, k_p_Cr51_to_n_Mn51_reaclib, - N, Mn51, -1, He4, V48, -1, Mn51, V48, k_n_Mn51_to_He4_V48_reaclib, k_He4_V48_to_n_Mn51_reaclib, - He4, Mn51, -1, H1, Fe54, -1, Mn51, Fe54, k_He4_Mn51_to_p_Fe54_reaclib, k_p_Fe54_to_He4_Mn51_reaclib, - N, Mn52, -1, H1, Cr52, -1, Mn52, Cr52, k_n_Mn52_to_p_Cr52_reaclib, k_p_Cr52_to_n_Mn52_reaclib, - N, Mn52, -1, He4, V49, -1, Mn52, V49, k_n_Mn52_to_He4_V49_reaclib, k_He4_V49_to_n_Mn52_reaclib, - He4, Mn52, -1, H1, Fe55, -1, Mn52, Fe55, k_He4_Mn52_to_p_Fe55_reaclib, k_p_Fe55_to_He4_Mn52_reaclib, - N, Mn53, -1, H1, Cr53, -1, Mn53, Cr53, k_n_Mn53_to_p_Cr53_reaclib, k_p_Cr53_to_n_Mn53_reaclib, - N, Mn53, -1, He4, V50, -1, Mn53, V50, k_n_Mn53_to_He4_V50_reaclib, k_He4_V50_to_n_Mn53_reaclib, - H1, Mn53, -1, He4, Cr50, -1, Mn53, Cr50, k_p_Mn53_to_He4_Cr50_reaclib, k_He4_Cr50_to_p_Mn53_reaclib, - He4, Mn53, -1, H1, Fe56, -1, Mn53, Fe56, k_He4_Mn53_to_p_Fe56_reaclib, k_p_Fe56_to_He4_Mn53_reaclib, - N, Mn54, -1, H1, Cr54, -1, Mn54, Cr54, k_n_Mn54_to_p_Cr54_reaclib, k_p_Cr54_to_n_Mn54_reaclib, - N, Mn54, -1, He4, V51, -1, Mn54, V51, k_n_Mn54_to_He4_V51_reaclib, k_He4_V51_to_n_Mn54_reaclib, - H1, Mn54, -1, He4, Cr51, -1, Mn54, Cr51, k_p_Mn54_to_He4_Cr51_reaclib, k_He4_Cr51_to_p_Mn54_reaclib, - H1, Mn55, -1, He4, Cr52, -1, Mn55, Cr52, k_p_Mn55_to_He4_Cr52_reaclib, k_He4_Cr52_to_p_Mn55_reaclib, - N, Fe52, -1, H1, Mn52, -1, Fe52, Mn52, k_n_Fe52_to_p_Mn52_reaclib, k_p_Mn52_to_n_Fe52_reaclib, - N, Fe52, -1, He4, Cr49, -1, Fe52, Cr49, k_n_Fe52_to_He4_Cr49_reaclib, k_He4_Cr49_to_n_Fe52_reaclib, - He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_He4_Fe52_to_p_Co55_reaclib, k_p_Co55_to_He4_Fe52_reaclib, - N, Fe53, -1, H1, Mn53, -1, Fe53, Mn53, k_n_Fe53_to_p_Mn53_reaclib, k_p_Mn53_to_n_Fe53_reaclib, - N, Fe53, -1, He4, Cr50, -1, Fe53, Cr50, k_n_Fe53_to_He4_Cr50_reaclib, k_He4_Cr50_to_n_Fe53_reaclib, - He4, Fe53, -1, H1, Co56, -1, Fe53, Co56, k_He4_Fe53_to_p_Co56_reaclib, k_p_Co56_to_He4_Fe53_reaclib, - N, Fe54, -1, H1, Mn54, -1, Fe54, Mn54, k_n_Fe54_to_p_Mn54_reaclib, k_p_Mn54_to_n_Fe54_reaclib, - N, Fe54, -1, He4, Cr51, -1, Fe54, Cr51, k_n_Fe54_to_He4_Cr51_reaclib, k_He4_Cr51_to_n_Fe54_reaclib, - N, Fe55, -1, H1, Mn55, -1, Fe55, Mn55, k_n_Fe55_to_p_Mn55_reaclib, k_p_Mn55_to_n_Fe55_reaclib, - N, Fe55, -1, He4, Cr52, -1, Fe55, Cr52, k_n_Fe55_to_He4_Cr52_reaclib, k_He4_Cr52_to_n_Fe55_reaclib, - N, Fe56, -1, He4, Cr53, -1, Fe56, Cr53, k_n_Fe56_to_He4_Cr53_reaclib, k_He4_Cr53_to_n_Fe56_reaclib, - N, Fe57, -1, He4, Cr54, -1, Fe57, Cr54, k_n_Fe57_to_He4_Cr54_reaclib, k_He4_Cr54_to_n_Fe57_reaclib, - H1, Fe57, -1, He4, Mn54, -1, Fe57, Mn54, k_p_Fe57_to_He4_Mn54_reaclib, k_He4_Mn54_to_p_Fe57_reaclib, - H1, Fe58, -1, He4, Mn55, -1, Fe58, Mn55, k_p_Fe58_to_He4_Mn55_reaclib, k_He4_Mn55_to_p_Fe58_reaclib, - N, Co53, -1, H1, Fe53, -1, Co53, Fe53, k_n_Co53_to_p_Fe53_reaclib, k_p_Fe53_to_n_Co53_reaclib, - N, Co53, -1, He4, Mn50, -1, Co53, Mn50, k_n_Co53_to_He4_Mn50_reaclib, k_He4_Mn50_to_n_Co53_reaclib, - He4, Co53, -1, H1, Ni56, -1, Co53, Ni56, k_He4_Co53_to_p_Ni56_reaclib, k_p_Ni56_to_He4_Co53_reaclib, - N, Co54, -1, H1, Fe54, -1, Co54, Fe54, k_n_Co54_to_p_Fe54_reaclib, k_p_Fe54_to_n_Co54_reaclib, - N, Co54, -1, He4, Mn51, -1, Co54, Mn51, k_n_Co54_to_He4_Mn51_reaclib, k_He4_Mn51_to_n_Co54_reaclib, - He4, Co54, -1, H1, Ni57, -1, Co54, Ni57, k_He4_Co54_to_p_Ni57_reaclib, k_p_Ni57_to_He4_Co54_reaclib, - N, Co55, -1, H1, Fe55, -1, Co55, Fe55, k_n_Co55_to_p_Fe55_reaclib, k_p_Fe55_to_n_Co55_reaclib, - N, Co55, -1, He4, Mn52, -1, Co55, Mn52, k_n_Co55_to_He4_Mn52_reaclib, k_He4_Mn52_to_n_Co55_reaclib, - He4, Co55, -1, H1, Ni58, -1, Co55, Ni58, k_He4_Co55_to_p_Ni58_reaclib, k_p_Ni58_to_He4_Co55_reaclib, - N, Co56, -1, H1, Fe56, -1, Co56, Fe56, k_n_Co56_to_p_Fe56_reaclib, k_p_Fe56_to_n_Co56_reaclib, - N, Co56, -1, He4, Mn53, -1, Co56, Mn53, k_n_Co56_to_He4_Mn53_reaclib, k_He4_Mn53_to_n_Co56_reaclib, - He4, Co56, -1, H1, Ni59, -1, Co56, Ni59, k_He4_Co56_to_p_Ni59_reaclib, k_p_Ni59_to_He4_Co56_reaclib, - N, Co57, -1, H1, Fe57, -1, Co57, Fe57, k_n_Co57_to_p_Fe57_reaclib, k_p_Fe57_to_n_Co57_reaclib, - N, Co57, -1, He4, Mn54, -1, Co57, Mn54, k_n_Co57_to_He4_Mn54_reaclib, k_He4_Mn54_to_n_Co57_reaclib, - H1, Co57, -1, He4, Fe54, -1, Co57, Fe54, k_p_Co57_to_He4_Fe54_reaclib, k_He4_Fe54_to_p_Co57_reaclib, - He4, Co57, -1, H1, Ni60, -1, Co57, Ni60, k_He4_Co57_to_p_Ni60_reaclib, k_p_Ni60_to_He4_Co57_reaclib, - N, Co58, -1, H1, Fe58, -1, Co58, Fe58, k_n_Co58_to_p_Fe58_reaclib, k_p_Fe58_to_n_Co58_reaclib, - N, Co58, -1, He4, Mn55, -1, Co58, Mn55, k_n_Co58_to_He4_Mn55_reaclib, k_He4_Mn55_to_n_Co58_reaclib, - H1, Co58, -1, He4, Fe55, -1, Co58, Fe55, k_p_Co58_to_He4_Fe55_reaclib, k_He4_Fe55_to_p_Co58_reaclib, - H1, Co59, -1, He4, Fe56, -1, Co59, Fe56, k_p_Co59_to_He4_Fe56_reaclib, k_He4_Fe56_to_p_Co59_reaclib, - N, Ni56, -1, H1, Co56, -1, Ni56, Co56, k_n_Ni56_to_p_Co56_reaclib, k_p_Co56_to_n_Ni56_reaclib, - N, Ni56, -1, He4, Fe53, -1, Ni56, Fe53, k_n_Ni56_to_He4_Fe53_reaclib, k_He4_Fe53_to_n_Ni56_reaclib, - N, Ni57, -1, H1, Co57, -1, Ni57, Co57, k_n_Ni57_to_p_Co57_reaclib, k_p_Co57_to_n_Ni57_reaclib, - N, Ni57, -1, He4, Fe54, -1, Ni57, Fe54, k_n_Ni57_to_He4_Fe54_reaclib, k_He4_Fe54_to_n_Ni57_reaclib, - N, Ni58, -1, H1, Co58, -1, Ni58, Co58, k_n_Ni58_to_p_Co58_reaclib, k_p_Co58_to_n_Ni58_reaclib, - N, Ni58, -1, He4, Fe55, -1, Ni58, Fe55, k_n_Ni58_to_He4_Fe55_reaclib, k_He4_Fe55_to_n_Ni58_reaclib, - N, Ni59, -1, H1, Co59, -1, Ni59, Co59, k_n_Ni59_to_p_Co59_reaclib, k_p_Co59_to_n_Ni59_reaclib, - N, Ni59, -1, He4, Fe56, -1, Ni59, Fe56, k_n_Ni59_to_He4_Fe56_reaclib, k_He4_Fe56_to_n_Ni59_reaclib, - N, Ni60, -1, He4, Fe57, -1, Ni60, Fe57, k_n_Ni60_to_He4_Fe57_reaclib, k_He4_Fe57_to_n_Ni60_reaclib, - N, Ni61, -1, He4, Fe58, -1, Ni61, Fe58, k_n_Ni61_to_He4_Fe58_reaclib, k_He4_Fe58_to_n_Ni61_reaclib, - H1, Ni61, -1, He4, Co58, -1, Ni61, Co58, k_p_Ni61_to_He4_Co58_reaclib, k_He4_Co58_to_p_Ni61_reaclib, - H1, Ni62, -1, He4, Co59, -1, Ni62, Co59, k_p_Ni62_to_He4_Co59_reaclib, k_He4_Co59_to_p_Ni62_reaclib, - N, Cu57, -1, H1, Ni57, -1, Cu57, Ni57, k_n_Cu57_to_p_Ni57_reaclib, k_p_Ni57_to_n_Cu57_reaclib, - N, Cu57, -1, He4, Co54, -1, Cu57, Co54, k_n_Cu57_to_He4_Co54_reaclib, k_He4_Co54_to_n_Cu57_reaclib, - He4, Cu57, -1, H1, Zn60, -1, Cu57, Zn60, k_He4_Cu57_to_p_Zn60_reaclib, k_p_Zn60_to_He4_Cu57_reaclib, - N, Cu58, -1, H1, Ni58, -1, Cu58, Ni58, k_n_Cu58_to_p_Ni58_reaclib, k_p_Ni58_to_n_Cu58_reaclib, - N, Cu58, -1, He4, Co55, -1, Cu58, Co55, k_n_Cu58_to_He4_Co55_reaclib, k_He4_Co55_to_n_Cu58_reaclib, - N, Cu59, -1, H1, Ni59, -1, Cu59, Ni59, k_n_Cu59_to_p_Ni59_reaclib, k_p_Ni59_to_n_Cu59_reaclib, - N, Cu59, -1, He4, Co56, -1, Cu59, Co56, k_n_Cu59_to_He4_Co56_reaclib, k_He4_Co56_to_n_Cu59_reaclib, - H1, Cu59, -1, He4, Ni56, -1, Cu59, Ni56, k_p_Cu59_to_He4_Ni56_reaclib, k_He4_Ni56_to_p_Cu59_reaclib, - N, Cu60, -1, H1, Ni60, -1, Cu60, Ni60, k_n_Cu60_to_p_Ni60_reaclib, k_p_Ni60_to_n_Cu60_reaclib, - N, Cu60, -1, He4, Co57, -1, Cu60, Co57, k_n_Cu60_to_He4_Co57_reaclib, k_He4_Co57_to_n_Cu60_reaclib, - H1, Cu60, -1, He4, Ni57, -1, Cu60, Ni57, k_p_Cu60_to_He4_Ni57_reaclib, k_He4_Ni57_to_p_Cu60_reaclib, - N, Cu61, -1, H1, Ni61, -1, Cu61, Ni61, k_n_Cu61_to_p_Ni61_reaclib, k_p_Ni61_to_n_Cu61_reaclib, - N, Cu61, -1, He4, Co58, -1, Cu61, Co58, k_n_Cu61_to_He4_Co58_reaclib, k_He4_Co58_to_n_Cu61_reaclib, - H1, Cu61, -1, He4, Ni58, -1, Cu61, Ni58, k_p_Cu61_to_He4_Ni58_reaclib, k_He4_Ni58_to_p_Cu61_reaclib, - N, Cu62, -1, H1, Ni62, -1, Cu62, Ni62, k_n_Cu62_to_p_Ni62_reaclib, k_p_Ni62_to_n_Cu62_reaclib, - N, Cu62, -1, He4, Co59, -1, Cu62, Co59, k_n_Cu62_to_He4_Co59_reaclib, k_He4_Co59_to_n_Cu62_reaclib, - H1, Cu62, -1, He4, Ni59, -1, Cu62, Ni59, k_p_Cu62_to_He4_Ni59_reaclib, k_He4_Ni59_to_p_Cu62_reaclib, - N, Cu63, -1, H1, Ni63, -1, Cu63, Ni63, k_n_Cu63_to_p_Ni63_reaclib, k_p_Ni63_to_n_Cu63_reaclib, - H1, Cu63, -1, He4, Ni60, -1, Cu63, Ni60, k_p_Cu63_to_He4_Ni60_reaclib, k_He4_Ni60_to_p_Cu63_reaclib, - N, Cu64, -1, H1, Ni64, -1, Cu64, Ni64, k_n_Cu64_to_p_Ni64_reaclib, k_p_Ni64_to_n_Cu64_reaclib, - H1, Cu64, -1, He4, Ni61, -1, Cu64, Ni61, k_p_Cu64_to_He4_Ni61_reaclib, k_He4_Ni61_to_p_Cu64_reaclib, - H1, Cu65, -1, He4, Ni62, -1, Cu65, Ni62, k_p_Cu65_to_He4_Ni62_reaclib, k_He4_Ni62_to_p_Cu65_reaclib, - N, Zn59, -1, H1, Cu59, -1, Zn59, Cu59, k_n_Zn59_to_p_Cu59_reaclib, k_p_Cu59_to_n_Zn59_reaclib, - N, Zn59, -1, He4, Ni56, -1, Zn59, Ni56, k_n_Zn59_to_He4_Ni56_reaclib, k_He4_Ni56_to_n_Zn59_reaclib, - N, Zn60, -1, H1, Cu60, -1, Zn60, Cu60, k_n_Zn60_to_p_Cu60_reaclib, k_p_Cu60_to_n_Zn60_reaclib, - N, Zn60, -1, He4, Ni57, -1, Zn60, Ni57, k_n_Zn60_to_He4_Ni57_reaclib, k_He4_Ni57_to_n_Zn60_reaclib, - N, Zn61, -1, H1, Cu61, -1, Zn61, Cu61, k_n_Zn61_to_p_Cu61_reaclib, k_p_Cu61_to_n_Zn61_reaclib, - N, Zn61, -1, He4, Ni58, -1, Zn61, Ni58, k_n_Zn61_to_He4_Ni58_reaclib, k_He4_Ni58_to_n_Zn61_reaclib, - H1, Zn61, -1, He4, Cu58, -1, Zn61, Cu58, k_p_Zn61_to_He4_Cu58_reaclib, k_He4_Cu58_to_p_Zn61_reaclib, - N, Zn62, -1, H1, Cu62, -1, Zn62, Cu62, k_n_Zn62_to_p_Cu62_reaclib, k_p_Cu62_to_n_Zn62_reaclib, - N, Zn62, -1, He4, Ni59, -1, Zn62, Ni59, k_n_Zn62_to_He4_Ni59_reaclib, k_He4_Ni59_to_n_Zn62_reaclib, - H1, Zn62, -1, He4, Cu59, -1, Zn62, Cu59, k_p_Zn62_to_He4_Cu59_reaclib, k_He4_Cu59_to_p_Zn62_reaclib, - N, Zn63, -1, H1, Cu63, -1, Zn63, Cu63, k_n_Zn63_to_p_Cu63_reaclib, k_p_Cu63_to_n_Zn63_reaclib, - N, Zn63, -1, He4, Ni60, -1, Zn63, Ni60, k_n_Zn63_to_He4_Ni60_reaclib, k_He4_Ni60_to_n_Zn63_reaclib, - H1, Zn63, -1, He4, Cu60, -1, Zn63, Cu60, k_p_Zn63_to_He4_Cu60_reaclib, k_He4_Cu60_to_p_Zn63_reaclib, - N, Zn64, -1, H1, Cu64, -1, Zn64, Cu64, k_n_Zn64_to_p_Cu64_reaclib, k_p_Cu64_to_n_Zn64_reaclib, - N, Zn64, -1, He4, Ni61, -1, Zn64, Ni61, k_n_Zn64_to_He4_Ni61_reaclib, k_He4_Ni61_to_n_Zn64_reaclib, - H1, Zn64, -1, He4, Cu61, -1, Zn64, Cu61, k_p_Zn64_to_He4_Cu61_reaclib, k_He4_Cu61_to_p_Zn64_reaclib, - N, Zn65, -1, H1, Cu65, -1, Zn65, Cu65, k_n_Zn65_to_p_Cu65_reaclib, k_p_Cu65_to_n_Zn65_reaclib, - N, Zn65, -1, He4, Ni62, -1, Zn65, Ni62, k_n_Zn65_to_He4_Ni62_reaclib, k_He4_Ni62_to_n_Zn65_reaclib, - H1, Zn65, -1, He4, Cu62, -1, Zn65, Cu62, k_p_Zn65_to_He4_Cu62_reaclib, k_He4_Cu62_to_p_Zn65_reaclib, - N, Zn66, -1, He4, Ni63, -1, Zn66, Ni63, k_n_Zn66_to_He4_Ni63_reaclib, k_He4_Ni63_to_n_Zn66_reaclib, - H1, Zn66, -1, He4, Cu63, -1, Zn66, Cu63, k_p_Zn66_to_He4_Cu63_reaclib, k_He4_Cu63_to_p_Zn66_reaclib, - N, Ga62, -1, H1, Zn62, -1, Ga62, Zn62, k_n_Ga62_to_p_Zn62_reaclib, k_p_Zn62_to_n_Ga62_reaclib, - N, Ga62, -1, He4, Cu59, -1, Ga62, Cu59, k_n_Ga62_to_He4_Cu59_reaclib, k_He4_Cu59_to_n_Ga62_reaclib, - H1, Ga62, -1, He4, Zn59, -1, Ga62, Zn59, k_p_Ga62_to_He4_Zn59_reaclib, k_He4_Zn59_to_p_Ga62_reaclib, - N, Ga63, -1, H1, Zn63, -1, Ga63, Zn63, k_n_Ga63_to_p_Zn63_reaclib, k_p_Zn63_to_n_Ga63_reaclib, - N, Ga63, -1, He4, Cu60, -1, Ga63, Cu60, k_n_Ga63_to_He4_Cu60_reaclib, k_He4_Cu60_to_n_Ga63_reaclib, - H1, Ga63, -1, He4, Zn60, -1, Ga63, Zn60, k_p_Ga63_to_He4_Zn60_reaclib, k_He4_Zn60_to_p_Ga63_reaclib, - N, Ga64, -1, H1, Zn64, -1, Ga64, Zn64, k_n_Ga64_to_p_Zn64_reaclib, k_p_Zn64_to_n_Ga64_reaclib, - N, Ga64, -1, He4, Cu61, -1, Ga64, Cu61, k_n_Ga64_to_He4_Cu61_reaclib, k_He4_Cu61_to_n_Ga64_reaclib, - H1, Ga64, -1, He4, Zn61, -1, Ga64, Zn61, k_p_Ga64_to_He4_Zn61_reaclib, k_He4_Zn61_to_p_Ga64_reaclib, - N, Ge63, -1, H1, Ga63, -1, Ge63, Ga63, k_n_Ge63_to_p_Ga63_reaclib, k_p_Ga63_to_n_Ge63_reaclib, - N, Ge63, -1, He4, Zn60, -1, Ge63, Zn60, k_n_Ge63_to_He4_Zn60_reaclib, k_He4_Zn60_to_n_Ge63_reaclib, - N, Ge64, -1, H1, Ga64, -1, Ge64, Ga64, k_n_Ge64_to_p_Ga64_reaclib, k_p_Ga64_to_n_Ge64_reaclib, - N, Ge64, -1, He4, Zn61, -1, Ge64, Zn61, k_n_Ge64_to_He4_Zn61_reaclib, k_He4_Zn61_to_n_Ge64_reaclib, - He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_He4_He4_He4_reaclib + He4, H2, -1, Li6, -1, -1, H2, Li6, k_d_He4_to_Li6_reaclib, k_Li6_to_He4_d_reaclib, + N, He3, -1, He4, -1, -1, He3, -1, k_He3_n_to_He4_reaclib, k_He4_to_n_He3_reaclib, + He4, He3, -1, Be7, -1, -1, He3, Be7, k_He3_He4_to_Be7_reaclib, k_Be7_to_He4_He3_reaclib, + N, Li6, -1, Li7, -1, -1, Li6, Li7, k_Li6_n_to_Li7_reaclib, k_Li7_to_n_Li6_reaclib, + H1, Li6, -1, Be7, -1, -1, Li6, Be7, k_Li6_p_to_Be7_reaclib, k_Be7_to_p_Li6_reaclib, + He4, Li6, -1, B10, -1, -1, Li6, B10, k_Li6_He4_to_B10_reaclib, k_B10_to_He4_Li6_reaclib, + He4, Li7, -1, B11, -1, -1, Li7, B11, k_Li7_He4_to_B11_reaclib, k_B11_to_He4_Li7_reaclib, + H1, Be7, -1, B8, -1, -1, Be7, B8, k_Be7_p_to_B8_reaclib, k_B8_to_p_Be7_reaclib, + H1, Be9, -1, B10, -1, -1, Be9, B10, k_Be9_p_to_B10_reaclib, k_B10_to_p_Be9_reaclib, + N, B10, -1, B11, -1, -1, B10, B11, k_B10_n_to_B11_reaclib, k_B11_to_n_B10_reaclib, + H1, B11, -1, C12, -1, -1, B11, C12, k_B11_p_to_C12_reaclib, k_C12_to_p_B11_reaclib, + N, C12, -1, C13, -1, -1, C12, C13, k_C12_n_to_C13_reaclib, k_C13_to_n_C12_reaclib, + H1, C12, -1, N13, -1, -1, C12, N13, k_C12_p_to_N13_reaclib, k_N13_to_p_C12_reaclib, + He4, C12, -1, O16, -1, -1, C12, O16, k_C12_He4_to_O16_reaclib, k_O16_to_He4_C12_reaclib, + N, C13, -1, C14, -1, -1, C13, C14, k_C13_n_to_C14_reaclib, k_C14_to_n_C13_reaclib, + H1, C13, -1, N14, -1, -1, C13, N14, k_C13_p_to_N14_reaclib, k_N14_to_p_C13_reaclib, + H1, C14, -1, N15, -1, -1, C14, N15, k_C14_p_to_N15_reaclib, k_N15_to_p_C14_reaclib, + He4, C14, -1, O18, -1, -1, C14, O18, k_C14_He4_to_O18_reaclib, k_O18_to_He4_C14_reaclib, + N, N13, -1, N14, -1, -1, N13, N14, k_N13_n_to_N14_reaclib, k_N14_to_n_N13_reaclib, + H1, N13, -1, O14, -1, -1, N13, O14, k_N13_p_to_O14_reaclib, k_O14_to_p_N13_reaclib, + N, N14, -1, N15, -1, -1, N14, N15, k_N14_n_to_N15_reaclib, k_N15_to_n_N14_reaclib, + H1, N14, -1, O15, -1, -1, N14, O15, k_N14_p_to_O15_reaclib, k_O15_to_p_N14_reaclib, + He4, N14, -1, F18, -1, -1, N14, F18, k_N14_He4_to_F18_reaclib, k_F18_to_He4_N14_reaclib, + H1, N15, -1, O16, -1, -1, N15, O16, k_N15_p_to_O16_reaclib, k_O16_to_p_N15_reaclib, + He4, N15, -1, F19, -1, -1, N15, F19, k_N15_He4_to_F19_reaclib, k_F19_to_He4_N15_reaclib, + N, O14, -1, O15, -1, -1, O14, O15, k_O14_n_to_O15_reaclib, k_O15_to_n_O14_reaclib, + He4, O14, -1, Ne18, -1, -1, O14, Ne18, k_O14_He4_to_Ne18_reaclib, k_Ne18_to_He4_O14_reaclib, + N, O15, -1, O16, -1, -1, O15, O16, k_O15_n_to_O16_reaclib, k_O16_to_n_O15_reaclib, + He4, O15, -1, Ne19, -1, -1, O15, Ne19, k_O15_He4_to_Ne19_reaclib, k_Ne19_to_He4_O15_reaclib, + N, O16, -1, O17, -1, -1, O16, O17, k_O16_n_to_O17_reaclib, k_O17_to_n_O16_reaclib, + H1, O16, -1, F17, -1, -1, O16, F17, k_O16_p_to_F17_reaclib, k_F17_to_p_O16_reaclib, + He4, O16, -1, Ne20, -1, -1, O16, Ne20, k_O16_He4_to_Ne20_reaclib, k_Ne20_to_He4_O16_reaclib, + N, O17, -1, O18, -1, -1, O17, O18, k_O17_n_to_O18_reaclib, k_O18_to_n_O17_reaclib, + H1, O17, -1, F18, -1, -1, O17, F18, k_O17_p_to_F18_reaclib, k_F18_to_p_O17_reaclib, + He4, O17, -1, Ne21, -1, -1, O17, Ne21, k_O17_He4_to_Ne21_reaclib, k_Ne21_to_He4_O17_reaclib, + H1, O18, -1, F19, -1, -1, O18, F19, k_O18_p_to_F19_reaclib, k_F19_to_p_O18_reaclib, + He4, O18, -1, Ne22, -1, -1, O18, Ne22, k_O18_He4_to_Ne22_reaclib, k_Ne22_to_He4_O18_reaclib, + N, F17, -1, F18, -1, -1, F17, F18, k_F17_n_to_F18_reaclib, k_F18_to_n_F17_reaclib, + H1, F17, -1, Ne18, -1, -1, F17, Ne18, k_F17_p_to_Ne18_reaclib, k_Ne18_to_p_F17_reaclib, + He4, F17, -1, Na21, -1, -1, F17, Na21, k_F17_He4_to_Na21_reaclib, k_Na21_to_He4_F17_reaclib, + N, F18, -1, F19, -1, -1, F18, F19, k_F18_n_to_F19_reaclib, k_F19_to_n_F18_reaclib, + H1, F18, -1, Ne19, -1, -1, F18, Ne19, k_F18_p_to_Ne19_reaclib, k_Ne19_to_p_F18_reaclib, + He4, F18, -1, Na22, -1, -1, F18, Na22, k_F18_He4_to_Na22_reaclib, k_Na22_to_He4_F18_reaclib, + H1, F19, -1, Ne20, -1, -1, F19, Ne20, k_F19_p_to_Ne20_reaclib, k_Ne20_to_p_F19_reaclib, + He4, F19, -1, Na23, -1, -1, F19, Na23, k_F19_He4_to_Na23_reaclib, k_Na23_to_He4_F19_reaclib, + N, Ne18, -1, Ne19, -1, -1, Ne18, Ne19, k_Ne18_n_to_Ne19_reaclib, k_Ne19_to_n_Ne18_reaclib, + N, Ne19, -1, Ne20, -1, -1, Ne19, Ne20, k_Ne19_n_to_Ne20_reaclib, k_Ne20_to_n_Ne19_reaclib, + He4, Ne19, -1, Mg23, -1, -1, Ne19, Mg23, k_Ne19_He4_to_Mg23_reaclib, k_Mg23_to_He4_Ne19_reaclib, + N, Ne20, -1, Ne21, -1, -1, Ne20, Ne21, k_Ne20_n_to_Ne21_reaclib, k_Ne21_to_n_Ne20_reaclib, + H1, Ne20, -1, Na21, -1, -1, Ne20, Na21, k_Ne20_p_to_Na21_reaclib, k_Na21_to_p_Ne20_reaclib, + He4, Ne20, -1, Mg24, -1, -1, Ne20, Mg24, k_Ne20_He4_to_Mg24_reaclib, k_Mg24_to_He4_Ne20_reaclib, + N, Ne21, -1, Ne22, -1, -1, Ne21, Ne22, k_Ne21_n_to_Ne22_reaclib, k_Ne22_to_n_Ne21_reaclib, + H1, Ne21, -1, Na22, -1, -1, Ne21, Na22, k_Ne21_p_to_Na22_reaclib, k_Na22_to_p_Ne21_reaclib, + He4, Ne21, -1, Mg25, -1, -1, Ne21, Mg25, k_Ne21_He4_to_Mg25_reaclib, k_Mg25_to_He4_Ne21_reaclib, + H1, Ne22, -1, Na23, -1, -1, Ne22, Na23, k_Ne22_p_to_Na23_reaclib, k_Na23_to_p_Ne22_reaclib, + He4, Ne22, -1, Mg26, -1, -1, Ne22, Mg26, k_Ne22_He4_to_Mg26_reaclib, k_Mg26_to_He4_Ne22_reaclib, + N, Na21, -1, Na22, -1, -1, Na21, Na22, k_Na21_n_to_Na22_reaclib, k_Na22_to_n_Na21_reaclib, + He4, Na21, -1, Al25, -1, -1, Na21, Al25, k_Na21_He4_to_Al25_reaclib, k_Al25_to_He4_Na21_reaclib, + N, Na22, -1, Na23, -1, -1, Na22, Na23, k_Na22_n_to_Na23_reaclib, k_Na23_to_n_Na22_reaclib, + H1, Na22, -1, Mg23, -1, -1, Na22, Mg23, k_Na22_p_to_Mg23_reaclib, k_Mg23_to_p_Na22_reaclib, + He4, Na22, -1, Al26, -1, -1, Na22, Al26, k_Na22_He4_to_Al26_reaclib, k_Al26_to_He4_Na22_reaclib, + H1, Na23, -1, Mg24, -1, -1, Na23, Mg24, k_Na23_p_to_Mg24_reaclib, k_Mg24_to_p_Na23_reaclib, + He4, Na23, -1, Al27, -1, -1, Na23, Al27, k_Na23_He4_to_Al27_reaclib, k_Al27_to_He4_Na23_reaclib, + N, Mg23, -1, Mg24, -1, -1, Mg23, Mg24, k_Mg23_n_to_Mg24_reaclib, k_Mg24_to_n_Mg23_reaclib, + N, Mg24, -1, Mg25, -1, -1, Mg24, Mg25, k_Mg24_n_to_Mg25_reaclib, k_Mg25_to_n_Mg24_reaclib, + H1, Mg24, -1, Al25, -1, -1, Mg24, Al25, k_Mg24_p_to_Al25_reaclib, k_Al25_to_p_Mg24_reaclib, + He4, Mg24, -1, Si28, -1, -1, Mg24, Si28, k_Mg24_He4_to_Si28_reaclib, k_Si28_to_He4_Mg24_reaclib, + N, Mg25, -1, Mg26, -1, -1, Mg25, Mg26, k_Mg25_n_to_Mg26_reaclib, k_Mg26_to_n_Mg25_reaclib, + H1, Mg25, -1, Al26, -1, -1, Mg25, Al26, k_Mg25_p_to_Al26_reaclib, k_Al26_to_p_Mg25_reaclib, + He4, Mg25, -1, Si29, -1, -1, Mg25, Si29, k_Mg25_He4_to_Si29_reaclib, k_Si29_to_He4_Mg25_reaclib, + H1, Mg26, -1, Al27, -1, -1, Mg26, Al27, k_Mg26_p_to_Al27_reaclib, k_Al27_to_p_Mg26_reaclib, + He4, Mg26, -1, Si30, -1, -1, Mg26, Si30, k_Mg26_He4_to_Si30_reaclib, k_Si30_to_He4_Mg26_reaclib, + N, Al25, -1, Al26, -1, -1, Al25, Al26, k_Al25_n_to_Al26_reaclib, k_Al26_to_n_Al25_reaclib, + He4, Al25, -1, P29, -1, -1, Al25, P29, k_Al25_He4_to_P29_reaclib, k_P29_to_He4_Al25_reaclib, + N, Al26, -1, Al27, -1, -1, Al26, Al27, k_Al26_n_to_Al27_reaclib, k_Al27_to_n_Al26_reaclib, + He4, Al26, -1, P30, -1, -1, Al26, P30, k_Al26_He4_to_P30_reaclib, k_P30_to_He4_Al26_reaclib, + H1, Al27, -1, Si28, -1, -1, Al27, Si28, k_Al27_p_to_Si28_reaclib, k_Si28_to_p_Al27_reaclib, + He4, Al27, -1, P31, -1, -1, Al27, P31, k_Al27_He4_to_P31_reaclib, k_P31_to_He4_Al27_reaclib, + N, Si28, -1, Si29, -1, -1, Si28, Si29, k_Si28_n_to_Si29_reaclib, k_Si29_to_n_Si28_reaclib, + H1, Si28, -1, P29, -1, -1, Si28, P29, k_Si28_p_to_P29_reaclib, k_P29_to_p_Si28_reaclib, + He4, Si28, -1, S32, -1, -1, Si28, S32, k_Si28_He4_to_S32_reaclib, k_S32_to_He4_Si28_reaclib, + N, Si29, -1, Si30, -1, -1, Si29, Si30, k_Si29_n_to_Si30_reaclib, k_Si30_to_n_Si29_reaclib, + H1, Si29, -1, P30, -1, -1, Si29, P30, k_Si29_p_to_P30_reaclib, k_P30_to_p_Si29_reaclib, + He4, Si29, -1, S33, -1, -1, Si29, S33, k_Si29_He4_to_S33_reaclib, k_S33_to_He4_Si29_reaclib, + N, Si30, -1, Si31, -1, -1, Si30, Si31, k_Si30_n_to_Si31_reaclib, k_Si31_to_n_Si30_reaclib, + H1, Si30, -1, P31, -1, -1, Si30, P31, k_Si30_p_to_P31_reaclib, k_P31_to_p_Si30_reaclib, + He4, Si30, -1, S34, -1, -1, Si30, S34, k_Si30_He4_to_S34_reaclib, k_S34_to_He4_Si30_reaclib, + N, Si31, -1, Si32, -1, -1, Si31, Si32, k_Si31_n_to_Si32_reaclib, k_Si32_to_n_Si31_reaclib, + H1, Si31, -1, P32, -1, -1, Si31, P32, k_Si31_p_to_P32_reaclib, k_P32_to_p_Si31_reaclib, + He4, Si31, -1, S35, -1, -1, Si31, S35, k_Si31_He4_to_S35_reaclib, k_S35_to_He4_Si31_reaclib, + H1, Si32, -1, P33, -1, -1, Si32, P33, k_Si32_p_to_P33_reaclib, k_P33_to_p_Si32_reaclib, + He4, Si32, -1, S36, -1, -1, Si32, S36, k_Si32_He4_to_S36_reaclib, k_S36_to_He4_Si32_reaclib, + N, P29, -1, P30, -1, -1, P29, P30, k_P29_n_to_P30_reaclib, k_P30_to_n_P29_reaclib, + He4, P29, -1, Cl33, -1, -1, P29, Cl33, k_P29_He4_to_Cl33_reaclib, k_Cl33_to_He4_P29_reaclib, + N, P30, -1, P31, -1, -1, P30, P31, k_P30_n_to_P31_reaclib, k_P31_to_n_P30_reaclib, + He4, P30, -1, Cl34, -1, -1, P30, Cl34, k_P30_He4_to_Cl34_reaclib, k_Cl34_to_He4_P30_reaclib, + N, P31, -1, P32, -1, -1, P31, P32, k_P31_n_to_P32_reaclib, k_P32_to_n_P31_reaclib, + H1, P31, -1, S32, -1, -1, P31, S32, k_P31_p_to_S32_reaclib, k_S32_to_p_P31_reaclib, + He4, P31, -1, Cl35, -1, -1, P31, Cl35, k_P31_He4_to_Cl35_reaclib, k_Cl35_to_He4_P31_reaclib, + N, P32, -1, P33, -1, -1, P32, P33, k_P32_n_to_P33_reaclib, k_P33_to_n_P32_reaclib, + H1, P32, -1, S33, -1, -1, P32, S33, k_P32_p_to_S33_reaclib, k_S33_to_p_P32_reaclib, + He4, P32, -1, Cl36, -1, -1, P32, Cl36, k_P32_He4_to_Cl36_reaclib, k_Cl36_to_He4_P32_reaclib, + H1, P33, -1, S34, -1, -1, P33, S34, k_P33_p_to_S34_reaclib, k_S34_to_p_P33_reaclib, + He4, P33, -1, Cl37, -1, -1, P33, Cl37, k_P33_He4_to_Cl37_reaclib, k_Cl37_to_He4_P33_reaclib, + N, S32, -1, S33, -1, -1, S32, S33, k_S32_n_to_S33_reaclib, k_S33_to_n_S32_reaclib, + H1, S32, -1, Cl33, -1, -1, S32, Cl33, k_S32_p_to_Cl33_reaclib, k_Cl33_to_p_S32_reaclib, + He4, S32, -1, Ar36, -1, -1, S32, Ar36, k_S32_He4_to_Ar36_reaclib, k_Ar36_to_He4_S32_reaclib, + N, S33, -1, S34, -1, -1, S33, S34, k_S33_n_to_S34_reaclib, k_S34_to_n_S33_reaclib, + H1, S33, -1, Cl34, -1, -1, S33, Cl34, k_S33_p_to_Cl34_reaclib, k_Cl34_to_p_S33_reaclib, + He4, S33, -1, Ar37, -1, -1, S33, Ar37, k_S33_He4_to_Ar37_reaclib, k_Ar37_to_He4_S33_reaclib, + N, S34, -1, S35, -1, -1, S34, S35, k_S34_n_to_S35_reaclib, k_S35_to_n_S34_reaclib, + H1, S34, -1, Cl35, -1, -1, S34, Cl35, k_S34_p_to_Cl35_reaclib, k_Cl35_to_p_S34_reaclib, + He4, S34, -1, Ar38, -1, -1, S34, Ar38, k_S34_He4_to_Ar38_reaclib, k_Ar38_to_He4_S34_reaclib, + N, S35, -1, S36, -1, -1, S35, S36, k_S35_n_to_S36_reaclib, k_S36_to_n_S35_reaclib, + H1, S35, -1, Cl36, -1, -1, S35, Cl36, k_S35_p_to_Cl36_reaclib, k_Cl36_to_p_S35_reaclib, + He4, S35, -1, Ar39, -1, -1, S35, Ar39, k_S35_He4_to_Ar39_reaclib, k_Ar39_to_He4_S35_reaclib, + H1, S36, -1, Cl37, -1, -1, S36, Cl37, k_S36_p_to_Cl37_reaclib, k_Cl37_to_p_S36_reaclib, + He4, S36, -1, Ar40, -1, -1, S36, Ar40, k_S36_He4_to_Ar40_reaclib, k_Ar40_to_He4_S36_reaclib, + N, Cl33, -1, Cl34, -1, -1, Cl33, Cl34, k_Cl33_n_to_Cl34_reaclib, k_Cl34_to_n_Cl33_reaclib, + He4, Cl33, -1, K37, -1, -1, Cl33, K37, k_Cl33_He4_to_K37_reaclib, k_K37_to_He4_Cl33_reaclib, + N, Cl34, -1, Cl35, -1, -1, Cl34, Cl35, k_Cl34_n_to_Cl35_reaclib, k_Cl35_to_n_Cl34_reaclib, + He4, Cl34, -1, K38, -1, -1, Cl34, K38, k_Cl34_He4_to_K38_reaclib, k_K38_to_He4_Cl34_reaclib, + N, Cl35, -1, Cl36, -1, -1, Cl35, Cl36, k_Cl35_n_to_Cl36_reaclib, k_Cl36_to_n_Cl35_reaclib, + H1, Cl35, -1, Ar36, -1, -1, Cl35, Ar36, k_Cl35_p_to_Ar36_reaclib, k_Ar36_to_p_Cl35_reaclib, + He4, Cl35, -1, K39, -1, -1, Cl35, K39, k_Cl35_He4_to_K39_reaclib, k_K39_to_He4_Cl35_reaclib, + N, Cl36, -1, Cl37, -1, -1, Cl36, Cl37, k_Cl36_n_to_Cl37_reaclib, k_Cl37_to_n_Cl36_reaclib, + H1, Cl36, -1, Ar37, -1, -1, Cl36, Ar37, k_Cl36_p_to_Ar37_reaclib, k_Ar37_to_p_Cl36_reaclib, + He4, Cl36, -1, K40, -1, -1, Cl36, K40, k_Cl36_He4_to_K40_reaclib, k_K40_to_He4_Cl36_reaclib, + H1, Cl37, -1, Ar38, -1, -1, Cl37, Ar38, k_Cl37_p_to_Ar38_reaclib, k_Ar38_to_p_Cl37_reaclib, + He4, Cl37, -1, K41, -1, -1, Cl37, K41, k_Cl37_He4_to_K41_reaclib, k_K41_to_He4_Cl37_reaclib, + N, Ar36, -1, Ar37, -1, -1, Ar36, Ar37, k_Ar36_n_to_Ar37_reaclib, k_Ar37_to_n_Ar36_reaclib, + H1, Ar36, -1, K37, -1, -1, Ar36, K37, k_Ar36_p_to_K37_reaclib, k_K37_to_p_Ar36_reaclib, + He4, Ar36, -1, Ca40, -1, -1, Ar36, Ca40, k_Ar36_He4_to_Ca40_reaclib, k_Ca40_to_He4_Ar36_reaclib, + N, Ar37, -1, Ar38, -1, -1, Ar37, Ar38, k_Ar37_n_to_Ar38_reaclib, k_Ar38_to_n_Ar37_reaclib, + H1, Ar37, -1, K38, -1, -1, Ar37, K38, k_Ar37_p_to_K38_reaclib, k_K38_to_p_Ar37_reaclib, + He4, Ar37, -1, Ca41, -1, -1, Ar37, Ca41, k_Ar37_He4_to_Ca41_reaclib, k_Ca41_to_He4_Ar37_reaclib, + N, Ar38, -1, Ar39, -1, -1, Ar38, Ar39, k_Ar38_n_to_Ar39_reaclib, k_Ar39_to_n_Ar38_reaclib, + H1, Ar38, -1, K39, -1, -1, Ar38, K39, k_Ar38_p_to_K39_reaclib, k_K39_to_p_Ar38_reaclib, + He4, Ar38, -1, Ca42, -1, -1, Ar38, Ca42, k_Ar38_He4_to_Ca42_reaclib, k_Ca42_to_He4_Ar38_reaclib, + N, Ar39, -1, Ar40, -1, -1, Ar39, Ar40, k_Ar39_n_to_Ar40_reaclib, k_Ar40_to_n_Ar39_reaclib, + H1, Ar39, -1, K40, -1, -1, Ar39, K40, k_Ar39_p_to_K40_reaclib, k_K40_to_p_Ar39_reaclib, + He4, Ar39, -1, Ca43, -1, -1, Ar39, Ca43, k_Ar39_He4_to_Ca43_reaclib, k_Ca43_to_He4_Ar39_reaclib, + H1, Ar40, -1, K41, -1, -1, Ar40, K41, k_Ar40_p_to_K41_reaclib, k_K41_to_p_Ar40_reaclib, + He4, Ar40, -1, Ca44, -1, -1, Ar40, Ca44, k_Ar40_He4_to_Ca44_reaclib, k_Ca44_to_He4_Ar40_reaclib, + N, K37, -1, K38, -1, -1, K37, K38, k_K37_n_to_K38_reaclib, k_K38_to_n_K37_reaclib, + N, K38, -1, K39, -1, -1, K38, K39, k_K38_n_to_K39_reaclib, k_K39_to_n_K38_reaclib, + N, K39, -1, K40, -1, -1, K39, K40, k_K39_n_to_K40_reaclib, k_K40_to_n_K39_reaclib, + H1, K39, -1, Ca40, -1, -1, K39, Ca40, k_K39_p_to_Ca40_reaclib, k_Ca40_to_p_K39_reaclib, + He4, K39, -1, Sc43, -1, -1, K39, Sc43, k_K39_He4_to_Sc43_reaclib, k_Sc43_to_He4_K39_reaclib, + N, K40, -1, K41, -1, -1, K40, K41, k_K40_n_to_K41_reaclib, k_K41_to_n_K40_reaclib, + H1, K40, -1, Ca41, -1, -1, K40, Ca41, k_K40_p_to_Ca41_reaclib, k_Ca41_to_p_K40_reaclib, + He4, K40, -1, Sc44, -1, -1, K40, Sc44, k_K40_He4_to_Sc44_reaclib, k_Sc44_to_He4_K40_reaclib, + H1, K41, -1, Ca42, -1, -1, K41, Ca42, k_K41_p_to_Ca42_reaclib, k_Ca42_to_p_K41_reaclib, + He4, K41, -1, Sc45, -1, -1, K41, Sc45, k_K41_He4_to_Sc45_reaclib, k_Sc45_to_He4_K41_reaclib, + N, Ca40, -1, Ca41, -1, -1, Ca40, Ca41, k_Ca40_n_to_Ca41_reaclib, k_Ca41_to_n_Ca40_reaclib, + He4, Ca40, -1, Ti44, -1, -1, Ca40, Ti44, k_Ca40_He4_to_Ti44_reaclib, k_Ti44_to_He4_Ca40_reaclib, + N, Ca41, -1, Ca42, -1, -1, Ca41, Ca42, k_Ca41_n_to_Ca42_reaclib, k_Ca42_to_n_Ca41_reaclib, + He4, Ca41, -1, Ti45, -1, -1, Ca41, Ti45, k_Ca41_He4_to_Ti45_reaclib, k_Ti45_to_He4_Ca41_reaclib, + N, Ca42, -1, Ca43, -1, -1, Ca42, Ca43, k_Ca42_n_to_Ca43_reaclib, k_Ca43_to_n_Ca42_reaclib, + H1, Ca42, -1, Sc43, -1, -1, Ca42, Sc43, k_Ca42_p_to_Sc43_reaclib, k_Sc43_to_p_Ca42_reaclib, + He4, Ca42, -1, Ti46, -1, -1, Ca42, Ti46, k_Ca42_He4_to_Ti46_reaclib, k_Ti46_to_He4_Ca42_reaclib, + N, Ca43, -1, Ca44, -1, -1, Ca43, Ca44, k_Ca43_n_to_Ca44_reaclib, k_Ca44_to_n_Ca43_reaclib, + H1, Ca43, -1, Sc44, -1, -1, Ca43, Sc44, k_Ca43_p_to_Sc44_reaclib, k_Sc44_to_p_Ca43_reaclib, + He4, Ca43, -1, Ti47, -1, -1, Ca43, Ti47, k_Ca43_He4_to_Ti47_reaclib, k_Ti47_to_He4_Ca43_reaclib, + N, Ca44, -1, Ca45, -1, -1, Ca44, Ca45, k_Ca44_n_to_Ca45_reaclib, k_Ca45_to_n_Ca44_reaclib, + H1, Ca44, -1, Sc45, -1, -1, Ca44, Sc45, k_Ca44_p_to_Sc45_reaclib, k_Sc45_to_p_Ca44_reaclib, + He4, Ca44, -1, Ti48, -1, -1, Ca44, Ti48, k_Ca44_He4_to_Ti48_reaclib, k_Ti48_to_He4_Ca44_reaclib, + N, Ca45, -1, Ca46, -1, -1, Ca45, Ca46, k_Ca45_n_to_Ca46_reaclib, k_Ca46_to_n_Ca45_reaclib, + H1, Ca45, -1, Sc46, -1, -1, Ca45, Sc46, k_Ca45_p_to_Sc46_reaclib, k_Sc46_to_p_Ca45_reaclib, + He4, Ca45, -1, Ti49, -1, -1, Ca45, Ti49, k_Ca45_He4_to_Ti49_reaclib, k_Ti49_to_He4_Ca45_reaclib, + N, Ca46, -1, Ca47, -1, -1, Ca46, Ca47, k_Ca46_n_to_Ca47_reaclib, k_Ca47_to_n_Ca46_reaclib, + H1, Ca46, -1, Sc47, -1, -1, Ca46, Sc47, k_Ca46_p_to_Sc47_reaclib, k_Sc47_to_p_Ca46_reaclib, + He4, Ca46, -1, Ti50, -1, -1, Ca46, Ti50, k_Ca46_He4_to_Ti50_reaclib, k_Ti50_to_He4_Ca46_reaclib, + N, Ca47, -1, Ca48, -1, -1, Ca47, Ca48, k_Ca47_n_to_Ca48_reaclib, k_Ca48_to_n_Ca47_reaclib, + H1, Ca47, -1, Sc48, -1, -1, Ca47, Sc48, k_Ca47_p_to_Sc48_reaclib, k_Sc48_to_p_Ca47_reaclib, + He4, Ca47, -1, Ti51, -1, -1, Ca47, Ti51, k_Ca47_He4_to_Ti51_reaclib, k_Ti51_to_He4_Ca47_reaclib, + H1, Ca48, -1, Sc49, -1, -1, Ca48, Sc49, k_Ca48_p_to_Sc49_reaclib, k_Sc49_to_p_Ca48_reaclib, + N, Sc43, -1, Sc44, -1, -1, Sc43, Sc44, k_Sc43_n_to_Sc44_reaclib, k_Sc44_to_n_Sc43_reaclib, + H1, Sc43, -1, Ti44, -1, -1, Sc43, Ti44, k_Sc43_p_to_Ti44_reaclib, k_Ti44_to_p_Sc43_reaclib, + He4, Sc43, -1, V47, -1, -1, Sc43, V47, k_Sc43_He4_to_V47_reaclib, k_V47_to_He4_Sc43_reaclib, + N, Sc44, -1, Sc45, -1, -1, Sc44, Sc45, k_Sc44_n_to_Sc45_reaclib, k_Sc45_to_n_Sc44_reaclib, + H1, Sc44, -1, Ti45, -1, -1, Sc44, Ti45, k_Sc44_p_to_Ti45_reaclib, k_Ti45_to_p_Sc44_reaclib, + He4, Sc44, -1, V48, -1, -1, Sc44, V48, k_Sc44_He4_to_V48_reaclib, k_V48_to_He4_Sc44_reaclib, + N, Sc45, -1, Sc46, -1, -1, Sc45, Sc46, k_Sc45_n_to_Sc46_reaclib, k_Sc46_to_n_Sc45_reaclib, + H1, Sc45, -1, Ti46, -1, -1, Sc45, Ti46, k_Sc45_p_to_Ti46_reaclib, k_Ti46_to_p_Sc45_reaclib, + He4, Sc45, -1, V49, -1, -1, Sc45, V49, k_Sc45_He4_to_V49_reaclib, k_V49_to_He4_Sc45_reaclib, + N, Sc46, -1, Sc47, -1, -1, Sc46, Sc47, k_Sc46_n_to_Sc47_reaclib, k_Sc47_to_n_Sc46_reaclib, + H1, Sc46, -1, Ti47, -1, -1, Sc46, Ti47, k_Sc46_p_to_Ti47_reaclib, k_Ti47_to_p_Sc46_reaclib, + He4, Sc46, -1, V50, -1, -1, Sc46, V50, k_Sc46_He4_to_V50_reaclib, k_V50_to_He4_Sc46_reaclib, + N, Sc47, -1, Sc48, -1, -1, Sc47, Sc48, k_Sc47_n_to_Sc48_reaclib, k_Sc48_to_n_Sc47_reaclib, + H1, Sc47, -1, Ti48, -1, -1, Sc47, Ti48, k_Sc47_p_to_Ti48_reaclib, k_Ti48_to_p_Sc47_reaclib, + He4, Sc47, -1, V51, -1, -1, Sc47, V51, k_Sc47_He4_to_V51_reaclib, k_V51_to_He4_Sc47_reaclib, + N, Sc48, -1, Sc49, -1, -1, Sc48, Sc49, k_Sc48_n_to_Sc49_reaclib, k_Sc49_to_n_Sc48_reaclib, + H1, Sc48, -1, Ti49, -1, -1, Sc48, Ti49, k_Sc48_p_to_Ti49_reaclib, k_Ti49_to_p_Sc48_reaclib, + He4, Sc48, -1, V52, -1, -1, Sc48, V52, k_Sc48_He4_to_V52_reaclib, k_V52_to_He4_Sc48_reaclib, + H1, Sc49, -1, Ti50, -1, -1, Sc49, Ti50, k_Sc49_p_to_Ti50_reaclib, k_Ti50_to_p_Sc49_reaclib, + N, Ti44, -1, Ti45, -1, -1, Ti44, Ti45, k_Ti44_n_to_Ti45_reaclib, k_Ti45_to_n_Ti44_reaclib, + He4, Ti44, -1, Cr48, -1, -1, Ti44, Cr48, k_Ti44_He4_to_Cr48_reaclib, k_Cr48_to_He4_Ti44_reaclib, + N, Ti45, -1, Ti46, -1, -1, Ti45, Ti46, k_Ti45_n_to_Ti46_reaclib, k_Ti46_to_n_Ti45_reaclib, + H1, Ti45, -1, V46, -1, -1, Ti45, V46, k_Ti45_p_to_V46_reaclib, k_V46_to_p_Ti45_reaclib, + He4, Ti45, -1, Cr49, -1, -1, Ti45, Cr49, k_Ti45_He4_to_Cr49_reaclib, k_Cr49_to_He4_Ti45_reaclib, + N, Ti46, -1, Ti47, -1, -1, Ti46, Ti47, k_Ti46_n_to_Ti47_reaclib, k_Ti47_to_n_Ti46_reaclib, + H1, Ti46, -1, V47, -1, -1, Ti46, V47, k_Ti46_p_to_V47_reaclib, k_V47_to_p_Ti46_reaclib, + He4, Ti46, -1, Cr50, -1, -1, Ti46, Cr50, k_Ti46_He4_to_Cr50_reaclib, k_Cr50_to_He4_Ti46_reaclib, + N, Ti47, -1, Ti48, -1, -1, Ti47, Ti48, k_Ti47_n_to_Ti48_reaclib, k_Ti48_to_n_Ti47_reaclib, + H1, Ti47, -1, V48, -1, -1, Ti47, V48, k_Ti47_p_to_V48_reaclib, k_V48_to_p_Ti47_reaclib, + He4, Ti47, -1, Cr51, -1, -1, Ti47, Cr51, k_Ti47_He4_to_Cr51_reaclib, k_Cr51_to_He4_Ti47_reaclib, + N, Ti48, -1, Ti49, -1, -1, Ti48, Ti49, k_Ti48_n_to_Ti49_reaclib, k_Ti49_to_n_Ti48_reaclib, + H1, Ti48, -1, V49, -1, -1, Ti48, V49, k_Ti48_p_to_V49_reaclib, k_V49_to_p_Ti48_reaclib, + He4, Ti48, -1, Cr52, -1, -1, Ti48, Cr52, k_Ti48_He4_to_Cr52_reaclib, k_Cr52_to_He4_Ti48_reaclib, + N, Ti49, -1, Ti50, -1, -1, Ti49, Ti50, k_Ti49_n_to_Ti50_reaclib, k_Ti50_to_n_Ti49_reaclib, + H1, Ti49, -1, V50, -1, -1, Ti49, V50, k_Ti49_p_to_V50_reaclib, k_V50_to_p_Ti49_reaclib, + He4, Ti49, -1, Cr53, -1, -1, Ti49, Cr53, k_Ti49_He4_to_Cr53_reaclib, k_Cr53_to_He4_Ti49_reaclib, + N, Ti50, -1, Ti51, -1, -1, Ti50, Ti51, k_Ti50_n_to_Ti51_reaclib, k_Ti51_to_n_Ti50_reaclib, + H1, Ti50, -1, V51, -1, -1, Ti50, V51, k_Ti50_p_to_V51_reaclib, k_V51_to_p_Ti50_reaclib, + He4, Ti50, -1, Cr54, -1, -1, Ti50, Cr54, k_Ti50_He4_to_Cr54_reaclib, k_Cr54_to_He4_Ti50_reaclib, + H1, Ti51, -1, V52, -1, -1, Ti51, V52, k_Ti51_p_to_V52_reaclib, k_V52_to_p_Ti51_reaclib, + N, V46, -1, V47, -1, -1, V46, V47, k_V46_n_to_V47_reaclib, k_V47_to_n_V46_reaclib, + He4, V46, -1, Mn50, -1, -1, V46, Mn50, k_V46_He4_to_Mn50_reaclib, k_Mn50_to_He4_V46_reaclib, + N, V47, -1, V48, -1, -1, V47, V48, k_V47_n_to_V48_reaclib, k_V48_to_n_V47_reaclib, + H1, V47, -1, Cr48, -1, -1, V47, Cr48, k_V47_p_to_Cr48_reaclib, k_Cr48_to_p_V47_reaclib, + He4, V47, -1, Mn51, -1, -1, V47, Mn51, k_V47_He4_to_Mn51_reaclib, k_Mn51_to_He4_V47_reaclib, + N, V48, -1, V49, -1, -1, V48, V49, k_V48_n_to_V49_reaclib, k_V49_to_n_V48_reaclib, + H1, V48, -1, Cr49, -1, -1, V48, Cr49, k_V48_p_to_Cr49_reaclib, k_Cr49_to_p_V48_reaclib, + He4, V48, -1, Mn52, -1, -1, V48, Mn52, k_V48_He4_to_Mn52_reaclib, k_Mn52_to_He4_V48_reaclib, + N, V49, -1, V50, -1, -1, V49, V50, k_V49_n_to_V50_reaclib, k_V50_to_n_V49_reaclib, + H1, V49, -1, Cr50, -1, -1, V49, Cr50, k_V49_p_to_Cr50_reaclib, k_Cr50_to_p_V49_reaclib, + He4, V49, -1, Mn53, -1, -1, V49, Mn53, k_V49_He4_to_Mn53_reaclib, k_Mn53_to_He4_V49_reaclib, + N, V50, -1, V51, -1, -1, V50, V51, k_V50_n_to_V51_reaclib, k_V51_to_n_V50_reaclib, + H1, V50, -1, Cr51, -1, -1, V50, Cr51, k_V50_p_to_Cr51_reaclib, k_Cr51_to_p_V50_reaclib, + He4, V50, -1, Mn54, -1, -1, V50, Mn54, k_V50_He4_to_Mn54_reaclib, k_Mn54_to_He4_V50_reaclib, + N, V51, -1, V52, -1, -1, V51, V52, k_V51_n_to_V52_reaclib, k_V52_to_n_V51_reaclib, + H1, V51, -1, Cr52, -1, -1, V51, Cr52, k_V51_p_to_Cr52_reaclib, k_Cr52_to_p_V51_reaclib, + He4, V51, -1, Mn55, -1, -1, V51, Mn55, k_V51_He4_to_Mn55_reaclib, k_Mn55_to_He4_V51_reaclib, + H1, V52, -1, Cr53, -1, -1, V52, Cr53, k_V52_p_to_Cr53_reaclib, k_Cr53_to_p_V52_reaclib, + N, Cr48, -1, Cr49, -1, -1, Cr48, Cr49, k_Cr48_n_to_Cr49_reaclib, k_Cr49_to_n_Cr48_reaclib, + He4, Cr48, -1, Fe52, -1, -1, Cr48, Fe52, k_Cr48_He4_to_Fe52_reaclib, k_Fe52_to_He4_Cr48_reaclib, + N, Cr49, -1, Cr50, -1, -1, Cr49, Cr50, k_Cr49_n_to_Cr50_reaclib, k_Cr50_to_n_Cr49_reaclib, + H1, Cr49, -1, Mn50, -1, -1, Cr49, Mn50, k_Cr49_p_to_Mn50_reaclib, k_Mn50_to_p_Cr49_reaclib, + He4, Cr49, -1, Fe53, -1, -1, Cr49, Fe53, k_Cr49_He4_to_Fe53_reaclib, k_Fe53_to_He4_Cr49_reaclib, + N, Cr50, -1, Cr51, -1, -1, Cr50, Cr51, k_Cr50_n_to_Cr51_reaclib, k_Cr51_to_n_Cr50_reaclib, + H1, Cr50, -1, Mn51, -1, -1, Cr50, Mn51, k_Cr50_p_to_Mn51_reaclib, k_Mn51_to_p_Cr50_reaclib, + He4, Cr50, -1, Fe54, -1, -1, Cr50, Fe54, k_Cr50_He4_to_Fe54_reaclib, k_Fe54_to_He4_Cr50_reaclib, + N, Cr51, -1, Cr52, -1, -1, Cr51, Cr52, k_Cr51_n_to_Cr52_reaclib, k_Cr52_to_n_Cr51_reaclib, + H1, Cr51, -1, Mn52, -1, -1, Cr51, Mn52, k_Cr51_p_to_Mn52_reaclib, k_Mn52_to_p_Cr51_reaclib, + He4, Cr51, -1, Fe55, -1, -1, Cr51, Fe55, k_Cr51_He4_to_Fe55_reaclib, k_Fe55_to_He4_Cr51_reaclib, + N, Cr52, -1, Cr53, -1, -1, Cr52, Cr53, k_Cr52_n_to_Cr53_reaclib, k_Cr53_to_n_Cr52_reaclib, + H1, Cr52, -1, Mn53, -1, -1, Cr52, Mn53, k_Cr52_p_to_Mn53_reaclib, k_Mn53_to_p_Cr52_reaclib, + He4, Cr52, -1, Fe56, -1, -1, Cr52, Fe56, k_Cr52_He4_to_Fe56_reaclib, k_Fe56_to_He4_Cr52_reaclib, + N, Cr53, -1, Cr54, -1, -1, Cr53, Cr54, k_Cr53_n_to_Cr54_reaclib, k_Cr54_to_n_Cr53_reaclib, + H1, Cr53, -1, Mn54, -1, -1, Cr53, Mn54, k_Cr53_p_to_Mn54_reaclib, k_Mn54_to_p_Cr53_reaclib, + He4, Cr53, -1, Fe57, -1, -1, Cr53, Fe57, k_Cr53_He4_to_Fe57_reaclib, k_Fe57_to_He4_Cr53_reaclib, + H1, Cr54, -1, Mn55, -1, -1, Cr54, Mn55, k_Cr54_p_to_Mn55_reaclib, k_Mn55_to_p_Cr54_reaclib, + He4, Cr54, -1, Fe58, -1, -1, Cr54, Fe58, k_Cr54_He4_to_Fe58_reaclib, k_Fe58_to_He4_Cr54_reaclib, + N, Mn50, -1, Mn51, -1, -1, Mn50, Mn51, k_Mn50_n_to_Mn51_reaclib, k_Mn51_to_n_Mn50_reaclib, + He4, Mn50, -1, Co54, -1, -1, Mn50, Co54, k_Mn50_He4_to_Co54_reaclib, k_Co54_to_He4_Mn50_reaclib, + N, Mn51, -1, Mn52, -1, -1, Mn51, Mn52, k_Mn51_n_to_Mn52_reaclib, k_Mn52_to_n_Mn51_reaclib, + H1, Mn51, -1, Fe52, -1, -1, Mn51, Fe52, k_Mn51_p_to_Fe52_reaclib, k_Fe52_to_p_Mn51_reaclib, + He4, Mn51, -1, Co55, -1, -1, Mn51, Co55, k_Mn51_He4_to_Co55_reaclib, k_Co55_to_He4_Mn51_reaclib, + N, Mn52, -1, Mn53, -1, -1, Mn52, Mn53, k_Mn52_n_to_Mn53_reaclib, k_Mn53_to_n_Mn52_reaclib, + H1, Mn52, -1, Fe53, -1, -1, Mn52, Fe53, k_Mn52_p_to_Fe53_reaclib, k_Fe53_to_p_Mn52_reaclib, + He4, Mn52, -1, Co56, -1, -1, Mn52, Co56, k_Mn52_He4_to_Co56_reaclib, k_Co56_to_He4_Mn52_reaclib, + N, Mn53, -1, Mn54, -1, -1, Mn53, Mn54, k_Mn53_n_to_Mn54_reaclib, k_Mn54_to_n_Mn53_reaclib, + H1, Mn53, -1, Fe54, -1, -1, Mn53, Fe54, k_Mn53_p_to_Fe54_reaclib, k_Fe54_to_p_Mn53_reaclib, + He4, Mn53, -1, Co57, -1, -1, Mn53, Co57, k_Mn53_He4_to_Co57_reaclib, k_Co57_to_He4_Mn53_reaclib, + N, Mn54, -1, Mn55, -1, -1, Mn54, Mn55, k_Mn54_n_to_Mn55_reaclib, k_Mn55_to_n_Mn54_reaclib, + H1, Mn54, -1, Fe55, -1, -1, Mn54, Fe55, k_Mn54_p_to_Fe55_reaclib, k_Fe55_to_p_Mn54_reaclib, + He4, Mn54, -1, Co58, -1, -1, Mn54, Co58, k_Mn54_He4_to_Co58_reaclib, k_Co58_to_He4_Mn54_reaclib, + H1, Mn55, -1, Fe56, -1, -1, Mn55, Fe56, k_Mn55_p_to_Fe56_reaclib, k_Fe56_to_p_Mn55_reaclib, + He4, Mn55, -1, Co59, -1, -1, Mn55, Co59, k_Mn55_He4_to_Co59_reaclib, k_Co59_to_He4_Mn55_reaclib, + N, Fe52, -1, Fe53, -1, -1, Fe52, Fe53, k_Fe52_n_to_Fe53_reaclib, k_Fe53_to_n_Fe52_reaclib, + H1, Fe52, -1, Co53, -1, -1, Fe52, Co53, k_Fe52_p_to_Co53_reaclib, k_Co53_to_p_Fe52_reaclib, + He4, Fe52, -1, Ni56, -1, -1, Fe52, Ni56, k_Fe52_He4_to_Ni56_reaclib, k_Ni56_to_He4_Fe52_reaclib, + N, Fe53, -1, Fe54, -1, -1, Fe53, Fe54, k_Fe53_n_to_Fe54_reaclib, k_Fe54_to_n_Fe53_reaclib, + H1, Fe53, -1, Co54, -1, -1, Fe53, Co54, k_Fe53_p_to_Co54_reaclib, k_Co54_to_p_Fe53_reaclib, + He4, Fe53, -1, Ni57, -1, -1, Fe53, Ni57, k_Fe53_He4_to_Ni57_reaclib, k_Ni57_to_He4_Fe53_reaclib, + N, Fe54, -1, Fe55, -1, -1, Fe54, Fe55, k_Fe54_n_to_Fe55_reaclib, k_Fe55_to_n_Fe54_reaclib, + H1, Fe54, -1, Co55, -1, -1, Fe54, Co55, k_Fe54_p_to_Co55_reaclib, k_Co55_to_p_Fe54_reaclib, + He4, Fe54, -1, Ni58, -1, -1, Fe54, Ni58, k_Fe54_He4_to_Ni58_reaclib, k_Ni58_to_He4_Fe54_reaclib, + N, Fe55, -1, Fe56, -1, -1, Fe55, Fe56, k_Fe55_n_to_Fe56_reaclib, k_Fe56_to_n_Fe55_reaclib, + H1, Fe55, -1, Co56, -1, -1, Fe55, Co56, k_Fe55_p_to_Co56_reaclib, k_Co56_to_p_Fe55_reaclib, + He4, Fe55, -1, Ni59, -1, -1, Fe55, Ni59, k_Fe55_He4_to_Ni59_reaclib, k_Ni59_to_He4_Fe55_reaclib, + N, Fe56, -1, Fe57, -1, -1, Fe56, Fe57, k_Fe56_n_to_Fe57_reaclib, k_Fe57_to_n_Fe56_reaclib, + H1, Fe56, -1, Co57, -1, -1, Fe56, Co57, k_Fe56_p_to_Co57_reaclib, k_Co57_to_p_Fe56_reaclib, + He4, Fe56, -1, Ni60, -1, -1, Fe56, Ni60, k_Fe56_He4_to_Ni60_reaclib, k_Ni60_to_He4_Fe56_reaclib, + N, Fe57, -1, Fe58, -1, -1, Fe57, Fe58, k_Fe57_n_to_Fe58_reaclib, k_Fe58_to_n_Fe57_reaclib, + H1, Fe57, -1, Co58, -1, -1, Fe57, Co58, k_Fe57_p_to_Co58_reaclib, k_Co58_to_p_Fe57_reaclib, + He4, Fe57, -1, Ni61, -1, -1, Fe57, Ni61, k_Fe57_He4_to_Ni61_reaclib, k_Ni61_to_He4_Fe57_reaclib, + H1, Fe58, -1, Co59, -1, -1, Fe58, Co59, k_Fe58_p_to_Co59_reaclib, k_Co59_to_p_Fe58_reaclib, + He4, Fe58, -1, Ni62, -1, -1, Fe58, Ni62, k_Fe58_He4_to_Ni62_reaclib, k_Ni62_to_He4_Fe58_reaclib, + N, Co53, -1, Co54, -1, -1, Co53, Co54, k_Co53_n_to_Co54_reaclib, k_Co54_to_n_Co53_reaclib, + He4, Co53, -1, Cu57, -1, -1, Co53, Cu57, k_Co53_He4_to_Cu57_reaclib, k_Cu57_to_He4_Co53_reaclib, + N, Co54, -1, Co55, -1, -1, Co54, Co55, k_Co54_n_to_Co55_reaclib, k_Co55_to_n_Co54_reaclib, + He4, Co54, -1, Cu58, -1, -1, Co54, Cu58, k_Co54_He4_to_Cu58_reaclib, k_Cu58_to_He4_Co54_reaclib, + N, Co55, -1, Co56, -1, -1, Co55, Co56, k_Co55_n_to_Co56_reaclib, k_Co56_to_n_Co55_reaclib, + H1, Co55, -1, Ni56, -1, -1, Co55, Ni56, k_Co55_p_to_Ni56_reaclib, k_Ni56_to_p_Co55_reaclib, + He4, Co55, -1, Cu59, -1, -1, Co55, Cu59, k_Co55_He4_to_Cu59_reaclib, k_Cu59_to_He4_Co55_reaclib, + N, Co56, -1, Co57, -1, -1, Co56, Co57, k_Co56_n_to_Co57_reaclib, k_Co57_to_n_Co56_reaclib, + H1, Co56, -1, Ni57, -1, -1, Co56, Ni57, k_Co56_p_to_Ni57_reaclib, k_Ni57_to_p_Co56_reaclib, + He4, Co56, -1, Cu60, -1, -1, Co56, Cu60, k_Co56_He4_to_Cu60_reaclib, k_Cu60_to_He4_Co56_reaclib, + N, Co57, -1, Co58, -1, -1, Co57, Co58, k_Co57_n_to_Co58_reaclib, k_Co58_to_n_Co57_reaclib, + H1, Co57, -1, Ni58, -1, -1, Co57, Ni58, k_Co57_p_to_Ni58_reaclib, k_Ni58_to_p_Co57_reaclib, + He4, Co57, -1, Cu61, -1, -1, Co57, Cu61, k_Co57_He4_to_Cu61_reaclib, k_Cu61_to_He4_Co57_reaclib, + N, Co58, -1, Co59, -1, -1, Co58, Co59, k_Co58_n_to_Co59_reaclib, k_Co59_to_n_Co58_reaclib, + H1, Co58, -1, Ni59, -1, -1, Co58, Ni59, k_Co58_p_to_Ni59_reaclib, k_Ni59_to_p_Co58_reaclib, + He4, Co58, -1, Cu62, -1, -1, Co58, Cu62, k_Co58_He4_to_Cu62_reaclib, k_Cu62_to_He4_Co58_reaclib, + H1, Co59, -1, Ni60, -1, -1, Co59, Ni60, k_Co59_p_to_Ni60_reaclib, k_Ni60_to_p_Co59_reaclib, + He4, Co59, -1, Cu63, -1, -1, Co59, Cu63, k_Co59_He4_to_Cu63_reaclib, k_Cu63_to_He4_Co59_reaclib, + N, Ni56, -1, Ni57, -1, -1, Ni56, Ni57, k_Ni56_n_to_Ni57_reaclib, k_Ni57_to_n_Ni56_reaclib, + H1, Ni56, -1, Cu57, -1, -1, Ni56, Cu57, k_Ni56_p_to_Cu57_reaclib, k_Cu57_to_p_Ni56_reaclib, + He4, Ni56, -1, Zn60, -1, -1, Ni56, Zn60, k_Ni56_He4_to_Zn60_reaclib, k_Zn60_to_He4_Ni56_reaclib, + N, Ni57, -1, Ni58, -1, -1, Ni57, Ni58, k_Ni57_n_to_Ni58_reaclib, k_Ni58_to_n_Ni57_reaclib, + H1, Ni57, -1, Cu58, -1, -1, Ni57, Cu58, k_Ni57_p_to_Cu58_reaclib, k_Cu58_to_p_Ni57_reaclib, + He4, Ni57, -1, Zn61, -1, -1, Ni57, Zn61, k_Ni57_He4_to_Zn61_reaclib, k_Zn61_to_He4_Ni57_reaclib, + N, Ni58, -1, Ni59, -1, -1, Ni58, Ni59, k_Ni58_n_to_Ni59_reaclib, k_Ni59_to_n_Ni58_reaclib, + H1, Ni58, -1, Cu59, -1, -1, Ni58, Cu59, k_Ni58_p_to_Cu59_reaclib, k_Cu59_to_p_Ni58_reaclib, + He4, Ni58, -1, Zn62, -1, -1, Ni58, Zn62, k_Ni58_He4_to_Zn62_reaclib, k_Zn62_to_He4_Ni58_reaclib, + N, Ni59, -1, Ni60, -1, -1, Ni59, Ni60, k_Ni59_n_to_Ni60_reaclib, k_Ni60_to_n_Ni59_reaclib, + H1, Ni59, -1, Cu60, -1, -1, Ni59, Cu60, k_Ni59_p_to_Cu60_reaclib, k_Cu60_to_p_Ni59_reaclib, + He4, Ni59, -1, Zn63, -1, -1, Ni59, Zn63, k_Ni59_He4_to_Zn63_reaclib, k_Zn63_to_He4_Ni59_reaclib, + N, Ni60, -1, Ni61, -1, -1, Ni60, Ni61, k_Ni60_n_to_Ni61_reaclib, k_Ni61_to_n_Ni60_reaclib, + H1, Ni60, -1, Cu61, -1, -1, Ni60, Cu61, k_Ni60_p_to_Cu61_reaclib, k_Cu61_to_p_Ni60_reaclib, + He4, Ni60, -1, Zn64, -1, -1, Ni60, Zn64, k_Ni60_He4_to_Zn64_reaclib, k_Zn64_to_He4_Ni60_reaclib, + N, Ni61, -1, Ni62, -1, -1, Ni61, Ni62, k_Ni61_n_to_Ni62_reaclib, k_Ni62_to_n_Ni61_reaclib, + H1, Ni61, -1, Cu62, -1, -1, Ni61, Cu62, k_Ni61_p_to_Cu62_reaclib, k_Cu62_to_p_Ni61_reaclib, + He4, Ni61, -1, Zn65, -1, -1, Ni61, Zn65, k_Ni61_He4_to_Zn65_reaclib, k_Zn65_to_He4_Ni61_reaclib, + N, Ni62, -1, Ni63, -1, -1, Ni62, Ni63, k_Ni62_n_to_Ni63_reaclib, k_Ni63_to_n_Ni62_reaclib, + H1, Ni62, -1, Cu63, -1, -1, Ni62, Cu63, k_Ni62_p_to_Cu63_reaclib, k_Cu63_to_p_Ni62_reaclib, + He4, Ni62, -1, Zn66, -1, -1, Ni62, Zn66, k_Ni62_He4_to_Zn66_reaclib, k_Zn66_to_He4_Ni62_reaclib, + N, Ni63, -1, Ni64, -1, -1, Ni63, Ni64, k_Ni63_n_to_Ni64_reaclib, k_Ni64_to_n_Ni63_reaclib, + H1, Ni63, -1, Cu64, -1, -1, Ni63, Cu64, k_Ni63_p_to_Cu64_reaclib, k_Cu64_to_p_Ni63_reaclib, + H1, Ni64, -1, Cu65, -1, -1, Ni64, Cu65, k_Ni64_p_to_Cu65_reaclib, k_Cu65_to_p_Ni64_reaclib, + N, Cu57, -1, Cu58, -1, -1, Cu57, Cu58, k_Cu57_n_to_Cu58_reaclib, k_Cu58_to_n_Cu57_reaclib, + N, Cu58, -1, Cu59, -1, -1, Cu58, Cu59, k_Cu58_n_to_Cu59_reaclib, k_Cu59_to_n_Cu58_reaclib, + H1, Cu58, -1, Zn59, -1, -1, Cu58, Zn59, k_Cu58_p_to_Zn59_reaclib, k_Zn59_to_p_Cu58_reaclib, + He4, Cu58, -1, Ga62, -1, -1, Cu58, Ga62, k_Cu58_He4_to_Ga62_reaclib, k_Ga62_to_He4_Cu58_reaclib, + N, Cu59, -1, Cu60, -1, -1, Cu59, Cu60, k_Cu59_n_to_Cu60_reaclib, k_Cu60_to_n_Cu59_reaclib, + H1, Cu59, -1, Zn60, -1, -1, Cu59, Zn60, k_Cu59_p_to_Zn60_reaclib, k_Zn60_to_p_Cu59_reaclib, + He4, Cu59, -1, Ga63, -1, -1, Cu59, Ga63, k_Cu59_He4_to_Ga63_reaclib, k_Ga63_to_He4_Cu59_reaclib, + N, Cu60, -1, Cu61, -1, -1, Cu60, Cu61, k_Cu60_n_to_Cu61_reaclib, k_Cu61_to_n_Cu60_reaclib, + H1, Cu60, -1, Zn61, -1, -1, Cu60, Zn61, k_Cu60_p_to_Zn61_reaclib, k_Zn61_to_p_Cu60_reaclib, + He4, Cu60, -1, Ga64, -1, -1, Cu60, Ga64, k_Cu60_He4_to_Ga64_reaclib, k_Ga64_to_He4_Cu60_reaclib, + N, Cu61, -1, Cu62, -1, -1, Cu61, Cu62, k_Cu61_n_to_Cu62_reaclib, k_Cu62_to_n_Cu61_reaclib, + H1, Cu61, -1, Zn62, -1, -1, Cu61, Zn62, k_Cu61_p_to_Zn62_reaclib, k_Zn62_to_p_Cu61_reaclib, + N, Cu62, -1, Cu63, -1, -1, Cu62, Cu63, k_Cu62_n_to_Cu63_reaclib, k_Cu63_to_n_Cu62_reaclib, + H1, Cu62, -1, Zn63, -1, -1, Cu62, Zn63, k_Cu62_p_to_Zn63_reaclib, k_Zn63_to_p_Cu62_reaclib, + N, Cu63, -1, Cu64, -1, -1, Cu63, Cu64, k_Cu63_n_to_Cu64_reaclib, k_Cu64_to_n_Cu63_reaclib, + H1, Cu63, -1, Zn64, -1, -1, Cu63, Zn64, k_Cu63_p_to_Zn64_reaclib, k_Zn64_to_p_Cu63_reaclib, + N, Cu64, -1, Cu65, -1, -1, Cu64, Cu65, k_Cu64_n_to_Cu65_reaclib, k_Cu65_to_n_Cu64_reaclib, + H1, Cu64, -1, Zn65, -1, -1, Cu64, Zn65, k_Cu64_p_to_Zn65_reaclib, k_Zn65_to_p_Cu64_reaclib, + H1, Cu65, -1, Zn66, -1, -1, Cu65, Zn66, k_Cu65_p_to_Zn66_reaclib, k_Zn66_to_p_Cu65_reaclib, + N, Zn59, -1, Zn60, -1, -1, Zn59, Zn60, k_Zn59_n_to_Zn60_reaclib, k_Zn60_to_n_Zn59_reaclib, + He4, Zn59, -1, Ge63, -1, -1, Zn59, Ge63, k_Zn59_He4_to_Ge63_reaclib, k_Ge63_to_He4_Zn59_reaclib, + N, Zn60, -1, Zn61, -1, -1, Zn60, Zn61, k_Zn60_n_to_Zn61_reaclib, k_Zn61_to_n_Zn60_reaclib, + He4, Zn60, -1, Ge64, -1, -1, Zn60, Ge64, k_Zn60_He4_to_Ge64_reaclib, k_Ge64_to_He4_Zn60_reaclib, + N, Zn61, -1, Zn62, -1, -1, Zn61, Zn62, k_Zn61_n_to_Zn62_reaclib, k_Zn62_to_n_Zn61_reaclib, + H1, Zn61, -1, Ga62, -1, -1, Zn61, Ga62, k_Zn61_p_to_Ga62_reaclib, k_Ga62_to_p_Zn61_reaclib, + N, Zn62, -1, Zn63, -1, -1, Zn62, Zn63, k_Zn62_n_to_Zn63_reaclib, k_Zn63_to_n_Zn62_reaclib, + H1, Zn62, -1, Ga63, -1, -1, Zn62, Ga63, k_Zn62_p_to_Ga63_reaclib, k_Ga63_to_p_Zn62_reaclib, + N, Zn63, -1, Zn64, -1, -1, Zn63, Zn64, k_Zn63_n_to_Zn64_reaclib, k_Zn64_to_n_Zn63_reaclib, + H1, Zn63, -1, Ga64, -1, -1, Zn63, Ga64, k_Zn63_p_to_Ga64_reaclib, k_Ga64_to_p_Zn63_reaclib, + N, Zn64, -1, Zn65, -1, -1, Zn64, Zn65, k_Zn64_n_to_Zn65_reaclib, k_Zn65_to_n_Zn64_reaclib, + N, Zn65, -1, Zn66, -1, -1, Zn65, Zn66, k_Zn65_n_to_Zn66_reaclib, k_Zn66_to_n_Zn65_reaclib, + N, Ga62, -1, Ga63, -1, -1, Ga62, Ga63, k_Ga62_n_to_Ga63_reaclib, k_Ga63_to_n_Ga62_reaclib, + H1, Ga62, -1, Ge63, -1, -1, Ga62, Ge63, k_Ga62_p_to_Ge63_reaclib, k_Ge63_to_p_Ga62_reaclib, + N, Ga63, -1, Ga64, -1, -1, Ga63, Ga64, k_Ga63_n_to_Ga64_reaclib, k_Ga64_to_n_Ga63_reaclib, + H1, Ga63, -1, Ge64, -1, -1, Ga63, Ge64, k_Ga63_p_to_Ge64_reaclib, k_Ge64_to_p_Ga63_reaclib, + N, Ge63, -1, Ge64, -1, -1, Ge63, Ge64, k_Ge63_n_to_Ge64_reaclib, k_Ge64_to_n_Ge63_reaclib, + H2, He3, -1, H1, He4, -1, H2, He3, k_He3_d_to_p_He4_reaclib, k_He4_p_to_d_He3_reaclib, + H1, Li6, -1, He4, He3, -1, Li6, He3, k_Li6_p_to_He4_He3_reaclib, k_He3_He4_to_p_Li6_reaclib, + H1, Li7, -1, He4, He4, -1, Li7, -1, k_Li7_p_to_He4_He4_reaclib, k_He4_He4_to_p_Li7_reaclib, + N, Be7, -1, H1, Li7, -1, Be7, Li7, k_Be7_n_to_p_Li7_reaclib, k_Li7_p_to_n_Be7_reaclib, + N, Be7, -1, He4, He4, -1, Be7, -1, k_Be7_n_to_He4_He4_reaclib, k_He4_He4_to_n_Be7_reaclib, + H1, Be9, -1, He4, Li6, -1, Be9, Li6, k_Be9_p_to_He4_Li6_reaclib, k_Li6_He4_to_p_Be9_reaclib, + He4, Be9, -1, N, C12, -1, Be9, C12, k_Be9_He4_to_n_C12_reaclib, k_C12_n_to_He4_Be9_reaclib, + N, B10, -1, He4, Li7, -1, B10, Li7, k_B10_n_to_He4_Li7_reaclib, k_Li7_He4_to_n_B10_reaclib, + H1, B10, -1, He4, Be7, -1, B10, Be7, k_B10_p_to_He4_Be7_reaclib, k_Be7_He4_to_p_B10_reaclib, + He4, B10, -1, N, N13, -1, B10, N13, k_B10_He4_to_n_N13_reaclib, k_N13_n_to_He4_B10_reaclib, + He4, B10, -1, H1, C13, -1, B10, C13, k_B10_He4_to_p_C13_reaclib, k_C13_p_to_He4_B10_reaclib, + He4, B11, -1, N, N14, -1, B11, N14, k_B11_He4_to_n_N14_reaclib, k_N14_n_to_He4_B11_reaclib, + He4, B11, -1, H1, C14, -1, B11, C14, k_B11_He4_to_p_C14_reaclib, k_C14_p_to_He4_B11_reaclib, + He4, C13, -1, N, O16, -1, C13, O16, k_C13_He4_to_n_O16_reaclib, k_O16_n_to_He4_C13_reaclib, + N, N13, -1, H1, C13, -1, N13, C13, k_N13_n_to_p_C13_reaclib, k_C13_p_to_n_N13_reaclib, + He4, N13, -1, H1, O16, -1, N13, O16, k_N13_He4_to_p_O16_reaclib, k_O16_p_to_He4_N13_reaclib, + N, N14, -1, H1, C14, -1, N14, C14, k_N14_n_to_p_C14_reaclib, k_C14_p_to_n_N14_reaclib, + H1, N15, -1, He4, C12, -1, N15, C12, k_N15_p_to_He4_C12_reaclib, k_C12_He4_to_p_N15_reaclib, + N, O14, -1, H1, N14, -1, O14, N14, k_O14_n_to_p_N14_reaclib, k_N14_p_to_n_O14_reaclib, + He4, O14, -1, H1, F17, -1, O14, F17, k_O14_He4_to_p_F17_reaclib, k_F17_p_to_He4_O14_reaclib, + N, O15, -1, H1, N15, -1, O15, N15, k_O15_n_to_p_N15_reaclib, k_N15_p_to_n_O15_reaclib, + N, O15, -1, He4, C12, -1, O15, C12, k_O15_n_to_He4_C12_reaclib, k_C12_He4_to_n_O15_reaclib, + N, O17, -1, He4, C14, -1, O17, C14, k_O17_n_to_He4_C14_reaclib, k_C14_He4_to_n_O17_reaclib, + H1, O17, -1, He4, N14, -1, O17, N14, k_O17_p_to_He4_N14_reaclib, k_N14_He4_to_p_O17_reaclib, + He4, O17, -1, N, Ne20, -1, O17, Ne20, k_O17_He4_to_n_Ne20_reaclib, k_Ne20_n_to_He4_O17_reaclib, + H1, O18, -1, He4, N15, -1, O18, N15, k_O18_p_to_He4_N15_reaclib, k_N15_He4_to_p_O18_reaclib, + N, F17, -1, H1, O17, -1, F17, O17, k_F17_n_to_p_O17_reaclib, k_O17_p_to_n_F17_reaclib, + N, F17, -1, He4, N14, -1, F17, N14, k_F17_n_to_He4_N14_reaclib, k_N14_He4_to_n_F17_reaclib, + He4, F17, -1, H1, Ne20, -1, F17, Ne20, k_F17_He4_to_p_Ne20_reaclib, k_Ne20_p_to_He4_F17_reaclib, + N, F18, -1, H1, O18, -1, F18, O18, k_F18_n_to_p_O18_reaclib, k_O18_p_to_n_F18_reaclib, + N, F18, -1, He4, N15, -1, F18, N15, k_F18_n_to_He4_N15_reaclib, k_N15_He4_to_n_F18_reaclib, + H1, F18, -1, He4, O15, -1, F18, O15, k_F18_p_to_He4_O15_reaclib, k_O15_He4_to_p_F18_reaclib, + He4, F18, -1, H1, Ne21, -1, F18, Ne21, k_F18_He4_to_p_Ne21_reaclib, k_Ne21_p_to_He4_F18_reaclib, + H1, F19, -1, He4, O16, -1, F19, O16, k_F19_p_to_He4_O16_reaclib, k_O16_He4_to_p_F19_reaclib, + He4, F19, -1, H1, Ne22, -1, F19, Ne22, k_F19_He4_to_p_Ne22_reaclib, k_Ne22_p_to_He4_F19_reaclib, + N, Ne18, -1, H1, F18, -1, Ne18, F18, k_Ne18_n_to_p_F18_reaclib, k_F18_p_to_n_Ne18_reaclib, + N, Ne18, -1, He4, O15, -1, Ne18, O15, k_Ne18_n_to_He4_O15_reaclib, k_O15_He4_to_n_Ne18_reaclib, + He4, Ne18, -1, H1, Na21, -1, Ne18, Na21, k_Ne18_He4_to_p_Na21_reaclib, k_Na21_p_to_He4_Ne18_reaclib, + N, Ne19, -1, H1, F19, -1, Ne19, F19, k_Ne19_n_to_p_F19_reaclib, k_F19_p_to_n_Ne19_reaclib, + N, Ne19, -1, He4, O16, -1, Ne19, O16, k_Ne19_n_to_He4_O16_reaclib, k_O16_He4_to_n_Ne19_reaclib, + He4, Ne19, -1, H1, Na22, -1, Ne19, Na22, k_Ne19_He4_to_p_Na22_reaclib, k_Na22_p_to_He4_Ne19_reaclib, + N, Ne21, -1, He4, O18, -1, Ne21, O18, k_Ne21_n_to_He4_O18_reaclib, k_O18_He4_to_n_Ne21_reaclib, + He4, Ne21, -1, N, Mg24, -1, Ne21, Mg24, k_Ne21_He4_to_n_Mg24_reaclib, k_Mg24_n_to_He4_Ne21_reaclib, + N, Na21, -1, H1, Ne21, -1, Na21, Ne21, k_Na21_n_to_p_Ne21_reaclib, k_Ne21_p_to_n_Na21_reaclib, + N, Na21, -1, He4, F18, -1, Na21, F18, k_Na21_n_to_He4_F18_reaclib, k_F18_He4_to_n_Na21_reaclib, + He4, Na21, -1, H1, Mg24, -1, Na21, Mg24, k_Na21_He4_to_p_Mg24_reaclib, k_Mg24_p_to_He4_Na21_reaclib, + N, Na22, -1, H1, Ne22, -1, Na22, Ne22, k_Na22_n_to_p_Ne22_reaclib, k_Ne22_p_to_n_Na22_reaclib, + N, Na22, -1, He4, F19, -1, Na22, F19, k_Na22_n_to_He4_F19_reaclib, k_F19_He4_to_n_Na22_reaclib, + He4, Na22, -1, H1, Mg25, -1, Na22, Mg25, k_Na22_He4_to_p_Mg25_reaclib, k_Mg25_p_to_He4_Na22_reaclib, + H1, Na23, -1, He4, Ne20, -1, Na23, Ne20, k_Na23_p_to_He4_Ne20_reaclib, k_Ne20_He4_to_p_Na23_reaclib, + He4, Na23, -1, H1, Mg26, -1, Na23, Mg26, k_Na23_He4_to_p_Mg26_reaclib, k_Mg26_p_to_He4_Na23_reaclib, + N, Mg23, -1, H1, Na23, -1, Mg23, Na23, k_Mg23_n_to_p_Na23_reaclib, k_Na23_p_to_n_Mg23_reaclib, + N, Mg23, -1, He4, Ne20, -1, Mg23, Ne20, k_Mg23_n_to_He4_Ne20_reaclib, k_Ne20_He4_to_n_Mg23_reaclib, + He4, Mg23, -1, H1, Al26, -1, Mg23, Al26, k_Mg23_He4_to_p_Al26_reaclib, k_Al26_p_to_He4_Mg23_reaclib, + N, Mg25, -1, He4, Ne22, -1, Mg25, Ne22, k_Mg25_n_to_He4_Ne22_reaclib, k_Ne22_He4_to_n_Mg25_reaclib, + He4, Mg25, -1, N, Si28, -1, Mg25, Si28, k_Mg25_He4_to_n_Si28_reaclib, k_Si28_n_to_He4_Mg25_reaclib, + He4, Mg26, -1, N, Si29, -1, Mg26, Si29, k_Mg26_He4_to_n_Si29_reaclib, k_Si29_n_to_He4_Mg26_reaclib, + N, Al25, -1, H1, Mg25, -1, Al25, Mg25, k_Al25_n_to_p_Mg25_reaclib, k_Mg25_p_to_n_Al25_reaclib, + N, Al25, -1, He4, Na22, -1, Al25, Na22, k_Al25_n_to_He4_Na22_reaclib, k_Na22_He4_to_n_Al25_reaclib, + He4, Al25, -1, H1, Si28, -1, Al25, Si28, k_Al25_He4_to_p_Si28_reaclib, k_Si28_p_to_He4_Al25_reaclib, + N, Al26, -1, H1, Mg26, -1, Al26, Mg26, k_Al26_n_to_p_Mg26_reaclib, k_Mg26_p_to_n_Al26_reaclib, + N, Al26, -1, He4, Na23, -1, Al26, Na23, k_Al26_n_to_He4_Na23_reaclib, k_Na23_He4_to_n_Al26_reaclib, + He4, Al26, -1, H1, Si29, -1, Al26, Si29, k_Al26_He4_to_p_Si29_reaclib, k_Si29_p_to_He4_Al26_reaclib, + H1, Al27, -1, He4, Mg24, -1, Al27, Mg24, k_Al27_p_to_He4_Mg24_reaclib, k_Mg24_He4_to_p_Al27_reaclib, + He4, Al27, -1, H1, Si30, -1, Al27, Si30, k_Al27_He4_to_p_Si30_reaclib, k_Si30_p_to_He4_Al27_reaclib, + H1, Si31, -1, N, P31, -1, Si31, P31, k_Si31_p_to_n_P31_reaclib, k_P31_n_to_p_Si31_reaclib, + He4, Si31, -1, N, S34, -1, Si31, S34, k_Si31_He4_to_n_S34_reaclib, k_S34_n_to_He4_Si31_reaclib, + N, P29, -1, H1, Si29, -1, P29, Si29, k_P29_n_to_p_Si29_reaclib, k_Si29_p_to_n_P29_reaclib, + N, P29, -1, He4, Al26, -1, P29, Al26, k_P29_n_to_He4_Al26_reaclib, k_Al26_He4_to_n_P29_reaclib, + He4, P29, -1, H1, S32, -1, P29, S32, k_P29_He4_to_p_S32_reaclib, k_S32_p_to_He4_P29_reaclib, + N, P30, -1, H1, Si30, -1, P30, Si30, k_P30_n_to_p_Si30_reaclib, k_Si30_p_to_n_P30_reaclib, + N, P30, -1, He4, Al27, -1, P30, Al27, k_P30_n_to_He4_Al27_reaclib, k_Al27_He4_to_n_P30_reaclib, + He4, P30, -1, H1, S33, -1, P30, S33, k_P30_He4_to_p_S33_reaclib, k_S33_p_to_He4_P30_reaclib, + H1, P31, -1, He4, Si28, -1, P31, Si28, k_P31_p_to_He4_Si28_reaclib, k_Si28_He4_to_p_P31_reaclib, + He4, P31, -1, H1, S34, -1, P31, S34, k_P31_He4_to_p_S34_reaclib, k_S34_p_to_He4_P31_reaclib, + N, P32, -1, H1, Si32, -1, P32, Si32, k_P32_n_to_p_Si32_reaclib, k_Si32_p_to_n_P32_reaclib, + H1, P32, -1, N, S32, -1, P32, S32, k_P32_p_to_n_S32_reaclib, k_S32_n_to_p_P32_reaclib, + H1, P32, -1, He4, Si29, -1, P32, Si29, k_P32_p_to_He4_Si29_reaclib, k_Si29_He4_to_p_P32_reaclib, + H1, P33, -1, He4, Si30, -1, P33, Si30, k_P33_p_to_He4_Si30_reaclib, k_Si30_He4_to_p_P33_reaclib, + N, S32, -1, He4, Si29, -1, S32, Si29, k_S32_n_to_He4_Si29_reaclib, k_Si29_He4_to_n_S32_reaclib, + N, S33, -1, H1, P33, -1, S33, P33, k_S33_n_to_p_P33_reaclib, k_P33_p_to_n_S33_reaclib, + N, S33, -1, He4, Si30, -1, S33, Si30, k_S33_n_to_He4_Si30_reaclib, k_Si30_He4_to_n_S33_reaclib, + N, S35, -1, He4, Si32, -1, S35, Si32, k_S35_n_to_He4_Si32_reaclib, k_Si32_He4_to_n_S35_reaclib, + H1, S35, -1, He4, P32, -1, S35, P32, k_S35_p_to_He4_P32_reaclib, k_P32_He4_to_p_S35_reaclib, + He4, S35, -1, N, Ar38, -1, S35, Ar38, k_S35_He4_to_n_Ar38_reaclib, k_Ar38_n_to_He4_S35_reaclib, + H1, S36, -1, He4, P33, -1, S36, P33, k_S36_p_to_He4_P33_reaclib, k_P33_He4_to_p_S36_reaclib, + N, Cl33, -1, H1, S33, -1, Cl33, S33, k_Cl33_n_to_p_S33_reaclib, k_S33_p_to_n_Cl33_reaclib, + N, Cl33, -1, He4, P30, -1, Cl33, P30, k_Cl33_n_to_He4_P30_reaclib, k_P30_He4_to_n_Cl33_reaclib, + He4, Cl33, -1, H1, Ar36, -1, Cl33, Ar36, k_Cl33_He4_to_p_Ar36_reaclib, k_Ar36_p_to_He4_Cl33_reaclib, + N, Cl34, -1, H1, S34, -1, Cl34, S34, k_Cl34_n_to_p_S34_reaclib, k_S34_p_to_n_Cl34_reaclib, + N, Cl34, -1, He4, P31, -1, Cl34, P31, k_Cl34_n_to_He4_P31_reaclib, k_P31_He4_to_n_Cl34_reaclib, + He4, Cl34, -1, H1, Ar37, -1, Cl34, Ar37, k_Cl34_He4_to_p_Ar37_reaclib, k_Ar37_p_to_He4_Cl34_reaclib, + N, Cl35, -1, H1, S35, -1, Cl35, S35, k_Cl35_n_to_p_S35_reaclib, k_S35_p_to_n_Cl35_reaclib, + N, Cl35, -1, He4, P32, -1, Cl35, P32, k_Cl35_n_to_He4_P32_reaclib, k_P32_He4_to_n_Cl35_reaclib, + H1, Cl35, -1, He4, S32, -1, Cl35, S32, k_Cl35_p_to_He4_S32_reaclib, k_S32_He4_to_p_Cl35_reaclib, + He4, Cl35, -1, H1, Ar38, -1, Cl35, Ar38, k_Cl35_He4_to_p_Ar38_reaclib, k_Ar38_p_to_He4_Cl35_reaclib, + N, Cl36, -1, H1, S36, -1, Cl36, S36, k_Cl36_n_to_p_S36_reaclib, k_S36_p_to_n_Cl36_reaclib, + N, Cl36, -1, He4, P33, -1, Cl36, P33, k_Cl36_n_to_He4_P33_reaclib, k_P33_He4_to_n_Cl36_reaclib, + H1, Cl36, -1, He4, S33, -1, Cl36, S33, k_Cl36_p_to_He4_S33_reaclib, k_S33_He4_to_p_Cl36_reaclib, + H1, Cl37, -1, He4, S34, -1, Cl37, S34, k_Cl37_p_to_He4_S34_reaclib, k_S34_He4_to_p_Cl37_reaclib, + N, Ar36, -1, H1, Cl36, -1, Ar36, Cl36, k_Ar36_n_to_p_Cl36_reaclib, k_Cl36_p_to_n_Ar36_reaclib, + N, Ar36, -1, He4, S33, -1, Ar36, S33, k_Ar36_n_to_He4_S33_reaclib, k_S33_He4_to_n_Ar36_reaclib, + N, Ar37, -1, H1, Cl37, -1, Ar37, Cl37, k_Ar37_n_to_p_Cl37_reaclib, k_Cl37_p_to_n_Ar37_reaclib, + N, Ar37, -1, He4, S34, -1, Ar37, S34, k_Ar37_n_to_He4_S34_reaclib, k_S34_He4_to_n_Ar37_reaclib, + N, Ar39, -1, He4, S36, -1, Ar39, S36, k_Ar39_n_to_He4_S36_reaclib, k_S36_He4_to_n_Ar39_reaclib, + H1, Ar39, -1, He4, Cl36, -1, Ar39, Cl36, k_Ar39_p_to_He4_Cl36_reaclib, k_Cl36_He4_to_p_Ar39_reaclib, + H1, Ar40, -1, He4, Cl37, -1, Ar40, Cl37, k_Ar40_p_to_He4_Cl37_reaclib, k_Cl37_He4_to_p_Ar40_reaclib, + N, K37, -1, H1, Ar37, -1, K37, Ar37, k_K37_n_to_p_Ar37_reaclib, k_Ar37_p_to_n_K37_reaclib, + N, K37, -1, He4, Cl34, -1, K37, Cl34, k_K37_n_to_He4_Cl34_reaclib, k_Cl34_He4_to_n_K37_reaclib, + He4, K37, -1, H1, Ca40, -1, K37, Ca40, k_K37_He4_to_p_Ca40_reaclib, k_Ca40_p_to_He4_K37_reaclib, + N, K38, -1, H1, Ar38, -1, K38, Ar38, k_K38_n_to_p_Ar38_reaclib, k_Ar38_p_to_n_K38_reaclib, + N, K38, -1, He4, Cl35, -1, K38, Cl35, k_K38_n_to_He4_Cl35_reaclib, k_Cl35_He4_to_n_K38_reaclib, + He4, K38, -1, H1, Ca41, -1, K38, Ca41, k_K38_He4_to_p_Ca41_reaclib, k_Ca41_p_to_He4_K38_reaclib, + N, K39, -1, H1, Ar39, -1, K39, Ar39, k_K39_n_to_p_Ar39_reaclib, k_Ar39_p_to_n_K39_reaclib, + N, K39, -1, He4, Cl36, -1, K39, Cl36, k_K39_n_to_He4_Cl36_reaclib, k_Cl36_He4_to_n_K39_reaclib, + H1, K39, -1, He4, Ar36, -1, K39, Ar36, k_K39_p_to_He4_Ar36_reaclib, k_Ar36_He4_to_p_K39_reaclib, + N, K40, -1, H1, Ar40, -1, K40, Ar40, k_K40_n_to_p_Ar40_reaclib, k_Ar40_p_to_n_K40_reaclib, + N, K40, -1, He4, Cl37, -1, K40, Cl37, k_K40_n_to_He4_Cl37_reaclib, k_Cl37_He4_to_n_K40_reaclib, + H1, K40, -1, N, Ca40, -1, K40, Ca40, k_K40_p_to_n_Ca40_reaclib, k_Ca40_n_to_p_K40_reaclib, + H1, K40, -1, He4, Ar37, -1, K40, Ar37, k_K40_p_to_He4_Ar37_reaclib, k_Ar37_He4_to_p_K40_reaclib, + He4, K40, -1, H1, Ca43, -1, K40, Ca43, k_K40_He4_to_p_Ca43_reaclib, k_Ca43_p_to_He4_K40_reaclib, + H1, K41, -1, He4, Ar38, -1, K41, Ar38, k_K41_p_to_He4_Ar38_reaclib, k_Ar38_He4_to_p_K41_reaclib, + He4, K41, -1, H1, Ca44, -1, K41, Ca44, k_K41_He4_to_p_Ca44_reaclib, k_Ca44_p_to_He4_K41_reaclib, + N, Ca40, -1, He4, Ar37, -1, Ca40, Ar37, k_Ca40_n_to_He4_Ar37_reaclib, k_Ar37_He4_to_n_Ca40_reaclib, + N, Ca41, -1, H1, K41, -1, Ca41, K41, k_Ca41_n_to_p_K41_reaclib, k_K41_p_to_n_Ca41_reaclib, + N, Ca41, -1, He4, Ar38, -1, Ca41, Ar38, k_Ca41_n_to_He4_Ar38_reaclib, k_Ar38_He4_to_n_Ca41_reaclib, + N, Ca42, -1, He4, Ar39, -1, Ca42, Ar39, k_Ca42_n_to_He4_Ar39_reaclib, k_Ar39_He4_to_n_Ca42_reaclib, + H1, Ca42, -1, He4, K39, -1, Ca42, K39, k_Ca42_p_to_He4_K39_reaclib, k_K39_He4_to_p_Ca42_reaclib, + N, Ca43, -1, He4, Ar40, -1, Ca43, Ar40, k_Ca43_n_to_He4_Ar40_reaclib, k_Ar40_He4_to_n_Ca43_reaclib, + He4, Ca43, -1, N, Ti46, -1, Ca43, Ti46, k_Ca43_He4_to_n_Ti46_reaclib, k_Ti46_n_to_He4_Ca43_reaclib, + He4, Ca45, -1, N, Ti48, -1, Ca45, Ti48, k_Ca45_He4_to_n_Ti48_reaclib, k_Ti48_n_to_He4_Ca45_reaclib, + H1, Ca47, -1, N, Sc47, -1, Ca47, Sc47, k_Ca47_p_to_n_Sc47_reaclib, k_Sc47_n_to_p_Ca47_reaclib, + He4, Ca47, -1, N, Ti50, -1, Ca47, Ti50, k_Ca47_He4_to_n_Ti50_reaclib, k_Ti50_n_to_He4_Ca47_reaclib, + N, Sc43, -1, H1, Ca43, -1, Sc43, Ca43, k_Sc43_n_to_p_Ca43_reaclib, k_Ca43_p_to_n_Sc43_reaclib, + N, Sc43, -1, He4, K40, -1, Sc43, K40, k_Sc43_n_to_He4_K40_reaclib, k_K40_He4_to_n_Sc43_reaclib, + H1, Sc43, -1, He4, Ca40, -1, Sc43, Ca40, k_Sc43_p_to_He4_Ca40_reaclib, k_Ca40_He4_to_p_Sc43_reaclib, + He4, Sc43, -1, H1, Ti46, -1, Sc43, Ti46, k_Sc43_He4_to_p_Ti46_reaclib, k_Ti46_p_to_He4_Sc43_reaclib, + N, Sc44, -1, H1, Ca44, -1, Sc44, Ca44, k_Sc44_n_to_p_Ca44_reaclib, k_Ca44_p_to_n_Sc44_reaclib, + N, Sc44, -1, He4, K41, -1, Sc44, K41, k_Sc44_n_to_He4_K41_reaclib, k_K41_He4_to_n_Sc44_reaclib, + H1, Sc44, -1, He4, Ca41, -1, Sc44, Ca41, k_Sc44_p_to_He4_Ca41_reaclib, k_Ca41_He4_to_p_Sc44_reaclib, + He4, Sc44, -1, H1, Ti47, -1, Sc44, Ti47, k_Sc44_He4_to_p_Ti47_reaclib, k_Ti47_p_to_He4_Sc44_reaclib, + N, Sc45, -1, H1, Ca45, -1, Sc45, Ca45, k_Sc45_n_to_p_Ca45_reaclib, k_Ca45_p_to_n_Sc45_reaclib, + H1, Sc45, -1, He4, Ca42, -1, Sc45, Ca42, k_Sc45_p_to_He4_Ca42_reaclib, k_Ca42_He4_to_p_Sc45_reaclib, + He4, Sc45, -1, H1, Ti48, -1, Sc45, Ti48, k_Sc45_He4_to_p_Ti48_reaclib, k_Ti48_p_to_He4_Sc45_reaclib, + N, Sc46, -1, H1, Ca46, -1, Sc46, Ca46, k_Sc46_n_to_p_Ca46_reaclib, k_Ca46_p_to_n_Sc46_reaclib, + H1, Sc46, -1, N, Ti46, -1, Sc46, Ti46, k_Sc46_p_to_n_Ti46_reaclib, k_Ti46_n_to_p_Sc46_reaclib, + H1, Sc46, -1, He4, Ca43, -1, Sc46, Ca43, k_Sc46_p_to_He4_Ca43_reaclib, k_Ca43_He4_to_p_Sc46_reaclib, + He4, Sc46, -1, N, V49, -1, Sc46, V49, k_Sc46_He4_to_n_V49_reaclib, k_V49_n_to_He4_Sc46_reaclib, + He4, Sc46, -1, H1, Ti49, -1, Sc46, Ti49, k_Sc46_He4_to_p_Ti49_reaclib, k_Ti49_p_to_He4_Sc46_reaclib, + H1, Sc47, -1, He4, Ca44, -1, Sc47, Ca44, k_Sc47_p_to_He4_Ca44_reaclib, k_Ca44_He4_to_p_Sc47_reaclib, + He4, Sc47, -1, H1, Ti50, -1, Sc47, Ti50, k_Sc47_He4_to_p_Ti50_reaclib, k_Ti50_p_to_He4_Sc47_reaclib, + N, Sc48, -1, H1, Ca48, -1, Sc48, Ca48, k_Sc48_n_to_p_Ca48_reaclib, k_Ca48_p_to_n_Sc48_reaclib, + H1, Sc48, -1, N, Ti48, -1, Sc48, Ti48, k_Sc48_p_to_n_Ti48_reaclib, k_Ti48_n_to_p_Sc48_reaclib, + H1, Sc48, -1, He4, Ca45, -1, Sc48, Ca45, k_Sc48_p_to_He4_Ca45_reaclib, k_Ca45_He4_to_p_Sc48_reaclib, + He4, Sc48, -1, N, V51, -1, Sc48, V51, k_Sc48_He4_to_n_V51_reaclib, k_V51_n_to_He4_Sc48_reaclib, + He4, Sc48, -1, H1, Ti51, -1, Sc48, Ti51, k_Sc48_He4_to_p_Ti51_reaclib, k_Ti51_p_to_He4_Sc48_reaclib, + H1, Sc49, -1, N, Ti49, -1, Sc49, Ti49, k_Sc49_p_to_n_Ti49_reaclib, k_Ti49_n_to_p_Sc49_reaclib, + H1, Sc49, -1, He4, Ca46, -1, Sc49, Ca46, k_Sc49_p_to_He4_Ca46_reaclib, k_Ca46_He4_to_p_Sc49_reaclib, + N, Ti44, -1, H1, Sc44, -1, Ti44, Sc44, k_Ti44_n_to_p_Sc44_reaclib, k_Sc44_p_to_n_Ti44_reaclib, + N, Ti44, -1, He4, Ca41, -1, Ti44, Ca41, k_Ti44_n_to_He4_Ca41_reaclib, k_Ca41_He4_to_n_Ti44_reaclib, + N, Ti45, -1, H1, Sc45, -1, Ti45, Sc45, k_Ti45_n_to_p_Sc45_reaclib, k_Sc45_p_to_n_Ti45_reaclib, + N, Ti45, -1, He4, Ca42, -1, Ti45, Ca42, k_Ti45_n_to_He4_Ca42_reaclib, k_Ca42_He4_to_n_Ti45_reaclib, + He4, Ti45, -1, H1, V48, -1, Ti45, V48, k_Ti45_He4_to_p_V48_reaclib, k_V48_p_to_He4_Ti45_reaclib, + N, Ti47, -1, H1, Sc47, -1, Ti47, Sc47, k_Ti47_n_to_p_Sc47_reaclib, k_Sc47_p_to_n_Ti47_reaclib, + N, Ti47, -1, He4, Ca44, -1, Ti47, Ca44, k_Ti47_n_to_He4_Ca44_reaclib, k_Ca44_He4_to_n_Ti47_reaclib, + N, Ti49, -1, He4, Ca46, -1, Ti49, Ca46, k_Ti49_n_to_He4_Ca46_reaclib, k_Ca46_He4_to_n_Ti49_reaclib, + He4, Ti49, -1, N, Cr52, -1, Ti49, Cr52, k_Ti49_He4_to_n_Cr52_reaclib, k_Cr52_n_to_He4_Ti49_reaclib, + N, Ti51, -1, He4, Ca48, -1, Ti51, Ca48, k_Ti51_n_to_He4_Ca48_reaclib, k_Ca48_He4_to_n_Ti51_reaclib, + H1, Ti51, -1, N, V51, -1, Ti51, V51, k_Ti51_p_to_n_V51_reaclib, k_V51_n_to_p_Ti51_reaclib, + He4, Ti51, -1, N, Cr54, -1, Ti51, Cr54, k_Ti51_He4_to_n_Cr54_reaclib, k_Cr54_n_to_He4_Ti51_reaclib, + N, V46, -1, H1, Ti46, -1, V46, Ti46, k_V46_n_to_p_Ti46_reaclib, k_Ti46_p_to_n_V46_reaclib, + N, V46, -1, He4, Sc43, -1, V46, Sc43, k_V46_n_to_He4_Sc43_reaclib, k_Sc43_He4_to_n_V46_reaclib, + He4, V46, -1, H1, Cr49, -1, V46, Cr49, k_V46_He4_to_p_Cr49_reaclib, k_Cr49_p_to_He4_V46_reaclib, + N, V47, -1, H1, Ti47, -1, V47, Ti47, k_V47_n_to_p_Ti47_reaclib, k_Ti47_p_to_n_V47_reaclib, + N, V47, -1, He4, Sc44, -1, V47, Sc44, k_V47_n_to_He4_Sc44_reaclib, k_Sc44_He4_to_n_V47_reaclib, + H1, V47, -1, He4, Ti44, -1, V47, Ti44, k_V47_p_to_He4_Ti44_reaclib, k_Ti44_He4_to_p_V47_reaclib, + He4, V47, -1, H1, Cr50, -1, V47, Cr50, k_V47_He4_to_p_Cr50_reaclib, k_Cr50_p_to_He4_V47_reaclib, + N, V48, -1, H1, Ti48, -1, V48, Ti48, k_V48_n_to_p_Ti48_reaclib, k_Ti48_p_to_n_V48_reaclib, + N, V48, -1, He4, Sc45, -1, V48, Sc45, k_V48_n_to_He4_Sc45_reaclib, k_Sc45_He4_to_n_V48_reaclib, + He4, V48, -1, H1, Cr51, -1, V48, Cr51, k_V48_He4_to_p_Cr51_reaclib, k_Cr51_p_to_He4_V48_reaclib, + N, V49, -1, H1, Ti49, -1, V49, Ti49, k_V49_n_to_p_Ti49_reaclib, k_Ti49_p_to_n_V49_reaclib, + H1, V49, -1, He4, Ti46, -1, V49, Ti46, k_V49_p_to_He4_Ti46_reaclib, k_Ti46_He4_to_p_V49_reaclib, + He4, V49, -1, H1, Cr52, -1, V49, Cr52, k_V49_He4_to_p_Cr52_reaclib, k_Cr52_p_to_He4_V49_reaclib, + N, V50, -1, H1, Ti50, -1, V50, Ti50, k_V50_n_to_p_Ti50_reaclib, k_Ti50_p_to_n_V50_reaclib, + N, V50, -1, He4, Sc47, -1, V50, Sc47, k_V50_n_to_He4_Sc47_reaclib, k_Sc47_He4_to_n_V50_reaclib, + H1, V50, -1, N, Cr50, -1, V50, Cr50, k_V50_p_to_n_Cr50_reaclib, k_Cr50_n_to_p_V50_reaclib, + H1, V50, -1, He4, Ti47, -1, V50, Ti47, k_V50_p_to_He4_Ti47_reaclib, k_Ti47_He4_to_p_V50_reaclib, + He4, V50, -1, H1, Cr53, -1, V50, Cr53, k_V50_He4_to_p_Cr53_reaclib, k_Cr53_p_to_He4_V50_reaclib, + H1, V51, -1, He4, Ti48, -1, V51, Ti48, k_V51_p_to_He4_Ti48_reaclib, k_Ti48_He4_to_p_V51_reaclib, + N, V52, -1, He4, Sc49, -1, V52, Sc49, k_V52_n_to_He4_Sc49_reaclib, k_Sc49_He4_to_n_V52_reaclib, + H1, V52, -1, N, Cr52, -1, V52, Cr52, k_V52_p_to_n_Cr52_reaclib, k_Cr52_n_to_p_V52_reaclib, + H1, V52, -1, He4, Ti49, -1, V52, Ti49, k_V52_p_to_He4_Ti49_reaclib, k_Ti49_He4_to_p_V52_reaclib, + He4, V52, -1, N, Mn55, -1, V52, Mn55, k_V52_He4_to_n_Mn55_reaclib, k_Mn55_n_to_He4_V52_reaclib, + N, Cr48, -1, H1, V48, -1, Cr48, V48, k_Cr48_n_to_p_V48_reaclib, k_V48_p_to_n_Cr48_reaclib, + N, Cr48, -1, He4, Ti45, -1, Cr48, Ti45, k_Cr48_n_to_He4_Ti45_reaclib, k_Ti45_He4_to_n_Cr48_reaclib, + He4, Cr48, -1, H1, Mn51, -1, Cr48, Mn51, k_Cr48_He4_to_p_Mn51_reaclib, k_Mn51_p_to_He4_Cr48_reaclib, + N, Cr49, -1, H1, V49, -1, Cr49, V49, k_Cr49_n_to_p_V49_reaclib, k_V49_p_to_n_Cr49_reaclib, + N, Cr49, -1, He4, Ti46, -1, Cr49, Ti46, k_Cr49_n_to_He4_Ti46_reaclib, k_Ti46_He4_to_n_Cr49_reaclib, + He4, Cr49, -1, H1, Mn52, -1, Cr49, Mn52, k_Cr49_He4_to_p_Mn52_reaclib, k_Mn52_p_to_He4_Cr49_reaclib, + N, Cr50, -1, He4, Ti47, -1, Cr50, Ti47, k_Cr50_n_to_He4_Ti47_reaclib, k_Ti47_He4_to_n_Cr50_reaclib, + N, Cr51, -1, H1, V51, -1, Cr51, V51, k_Cr51_n_to_p_V51_reaclib, k_V51_p_to_n_Cr51_reaclib, + N, Cr51, -1, He4, Ti48, -1, Cr51, Ti48, k_Cr51_n_to_He4_Ti48_reaclib, k_Ti48_He4_to_n_Cr51_reaclib, + N, Cr53, -1, He4, Ti50, -1, Cr53, Ti50, k_Cr53_n_to_He4_Ti50_reaclib, k_Ti50_He4_to_n_Cr53_reaclib, + H1, Cr54, -1, He4, V51, -1, Cr54, V51, k_Cr54_p_to_He4_V51_reaclib, k_V51_He4_to_p_Cr54_reaclib, + N, Mn50, -1, H1, Cr50, -1, Mn50, Cr50, k_Mn50_n_to_p_Cr50_reaclib, k_Cr50_p_to_n_Mn50_reaclib, + N, Mn50, -1, He4, V47, -1, Mn50, V47, k_Mn50_n_to_He4_V47_reaclib, k_V47_He4_to_n_Mn50_reaclib, + He4, Mn50, -1, H1, Fe53, -1, Mn50, Fe53, k_Mn50_He4_to_p_Fe53_reaclib, k_Fe53_p_to_He4_Mn50_reaclib, + N, Mn51, -1, H1, Cr51, -1, Mn51, Cr51, k_Mn51_n_to_p_Cr51_reaclib, k_Cr51_p_to_n_Mn51_reaclib, + N, Mn51, -1, He4, V48, -1, Mn51, V48, k_Mn51_n_to_He4_V48_reaclib, k_V48_He4_to_n_Mn51_reaclib, + He4, Mn51, -1, H1, Fe54, -1, Mn51, Fe54, k_Mn51_He4_to_p_Fe54_reaclib, k_Fe54_p_to_He4_Mn51_reaclib, + N, Mn52, -1, H1, Cr52, -1, Mn52, Cr52, k_Mn52_n_to_p_Cr52_reaclib, k_Cr52_p_to_n_Mn52_reaclib, + N, Mn52, -1, He4, V49, -1, Mn52, V49, k_Mn52_n_to_He4_V49_reaclib, k_V49_He4_to_n_Mn52_reaclib, + He4, Mn52, -1, H1, Fe55, -1, Mn52, Fe55, k_Mn52_He4_to_p_Fe55_reaclib, k_Fe55_p_to_He4_Mn52_reaclib, + N, Mn53, -1, H1, Cr53, -1, Mn53, Cr53, k_Mn53_n_to_p_Cr53_reaclib, k_Cr53_p_to_n_Mn53_reaclib, + N, Mn53, -1, He4, V50, -1, Mn53, V50, k_Mn53_n_to_He4_V50_reaclib, k_V50_He4_to_n_Mn53_reaclib, + H1, Mn53, -1, He4, Cr50, -1, Mn53, Cr50, k_Mn53_p_to_He4_Cr50_reaclib, k_Cr50_He4_to_p_Mn53_reaclib, + He4, Mn53, -1, H1, Fe56, -1, Mn53, Fe56, k_Mn53_He4_to_p_Fe56_reaclib, k_Fe56_p_to_He4_Mn53_reaclib, + N, Mn54, -1, H1, Cr54, -1, Mn54, Cr54, k_Mn54_n_to_p_Cr54_reaclib, k_Cr54_p_to_n_Mn54_reaclib, + N, Mn54, -1, He4, V51, -1, Mn54, V51, k_Mn54_n_to_He4_V51_reaclib, k_V51_He4_to_n_Mn54_reaclib, + H1, Mn54, -1, He4, Cr51, -1, Mn54, Cr51, k_Mn54_p_to_He4_Cr51_reaclib, k_Cr51_He4_to_p_Mn54_reaclib, + H1, Mn55, -1, He4, Cr52, -1, Mn55, Cr52, k_Mn55_p_to_He4_Cr52_reaclib, k_Cr52_He4_to_p_Mn55_reaclib, + N, Fe52, -1, H1, Mn52, -1, Fe52, Mn52, k_Fe52_n_to_p_Mn52_reaclib, k_Mn52_p_to_n_Fe52_reaclib, + N, Fe52, -1, He4, Cr49, -1, Fe52, Cr49, k_Fe52_n_to_He4_Cr49_reaclib, k_Cr49_He4_to_n_Fe52_reaclib, + He4, Fe52, -1, H1, Co55, -1, Fe52, Co55, k_Fe52_He4_to_p_Co55_reaclib, k_Co55_p_to_He4_Fe52_reaclib, + N, Fe53, -1, H1, Mn53, -1, Fe53, Mn53, k_Fe53_n_to_p_Mn53_reaclib, k_Mn53_p_to_n_Fe53_reaclib, + N, Fe53, -1, He4, Cr50, -1, Fe53, Cr50, k_Fe53_n_to_He4_Cr50_reaclib, k_Cr50_He4_to_n_Fe53_reaclib, + He4, Fe53, -1, H1, Co56, -1, Fe53, Co56, k_Fe53_He4_to_p_Co56_reaclib, k_Co56_p_to_He4_Fe53_reaclib, + N, Fe54, -1, H1, Mn54, -1, Fe54, Mn54, k_Fe54_n_to_p_Mn54_reaclib, k_Mn54_p_to_n_Fe54_reaclib, + N, Fe54, -1, He4, Cr51, -1, Fe54, Cr51, k_Fe54_n_to_He4_Cr51_reaclib, k_Cr51_He4_to_n_Fe54_reaclib, + N, Fe55, -1, H1, Mn55, -1, Fe55, Mn55, k_Fe55_n_to_p_Mn55_reaclib, k_Mn55_p_to_n_Fe55_reaclib, + N, Fe55, -1, He4, Cr52, -1, Fe55, Cr52, k_Fe55_n_to_He4_Cr52_reaclib, k_Cr52_He4_to_n_Fe55_reaclib, + N, Fe56, -1, He4, Cr53, -1, Fe56, Cr53, k_Fe56_n_to_He4_Cr53_reaclib, k_Cr53_He4_to_n_Fe56_reaclib, + N, Fe57, -1, He4, Cr54, -1, Fe57, Cr54, k_Fe57_n_to_He4_Cr54_reaclib, k_Cr54_He4_to_n_Fe57_reaclib, + H1, Fe57, -1, He4, Mn54, -1, Fe57, Mn54, k_Fe57_p_to_He4_Mn54_reaclib, k_Mn54_He4_to_p_Fe57_reaclib, + H1, Fe58, -1, He4, Mn55, -1, Fe58, Mn55, k_Fe58_p_to_He4_Mn55_reaclib, k_Mn55_He4_to_p_Fe58_reaclib, + N, Co53, -1, H1, Fe53, -1, Co53, Fe53, k_Co53_n_to_p_Fe53_reaclib, k_Fe53_p_to_n_Co53_reaclib, + N, Co53, -1, He4, Mn50, -1, Co53, Mn50, k_Co53_n_to_He4_Mn50_reaclib, k_Mn50_He4_to_n_Co53_reaclib, + He4, Co53, -1, H1, Ni56, -1, Co53, Ni56, k_Co53_He4_to_p_Ni56_reaclib, k_Ni56_p_to_He4_Co53_reaclib, + N, Co54, -1, H1, Fe54, -1, Co54, Fe54, k_Co54_n_to_p_Fe54_reaclib, k_Fe54_p_to_n_Co54_reaclib, + N, Co54, -1, He4, Mn51, -1, Co54, Mn51, k_Co54_n_to_He4_Mn51_reaclib, k_Mn51_He4_to_n_Co54_reaclib, + He4, Co54, -1, H1, Ni57, -1, Co54, Ni57, k_Co54_He4_to_p_Ni57_reaclib, k_Ni57_p_to_He4_Co54_reaclib, + N, Co55, -1, H1, Fe55, -1, Co55, Fe55, k_Co55_n_to_p_Fe55_reaclib, k_Fe55_p_to_n_Co55_reaclib, + N, Co55, -1, He4, Mn52, -1, Co55, Mn52, k_Co55_n_to_He4_Mn52_reaclib, k_Mn52_He4_to_n_Co55_reaclib, + He4, Co55, -1, H1, Ni58, -1, Co55, Ni58, k_Co55_He4_to_p_Ni58_reaclib, k_Ni58_p_to_He4_Co55_reaclib, + N, Co56, -1, H1, Fe56, -1, Co56, Fe56, k_Co56_n_to_p_Fe56_reaclib, k_Fe56_p_to_n_Co56_reaclib, + N, Co56, -1, He4, Mn53, -1, Co56, Mn53, k_Co56_n_to_He4_Mn53_reaclib, k_Mn53_He4_to_n_Co56_reaclib, + He4, Co56, -1, H1, Ni59, -1, Co56, Ni59, k_Co56_He4_to_p_Ni59_reaclib, k_Ni59_p_to_He4_Co56_reaclib, + N, Co57, -1, H1, Fe57, -1, Co57, Fe57, k_Co57_n_to_p_Fe57_reaclib, k_Fe57_p_to_n_Co57_reaclib, + N, Co57, -1, He4, Mn54, -1, Co57, Mn54, k_Co57_n_to_He4_Mn54_reaclib, k_Mn54_He4_to_n_Co57_reaclib, + H1, Co57, -1, He4, Fe54, -1, Co57, Fe54, k_Co57_p_to_He4_Fe54_reaclib, k_Fe54_He4_to_p_Co57_reaclib, + He4, Co57, -1, H1, Ni60, -1, Co57, Ni60, k_Co57_He4_to_p_Ni60_reaclib, k_Ni60_p_to_He4_Co57_reaclib, + N, Co58, -1, H1, Fe58, -1, Co58, Fe58, k_Co58_n_to_p_Fe58_reaclib, k_Fe58_p_to_n_Co58_reaclib, + N, Co58, -1, He4, Mn55, -1, Co58, Mn55, k_Co58_n_to_He4_Mn55_reaclib, k_Mn55_He4_to_n_Co58_reaclib, + H1, Co58, -1, He4, Fe55, -1, Co58, Fe55, k_Co58_p_to_He4_Fe55_reaclib, k_Fe55_He4_to_p_Co58_reaclib, + H1, Co59, -1, He4, Fe56, -1, Co59, Fe56, k_Co59_p_to_He4_Fe56_reaclib, k_Fe56_He4_to_p_Co59_reaclib, + N, Ni56, -1, H1, Co56, -1, Ni56, Co56, k_Ni56_n_to_p_Co56_reaclib, k_Co56_p_to_n_Ni56_reaclib, + N, Ni56, -1, He4, Fe53, -1, Ni56, Fe53, k_Ni56_n_to_He4_Fe53_reaclib, k_Fe53_He4_to_n_Ni56_reaclib, + N, Ni57, -1, H1, Co57, -1, Ni57, Co57, k_Ni57_n_to_p_Co57_reaclib, k_Co57_p_to_n_Ni57_reaclib, + N, Ni57, -1, He4, Fe54, -1, Ni57, Fe54, k_Ni57_n_to_He4_Fe54_reaclib, k_Fe54_He4_to_n_Ni57_reaclib, + N, Ni58, -1, H1, Co58, -1, Ni58, Co58, k_Ni58_n_to_p_Co58_reaclib, k_Co58_p_to_n_Ni58_reaclib, + N, Ni58, -1, He4, Fe55, -1, Ni58, Fe55, k_Ni58_n_to_He4_Fe55_reaclib, k_Fe55_He4_to_n_Ni58_reaclib, + N, Ni59, -1, H1, Co59, -1, Ni59, Co59, k_Ni59_n_to_p_Co59_reaclib, k_Co59_p_to_n_Ni59_reaclib, + N, Ni59, -1, He4, Fe56, -1, Ni59, Fe56, k_Ni59_n_to_He4_Fe56_reaclib, k_Fe56_He4_to_n_Ni59_reaclib, + N, Ni60, -1, He4, Fe57, -1, Ni60, Fe57, k_Ni60_n_to_He4_Fe57_reaclib, k_Fe57_He4_to_n_Ni60_reaclib, + N, Ni61, -1, He4, Fe58, -1, Ni61, Fe58, k_Ni61_n_to_He4_Fe58_reaclib, k_Fe58_He4_to_n_Ni61_reaclib, + H1, Ni61, -1, He4, Co58, -1, Ni61, Co58, k_Ni61_p_to_He4_Co58_reaclib, k_Co58_He4_to_p_Ni61_reaclib, + H1, Ni62, -1, He4, Co59, -1, Ni62, Co59, k_Ni62_p_to_He4_Co59_reaclib, k_Co59_He4_to_p_Ni62_reaclib, + N, Cu57, -1, H1, Ni57, -1, Cu57, Ni57, k_Cu57_n_to_p_Ni57_reaclib, k_Ni57_p_to_n_Cu57_reaclib, + N, Cu57, -1, He4, Co54, -1, Cu57, Co54, k_Cu57_n_to_He4_Co54_reaclib, k_Co54_He4_to_n_Cu57_reaclib, + He4, Cu57, -1, H1, Zn60, -1, Cu57, Zn60, k_Cu57_He4_to_p_Zn60_reaclib, k_Zn60_p_to_He4_Cu57_reaclib, + N, Cu58, -1, H1, Ni58, -1, Cu58, Ni58, k_Cu58_n_to_p_Ni58_reaclib, k_Ni58_p_to_n_Cu58_reaclib, + N, Cu58, -1, He4, Co55, -1, Cu58, Co55, k_Cu58_n_to_He4_Co55_reaclib, k_Co55_He4_to_n_Cu58_reaclib, + N, Cu59, -1, H1, Ni59, -1, Cu59, Ni59, k_Cu59_n_to_p_Ni59_reaclib, k_Ni59_p_to_n_Cu59_reaclib, + N, Cu59, -1, He4, Co56, -1, Cu59, Co56, k_Cu59_n_to_He4_Co56_reaclib, k_Co56_He4_to_n_Cu59_reaclib, + H1, Cu59, -1, He4, Ni56, -1, Cu59, Ni56, k_Cu59_p_to_He4_Ni56_reaclib, k_Ni56_He4_to_p_Cu59_reaclib, + N, Cu60, -1, H1, Ni60, -1, Cu60, Ni60, k_Cu60_n_to_p_Ni60_reaclib, k_Ni60_p_to_n_Cu60_reaclib, + N, Cu60, -1, He4, Co57, -1, Cu60, Co57, k_Cu60_n_to_He4_Co57_reaclib, k_Co57_He4_to_n_Cu60_reaclib, + H1, Cu60, -1, He4, Ni57, -1, Cu60, Ni57, k_Cu60_p_to_He4_Ni57_reaclib, k_Ni57_He4_to_p_Cu60_reaclib, + N, Cu61, -1, H1, Ni61, -1, Cu61, Ni61, k_Cu61_n_to_p_Ni61_reaclib, k_Ni61_p_to_n_Cu61_reaclib, + N, Cu61, -1, He4, Co58, -1, Cu61, Co58, k_Cu61_n_to_He4_Co58_reaclib, k_Co58_He4_to_n_Cu61_reaclib, + H1, Cu61, -1, He4, Ni58, -1, Cu61, Ni58, k_Cu61_p_to_He4_Ni58_reaclib, k_Ni58_He4_to_p_Cu61_reaclib, + N, Cu62, -1, H1, Ni62, -1, Cu62, Ni62, k_Cu62_n_to_p_Ni62_reaclib, k_Ni62_p_to_n_Cu62_reaclib, + N, Cu62, -1, He4, Co59, -1, Cu62, Co59, k_Cu62_n_to_He4_Co59_reaclib, k_Co59_He4_to_n_Cu62_reaclib, + H1, Cu62, -1, He4, Ni59, -1, Cu62, Ni59, k_Cu62_p_to_He4_Ni59_reaclib, k_Ni59_He4_to_p_Cu62_reaclib, + N, Cu63, -1, H1, Ni63, -1, Cu63, Ni63, k_Cu63_n_to_p_Ni63_reaclib, k_Ni63_p_to_n_Cu63_reaclib, + H1, Cu63, -1, He4, Ni60, -1, Cu63, Ni60, k_Cu63_p_to_He4_Ni60_reaclib, k_Ni60_He4_to_p_Cu63_reaclib, + N, Cu64, -1, H1, Ni64, -1, Cu64, Ni64, k_Cu64_n_to_p_Ni64_reaclib, k_Ni64_p_to_n_Cu64_reaclib, + H1, Cu64, -1, He4, Ni61, -1, Cu64, Ni61, k_Cu64_p_to_He4_Ni61_reaclib, k_Ni61_He4_to_p_Cu64_reaclib, + H1, Cu65, -1, He4, Ni62, -1, Cu65, Ni62, k_Cu65_p_to_He4_Ni62_reaclib, k_Ni62_He4_to_p_Cu65_reaclib, + N, Zn59, -1, H1, Cu59, -1, Zn59, Cu59, k_Zn59_n_to_p_Cu59_reaclib, k_Cu59_p_to_n_Zn59_reaclib, + N, Zn59, -1, He4, Ni56, -1, Zn59, Ni56, k_Zn59_n_to_He4_Ni56_reaclib, k_Ni56_He4_to_n_Zn59_reaclib, + N, Zn60, -1, H1, Cu60, -1, Zn60, Cu60, k_Zn60_n_to_p_Cu60_reaclib, k_Cu60_p_to_n_Zn60_reaclib, + N, Zn60, -1, He4, Ni57, -1, Zn60, Ni57, k_Zn60_n_to_He4_Ni57_reaclib, k_Ni57_He4_to_n_Zn60_reaclib, + N, Zn61, -1, H1, Cu61, -1, Zn61, Cu61, k_Zn61_n_to_p_Cu61_reaclib, k_Cu61_p_to_n_Zn61_reaclib, + N, Zn61, -1, He4, Ni58, -1, Zn61, Ni58, k_Zn61_n_to_He4_Ni58_reaclib, k_Ni58_He4_to_n_Zn61_reaclib, + H1, Zn61, -1, He4, Cu58, -1, Zn61, Cu58, k_Zn61_p_to_He4_Cu58_reaclib, k_Cu58_He4_to_p_Zn61_reaclib, + N, Zn62, -1, H1, Cu62, -1, Zn62, Cu62, k_Zn62_n_to_p_Cu62_reaclib, k_Cu62_p_to_n_Zn62_reaclib, + N, Zn62, -1, He4, Ni59, -1, Zn62, Ni59, k_Zn62_n_to_He4_Ni59_reaclib, k_Ni59_He4_to_n_Zn62_reaclib, + H1, Zn62, -1, He4, Cu59, -1, Zn62, Cu59, k_Zn62_p_to_He4_Cu59_reaclib, k_Cu59_He4_to_p_Zn62_reaclib, + N, Zn63, -1, H1, Cu63, -1, Zn63, Cu63, k_Zn63_n_to_p_Cu63_reaclib, k_Cu63_p_to_n_Zn63_reaclib, + N, Zn63, -1, He4, Ni60, -1, Zn63, Ni60, k_Zn63_n_to_He4_Ni60_reaclib, k_Ni60_He4_to_n_Zn63_reaclib, + H1, Zn63, -1, He4, Cu60, -1, Zn63, Cu60, k_Zn63_p_to_He4_Cu60_reaclib, k_Cu60_He4_to_p_Zn63_reaclib, + N, Zn64, -1, H1, Cu64, -1, Zn64, Cu64, k_Zn64_n_to_p_Cu64_reaclib, k_Cu64_p_to_n_Zn64_reaclib, + N, Zn64, -1, He4, Ni61, -1, Zn64, Ni61, k_Zn64_n_to_He4_Ni61_reaclib, k_Ni61_He4_to_n_Zn64_reaclib, + H1, Zn64, -1, He4, Cu61, -1, Zn64, Cu61, k_Zn64_p_to_He4_Cu61_reaclib, k_Cu61_He4_to_p_Zn64_reaclib, + N, Zn65, -1, H1, Cu65, -1, Zn65, Cu65, k_Zn65_n_to_p_Cu65_reaclib, k_Cu65_p_to_n_Zn65_reaclib, + N, Zn65, -1, He4, Ni62, -1, Zn65, Ni62, k_Zn65_n_to_He4_Ni62_reaclib, k_Ni62_He4_to_n_Zn65_reaclib, + H1, Zn65, -1, He4, Cu62, -1, Zn65, Cu62, k_Zn65_p_to_He4_Cu62_reaclib, k_Cu62_He4_to_p_Zn65_reaclib, + N, Zn66, -1, He4, Ni63, -1, Zn66, Ni63, k_Zn66_n_to_He4_Ni63_reaclib, k_Ni63_He4_to_n_Zn66_reaclib, + H1, Zn66, -1, He4, Cu63, -1, Zn66, Cu63, k_Zn66_p_to_He4_Cu63_reaclib, k_Cu63_He4_to_p_Zn66_reaclib, + N, Ga62, -1, H1, Zn62, -1, Ga62, Zn62, k_Ga62_n_to_p_Zn62_reaclib, k_Zn62_p_to_n_Ga62_reaclib, + N, Ga62, -1, He4, Cu59, -1, Ga62, Cu59, k_Ga62_n_to_He4_Cu59_reaclib, k_Cu59_He4_to_n_Ga62_reaclib, + H1, Ga62, -1, He4, Zn59, -1, Ga62, Zn59, k_Ga62_p_to_He4_Zn59_reaclib, k_Zn59_He4_to_p_Ga62_reaclib, + N, Ga63, -1, H1, Zn63, -1, Ga63, Zn63, k_Ga63_n_to_p_Zn63_reaclib, k_Zn63_p_to_n_Ga63_reaclib, + N, Ga63, -1, He4, Cu60, -1, Ga63, Cu60, k_Ga63_n_to_He4_Cu60_reaclib, k_Cu60_He4_to_n_Ga63_reaclib, + H1, Ga63, -1, He4, Zn60, -1, Ga63, Zn60, k_Ga63_p_to_He4_Zn60_reaclib, k_Zn60_He4_to_p_Ga63_reaclib, + N, Ga64, -1, H1, Zn64, -1, Ga64, Zn64, k_Ga64_n_to_p_Zn64_reaclib, k_Zn64_p_to_n_Ga64_reaclib, + N, Ga64, -1, He4, Cu61, -1, Ga64, Cu61, k_Ga64_n_to_He4_Cu61_reaclib, k_Cu61_He4_to_n_Ga64_reaclib, + H1, Ga64, -1, He4, Zn61, -1, Ga64, Zn61, k_Ga64_p_to_He4_Zn61_reaclib, k_Zn61_He4_to_p_Ga64_reaclib, + N, Ge63, -1, H1, Ga63, -1, Ge63, Ga63, k_Ge63_n_to_p_Ga63_reaclib, k_Ga63_p_to_n_Ge63_reaclib, + N, Ge63, -1, He4, Zn60, -1, Ge63, Zn60, k_Ge63_n_to_He4_Zn60_reaclib, k_Zn60_He4_to_n_Ge63_reaclib, + N, Ge64, -1, H1, Ga64, -1, Ge64, Ga64, k_Ge64_n_to_p_Ga64_reaclib, k_Ga64_p_to_n_Ge64_reaclib, + N, Ge64, -1, He4, Zn61, -1, Ge64, Zn61, k_Ge64_n_to_He4_Zn61_reaclib, k_Zn61_He4_to_n_Ge64_reaclib, + He4, He4, He4, C12, -1, -1, C12, -1, k_He4_He4_He4_to_C12_reaclib, k_C12_to_3He4_reaclib }; } #endif diff --git a/networks/sn160/actual_rhs.H b/networks/sn160/actual_rhs.H index 598e0fa3d..af05a4f76 100644 --- a/networks/sn160/actual_rhs.H +++ b/networks/sn160/actual_rhs.H @@ -19,17 +19,12 @@ #include #include #include -#include +#include #include +#include #include using namespace amrex::literals; -using namespace ArrayUtil; - -using namespace Species; -using namespace Rates; - -using namespace rate_tables; template AMREX_GPU_DEVICE AMREX_INLINE @@ -58,6 +53,8 @@ void evaluate_screening(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // Evaluate screening terms using number_t = std::conditional_t; @@ -3072,9 +3069,11 @@ void evaluate_rates(const burn_t& state, const amrex::Array1D& Y, T& rate_eval) { + using namespace Rates; + // here Y is consistent with state.xn - [[maybe_unused]] amrex::Real rhoy = state.rho * state.y_e; + [[maybe_unused]] const amrex::Real rhoy = state.rho * state.y_e; const tf_t tfactors = evaluate_tfactors(state.T); @@ -3086,7 +3085,9 @@ void evaluate_rates(const burn_t& state, // Fill in different rates - fill_reaclib_rates(tfactors, rate_eval); + reaclib_rates::fill_rates(tfactors, rate_eval); + + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); temp_tabular::fill_rates(tfactors, rate_eval); @@ -3094,1371 +3095,20 @@ void evaluate_rates(const burn_t& state, // TemperatureTabular/StarLib rates as the original rate modified_rates::fill_rates(tfactors, rate_eval); + // fill branched rates -- these can have ReacLib or + // TemperatureTabular/StarLib as the underlying rate or branches. + branched_rates::fill_rates(tfactors, rate_eval); + // Calculate Derived Rates next. This should go last but before // approx rates, since those may have ReacLibRate, // TemperatureTabularRate / StarLibRate, or DerivedRate as the // underlying rate. + derived_rates::fill_rates(tfactors, rate_eval); - fill_derived_rates(tfactors, rate_eval); // Fill approximate rates - - fill_approx_rates(tfactors, state.rho, Y, rate_eval); - - // Calculate tabular weak rates - - [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; - - rate_eval.enuc_weak = 0.0_rt; - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Na21_Ne21_meta, j_Na21_Ne21_rhoy, j_Na21_Ne21_temp, j_Na21_Ne21_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na21_to_Ne21_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na21_to_Ne21_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Na21) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne21_Na21_meta, j_Ne21_Na21_rhoy, j_Ne21_Na21_temp, j_Ne21_Na21_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne21_to_Na21_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne21_to_Na21_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne21) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na22_Ne22_meta, j_Na22_Ne22_rhoy, j_Na22_Ne22_temp, j_Na22_Ne22_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na22_to_Ne22_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_Ne22_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne22_Na22_meta, j_Ne22_Na22_rhoy, j_Ne22_Na22_temp, j_Ne22_Na22_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne22_to_Na22_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne22_to_Na22_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ne22) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg23_Na23_meta, j_Mg23_Na23_rhoy, j_Mg23_Na23_temp, j_Mg23_Na23_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg23_to_Na23_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg23_to_Na23_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mg23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na23_Mg23_meta, j_Na23_Mg23_rhoy, j_Na23_Mg23_temp, j_Na23_Mg23_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na23_to_Mg23_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_Mg23_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Al25_Mg25_meta, j_Al25_Mg25_rhoy, j_Al25_Mg25_temp, j_Al25_Mg25_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Al25_to_Mg25_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al25_to_Mg25_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Al25) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg25_Al25_meta, j_Mg25_Al25_rhoy, j_Mg25_Al25_temp, j_Mg25_Al25_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg25_to_Al25_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg25_to_Al25_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mg25) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Al26_Mg26_meta, j_Al26_Mg26_rhoy, j_Al26_Mg26_temp, j_Al26_Mg26_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Al26_to_Mg26_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al26_to_Mg26_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Al26) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg26_Al26_meta, j_Mg26_Al26_rhoy, j_Mg26_Al26_temp, j_Mg26_Al26_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg26_to_Al26_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg26_to_Al26_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mg26) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P29_Si29_meta, j_P29_Si29_rhoy, j_P29_Si29_temp, j_P29_Si29_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P29_to_Si29_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P29_to_Si29_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(P29) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Si29_P29_meta, j_Si29_P29_rhoy, j_Si29_P29_temp, j_Si29_P29_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Si29_to_P29_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si29_to_P29_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Si29) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P30_Si30_meta, j_P30_Si30_rhoy, j_P30_Si30_temp, j_P30_Si30_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P30_to_Si30_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P30_to_Si30_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(P30) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Si30_P30_meta, j_Si30_P30_rhoy, j_Si30_P30_temp, j_Si30_P30_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Si30_to_P30_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si30_to_P30_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Si30) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P31_Si31_meta, j_P31_Si31_rhoy, j_P31_Si31_temp, j_P31_Si31_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P31_to_Si31_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P31_to_Si31_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(P31) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Si31_P31_meta, j_Si31_P31_rhoy, j_Si31_P31_temp, j_Si31_P31_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Si31_to_P31_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si31_to_P31_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Si31) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P32_S32_meta, j_P32_S32_rhoy, j_P32_S32_temp, j_P32_S32_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P32_to_S32_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P32_to_S32_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(P32) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P32_Si32_meta, j_P32_Si32_rhoy, j_P32_Si32_temp, j_P32_Si32_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P32_to_Si32_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P32_to_Si32_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(P32) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S32_P32_meta, j_S32_P32_rhoy, j_S32_P32_temp, j_S32_P32_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S32_to_P32_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_P32_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(S32) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Si32_P32_meta, j_Si32_P32_rhoy, j_Si32_P32_temp, j_Si32_P32_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Si32_to_P32_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si32_to_P32_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Si32) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl33_S33_meta, j_Cl33_S33_rhoy, j_Cl33_S33_temp, j_Cl33_S33_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl33_to_S33_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl33_to_S33_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cl33) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P33_S33_meta, j_P33_S33_rhoy, j_P33_S33_temp, j_P33_S33_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P33_to_S33_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P33_to_S33_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(P33) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S33_Cl33_meta, j_S33_Cl33_rhoy, j_S33_Cl33_temp, j_S33_Cl33_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S33_to_Cl33_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S33_to_Cl33_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(S33) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S33_P33_meta, j_S33_P33_rhoy, j_S33_P33_temp, j_S33_P33_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S33_to_P33_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S33_to_P33_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(S33) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl34_S34_meta, j_Cl34_S34_rhoy, j_Cl34_S34_temp, j_Cl34_S34_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl34_to_S34_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl34_to_S34_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cl34) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S34_Cl34_meta, j_S34_Cl34_rhoy, j_S34_Cl34_temp, j_S34_Cl34_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S34_to_Cl34_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S34_to_Cl34_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(S34) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl35_S35_meta, j_Cl35_S35_rhoy, j_Cl35_S35_temp, j_Cl35_S35_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl35_to_S35_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl35_to_S35_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cl35) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S35_Cl35_meta, j_S35_Cl35_rhoy, j_S35_Cl35_temp, j_S35_Cl35_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S35_to_Cl35_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S35_to_Cl35_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(S35) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar36_Cl36_meta, j_Ar36_Cl36_rhoy, j_Ar36_Cl36_temp, j_Ar36_Cl36_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar36_to_Cl36_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_Cl36_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ar36) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl36_Ar36_meta, j_Cl36_Ar36_rhoy, j_Cl36_Ar36_temp, j_Cl36_Ar36_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl36_to_Ar36_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl36_to_Ar36_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cl36) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl36_S36_meta, j_Cl36_S36_rhoy, j_Cl36_S36_temp, j_Cl36_S36_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl36_to_S36_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl36_to_S36_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cl36) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S36_Cl36_meta, j_S36_Cl36_rhoy, j_S36_Cl36_temp, j_S36_Cl36_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S36_to_Cl36_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S36_to_Cl36_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(S36) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar37_Cl37_meta, j_Ar37_Cl37_rhoy, j_Ar37_Cl37_temp, j_Ar37_Cl37_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar37_to_Cl37_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar37_to_Cl37_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ar37) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar37_K37_meta, j_Ar37_K37_rhoy, j_Ar37_K37_temp, j_Ar37_K37_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar37_to_K37_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar37_to_K37_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ar37) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl37_Ar37_meta, j_Cl37_Ar37_rhoy, j_Cl37_Ar37_temp, j_Cl37_Ar37_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl37_to_Ar37_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl37_to_Ar37_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cl37) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K37_Ar37_meta, j_K37_Ar37_rhoy, j_K37_Ar37_temp, j_K37_Ar37_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K37_to_Ar37_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K37_to_Ar37_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(K37) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar38_K38_meta, j_Ar38_K38_rhoy, j_Ar38_K38_temp, j_Ar38_K38_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar38_to_K38_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar38_to_K38_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ar38) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K38_Ar38_meta, j_K38_Ar38_rhoy, j_K38_Ar38_temp, j_K38_Ar38_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K38_to_Ar38_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K38_to_Ar38_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(K38) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar39_K39_meta, j_Ar39_K39_rhoy, j_Ar39_K39_temp, j_Ar39_K39_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar39_to_K39_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar39_to_K39_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ar39) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K39_Ar39_meta, j_K39_Ar39_rhoy, j_K39_Ar39_temp, j_K39_Ar39_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K39_to_Ar39_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K39_to_Ar39_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(K39) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar40_K40_meta, j_Ar40_K40_rhoy, j_Ar40_K40_temp, j_Ar40_K40_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar40_to_K40_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar40_to_K40_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ar40) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca40_K40_meta, j_Ca40_K40_rhoy, j_Ca40_K40_temp, j_Ca40_K40_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca40_to_K40_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_K40_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ca40) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K40_Ar40_meta, j_K40_Ar40_rhoy, j_K40_Ar40_temp, j_K40_Ar40_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K40_to_Ar40_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K40_to_Ar40_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(K40) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K40_Ca40_meta, j_K40_Ca40_rhoy, j_K40_Ca40_temp, j_K40_Ca40_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K40_to_Ca40_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K40_to_Ca40_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(K40) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca41_K41_meta, j_Ca41_K41_rhoy, j_Ca41_K41_temp, j_Ca41_K41_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca41_to_K41_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca41_to_K41_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ca41) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K41_Ca41_meta, j_K41_Ca41_rhoy, j_K41_Ca41_temp, j_K41_Ca41_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K41_to_Ca41_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K41_to_Ca41_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(K41) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca43_Sc43_meta, j_Ca43_Sc43_rhoy, j_Ca43_Sc43_temp, j_Ca43_Sc43_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca43_to_Sc43_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca43_to_Sc43_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ca43) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc43_Ca43_meta, j_Sc43_Ca43_rhoy, j_Sc43_Ca43_temp, j_Sc43_Ca43_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc43_to_Ca43_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc43_to_Ca43_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc43) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca44_Sc44_meta, j_Ca44_Sc44_rhoy, j_Ca44_Sc44_temp, j_Ca44_Sc44_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca44_to_Sc44_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca44_to_Sc44_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ca44) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc44_Ca44_meta, j_Sc44_Ca44_rhoy, j_Sc44_Ca44_temp, j_Sc44_Ca44_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc44_to_Ca44_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc44_to_Ca44_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc44) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc44_Ti44_meta, j_Sc44_Ti44_rhoy, j_Sc44_Ti44_temp, j_Sc44_Ti44_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc44_to_Ti44_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc44_to_Ti44_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc44) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti44_Sc44_meta, j_Ti44_Sc44_rhoy, j_Ti44_Sc44_temp, j_Ti44_Sc44_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti44_to_Sc44_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_Sc44_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti44) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co53_Fe53_meta, j_Co53_Fe53_rhoy, j_Co53_Fe53_temp, j_Co53_Fe53_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co53_to_Fe53_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co53_to_Fe53_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe53_Co53_meta, j_Fe53_Co53_rhoy, j_Fe53_Co53_temp, j_Fe53_Co53_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe53_to_Co53_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_Co53_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu57_Ni57_meta, j_Cu57_Ni57_rhoy, j_Cu57_Ni57_temp, j_Cu57_Ni57_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu57_to_Ni57_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu57_to_Ni57_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni57_Cu57_meta, j_Ni57_Cu57_rhoy, j_Ni57_Cu57_temp, j_Ni57_Cu57_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni57_to_Cu57_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_Cu57_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca45_Sc45_meta, j_Ca45_Sc45_rhoy, j_Ca45_Sc45_temp, j_Ca45_Sc45_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca45_to_Sc45_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca45_to_Sc45_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ca45) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc45_Ca45_meta, j_Sc45_Ca45_rhoy, j_Sc45_Ca45_temp, j_Sc45_Ca45_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc45_to_Ca45_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc45_to_Ca45_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc45) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc45_Ti45_meta, j_Sc45_Ti45_rhoy, j_Sc45_Ti45_temp, j_Sc45_Ti45_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc45_to_Ti45_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc45_to_Ti45_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc45) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti45_Sc45_meta, j_Ti45_Sc45_rhoy, j_Ti45_Sc45_temp, j_Ti45_Sc45_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti45_to_Sc45_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti45_to_Sc45_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti45) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca46_Sc46_meta, j_Ca46_Sc46_rhoy, j_Ca46_Sc46_temp, j_Ca46_Sc46_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca46_to_Sc46_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca46_to_Sc46_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ca46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc46_Ca46_meta, j_Sc46_Ca46_rhoy, j_Sc46_Ca46_temp, j_Sc46_Ca46_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc46_to_Ca46_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc46_to_Ca46_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc46_Ti46_meta, j_Sc46_Ti46_rhoy, j_Sc46_Ti46_temp, j_Sc46_Ti46_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc46_to_Ti46_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc46_to_Ti46_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti46_Sc46_meta, j_Ti46_Sc46_rhoy, j_Ti46_Sc46_temp, j_Ti46_Sc46_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti46_to_Sc46_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti46_to_Sc46_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti46_V46_meta, j_Ti46_V46_rhoy, j_Ti46_V46_temp, j_Ti46_V46_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti46_to_V46_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti46_to_V46_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V46_Ti46_meta, j_V46_Ti46_rhoy, j_V46_Ti46_temp, j_V46_Ti46_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V46_to_Ti46_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V46_to_Ti46_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca47_Sc47_meta, j_Ca47_Sc47_rhoy, j_Ca47_Sc47_temp, j_Ca47_Sc47_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca47_to_Sc47_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca47_to_Sc47_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ca47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc47_Ca47_meta, j_Sc47_Ca47_rhoy, j_Sc47_Ca47_temp, j_Sc47_Ca47_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc47_to_Ca47_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc47_to_Ca47_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc47_Ti47_meta, j_Sc47_Ti47_rhoy, j_Sc47_Ti47_temp, j_Sc47_Ti47_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc47_to_Ti47_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc47_to_Ti47_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti47_Sc47_meta, j_Ti47_Sc47_rhoy, j_Ti47_Sc47_temp, j_Ti47_Sc47_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti47_to_Sc47_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti47_to_Sc47_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti47_V47_meta, j_Ti47_V47_rhoy, j_Ti47_V47_temp, j_Ti47_V47_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti47_to_V47_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti47_to_V47_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V47_Ti47_meta, j_V47_Ti47_rhoy, j_V47_Ti47_temp, j_V47_Ti47_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V47_to_Ti47_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V47_to_Ti47_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca48_Sc48_meta, j_Ca48_Sc48_rhoy, j_Ca48_Sc48_temp, j_Ca48_Sc48_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca48_to_Sc48_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca48_to_Sc48_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ca48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr48_V48_meta, j_Cr48_V48_rhoy, j_Cr48_V48_temp, j_Cr48_V48_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr48_to_V48_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_V48_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc48_Ca48_meta, j_Sc48_Ca48_rhoy, j_Sc48_Ca48_temp, j_Sc48_Ca48_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc48_to_Ca48_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc48_to_Ca48_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc48_Ti48_meta, j_Sc48_Ti48_rhoy, j_Sc48_Ti48_temp, j_Sc48_Ti48_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc48_to_Ti48_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc48_to_Ti48_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti48_Sc48_meta, j_Ti48_Sc48_rhoy, j_Ti48_Sc48_temp, j_Ti48_Sc48_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti48_to_Sc48_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti48_to_Sc48_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti48_V48_meta, j_Ti48_V48_rhoy, j_Ti48_V48_temp, j_Ti48_V48_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti48_to_V48_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti48_to_V48_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V48_Cr48_meta, j_V48_Cr48_rhoy, j_V48_Cr48_temp, j_V48_Cr48_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V48_to_Cr48_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V48_to_Cr48_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V48_Ti48_meta, j_V48_Ti48_rhoy, j_V48_Ti48_temp, j_V48_Ti48_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V48_to_Ti48_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V48_to_Ti48_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr49_V49_meta, j_Cr49_V49_rhoy, j_Cr49_V49_temp, j_Cr49_V49_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr49_to_V49_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr49_to_V49_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc49_Ti49_meta, j_Sc49_Ti49_rhoy, j_Sc49_Ti49_temp, j_Sc49_Ti49_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc49_to_Ti49_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc49_to_Ti49_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Sc49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti49_Sc49_meta, j_Ti49_Sc49_rhoy, j_Ti49_Sc49_temp, j_Ti49_Sc49_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti49_to_Sc49_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti49_to_Sc49_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti49_V49_meta, j_Ti49_V49_rhoy, j_Ti49_V49_temp, j_Ti49_V49_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti49_to_V49_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti49_to_V49_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V49_Cr49_meta, j_V49_Cr49_rhoy, j_V49_Cr49_temp, j_V49_Cr49_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V49_to_Cr49_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V49_to_Cr49_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V49_Ti49_meta, j_V49_Ti49_rhoy, j_V49_Ti49_temp, j_V49_Ti49_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V49_to_Ti49_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V49_to_Ti49_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr50_Mn50_meta, j_Cr50_Mn50_rhoy, j_Cr50_Mn50_temp, j_Cr50_Mn50_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr50_to_Mn50_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr50_to_Mn50_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr50_V50_meta, j_Cr50_V50_rhoy, j_Cr50_V50_temp, j_Cr50_V50_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr50_to_V50_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr50_to_V50_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn50_Cr50_meta, j_Mn50_Cr50_rhoy, j_Mn50_Cr50_temp, j_Mn50_Cr50_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn50_to_Cr50_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn50_to_Cr50_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti50_V50_meta, j_Ti50_V50_rhoy, j_Ti50_V50_temp, j_Ti50_V50_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti50_to_V50_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti50_to_V50_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V50_Cr50_meta, j_V50_Cr50_rhoy, j_V50_Cr50_temp, j_V50_Cr50_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V50_to_Cr50_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V50_to_Cr50_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V50_Ti50_meta, j_V50_Ti50_rhoy, j_V50_Ti50_temp, j_V50_Ti50_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V50_to_Ti50_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V50_to_Ti50_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr51_Mn51_meta, j_Cr51_Mn51_rhoy, j_Cr51_Mn51_temp, j_Cr51_Mn51_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr51_to_Mn51_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr51_to_Mn51_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr51_V51_meta, j_Cr51_V51_rhoy, j_Cr51_V51_temp, j_Cr51_V51_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr51_to_V51_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr51_to_V51_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn51_Cr51_meta, j_Mn51_Cr51_rhoy, j_Mn51_Cr51_temp, j_Mn51_Cr51_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn51_to_Cr51_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn51_to_Cr51_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti51_V51_meta, j_Ti51_V51_rhoy, j_Ti51_V51_temp, j_Ti51_V51_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti51_to_V51_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti51_to_V51_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ti51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V51_Cr51_meta, j_V51_Cr51_rhoy, j_V51_Cr51_temp, j_V51_Cr51_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V51_to_Cr51_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V51_to_Cr51_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V51_Ti51_meta, j_V51_Ti51_rhoy, j_V51_Ti51_temp, j_V51_Ti51_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V51_to_Ti51_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V51_to_Ti51_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr52_Mn52_meta, j_Cr52_Mn52_rhoy, j_Cr52_Mn52_temp, j_Cr52_Mn52_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr52_to_Mn52_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr52_to_Mn52_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr52_V52_meta, j_Cr52_V52_rhoy, j_Cr52_V52_temp, j_Cr52_V52_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr52_to_V52_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr52_to_V52_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe52_Mn52_meta, j_Fe52_Mn52_rhoy, j_Fe52_Mn52_temp, j_Fe52_Mn52_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe52_to_Mn52_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_Mn52_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn52_Cr52_meta, j_Mn52_Cr52_rhoy, j_Mn52_Cr52_temp, j_Mn52_Cr52_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn52_to_Cr52_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn52_to_Cr52_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn52_Fe52_meta, j_Mn52_Fe52_rhoy, j_Mn52_Fe52_temp, j_Mn52_Fe52_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn52_to_Fe52_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn52_to_Fe52_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V52_Cr52_meta, j_V52_Cr52_rhoy, j_V52_Cr52_temp, j_V52_Cr52_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V52_to_Cr52_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V52_to_Cr52_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(V52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr53_Mn53_meta, j_Cr53_Mn53_rhoy, j_Cr53_Mn53_temp, j_Cr53_Mn53_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr53_to_Mn53_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr53_to_Mn53_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe53_Mn53_meta, j_Fe53_Mn53_rhoy, j_Fe53_Mn53_temp, j_Fe53_Mn53_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe53_to_Mn53_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_Mn53_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn53_Cr53_meta, j_Mn53_Cr53_rhoy, j_Mn53_Cr53_temp, j_Mn53_Cr53_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn53_to_Cr53_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn53_to_Cr53_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn53_Fe53_meta, j_Mn53_Fe53_rhoy, j_Mn53_Fe53_temp, j_Mn53_Fe53_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn53_to_Fe53_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn53_to_Fe53_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co54_Fe54_meta, j_Co54_Fe54_rhoy, j_Co54_Fe54_temp, j_Co54_Fe54_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co54_to_Fe54_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co54_to_Fe54_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr54_Mn54_meta, j_Cr54_Mn54_rhoy, j_Cr54_Mn54_temp, j_Cr54_Mn54_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr54_to_Mn54_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr54_to_Mn54_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cr54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe54_Co54_meta, j_Fe54_Co54_rhoy, j_Fe54_Co54_temp, j_Fe54_Co54_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe54_to_Co54_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_Co54_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe54_Mn54_meta, j_Fe54_Mn54_rhoy, j_Fe54_Mn54_temp, j_Fe54_Mn54_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe54_to_Mn54_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_Mn54_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn54_Cr54_meta, j_Mn54_Cr54_rhoy, j_Mn54_Cr54_temp, j_Mn54_Cr54_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn54_to_Cr54_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn54_to_Cr54_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn54_Fe54_meta, j_Mn54_Fe54_rhoy, j_Mn54_Fe54_temp, j_Mn54_Fe54_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn54_to_Fe54_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn54_to_Fe54_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co55_Fe55_meta, j_Co55_Fe55_rhoy, j_Co55_Fe55_temp, j_Co55_Fe55_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co55_to_Fe55_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_Fe55_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe55_Co55_meta, j_Fe55_Co55_rhoy, j_Fe55_Co55_temp, j_Fe55_Co55_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe55_to_Co55_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_Co55_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe55_Mn55_meta, j_Fe55_Mn55_rhoy, j_Fe55_Mn55_temp, j_Fe55_Mn55_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe55_to_Mn55_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_Mn55_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn55_Fe55_meta, j_Mn55_Fe55_rhoy, j_Mn55_Fe55_temp, j_Mn55_Fe55_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn55_to_Fe55_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn55_to_Fe55_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Mn55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co57_Fe57_meta, j_Co57_Fe57_rhoy, j_Co57_Fe57_temp, j_Co57_Fe57_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co57_to_Fe57_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_Fe57_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co57_Ni57_meta, j_Co57_Ni57_rhoy, j_Co57_Ni57_temp, j_Co57_Ni57_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co57_to_Ni57_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_Ni57_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe57_Co57_meta, j_Fe57_Co57_rhoy, j_Fe57_Co57_temp, j_Fe57_Co57_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe57_to_Co57_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe57_to_Co57_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni57_Co57_meta, j_Ni57_Co57_rhoy, j_Ni57_Co57_temp, j_Ni57_Co57_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni57_to_Co57_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_Co57_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co58_Fe58_meta, j_Co58_Fe58_rhoy, j_Co58_Fe58_temp, j_Co58_Fe58_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co58_to_Fe58_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co58_to_Fe58_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co58_Ni58_meta, j_Co58_Ni58_rhoy, j_Co58_Ni58_temp, j_Co58_Ni58_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co58_to_Ni58_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co58_to_Ni58_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu58_Ni58_meta, j_Cu58_Ni58_rhoy, j_Cu58_Ni58_temp, j_Cu58_Ni58_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu58_to_Ni58_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu58_to_Ni58_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe58_Co58_meta, j_Fe58_Co58_rhoy, j_Fe58_Co58_temp, j_Fe58_Co58_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe58_to_Co58_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe58_to_Co58_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Fe58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni58_Co58_meta, j_Ni58_Co58_rhoy, j_Ni58_Co58_temp, j_Ni58_Co58_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni58_to_Co58_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_Co58_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni58_Cu58_meta, j_Ni58_Cu58_rhoy, j_Ni58_Cu58_temp, j_Ni58_Cu58_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni58_to_Cu58_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_Cu58_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co59_Ni59_meta, j_Co59_Ni59_rhoy, j_Co59_Ni59_temp, j_Co59_Ni59_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co59_to_Ni59_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co59_to_Ni59_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Co59) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu59_Ni59_meta, j_Cu59_Ni59_rhoy, j_Cu59_Ni59_temp, j_Cu59_Ni59_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu59_to_Ni59_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_Ni59_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu59) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni59_Co59_meta, j_Ni59_Co59_rhoy, j_Ni59_Co59_temp, j_Ni59_Co59_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni59_to_Co59_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni59_to_Co59_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni59) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni59_Cu59_meta, j_Ni59_Cu59_rhoy, j_Ni59_Cu59_temp, j_Ni59_Cu59_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni59_to_Cu59_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni59_to_Cu59_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni59) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu60_Ni60_meta, j_Cu60_Ni60_rhoy, j_Cu60_Ni60_temp, j_Cu60_Ni60_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu60_to_Ni60_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu60_to_Ni60_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu60) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu60_Zn60_meta, j_Cu60_Zn60_rhoy, j_Cu60_Zn60_temp, j_Cu60_Zn60_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu60_to_Zn60_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu60_to_Zn60_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu60) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni60_Cu60_meta, j_Ni60_Cu60_rhoy, j_Ni60_Cu60_temp, j_Ni60_Cu60_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni60_to_Cu60_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni60_to_Cu60_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni60) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn60_Cu60_meta, j_Zn60_Cu60_rhoy, j_Zn60_Cu60_temp, j_Zn60_Cu60_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn60_to_Cu60_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_Cu60_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn60) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu61_Ni61_meta, j_Cu61_Ni61_rhoy, j_Cu61_Ni61_temp, j_Cu61_Ni61_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu61_to_Ni61_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu61_to_Ni61_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu61) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu61_Zn61_meta, j_Cu61_Zn61_rhoy, j_Cu61_Zn61_temp, j_Cu61_Zn61_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu61_to_Zn61_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu61_to_Zn61_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu61) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni61_Cu61_meta, j_Ni61_Cu61_rhoy, j_Ni61_Cu61_temp, j_Ni61_Cu61_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni61_to_Cu61_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni61_to_Cu61_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni61) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn61_Cu61_meta, j_Zn61_Cu61_rhoy, j_Zn61_Cu61_temp, j_Zn61_Cu61_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn61_to_Cu61_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn61_to_Cu61_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn61) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu62_Ni62_meta, j_Cu62_Ni62_rhoy, j_Cu62_Ni62_temp, j_Cu62_Ni62_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu62_to_Ni62_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu62_to_Ni62_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu62_Zn62_meta, j_Cu62_Zn62_rhoy, j_Cu62_Zn62_temp, j_Cu62_Zn62_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu62_to_Zn62_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu62_to_Zn62_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ga62_Zn62_meta, j_Ga62_Zn62_rhoy, j_Ga62_Zn62_temp, j_Ga62_Zn62_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ga62_to_Zn62_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga62_to_Zn62_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ga62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni62_Cu62_meta, j_Ni62_Cu62_rhoy, j_Ni62_Cu62_temp, j_Ni62_Cu62_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni62_to_Cu62_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni62_to_Cu62_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn62_Cu62_meta, j_Zn62_Cu62_rhoy, j_Zn62_Cu62_temp, j_Zn62_Cu62_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn62_to_Cu62_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn62_to_Cu62_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn62_Ga62_meta, j_Zn62_Ga62_rhoy, j_Zn62_Ga62_temp, j_Zn62_Ga62_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn62_to_Ga62_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn62_to_Ga62_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu63_Ni63_meta, j_Cu63_Ni63_rhoy, j_Cu63_Ni63_temp, j_Cu63_Ni63_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu63_to_Ni63_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu63_to_Ni63_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu63_Zn63_meta, j_Cu63_Zn63_rhoy, j_Cu63_Zn63_temp, j_Cu63_Zn63_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu63_to_Zn63_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu63_to_Zn63_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ga63_Zn63_meta, j_Ga63_Zn63_rhoy, j_Ga63_Zn63_temp, j_Ga63_Zn63_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ga63_to_Zn63_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga63_to_Zn63_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ga63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni63_Cu63_meta, j_Ni63_Cu63_rhoy, j_Ni63_Cu63_temp, j_Ni63_Cu63_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni63_to_Cu63_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni63_to_Cu63_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn63_Cu63_meta, j_Zn63_Cu63_rhoy, j_Zn63_Cu63_temp, j_Zn63_Cu63_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn63_to_Cu63_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn63_to_Cu63_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn63_Ga63_meta, j_Zn63_Ga63_rhoy, j_Zn63_Ga63_temp, j_Zn63_Ga63_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn63_to_Ga63_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn63_to_Ga63_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu64_Ni64_meta, j_Cu64_Ni64_rhoy, j_Cu64_Ni64_temp, j_Cu64_Ni64_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu64_to_Ni64_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu64_to_Ni64_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu64_Zn64_meta, j_Cu64_Zn64_rhoy, j_Cu64_Zn64_temp, j_Cu64_Zn64_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu64_to_Zn64_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu64_to_Zn64_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ga64_Ge64_meta, j_Ga64_Ge64_rhoy, j_Ga64_Ge64_temp, j_Ga64_Ge64_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ga64_to_Ge64_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga64_to_Ge64_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ga64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ga64_Zn64_meta, j_Ga64_Zn64_rhoy, j_Ga64_Zn64_temp, j_Ga64_Zn64_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ga64_to_Zn64_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga64_to_Zn64_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ga64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ge64_Ga64_meta, j_Ge64_Ga64_rhoy, j_Ge64_Ga64_temp, j_Ge64_Ga64_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ge64_to_Ga64_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ge64_to_Ga64_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ge64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni64_Cu64_meta, j_Ni64_Cu64_rhoy, j_Ni64_Cu64_temp, j_Ni64_Cu64_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni64_to_Cu64_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni64_to_Cu64_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Ni64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn64_Cu64_meta, j_Zn64_Cu64_rhoy, j_Zn64_Cu64_temp, j_Zn64_Cu64_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn64_to_Cu64_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn64_to_Cu64_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn64_Ga64_meta, j_Zn64_Ga64_rhoy, j_Zn64_Ga64_temp, j_Zn64_Ga64_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn64_to_Ga64_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn64_to_Ga64_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu65_Zn65_meta, j_Cu65_Zn65_rhoy, j_Cu65_Zn65_temp, j_Cu65_Zn65_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu65_to_Zn65_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu65_to_Zn65_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Cu65) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn65_Cu65_meta, j_Zn65_Cu65_rhoy, j_Zn65_Cu65_temp, j_Zn65_Cu65_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn65_to_Cu65_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn65_to_Cu65_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(Zn65) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_to_p_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dt, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_to_n_weaktab) = drate_dt; - } - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); - + approximate_rates::fill_rates(tfactors, state.rho, Y, rate_eval); } @@ -4535,1037 +3185,195 @@ void get_ydot_weak(const burn_t& state, const tf_t tfactors = evaluate_tfactors(state.T); { - // Be7_to_Li7_reaclib + // Be7_to_Li7_electron_capture_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_Be7_to_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Be7_to_Li7_reaclib) = rate; + reaclib_rates::rate_Be7_to_Li7_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_to_Li7_electron_capture_reaclib) = rate; } { - // C14_to_N14_reaclib + // C14_to_N14_beta_neg_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_C14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C14_to_N14_reaclib) = rate; + reaclib_rates::rate_C14_to_N14_beta_neg_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_to_N14_beta_neg_reaclib) = rate; } { - // N13_to_C13_reaclib + // N13_to_C13_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; + reaclib_rates::rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; } { - // O14_to_N14_reaclib + // O14_to_N14_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; + reaclib_rates::rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; } { - // O15_to_N15_reaclib + // O15_to_N15_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; + reaclib_rates::rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; } { - // F17_to_O17_reaclib + // F17_to_O17_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_O17_reaclib) = rate; + reaclib_rates::rate_F17_to_O17_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_to_O17_beta_pos_reaclib) = rate; } { - // F18_to_O18_reaclib + // F18_to_O18_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F18_to_O18_reaclib) = rate; + reaclib_rates::rate_F18_to_O18_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_to_O18_beta_pos_reaclib) = rate; } { - // Ne18_to_F18_reaclib + // Ne18_to_F18_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne18_to_F18_reaclib) = rate; + reaclib_rates::rate_Ne18_to_F18_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_to_F18_beta_pos_reaclib) = rate; } { - // Ne19_to_F19_reaclib + // Ne19_to_F19_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne19_to_F19_reaclib) = rate; + reaclib_rates::rate_Ne19_to_F19_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_to_F19_beta_pos_reaclib) = rate; } { - // Zn59_to_Cu59_reaclib + // Zn59_to_Cu59_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn59_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn59_to_Cu59_reaclib) = rate; + reaclib_rates::rate_Zn59_to_Cu59_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_to_Cu59_beta_pos_reaclib) = rate; } { - // Ge63_to_Ga63_reaclib + // Ge63_to_Ga63_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ge63_to_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ge63_to_Ga63_reaclib) = rate; + reaclib_rates::rate_Ge63_to_Ga63_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge63_to_Ga63_beta_pos_reaclib) = rate; } { - // B8_to_He4_He4_reaclib + // B8_to_He4_He4_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_B8_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_He4_He4_reaclib) = rate; + reaclib_rates::rate_B8_to_He4_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_He4_He4_beta_pos_reaclib) = rate; } { - // Zn59_to_p_Ni58_reaclib + // Zn59_to_p_Ni58_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn59_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn59_to_p_Ni58_reaclib) = rate; + reaclib_rates::rate_Zn59_to_p_Ni58_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib) = rate; } { - // p_p_to_d_reaclib_beta_pos + // p_p_to_d_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_p); #endif - rate_p_p_to_d_reaclib_beta_pos(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos) = rate; + reaclib_rates::rate_p_p_to_d_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_beta_pos_reaclib) = rate; } { - // p_p_to_d_reaclib_electron_capture + // p_p_to_d_electron_capture_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_p); #endif - rate_p_p_to_d_reaclib_electron_capture(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_electron_capture) = rate; + reaclib_rates::rate_p_p_to_d_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_electron_capture_reaclib) = rate; } { - // p_He3_to_He4_reaclib + // He3_p_to_He4_beta_pos_reaclib amrex::Real log_scor {0.0_rt}; amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING log_scor = rate_eval.log_screen(k_p_He3); #endif - rate_p_He3_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He3_to_He4_reaclib) = rate; - } - - amrex::Real log_temp = std::log10(state.T); - amrex::Real log_rhoy = std::log10(rhoy); - - tabular_evaluate(j_Na21_Ne21_meta, j_Na21_Ne21_rhoy, j_Na21_Ne21_temp, j_Na21_Ne21_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na21_to_Ne21_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Na21) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne21_Na21_meta, j_Ne21_Na21_rhoy, j_Ne21_Na21_temp, j_Ne21_Na21_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne21_to_Na21_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne21) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na22_Ne22_meta, j_Na22_Ne22_rhoy, j_Na22_Ne22_temp, j_Na22_Ne22_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na22_to_Ne22_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ne22_Na22_meta, j_Ne22_Na22_rhoy, j_Ne22_Na22_temp, j_Ne22_Na22_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ne22_to_Na22_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ne22) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg23_Na23_meta, j_Mg23_Na23_rhoy, j_Mg23_Na23_temp, j_Mg23_Na23_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg23_to_Na23_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mg23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Na23_Mg23_meta, j_Na23_Mg23_rhoy, j_Na23_Mg23_temp, j_Na23_Mg23_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Na23_to_Mg23_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Al25_Mg25_meta, j_Al25_Mg25_rhoy, j_Al25_Mg25_temp, j_Al25_Mg25_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Al25_to_Mg25_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Al25) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg25_Al25_meta, j_Mg25_Al25_rhoy, j_Mg25_Al25_temp, j_Mg25_Al25_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg25_to_Al25_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mg25) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Al26_Mg26_meta, j_Al26_Mg26_rhoy, j_Al26_Mg26_temp, j_Al26_Mg26_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Al26_to_Mg26_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Al26) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mg26_Al26_meta, j_Mg26_Al26_rhoy, j_Mg26_Al26_temp, j_Mg26_Al26_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mg26_to_Al26_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mg26) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P29_Si29_meta, j_P29_Si29_rhoy, j_P29_Si29_temp, j_P29_Si29_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P29_to_Si29_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(P29) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Si29_P29_meta, j_Si29_P29_rhoy, j_Si29_P29_temp, j_Si29_P29_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Si29_to_P29_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Si29) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P30_Si30_meta, j_P30_Si30_rhoy, j_P30_Si30_temp, j_P30_Si30_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P30_to_Si30_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(P30) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Si30_P30_meta, j_Si30_P30_rhoy, j_Si30_P30_temp, j_Si30_P30_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Si30_to_P30_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Si30) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P31_Si31_meta, j_P31_Si31_rhoy, j_P31_Si31_temp, j_P31_Si31_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P31_to_Si31_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(P31) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Si31_P31_meta, j_Si31_P31_rhoy, j_Si31_P31_temp, j_Si31_P31_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Si31_to_P31_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Si31) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P32_S32_meta, j_P32_S32_rhoy, j_P32_S32_temp, j_P32_S32_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P32_to_S32_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(P32) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P32_Si32_meta, j_P32_Si32_rhoy, j_P32_Si32_temp, j_P32_Si32_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P32_to_Si32_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(P32) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S32_P32_meta, j_S32_P32_rhoy, j_S32_P32_temp, j_S32_P32_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S32_to_P32_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(S32) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Si32_P32_meta, j_Si32_P32_rhoy, j_Si32_P32_temp, j_Si32_P32_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Si32_to_P32_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Si32) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl33_S33_meta, j_Cl33_S33_rhoy, j_Cl33_S33_temp, j_Cl33_S33_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl33_to_S33_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cl33) * (edot_nu + edot_gamma); - - tabular_evaluate(j_P33_S33_meta, j_P33_S33_rhoy, j_P33_S33_temp, j_P33_S33_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_P33_to_S33_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(P33) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S33_Cl33_meta, j_S33_Cl33_rhoy, j_S33_Cl33_temp, j_S33_Cl33_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S33_to_Cl33_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(S33) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S33_P33_meta, j_S33_P33_rhoy, j_S33_P33_temp, j_S33_P33_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S33_to_P33_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(S33) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl34_S34_meta, j_Cl34_S34_rhoy, j_Cl34_S34_temp, j_Cl34_S34_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl34_to_S34_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cl34) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S34_Cl34_meta, j_S34_Cl34_rhoy, j_S34_Cl34_temp, j_S34_Cl34_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S34_to_Cl34_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(S34) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl35_S35_meta, j_Cl35_S35_rhoy, j_Cl35_S35_temp, j_Cl35_S35_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl35_to_S35_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cl35) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S35_Cl35_meta, j_S35_Cl35_rhoy, j_S35_Cl35_temp, j_S35_Cl35_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S35_to_Cl35_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(S35) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar36_Cl36_meta, j_Ar36_Cl36_rhoy, j_Ar36_Cl36_temp, j_Ar36_Cl36_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar36_to_Cl36_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ar36) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl36_Ar36_meta, j_Cl36_Ar36_rhoy, j_Cl36_Ar36_temp, j_Cl36_Ar36_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl36_to_Ar36_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cl36) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl36_S36_meta, j_Cl36_S36_rhoy, j_Cl36_S36_temp, j_Cl36_S36_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl36_to_S36_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cl36) * (edot_nu + edot_gamma); - - tabular_evaluate(j_S36_Cl36_meta, j_S36_Cl36_rhoy, j_S36_Cl36_temp, j_S36_Cl36_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_S36_to_Cl36_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(S36) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar37_Cl37_meta, j_Ar37_Cl37_rhoy, j_Ar37_Cl37_temp, j_Ar37_Cl37_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar37_to_Cl37_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ar37) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar37_K37_meta, j_Ar37_K37_rhoy, j_Ar37_K37_temp, j_Ar37_K37_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar37_to_K37_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ar37) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cl37_Ar37_meta, j_Cl37_Ar37_rhoy, j_Cl37_Ar37_temp, j_Cl37_Ar37_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cl37_to_Ar37_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cl37) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K37_Ar37_meta, j_K37_Ar37_rhoy, j_K37_Ar37_temp, j_K37_Ar37_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K37_to_Ar37_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(K37) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar38_K38_meta, j_Ar38_K38_rhoy, j_Ar38_K38_temp, j_Ar38_K38_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar38_to_K38_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ar38) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K38_Ar38_meta, j_K38_Ar38_rhoy, j_K38_Ar38_temp, j_K38_Ar38_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K38_to_Ar38_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(K38) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar39_K39_meta, j_Ar39_K39_rhoy, j_Ar39_K39_temp, j_Ar39_K39_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar39_to_K39_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ar39) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K39_Ar39_meta, j_K39_Ar39_rhoy, j_K39_Ar39_temp, j_K39_Ar39_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K39_to_Ar39_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(K39) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ar40_K40_meta, j_Ar40_K40_rhoy, j_Ar40_K40_temp, j_Ar40_K40_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ar40_to_K40_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ar40) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca40_K40_meta, j_Ca40_K40_rhoy, j_Ca40_K40_temp, j_Ca40_K40_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca40_to_K40_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ca40) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K40_Ar40_meta, j_K40_Ar40_rhoy, j_K40_Ar40_temp, j_K40_Ar40_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K40_to_Ar40_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(K40) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K40_Ca40_meta, j_K40_Ca40_rhoy, j_K40_Ca40_temp, j_K40_Ca40_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K40_to_Ca40_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(K40) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca41_K41_meta, j_Ca41_K41_rhoy, j_Ca41_K41_temp, j_Ca41_K41_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca41_to_K41_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ca41) * (edot_nu + edot_gamma); - - tabular_evaluate(j_K41_Ca41_meta, j_K41_Ca41_rhoy, j_K41_Ca41_temp, j_K41_Ca41_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_K41_to_Ca41_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(K41) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca43_Sc43_meta, j_Ca43_Sc43_rhoy, j_Ca43_Sc43_temp, j_Ca43_Sc43_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca43_to_Sc43_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ca43) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc43_Ca43_meta, j_Sc43_Ca43_rhoy, j_Sc43_Ca43_temp, j_Sc43_Ca43_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc43_to_Ca43_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc43) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca44_Sc44_meta, j_Ca44_Sc44_rhoy, j_Ca44_Sc44_temp, j_Ca44_Sc44_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca44_to_Sc44_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ca44) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc44_Ca44_meta, j_Sc44_Ca44_rhoy, j_Sc44_Ca44_temp, j_Sc44_Ca44_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc44_to_Ca44_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc44) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc44_Ti44_meta, j_Sc44_Ti44_rhoy, j_Sc44_Ti44_temp, j_Sc44_Ti44_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc44_to_Ti44_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc44) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti44_Sc44_meta, j_Ti44_Sc44_rhoy, j_Ti44_Sc44_temp, j_Ti44_Sc44_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti44_to_Sc44_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti44) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co53_Fe53_meta, j_Co53_Fe53_rhoy, j_Co53_Fe53_temp, j_Co53_Fe53_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co53_to_Fe53_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe53_Co53_meta, j_Fe53_Co53_rhoy, j_Fe53_Co53_temp, j_Fe53_Co53_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe53_to_Co53_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu57_Ni57_meta, j_Cu57_Ni57_rhoy, j_Cu57_Ni57_temp, j_Cu57_Ni57_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu57_to_Ni57_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni57_Cu57_meta, j_Ni57_Cu57_rhoy, j_Ni57_Cu57_temp, j_Ni57_Cu57_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni57_to_Cu57_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca45_Sc45_meta, j_Ca45_Sc45_rhoy, j_Ca45_Sc45_temp, j_Ca45_Sc45_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca45_to_Sc45_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ca45) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc45_Ca45_meta, j_Sc45_Ca45_rhoy, j_Sc45_Ca45_temp, j_Sc45_Ca45_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc45_to_Ca45_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc45) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc45_Ti45_meta, j_Sc45_Ti45_rhoy, j_Sc45_Ti45_temp, j_Sc45_Ti45_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc45_to_Ti45_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc45) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti45_Sc45_meta, j_Ti45_Sc45_rhoy, j_Ti45_Sc45_temp, j_Ti45_Sc45_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti45_to_Sc45_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti45) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca46_Sc46_meta, j_Ca46_Sc46_rhoy, j_Ca46_Sc46_temp, j_Ca46_Sc46_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca46_to_Sc46_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ca46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc46_Ca46_meta, j_Sc46_Ca46_rhoy, j_Sc46_Ca46_temp, j_Sc46_Ca46_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc46_to_Ca46_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc46_Ti46_meta, j_Sc46_Ti46_rhoy, j_Sc46_Ti46_temp, j_Sc46_Ti46_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc46_to_Ti46_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti46_Sc46_meta, j_Ti46_Sc46_rhoy, j_Ti46_Sc46_temp, j_Ti46_Sc46_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti46_to_Sc46_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti46_V46_meta, j_Ti46_V46_rhoy, j_Ti46_V46_temp, j_Ti46_V46_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti46_to_V46_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V46_Ti46_meta, j_V46_Ti46_rhoy, j_V46_Ti46_temp, j_V46_Ti46_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V46_to_Ti46_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V46) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca47_Sc47_meta, j_Ca47_Sc47_rhoy, j_Ca47_Sc47_temp, j_Ca47_Sc47_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca47_to_Sc47_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ca47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc47_Ca47_meta, j_Sc47_Ca47_rhoy, j_Sc47_Ca47_temp, j_Sc47_Ca47_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc47_to_Ca47_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc47_Ti47_meta, j_Sc47_Ti47_rhoy, j_Sc47_Ti47_temp, j_Sc47_Ti47_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc47_to_Ti47_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti47_Sc47_meta, j_Ti47_Sc47_rhoy, j_Ti47_Sc47_temp, j_Ti47_Sc47_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti47_to_Sc47_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti47_V47_meta, j_Ti47_V47_rhoy, j_Ti47_V47_temp, j_Ti47_V47_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti47_to_V47_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V47_Ti47_meta, j_V47_Ti47_rhoy, j_V47_Ti47_temp, j_V47_Ti47_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V47_to_Ti47_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V47) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ca48_Sc48_meta, j_Ca48_Sc48_rhoy, j_Ca48_Sc48_temp, j_Ca48_Sc48_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ca48_to_Sc48_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ca48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr48_V48_meta, j_Cr48_V48_rhoy, j_Cr48_V48_temp, j_Cr48_V48_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr48_to_V48_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc48_Ca48_meta, j_Sc48_Ca48_rhoy, j_Sc48_Ca48_temp, j_Sc48_Ca48_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc48_to_Ca48_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc48_Ti48_meta, j_Sc48_Ti48_rhoy, j_Sc48_Ti48_temp, j_Sc48_Ti48_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc48_to_Ti48_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti48_Sc48_meta, j_Ti48_Sc48_rhoy, j_Ti48_Sc48_temp, j_Ti48_Sc48_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti48_to_Sc48_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti48_V48_meta, j_Ti48_V48_rhoy, j_Ti48_V48_temp, j_Ti48_V48_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti48_to_V48_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V48_Cr48_meta, j_V48_Cr48_rhoy, j_V48_Cr48_temp, j_V48_Cr48_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V48_to_Cr48_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V48_Ti48_meta, j_V48_Ti48_rhoy, j_V48_Ti48_temp, j_V48_Ti48_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V48_to_Ti48_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V48) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr49_V49_meta, j_Cr49_V49_rhoy, j_Cr49_V49_temp, j_Cr49_V49_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr49_to_V49_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Sc49_Ti49_meta, j_Sc49_Ti49_rhoy, j_Sc49_Ti49_temp, j_Sc49_Ti49_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Sc49_to_Ti49_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Sc49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti49_Sc49_meta, j_Ti49_Sc49_rhoy, j_Ti49_Sc49_temp, j_Ti49_Sc49_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti49_to_Sc49_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti49_V49_meta, j_Ti49_V49_rhoy, j_Ti49_V49_temp, j_Ti49_V49_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti49_to_V49_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V49_Cr49_meta, j_V49_Cr49_rhoy, j_V49_Cr49_temp, j_V49_Cr49_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V49_to_Cr49_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V49_Ti49_meta, j_V49_Ti49_rhoy, j_V49_Ti49_temp, j_V49_Ti49_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V49_to_Ti49_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V49) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr50_Mn50_meta, j_Cr50_Mn50_rhoy, j_Cr50_Mn50_temp, j_Cr50_Mn50_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr50_to_Mn50_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr50_V50_meta, j_Cr50_V50_rhoy, j_Cr50_V50_temp, j_Cr50_V50_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr50_to_V50_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn50_Cr50_meta, j_Mn50_Cr50_rhoy, j_Mn50_Cr50_temp, j_Mn50_Cr50_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn50_to_Cr50_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti50_V50_meta, j_Ti50_V50_rhoy, j_Ti50_V50_temp, j_Ti50_V50_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti50_to_V50_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V50_Cr50_meta, j_V50_Cr50_rhoy, j_V50_Cr50_temp, j_V50_Cr50_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V50_to_Cr50_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V50_Ti50_meta, j_V50_Ti50_rhoy, j_V50_Ti50_temp, j_V50_Ti50_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V50_to_Ti50_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V50) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr51_Mn51_meta, j_Cr51_Mn51_rhoy, j_Cr51_Mn51_temp, j_Cr51_Mn51_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr51_to_Mn51_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr51_V51_meta, j_Cr51_V51_rhoy, j_Cr51_V51_temp, j_Cr51_V51_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr51_to_V51_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn51_Cr51_meta, j_Mn51_Cr51_rhoy, j_Mn51_Cr51_temp, j_Mn51_Cr51_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn51_to_Cr51_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ti51_V51_meta, j_Ti51_V51_rhoy, j_Ti51_V51_temp, j_Ti51_V51_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ti51_to_V51_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ti51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V51_Cr51_meta, j_V51_Cr51_rhoy, j_V51_Cr51_temp, j_V51_Cr51_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V51_to_Cr51_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V51_Ti51_meta, j_V51_Ti51_rhoy, j_V51_Ti51_temp, j_V51_Ti51_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V51_to_Ti51_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V51) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr52_Mn52_meta, j_Cr52_Mn52_rhoy, j_Cr52_Mn52_temp, j_Cr52_Mn52_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr52_to_Mn52_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr52_V52_meta, j_Cr52_V52_rhoy, j_Cr52_V52_temp, j_Cr52_V52_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr52_to_V52_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe52_Mn52_meta, j_Fe52_Mn52_rhoy, j_Fe52_Mn52_temp, j_Fe52_Mn52_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe52_to_Mn52_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn52_Cr52_meta, j_Mn52_Cr52_rhoy, j_Mn52_Cr52_temp, j_Mn52_Cr52_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn52_to_Cr52_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn52_Fe52_meta, j_Mn52_Fe52_rhoy, j_Mn52_Fe52_temp, j_Mn52_Fe52_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn52_to_Fe52_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_V52_Cr52_meta, j_V52_Cr52_rhoy, j_V52_Cr52_temp, j_V52_Cr52_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_V52_to_Cr52_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(V52) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr53_Mn53_meta, j_Cr53_Mn53_rhoy, j_Cr53_Mn53_temp, j_Cr53_Mn53_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr53_to_Mn53_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe53_Mn53_meta, j_Fe53_Mn53_rhoy, j_Fe53_Mn53_temp, j_Fe53_Mn53_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe53_to_Mn53_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn53_Cr53_meta, j_Mn53_Cr53_rhoy, j_Mn53_Cr53_temp, j_Mn53_Cr53_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn53_to_Cr53_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn53_Fe53_meta, j_Mn53_Fe53_rhoy, j_Mn53_Fe53_temp, j_Mn53_Fe53_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn53_to_Fe53_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn53) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co54_Fe54_meta, j_Co54_Fe54_rhoy, j_Co54_Fe54_temp, j_Co54_Fe54_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co54_to_Fe54_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cr54_Mn54_meta, j_Cr54_Mn54_rhoy, j_Cr54_Mn54_temp, j_Cr54_Mn54_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cr54_to_Mn54_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cr54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe54_Co54_meta, j_Fe54_Co54_rhoy, j_Fe54_Co54_temp, j_Fe54_Co54_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe54_to_Co54_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe54_Mn54_meta, j_Fe54_Mn54_rhoy, j_Fe54_Mn54_temp, j_Fe54_Mn54_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe54_to_Mn54_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn54_Cr54_meta, j_Mn54_Cr54_rhoy, j_Mn54_Cr54_temp, j_Mn54_Cr54_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn54_to_Cr54_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn54_Fe54_meta, j_Mn54_Fe54_rhoy, j_Mn54_Fe54_temp, j_Mn54_Fe54_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn54_to_Fe54_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn54) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co55_Fe55_meta, j_Co55_Fe55_rhoy, j_Co55_Fe55_temp, j_Co55_Fe55_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co55_to_Fe55_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe55_Co55_meta, j_Fe55_Co55_rhoy, j_Fe55_Co55_temp, j_Fe55_Co55_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe55_to_Co55_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe55_Mn55_meta, j_Fe55_Mn55_rhoy, j_Fe55_Mn55_temp, j_Fe55_Mn55_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe55_to_Mn55_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Mn55_Fe55_meta, j_Mn55_Fe55_rhoy, j_Mn55_Fe55_temp, j_Mn55_Fe55_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Mn55_to_Fe55_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Mn55) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Fe56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co56_to_Ni56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni56_to_Co56_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co57_Fe57_meta, j_Co57_Fe57_rhoy, j_Co57_Fe57_temp, j_Co57_Fe57_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co57_to_Fe57_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co57_Ni57_meta, j_Co57_Ni57_rhoy, j_Co57_Ni57_temp, j_Co57_Ni57_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co57_to_Ni57_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe57_Co57_meta, j_Fe57_Co57_rhoy, j_Fe57_Co57_temp, j_Fe57_Co57_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe57_to_Co57_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni57_Co57_meta, j_Ni57_Co57_rhoy, j_Ni57_Co57_temp, j_Ni57_Co57_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni57_to_Co57_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co58_Fe58_meta, j_Co58_Fe58_rhoy, j_Co58_Fe58_temp, j_Co58_Fe58_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co58_to_Fe58_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co58_Ni58_meta, j_Co58_Ni58_rhoy, j_Co58_Ni58_temp, j_Co58_Ni58_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co58_to_Ni58_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu58_Ni58_meta, j_Cu58_Ni58_rhoy, j_Cu58_Ni58_temp, j_Cu58_Ni58_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu58_to_Ni58_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Fe58_Co58_meta, j_Fe58_Co58_rhoy, j_Fe58_Co58_temp, j_Fe58_Co58_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Fe58_to_Co58_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Fe58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni58_Co58_meta, j_Ni58_Co58_rhoy, j_Ni58_Co58_temp, j_Ni58_Co58_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni58_to_Co58_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni58_Cu58_meta, j_Ni58_Cu58_rhoy, j_Ni58_Cu58_temp, j_Ni58_Cu58_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni58_to_Cu58_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni58) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Co59_Ni59_meta, j_Co59_Ni59_rhoy, j_Co59_Ni59_temp, j_Co59_Ni59_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Co59_to_Ni59_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Co59) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu59_Ni59_meta, j_Cu59_Ni59_rhoy, j_Cu59_Ni59_temp, j_Cu59_Ni59_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu59_to_Ni59_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu59) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni59_Co59_meta, j_Ni59_Co59_rhoy, j_Ni59_Co59_temp, j_Ni59_Co59_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni59_to_Co59_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni59) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni59_Cu59_meta, j_Ni59_Cu59_rhoy, j_Ni59_Cu59_temp, j_Ni59_Cu59_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni59_to_Cu59_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni59) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu60_Ni60_meta, j_Cu60_Ni60_rhoy, j_Cu60_Ni60_temp, j_Cu60_Ni60_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu60_to_Ni60_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu60) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu60_Zn60_meta, j_Cu60_Zn60_rhoy, j_Cu60_Zn60_temp, j_Cu60_Zn60_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu60_to_Zn60_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu60) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni60_Cu60_meta, j_Ni60_Cu60_rhoy, j_Ni60_Cu60_temp, j_Ni60_Cu60_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni60_to_Cu60_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni60) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn60_Cu60_meta, j_Zn60_Cu60_rhoy, j_Zn60_Cu60_temp, j_Zn60_Cu60_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn60_to_Cu60_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn60) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu61_Ni61_meta, j_Cu61_Ni61_rhoy, j_Cu61_Ni61_temp, j_Cu61_Ni61_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu61_to_Ni61_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu61) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu61_Zn61_meta, j_Cu61_Zn61_rhoy, j_Cu61_Zn61_temp, j_Cu61_Zn61_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu61_to_Zn61_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu61) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni61_Cu61_meta, j_Ni61_Cu61_rhoy, j_Ni61_Cu61_temp, j_Ni61_Cu61_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni61_to_Cu61_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni61) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn61_Cu61_meta, j_Zn61_Cu61_rhoy, j_Zn61_Cu61_temp, j_Zn61_Cu61_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn61_to_Cu61_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn61) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu62_Ni62_meta, j_Cu62_Ni62_rhoy, j_Cu62_Ni62_temp, j_Cu62_Ni62_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu62_to_Ni62_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu62_Zn62_meta, j_Cu62_Zn62_rhoy, j_Cu62_Zn62_temp, j_Cu62_Zn62_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu62_to_Zn62_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ga62_Zn62_meta, j_Ga62_Zn62_rhoy, j_Ga62_Zn62_temp, j_Ga62_Zn62_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ga62_to_Zn62_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ga62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni62_Cu62_meta, j_Ni62_Cu62_rhoy, j_Ni62_Cu62_temp, j_Ni62_Cu62_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni62_to_Cu62_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn62_Cu62_meta, j_Zn62_Cu62_rhoy, j_Zn62_Cu62_temp, j_Zn62_Cu62_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn62_to_Cu62_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn62_Ga62_meta, j_Zn62_Ga62_rhoy, j_Zn62_Ga62_temp, j_Zn62_Ga62_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn62_to_Ga62_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn62) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu63_Ni63_meta, j_Cu63_Ni63_rhoy, j_Cu63_Ni63_temp, j_Cu63_Ni63_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu63_to_Ni63_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu63_Zn63_meta, j_Cu63_Zn63_rhoy, j_Cu63_Zn63_temp, j_Cu63_Zn63_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu63_to_Zn63_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ga63_Zn63_meta, j_Ga63_Zn63_rhoy, j_Ga63_Zn63_temp, j_Ga63_Zn63_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ga63_to_Zn63_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ga63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni63_Cu63_meta, j_Ni63_Cu63_rhoy, j_Ni63_Cu63_temp, j_Ni63_Cu63_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni63_to_Cu63_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn63_Cu63_meta, j_Zn63_Cu63_rhoy, j_Zn63_Cu63_temp, j_Zn63_Cu63_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn63_to_Cu63_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn63_Ga63_meta, j_Zn63_Ga63_rhoy, j_Zn63_Ga63_temp, j_Zn63_Ga63_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn63_to_Ga63_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn63) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu64_Ni64_meta, j_Cu64_Ni64_rhoy, j_Cu64_Ni64_temp, j_Cu64_Ni64_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu64_to_Ni64_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu64_Zn64_meta, j_Cu64_Zn64_rhoy, j_Cu64_Zn64_temp, j_Cu64_Zn64_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu64_to_Zn64_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ga64_Ge64_meta, j_Ga64_Ge64_rhoy, j_Ga64_Ge64_temp, j_Ga64_Ge64_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ga64_to_Ge64_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ga64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ga64_Zn64_meta, j_Ga64_Zn64_rhoy, j_Ga64_Zn64_temp, j_Ga64_Zn64_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ga64_to_Zn64_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ga64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ge64_Ga64_meta, j_Ge64_Ga64_rhoy, j_Ge64_Ga64_temp, j_Ge64_Ga64_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ge64_to_Ga64_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ge64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Ni64_Cu64_meta, j_Ni64_Cu64_rhoy, j_Ni64_Cu64_temp, j_Ni64_Cu64_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Ni64_to_Cu64_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Ni64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn64_Cu64_meta, j_Zn64_Cu64_rhoy, j_Zn64_Cu64_temp, j_Zn64_Cu64_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn64_to_Cu64_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn64_Ga64_meta, j_Zn64_Ga64_rhoy, j_Zn64_Ga64_temp, j_Zn64_Ga64_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn64_to_Ga64_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn64) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Cu65_Zn65_meta, j_Cu65_Zn65_rhoy, j_Cu65_Zn65_temp, j_Cu65_Zn65_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Cu65_to_Zn65_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Cu65) * (edot_nu + edot_gamma); - - tabular_evaluate(j_Zn65_Cu65_meta, j_Zn65_Cu65_rhoy, j_Zn65_Cu65_temp, j_Zn65_Cu65_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_Zn65_to_Cu65_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(Zn65) * (edot_nu + edot_gamma); - - tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_n_to_p_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); - - tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, - log_rhoy, log_temp, state.T, rate, drate_dT, edot_nu, edot_gamma); - rate_eval.screened_rates(k_p_to_n_weaktab) = rate; - rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); + reaclib_rates::rate_He3_p_to_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_p_to_He4_beta_pos_reaclib) = rate; + } + tabular_weak_rates::fill_rates(state.T, rhoy, Y, rate_eval); const auto& screened_rates = rate_eval.screened_rates; ydot_nuc(N) = - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - screened_rates(k_Zn59_to_p_Ni58_reaclib)*Y(Zn59) + - -screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - -screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib)*Y(Zn59) + + -screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + -screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H2) = - 0.5*screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - 0.5*screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e; + 0.5*screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + 0.5*screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e; ydot_nuc(He3) = - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho; + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho; ydot_nuc(He4) = - 2.0*screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho; + 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho; ydot_nuc(Li6) = 0.0_rt; ydot_nuc(Li7) = - screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e; + screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*Y(Be7)*state.rho*state.y_e; ydot_nuc(Be7) = - -screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e; + -screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*Y(Be7)*state.rho*state.y_e; ydot_nuc(Be9) = 0.0_rt; ydot_nuc(B8) = - -screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8); + -screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8); ydot_nuc(B10) = 0.0_rt; @@ -5574,486 +3382,486 @@ void get_ydot_weak(const burn_t& state, ydot_nuc(C12) = 0.0_rt; ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(C14) = - -screened_rates(k_C14_to_N14_reaclib)*Y(C14); + -screened_rates(k_C14_to_N14_beta_neg_reaclib)*Y(C14); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13); ydot_nuc(N14) = - screened_rates(k_C14_to_N14_reaclib)*Y(C14) + - screened_rates(k_O14_to_N14_reaclib)*Y(O14); + screened_rates(k_C14_to_N14_beta_neg_reaclib)*Y(C14) + + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15); ydot_nuc(O16) = 0.0_rt; ydot_nuc(O17) = - screened_rates(k_F17_to_O17_reaclib)*Y(F17); + screened_rates(k_F17_to_O17_beta_pos_reaclib)*Y(F17); ydot_nuc(O18) = - screened_rates(k_F18_to_O18_reaclib)*Y(F18); + screened_rates(k_F18_to_O18_beta_pos_reaclib)*Y(F18); ydot_nuc(F17) = - -screened_rates(k_F17_to_O17_reaclib)*Y(F17); + -screened_rates(k_F17_to_O17_beta_pos_reaclib)*Y(F17); ydot_nuc(F18) = - -screened_rates(k_F18_to_O18_reaclib)*Y(F18) + - screened_rates(k_Ne18_to_F18_reaclib)*Y(Ne18); + -screened_rates(k_F18_to_O18_beta_pos_reaclib)*Y(F18) + + screened_rates(k_Ne18_to_F18_beta_pos_reaclib)*Y(Ne18); ydot_nuc(F19) = - screened_rates(k_Ne19_to_F19_reaclib)*Y(Ne19); + screened_rates(k_Ne19_to_F19_beta_pos_reaclib)*Y(Ne19); ydot_nuc(Ne18) = - -screened_rates(k_Ne18_to_F18_reaclib)*Y(Ne18); + -screened_rates(k_Ne18_to_F18_beta_pos_reaclib)*Y(Ne18); ydot_nuc(Ne19) = - -screened_rates(k_Ne19_to_F19_reaclib)*Y(Ne19); + -screened_rates(k_Ne19_to_F19_beta_pos_reaclib)*Y(Ne19); ydot_nuc(Ne20) = 0.0_rt; ydot_nuc(Ne21) = - (screened_rates(k_Na21_to_Ne21_weaktab)*Y(Na21) + -screened_rates(k_Ne21_to_Na21_weaktab)*Y(Ne21)); + (screened_rates(k_Na21_to_Ne21_electron_capture_weaktab)*Y(Na21) + -screened_rates(k_Ne21_to_Na21_beta_neg_weaktab)*Y(Ne21)); ydot_nuc(Ne22) = - (screened_rates(k_Na22_to_Ne22_weaktab)*Y(Na22) + -screened_rates(k_Ne22_to_Na22_weaktab)*Y(Ne22)); + (screened_rates(k_Na22_to_Ne22_electron_capture_weaktab)*Y(Na22) + -screened_rates(k_Ne22_to_Na22_beta_neg_weaktab)*Y(Ne22)); ydot_nuc(Na21) = - (-screened_rates(k_Na21_to_Ne21_weaktab)*Y(Na21) + screened_rates(k_Ne21_to_Na21_weaktab)*Y(Ne21)); + (-screened_rates(k_Na21_to_Ne21_electron_capture_weaktab)*Y(Na21) + screened_rates(k_Ne21_to_Na21_beta_neg_weaktab)*Y(Ne21)); ydot_nuc(Na22) = - (-screened_rates(k_Na22_to_Ne22_weaktab)*Y(Na22) + screened_rates(k_Ne22_to_Na22_weaktab)*Y(Ne22)); + (-screened_rates(k_Na22_to_Ne22_electron_capture_weaktab)*Y(Na22) + screened_rates(k_Ne22_to_Na22_beta_neg_weaktab)*Y(Ne22)); ydot_nuc(Na23) = - (screened_rates(k_Mg23_to_Na23_weaktab)*Y(Mg23) + -screened_rates(k_Na23_to_Mg23_weaktab)*Y(Na23)); + (screened_rates(k_Mg23_to_Na23_electron_capture_weaktab)*Y(Mg23) + -screened_rates(k_Na23_to_Mg23_beta_neg_weaktab)*Y(Na23)); ydot_nuc(Mg23) = - (-screened_rates(k_Mg23_to_Na23_weaktab)*Y(Mg23) + screened_rates(k_Na23_to_Mg23_weaktab)*Y(Na23)); + (-screened_rates(k_Mg23_to_Na23_electron_capture_weaktab)*Y(Mg23) + screened_rates(k_Na23_to_Mg23_beta_neg_weaktab)*Y(Na23)); ydot_nuc(Mg24) = 0.0_rt; ydot_nuc(Mg25) = - (screened_rates(k_Al25_to_Mg25_weaktab)*Y(Al25) + -screened_rates(k_Mg25_to_Al25_weaktab)*Y(Mg25)); + (screened_rates(k_Al25_to_Mg25_electron_capture_weaktab)*Y(Al25) + -screened_rates(k_Mg25_to_Al25_beta_neg_weaktab)*Y(Mg25)); ydot_nuc(Mg26) = - (screened_rates(k_Al26_to_Mg26_weaktab)*Y(Al26) + -screened_rates(k_Mg26_to_Al26_weaktab)*Y(Mg26)); + (screened_rates(k_Al26_to_Mg26_electron_capture_weaktab)*Y(Al26) + -screened_rates(k_Mg26_to_Al26_beta_neg_weaktab)*Y(Mg26)); ydot_nuc(Al25) = - (-screened_rates(k_Al25_to_Mg25_weaktab)*Y(Al25) + screened_rates(k_Mg25_to_Al25_weaktab)*Y(Mg25)); + (-screened_rates(k_Al25_to_Mg25_electron_capture_weaktab)*Y(Al25) + screened_rates(k_Mg25_to_Al25_beta_neg_weaktab)*Y(Mg25)); ydot_nuc(Al26) = - (-screened_rates(k_Al26_to_Mg26_weaktab)*Y(Al26) + screened_rates(k_Mg26_to_Al26_weaktab)*Y(Mg26)); + (-screened_rates(k_Al26_to_Mg26_electron_capture_weaktab)*Y(Al26) + screened_rates(k_Mg26_to_Al26_beta_neg_weaktab)*Y(Mg26)); ydot_nuc(Al27) = 0.0_rt; ydot_nuc(Si28) = 0.0_rt; ydot_nuc(Si29) = - (screened_rates(k_P29_to_Si29_weaktab)*Y(P29) + -screened_rates(k_Si29_to_P29_weaktab)*Y(Si29)); + (screened_rates(k_P29_to_Si29_electron_capture_weaktab)*Y(P29) + -screened_rates(k_Si29_to_P29_beta_neg_weaktab)*Y(Si29)); ydot_nuc(Si30) = - (screened_rates(k_P30_to_Si30_weaktab)*Y(P30) + -screened_rates(k_Si30_to_P30_weaktab)*Y(Si30)); + (screened_rates(k_P30_to_Si30_electron_capture_weaktab)*Y(P30) + -screened_rates(k_Si30_to_P30_beta_neg_weaktab)*Y(Si30)); ydot_nuc(Si31) = - (-screened_rates(k_Si31_to_P31_weaktab)*Y(Si31) + screened_rates(k_P31_to_Si31_weaktab)*Y(P31)); + (-screened_rates(k_Si31_to_P31_beta_neg_weaktab)*Y(Si31) + screened_rates(k_P31_to_Si31_electron_capture_weaktab)*Y(P31)); ydot_nuc(Si32) = - (-screened_rates(k_Si32_to_P32_weaktab)*Y(Si32) + screened_rates(k_P32_to_Si32_weaktab)*Y(P32)); + (-screened_rates(k_Si32_to_P32_beta_neg_weaktab)*Y(Si32) + screened_rates(k_P32_to_Si32_electron_capture_weaktab)*Y(P32)); ydot_nuc(P29) = - (-screened_rates(k_P29_to_Si29_weaktab)*Y(P29) + screened_rates(k_Si29_to_P29_weaktab)*Y(Si29)); + (-screened_rates(k_P29_to_Si29_electron_capture_weaktab)*Y(P29) + screened_rates(k_Si29_to_P29_beta_neg_weaktab)*Y(Si29)); ydot_nuc(P30) = - (-screened_rates(k_P30_to_Si30_weaktab)*Y(P30) + screened_rates(k_Si30_to_P30_weaktab)*Y(Si30)); + (-screened_rates(k_P30_to_Si30_electron_capture_weaktab)*Y(P30) + screened_rates(k_Si30_to_P30_beta_neg_weaktab)*Y(Si30)); ydot_nuc(P31) = - (screened_rates(k_Si31_to_P31_weaktab)*Y(Si31) + -screened_rates(k_P31_to_Si31_weaktab)*Y(P31)); + (screened_rates(k_Si31_to_P31_beta_neg_weaktab)*Y(Si31) + -screened_rates(k_P31_to_Si31_electron_capture_weaktab)*Y(P31)); ydot_nuc(P32) = - (-screened_rates(k_P32_to_S32_weaktab)*Y(P32) + screened_rates(k_S32_to_P32_weaktab)*Y(S32)) + - (screened_rates(k_Si32_to_P32_weaktab)*Y(Si32) + -screened_rates(k_P32_to_Si32_weaktab)*Y(P32)); + (-screened_rates(k_P32_to_S32_beta_neg_weaktab)*Y(P32) + screened_rates(k_S32_to_P32_electron_capture_weaktab)*Y(S32)) + + (screened_rates(k_Si32_to_P32_beta_neg_weaktab)*Y(Si32) + -screened_rates(k_P32_to_Si32_electron_capture_weaktab)*Y(P32)); ydot_nuc(P33) = - (-screened_rates(k_P33_to_S33_weaktab)*Y(P33) + screened_rates(k_S33_to_P33_weaktab)*Y(S33)); + (-screened_rates(k_P33_to_S33_beta_neg_weaktab)*Y(P33) + screened_rates(k_S33_to_P33_electron_capture_weaktab)*Y(S33)); ydot_nuc(S32) = - (screened_rates(k_P32_to_S32_weaktab)*Y(P32) + -screened_rates(k_S32_to_P32_weaktab)*Y(S32)); + (screened_rates(k_P32_to_S32_beta_neg_weaktab)*Y(P32) + -screened_rates(k_S32_to_P32_electron_capture_weaktab)*Y(S32)); ydot_nuc(S33) = - (screened_rates(k_Cl33_to_S33_weaktab)*Y(Cl33) + -screened_rates(k_S33_to_Cl33_weaktab)*Y(S33)) + - (screened_rates(k_P33_to_S33_weaktab)*Y(P33) + -screened_rates(k_S33_to_P33_weaktab)*Y(S33)); + (screened_rates(k_Cl33_to_S33_electron_capture_weaktab)*Y(Cl33) + -screened_rates(k_S33_to_Cl33_beta_neg_weaktab)*Y(S33)) + + (screened_rates(k_P33_to_S33_beta_neg_weaktab)*Y(P33) + -screened_rates(k_S33_to_P33_electron_capture_weaktab)*Y(S33)); ydot_nuc(S34) = - (screened_rates(k_Cl34_to_S34_weaktab)*Y(Cl34) + -screened_rates(k_S34_to_Cl34_weaktab)*Y(S34)); + (screened_rates(k_Cl34_to_S34_electron_capture_weaktab)*Y(Cl34) + -screened_rates(k_S34_to_Cl34_beta_neg_weaktab)*Y(S34)); ydot_nuc(S35) = - (-screened_rates(k_S35_to_Cl35_weaktab)*Y(S35) + screened_rates(k_Cl35_to_S35_weaktab)*Y(Cl35)); + (-screened_rates(k_S35_to_Cl35_beta_neg_weaktab)*Y(S35) + screened_rates(k_Cl35_to_S35_electron_capture_weaktab)*Y(Cl35)); ydot_nuc(S36) = - (screened_rates(k_Cl36_to_S36_weaktab)*Y(Cl36) + -screened_rates(k_S36_to_Cl36_weaktab)*Y(S36)); + (screened_rates(k_Cl36_to_S36_electron_capture_weaktab)*Y(Cl36) + -screened_rates(k_S36_to_Cl36_beta_neg_weaktab)*Y(S36)); ydot_nuc(Cl33) = - (-screened_rates(k_Cl33_to_S33_weaktab)*Y(Cl33) + screened_rates(k_S33_to_Cl33_weaktab)*Y(S33)); + (-screened_rates(k_Cl33_to_S33_electron_capture_weaktab)*Y(Cl33) + screened_rates(k_S33_to_Cl33_beta_neg_weaktab)*Y(S33)); ydot_nuc(Cl34) = - (-screened_rates(k_Cl34_to_S34_weaktab)*Y(Cl34) + screened_rates(k_S34_to_Cl34_weaktab)*Y(S34)); + (-screened_rates(k_Cl34_to_S34_electron_capture_weaktab)*Y(Cl34) + screened_rates(k_S34_to_Cl34_beta_neg_weaktab)*Y(S34)); ydot_nuc(Cl35) = - (screened_rates(k_S35_to_Cl35_weaktab)*Y(S35) + -screened_rates(k_Cl35_to_S35_weaktab)*Y(Cl35)); + (screened_rates(k_S35_to_Cl35_beta_neg_weaktab)*Y(S35) + -screened_rates(k_Cl35_to_S35_electron_capture_weaktab)*Y(Cl35)); ydot_nuc(Cl36) = - (-screened_rates(k_Cl36_to_Ar36_weaktab)*Y(Cl36) + screened_rates(k_Ar36_to_Cl36_weaktab)*Y(Ar36)) + - (-screened_rates(k_Cl36_to_S36_weaktab)*Y(Cl36) + screened_rates(k_S36_to_Cl36_weaktab)*Y(S36)); + (-screened_rates(k_Cl36_to_Ar36_beta_neg_weaktab)*Y(Cl36) + screened_rates(k_Ar36_to_Cl36_electron_capture_weaktab)*Y(Ar36)) + + (-screened_rates(k_Cl36_to_S36_electron_capture_weaktab)*Y(Cl36) + screened_rates(k_S36_to_Cl36_beta_neg_weaktab)*Y(S36)); ydot_nuc(Cl37) = - (screened_rates(k_Ar37_to_Cl37_weaktab)*Y(Ar37) + -screened_rates(k_Cl37_to_Ar37_weaktab)*Y(Cl37)); + (screened_rates(k_Ar37_to_Cl37_electron_capture_weaktab)*Y(Ar37) + -screened_rates(k_Cl37_to_Ar37_beta_neg_weaktab)*Y(Cl37)); ydot_nuc(Ar36) = - (screened_rates(k_Cl36_to_Ar36_weaktab)*Y(Cl36) + -screened_rates(k_Ar36_to_Cl36_weaktab)*Y(Ar36)); + (screened_rates(k_Cl36_to_Ar36_beta_neg_weaktab)*Y(Cl36) + -screened_rates(k_Ar36_to_Cl36_electron_capture_weaktab)*Y(Ar36)); ydot_nuc(Ar37) = - (-screened_rates(k_Ar37_to_Cl37_weaktab)*Y(Ar37) + screened_rates(k_Cl37_to_Ar37_weaktab)*Y(Cl37)) + - (screened_rates(k_K37_to_Ar37_weaktab)*Y(K37) + -screened_rates(k_Ar37_to_K37_weaktab)*Y(Ar37)); + (-screened_rates(k_Ar37_to_Cl37_electron_capture_weaktab)*Y(Ar37) + screened_rates(k_Cl37_to_Ar37_beta_neg_weaktab)*Y(Cl37)) + + (screened_rates(k_K37_to_Ar37_electron_capture_weaktab)*Y(K37) + -screened_rates(k_Ar37_to_K37_beta_neg_weaktab)*Y(Ar37)); ydot_nuc(Ar38) = - (screened_rates(k_K38_to_Ar38_weaktab)*Y(K38) + -screened_rates(k_Ar38_to_K38_weaktab)*Y(Ar38)); + (screened_rates(k_K38_to_Ar38_electron_capture_weaktab)*Y(K38) + -screened_rates(k_Ar38_to_K38_beta_neg_weaktab)*Y(Ar38)); ydot_nuc(Ar39) = - (-screened_rates(k_Ar39_to_K39_weaktab)*Y(Ar39) + screened_rates(k_K39_to_Ar39_weaktab)*Y(K39)); + (-screened_rates(k_Ar39_to_K39_beta_neg_weaktab)*Y(Ar39) + screened_rates(k_K39_to_Ar39_electron_capture_weaktab)*Y(K39)); ydot_nuc(Ar40) = - (screened_rates(k_K40_to_Ar40_weaktab)*Y(K40) + -screened_rates(k_Ar40_to_K40_weaktab)*Y(Ar40)); + (screened_rates(k_K40_to_Ar40_electron_capture_weaktab)*Y(K40) + -screened_rates(k_Ar40_to_K40_beta_neg_weaktab)*Y(Ar40)); ydot_nuc(K37) = - (-screened_rates(k_K37_to_Ar37_weaktab)*Y(K37) + screened_rates(k_Ar37_to_K37_weaktab)*Y(Ar37)); + (-screened_rates(k_K37_to_Ar37_electron_capture_weaktab)*Y(K37) + screened_rates(k_Ar37_to_K37_beta_neg_weaktab)*Y(Ar37)); ydot_nuc(K38) = - (-screened_rates(k_K38_to_Ar38_weaktab)*Y(K38) + screened_rates(k_Ar38_to_K38_weaktab)*Y(Ar38)); + (-screened_rates(k_K38_to_Ar38_electron_capture_weaktab)*Y(K38) + screened_rates(k_Ar38_to_K38_beta_neg_weaktab)*Y(Ar38)); ydot_nuc(K39) = - (screened_rates(k_Ar39_to_K39_weaktab)*Y(Ar39) + -screened_rates(k_K39_to_Ar39_weaktab)*Y(K39)); + (screened_rates(k_Ar39_to_K39_beta_neg_weaktab)*Y(Ar39) + -screened_rates(k_K39_to_Ar39_electron_capture_weaktab)*Y(K39)); ydot_nuc(K40) = - (-screened_rates(k_K40_to_Ar40_weaktab)*Y(K40) + screened_rates(k_Ar40_to_K40_weaktab)*Y(Ar40)) + - (-screened_rates(k_K40_to_Ca40_weaktab)*Y(K40) + screened_rates(k_Ca40_to_K40_weaktab)*Y(Ca40)); + (-screened_rates(k_K40_to_Ar40_electron_capture_weaktab)*Y(K40) + screened_rates(k_Ar40_to_K40_beta_neg_weaktab)*Y(Ar40)) + + (-screened_rates(k_K40_to_Ca40_beta_neg_weaktab)*Y(K40) + screened_rates(k_Ca40_to_K40_electron_capture_weaktab)*Y(Ca40)); ydot_nuc(K41) = - (screened_rates(k_Ca41_to_K41_weaktab)*Y(Ca41) + -screened_rates(k_K41_to_Ca41_weaktab)*Y(K41)); + (screened_rates(k_Ca41_to_K41_electron_capture_weaktab)*Y(Ca41) + -screened_rates(k_K41_to_Ca41_beta_neg_weaktab)*Y(K41)); ydot_nuc(Ca40) = - (screened_rates(k_K40_to_Ca40_weaktab)*Y(K40) + -screened_rates(k_Ca40_to_K40_weaktab)*Y(Ca40)); + (screened_rates(k_K40_to_Ca40_beta_neg_weaktab)*Y(K40) + -screened_rates(k_Ca40_to_K40_electron_capture_weaktab)*Y(Ca40)); ydot_nuc(Ca41) = - (-screened_rates(k_Ca41_to_K41_weaktab)*Y(Ca41) + screened_rates(k_K41_to_Ca41_weaktab)*Y(K41)); + (-screened_rates(k_Ca41_to_K41_electron_capture_weaktab)*Y(Ca41) + screened_rates(k_K41_to_Ca41_beta_neg_weaktab)*Y(K41)); ydot_nuc(Ca42) = 0.0_rt; ydot_nuc(Ca43) = - (screened_rates(k_Sc43_to_Ca43_weaktab)*Y(Sc43) + -screened_rates(k_Ca43_to_Sc43_weaktab)*Y(Ca43)); + (screened_rates(k_Sc43_to_Ca43_electron_capture_weaktab)*Y(Sc43) + -screened_rates(k_Ca43_to_Sc43_beta_neg_weaktab)*Y(Ca43)); ydot_nuc(Ca44) = - (screened_rates(k_Sc44_to_Ca44_weaktab)*Y(Sc44) + -screened_rates(k_Ca44_to_Sc44_weaktab)*Y(Ca44)); + (screened_rates(k_Sc44_to_Ca44_electron_capture_weaktab)*Y(Sc44) + -screened_rates(k_Ca44_to_Sc44_beta_neg_weaktab)*Y(Ca44)); ydot_nuc(Ca45) = - (-screened_rates(k_Ca45_to_Sc45_weaktab)*Y(Ca45) + screened_rates(k_Sc45_to_Ca45_weaktab)*Y(Sc45)); + (-screened_rates(k_Ca45_to_Sc45_beta_neg_weaktab)*Y(Ca45) + screened_rates(k_Sc45_to_Ca45_electron_capture_weaktab)*Y(Sc45)); ydot_nuc(Ca46) = - (screened_rates(k_Sc46_to_Ca46_weaktab)*Y(Sc46) + -screened_rates(k_Ca46_to_Sc46_weaktab)*Y(Ca46)); + (screened_rates(k_Sc46_to_Ca46_electron_capture_weaktab)*Y(Sc46) + -screened_rates(k_Ca46_to_Sc46_beta_neg_weaktab)*Y(Ca46)); ydot_nuc(Ca47) = - (-screened_rates(k_Ca47_to_Sc47_weaktab)*Y(Ca47) + screened_rates(k_Sc47_to_Ca47_weaktab)*Y(Sc47)); + (-screened_rates(k_Ca47_to_Sc47_beta_neg_weaktab)*Y(Ca47) + screened_rates(k_Sc47_to_Ca47_electron_capture_weaktab)*Y(Sc47)); ydot_nuc(Ca48) = - (-screened_rates(k_Ca48_to_Sc48_weaktab)*Y(Ca48) + screened_rates(k_Sc48_to_Ca48_weaktab)*Y(Sc48)); + (-screened_rates(k_Ca48_to_Sc48_beta_neg_weaktab)*Y(Ca48) + screened_rates(k_Sc48_to_Ca48_electron_capture_weaktab)*Y(Sc48)); ydot_nuc(Sc43) = - (-screened_rates(k_Sc43_to_Ca43_weaktab)*Y(Sc43) + screened_rates(k_Ca43_to_Sc43_weaktab)*Y(Ca43)); + (-screened_rates(k_Sc43_to_Ca43_electron_capture_weaktab)*Y(Sc43) + screened_rates(k_Ca43_to_Sc43_beta_neg_weaktab)*Y(Ca43)); ydot_nuc(Sc44) = - (-screened_rates(k_Sc44_to_Ca44_weaktab)*Y(Sc44) + screened_rates(k_Ca44_to_Sc44_weaktab)*Y(Ca44)) + - (screened_rates(k_Ti44_to_Sc44_weaktab)*Y(Ti44) + -screened_rates(k_Sc44_to_Ti44_weaktab)*Y(Sc44)); + (-screened_rates(k_Sc44_to_Ca44_electron_capture_weaktab)*Y(Sc44) + screened_rates(k_Ca44_to_Sc44_beta_neg_weaktab)*Y(Ca44)) + + (screened_rates(k_Ti44_to_Sc44_electron_capture_weaktab)*Y(Ti44) + -screened_rates(k_Sc44_to_Ti44_beta_neg_weaktab)*Y(Sc44)); ydot_nuc(Sc45) = - (screened_rates(k_Ca45_to_Sc45_weaktab)*Y(Ca45) + -screened_rates(k_Sc45_to_Ca45_weaktab)*Y(Sc45)) + - (screened_rates(k_Ti45_to_Sc45_weaktab)*Y(Ti45) + -screened_rates(k_Sc45_to_Ti45_weaktab)*Y(Sc45)); + (screened_rates(k_Ca45_to_Sc45_beta_neg_weaktab)*Y(Ca45) + -screened_rates(k_Sc45_to_Ca45_electron_capture_weaktab)*Y(Sc45)) + + (screened_rates(k_Ti45_to_Sc45_electron_capture_weaktab)*Y(Ti45) + -screened_rates(k_Sc45_to_Ti45_beta_neg_weaktab)*Y(Sc45)); ydot_nuc(Sc46) = - (-screened_rates(k_Sc46_to_Ca46_weaktab)*Y(Sc46) + screened_rates(k_Ca46_to_Sc46_weaktab)*Y(Ca46)) + - (-screened_rates(k_Sc46_to_Ti46_weaktab)*Y(Sc46) + screened_rates(k_Ti46_to_Sc46_weaktab)*Y(Ti46)); + (-screened_rates(k_Sc46_to_Ca46_electron_capture_weaktab)*Y(Sc46) + screened_rates(k_Ca46_to_Sc46_beta_neg_weaktab)*Y(Ca46)) + + (-screened_rates(k_Sc46_to_Ti46_beta_neg_weaktab)*Y(Sc46) + screened_rates(k_Ti46_to_Sc46_electron_capture_weaktab)*Y(Ti46)); ydot_nuc(Sc47) = - (screened_rates(k_Ca47_to_Sc47_weaktab)*Y(Ca47) + -screened_rates(k_Sc47_to_Ca47_weaktab)*Y(Sc47)) + - (-screened_rates(k_Sc47_to_Ti47_weaktab)*Y(Sc47) + screened_rates(k_Ti47_to_Sc47_weaktab)*Y(Ti47)); + (screened_rates(k_Ca47_to_Sc47_beta_neg_weaktab)*Y(Ca47) + -screened_rates(k_Sc47_to_Ca47_electron_capture_weaktab)*Y(Sc47)) + + (-screened_rates(k_Sc47_to_Ti47_beta_neg_weaktab)*Y(Sc47) + screened_rates(k_Ti47_to_Sc47_electron_capture_weaktab)*Y(Ti47)); ydot_nuc(Sc48) = - (screened_rates(k_Ca48_to_Sc48_weaktab)*Y(Ca48) + -screened_rates(k_Sc48_to_Ca48_weaktab)*Y(Sc48)) + - (-screened_rates(k_Sc48_to_Ti48_weaktab)*Y(Sc48) + screened_rates(k_Ti48_to_Sc48_weaktab)*Y(Ti48)); + (screened_rates(k_Ca48_to_Sc48_beta_neg_weaktab)*Y(Ca48) + -screened_rates(k_Sc48_to_Ca48_electron_capture_weaktab)*Y(Sc48)) + + (-screened_rates(k_Sc48_to_Ti48_beta_neg_weaktab)*Y(Sc48) + screened_rates(k_Ti48_to_Sc48_electron_capture_weaktab)*Y(Ti48)); ydot_nuc(Sc49) = - (-screened_rates(k_Sc49_to_Ti49_weaktab)*Y(Sc49) + screened_rates(k_Ti49_to_Sc49_weaktab)*Y(Ti49)); + (-screened_rates(k_Sc49_to_Ti49_beta_neg_weaktab)*Y(Sc49) + screened_rates(k_Ti49_to_Sc49_electron_capture_weaktab)*Y(Ti49)); ydot_nuc(Ti44) = - (-screened_rates(k_Ti44_to_Sc44_weaktab)*Y(Ti44) + screened_rates(k_Sc44_to_Ti44_weaktab)*Y(Sc44)); + (-screened_rates(k_Ti44_to_Sc44_electron_capture_weaktab)*Y(Ti44) + screened_rates(k_Sc44_to_Ti44_beta_neg_weaktab)*Y(Sc44)); ydot_nuc(Ti45) = - (-screened_rates(k_Ti45_to_Sc45_weaktab)*Y(Ti45) + screened_rates(k_Sc45_to_Ti45_weaktab)*Y(Sc45)); + (-screened_rates(k_Ti45_to_Sc45_electron_capture_weaktab)*Y(Ti45) + screened_rates(k_Sc45_to_Ti45_beta_neg_weaktab)*Y(Sc45)); ydot_nuc(Ti46) = - (screened_rates(k_Sc46_to_Ti46_weaktab)*Y(Sc46) + -screened_rates(k_Ti46_to_Sc46_weaktab)*Y(Ti46)) + - (screened_rates(k_V46_to_Ti46_weaktab)*Y(V46) + -screened_rates(k_Ti46_to_V46_weaktab)*Y(Ti46)); + (screened_rates(k_Sc46_to_Ti46_beta_neg_weaktab)*Y(Sc46) + -screened_rates(k_Ti46_to_Sc46_electron_capture_weaktab)*Y(Ti46)) + + (screened_rates(k_V46_to_Ti46_electron_capture_weaktab)*Y(V46) + -screened_rates(k_Ti46_to_V46_beta_neg_weaktab)*Y(Ti46)); ydot_nuc(Ti47) = - (screened_rates(k_Sc47_to_Ti47_weaktab)*Y(Sc47) + -screened_rates(k_Ti47_to_Sc47_weaktab)*Y(Ti47)) + - (screened_rates(k_V47_to_Ti47_weaktab)*Y(V47) + -screened_rates(k_Ti47_to_V47_weaktab)*Y(Ti47)); + (screened_rates(k_Sc47_to_Ti47_beta_neg_weaktab)*Y(Sc47) + -screened_rates(k_Ti47_to_Sc47_electron_capture_weaktab)*Y(Ti47)) + + (screened_rates(k_V47_to_Ti47_electron_capture_weaktab)*Y(V47) + -screened_rates(k_Ti47_to_V47_beta_neg_weaktab)*Y(Ti47)); ydot_nuc(Ti48) = - (screened_rates(k_Sc48_to_Ti48_weaktab)*Y(Sc48) + -screened_rates(k_Ti48_to_Sc48_weaktab)*Y(Ti48)) + - (screened_rates(k_V48_to_Ti48_weaktab)*Y(V48) + -screened_rates(k_Ti48_to_V48_weaktab)*Y(Ti48)); + (screened_rates(k_Sc48_to_Ti48_beta_neg_weaktab)*Y(Sc48) + -screened_rates(k_Ti48_to_Sc48_electron_capture_weaktab)*Y(Ti48)) + + (screened_rates(k_V48_to_Ti48_electron_capture_weaktab)*Y(V48) + -screened_rates(k_Ti48_to_V48_beta_neg_weaktab)*Y(Ti48)); ydot_nuc(Ti49) = - (screened_rates(k_Sc49_to_Ti49_weaktab)*Y(Sc49) + -screened_rates(k_Ti49_to_Sc49_weaktab)*Y(Ti49)) + - (screened_rates(k_V49_to_Ti49_weaktab)*Y(V49) + -screened_rates(k_Ti49_to_V49_weaktab)*Y(Ti49)); + (screened_rates(k_Sc49_to_Ti49_beta_neg_weaktab)*Y(Sc49) + -screened_rates(k_Ti49_to_Sc49_electron_capture_weaktab)*Y(Ti49)) + + (screened_rates(k_V49_to_Ti49_electron_capture_weaktab)*Y(V49) + -screened_rates(k_Ti49_to_V49_beta_neg_weaktab)*Y(Ti49)); ydot_nuc(Ti50) = - (screened_rates(k_V50_to_Ti50_weaktab)*Y(V50) + -screened_rates(k_Ti50_to_V50_weaktab)*Y(Ti50)); + (screened_rates(k_V50_to_Ti50_electron_capture_weaktab)*Y(V50) + -screened_rates(k_Ti50_to_V50_beta_neg_weaktab)*Y(Ti50)); ydot_nuc(Ti51) = - (-screened_rates(k_Ti51_to_V51_weaktab)*Y(Ti51) + screened_rates(k_V51_to_Ti51_weaktab)*Y(V51)); + (-screened_rates(k_Ti51_to_V51_beta_neg_weaktab)*Y(Ti51) + screened_rates(k_V51_to_Ti51_electron_capture_weaktab)*Y(V51)); ydot_nuc(V46) = - (-screened_rates(k_V46_to_Ti46_weaktab)*Y(V46) + screened_rates(k_Ti46_to_V46_weaktab)*Y(Ti46)); + (-screened_rates(k_V46_to_Ti46_electron_capture_weaktab)*Y(V46) + screened_rates(k_Ti46_to_V46_beta_neg_weaktab)*Y(Ti46)); ydot_nuc(V47) = - (-screened_rates(k_V47_to_Ti47_weaktab)*Y(V47) + screened_rates(k_Ti47_to_V47_weaktab)*Y(Ti47)); + (-screened_rates(k_V47_to_Ti47_electron_capture_weaktab)*Y(V47) + screened_rates(k_Ti47_to_V47_beta_neg_weaktab)*Y(Ti47)); ydot_nuc(V48) = - (screened_rates(k_Cr48_to_V48_weaktab)*Y(Cr48) + -screened_rates(k_V48_to_Cr48_weaktab)*Y(V48)) + - (-screened_rates(k_V48_to_Ti48_weaktab)*Y(V48) + screened_rates(k_Ti48_to_V48_weaktab)*Y(Ti48)); + (screened_rates(k_Cr48_to_V48_electron_capture_weaktab)*Y(Cr48) + -screened_rates(k_V48_to_Cr48_beta_neg_weaktab)*Y(V48)) + + (-screened_rates(k_V48_to_Ti48_electron_capture_weaktab)*Y(V48) + screened_rates(k_Ti48_to_V48_beta_neg_weaktab)*Y(Ti48)); ydot_nuc(V49) = - (screened_rates(k_Cr49_to_V49_weaktab)*Y(Cr49) + -screened_rates(k_V49_to_Cr49_weaktab)*Y(V49)) + - (-screened_rates(k_V49_to_Ti49_weaktab)*Y(V49) + screened_rates(k_Ti49_to_V49_weaktab)*Y(Ti49)); + (screened_rates(k_Cr49_to_V49_electron_capture_weaktab)*Y(Cr49) + -screened_rates(k_V49_to_Cr49_beta_neg_weaktab)*Y(V49)) + + (-screened_rates(k_V49_to_Ti49_electron_capture_weaktab)*Y(V49) + screened_rates(k_Ti49_to_V49_beta_neg_weaktab)*Y(Ti49)); ydot_nuc(V50) = - (-screened_rates(k_V50_to_Cr50_weaktab)*Y(V50) + screened_rates(k_Cr50_to_V50_weaktab)*Y(Cr50)) + - (-screened_rates(k_V50_to_Ti50_weaktab)*Y(V50) + screened_rates(k_Ti50_to_V50_weaktab)*Y(Ti50)); + (-screened_rates(k_V50_to_Cr50_beta_neg_weaktab)*Y(V50) + screened_rates(k_Cr50_to_V50_electron_capture_weaktab)*Y(Cr50)) + + (-screened_rates(k_V50_to_Ti50_electron_capture_weaktab)*Y(V50) + screened_rates(k_Ti50_to_V50_beta_neg_weaktab)*Y(Ti50)); ydot_nuc(V51) = - (screened_rates(k_Cr51_to_V51_weaktab)*Y(Cr51) + -screened_rates(k_V51_to_Cr51_weaktab)*Y(V51)) + - (screened_rates(k_Ti51_to_V51_weaktab)*Y(Ti51) + -screened_rates(k_V51_to_Ti51_weaktab)*Y(V51)); + (screened_rates(k_Cr51_to_V51_electron_capture_weaktab)*Y(Cr51) + -screened_rates(k_V51_to_Cr51_beta_neg_weaktab)*Y(V51)) + + (screened_rates(k_Ti51_to_V51_beta_neg_weaktab)*Y(Ti51) + -screened_rates(k_V51_to_Ti51_electron_capture_weaktab)*Y(V51)); ydot_nuc(V52) = - (-screened_rates(k_V52_to_Cr52_weaktab)*Y(V52) + screened_rates(k_Cr52_to_V52_weaktab)*Y(Cr52)); + (-screened_rates(k_V52_to_Cr52_beta_neg_weaktab)*Y(V52) + screened_rates(k_Cr52_to_V52_electron_capture_weaktab)*Y(Cr52)); ydot_nuc(Cr48) = - (-screened_rates(k_Cr48_to_V48_weaktab)*Y(Cr48) + screened_rates(k_V48_to_Cr48_weaktab)*Y(V48)); + (-screened_rates(k_Cr48_to_V48_electron_capture_weaktab)*Y(Cr48) + screened_rates(k_V48_to_Cr48_beta_neg_weaktab)*Y(V48)); ydot_nuc(Cr49) = - (-screened_rates(k_Cr49_to_V49_weaktab)*Y(Cr49) + screened_rates(k_V49_to_Cr49_weaktab)*Y(V49)); + (-screened_rates(k_Cr49_to_V49_electron_capture_weaktab)*Y(Cr49) + screened_rates(k_V49_to_Cr49_beta_neg_weaktab)*Y(V49)); ydot_nuc(Cr50) = - (screened_rates(k_Mn50_to_Cr50_weaktab)*Y(Mn50) + -screened_rates(k_Cr50_to_Mn50_weaktab)*Y(Cr50)) + - (screened_rates(k_V50_to_Cr50_weaktab)*Y(V50) + -screened_rates(k_Cr50_to_V50_weaktab)*Y(Cr50)); + (screened_rates(k_Mn50_to_Cr50_electron_capture_weaktab)*Y(Mn50) + -screened_rates(k_Cr50_to_Mn50_beta_neg_weaktab)*Y(Cr50)) + + (screened_rates(k_V50_to_Cr50_beta_neg_weaktab)*Y(V50) + -screened_rates(k_Cr50_to_V50_electron_capture_weaktab)*Y(Cr50)); ydot_nuc(Cr51) = - (-screened_rates(k_Cr51_to_V51_weaktab)*Y(Cr51) + screened_rates(k_V51_to_Cr51_weaktab)*Y(V51)) + - (screened_rates(k_Mn51_to_Cr51_weaktab)*Y(Mn51) + -screened_rates(k_Cr51_to_Mn51_weaktab)*Y(Cr51)); + (-screened_rates(k_Cr51_to_V51_electron_capture_weaktab)*Y(Cr51) + screened_rates(k_V51_to_Cr51_beta_neg_weaktab)*Y(V51)) + + (screened_rates(k_Mn51_to_Cr51_electron_capture_weaktab)*Y(Mn51) + -screened_rates(k_Cr51_to_Mn51_beta_neg_weaktab)*Y(Cr51)); ydot_nuc(Cr52) = - (screened_rates(k_Mn52_to_Cr52_weaktab)*Y(Mn52) + -screened_rates(k_Cr52_to_Mn52_weaktab)*Y(Cr52)) + - (screened_rates(k_V52_to_Cr52_weaktab)*Y(V52) + -screened_rates(k_Cr52_to_V52_weaktab)*Y(Cr52)); + (screened_rates(k_Mn52_to_Cr52_electron_capture_weaktab)*Y(Mn52) + -screened_rates(k_Cr52_to_Mn52_beta_neg_weaktab)*Y(Cr52)) + + (screened_rates(k_V52_to_Cr52_beta_neg_weaktab)*Y(V52) + -screened_rates(k_Cr52_to_V52_electron_capture_weaktab)*Y(Cr52)); ydot_nuc(Cr53) = - (screened_rates(k_Mn53_to_Cr53_weaktab)*Y(Mn53) + -screened_rates(k_Cr53_to_Mn53_weaktab)*Y(Cr53)); + (screened_rates(k_Mn53_to_Cr53_electron_capture_weaktab)*Y(Mn53) + -screened_rates(k_Cr53_to_Mn53_beta_neg_weaktab)*Y(Cr53)); ydot_nuc(Cr54) = - (screened_rates(k_Mn54_to_Cr54_weaktab)*Y(Mn54) + -screened_rates(k_Cr54_to_Mn54_weaktab)*Y(Cr54)); + (screened_rates(k_Mn54_to_Cr54_electron_capture_weaktab)*Y(Mn54) + -screened_rates(k_Cr54_to_Mn54_beta_neg_weaktab)*Y(Cr54)); ydot_nuc(Mn50) = - (-screened_rates(k_Mn50_to_Cr50_weaktab)*Y(Mn50) + screened_rates(k_Cr50_to_Mn50_weaktab)*Y(Cr50)); + (-screened_rates(k_Mn50_to_Cr50_electron_capture_weaktab)*Y(Mn50) + screened_rates(k_Cr50_to_Mn50_beta_neg_weaktab)*Y(Cr50)); ydot_nuc(Mn51) = - (-screened_rates(k_Mn51_to_Cr51_weaktab)*Y(Mn51) + screened_rates(k_Cr51_to_Mn51_weaktab)*Y(Cr51)); + (-screened_rates(k_Mn51_to_Cr51_electron_capture_weaktab)*Y(Mn51) + screened_rates(k_Cr51_to_Mn51_beta_neg_weaktab)*Y(Cr51)); ydot_nuc(Mn52) = - (screened_rates(k_Fe52_to_Mn52_weaktab)*Y(Fe52) + -screened_rates(k_Mn52_to_Fe52_weaktab)*Y(Mn52)) + - (-screened_rates(k_Mn52_to_Cr52_weaktab)*Y(Mn52) + screened_rates(k_Cr52_to_Mn52_weaktab)*Y(Cr52)); + (screened_rates(k_Fe52_to_Mn52_electron_capture_weaktab)*Y(Fe52) + -screened_rates(k_Mn52_to_Fe52_beta_neg_weaktab)*Y(Mn52)) + + (-screened_rates(k_Mn52_to_Cr52_electron_capture_weaktab)*Y(Mn52) + screened_rates(k_Cr52_to_Mn52_beta_neg_weaktab)*Y(Cr52)); ydot_nuc(Mn53) = - (screened_rates(k_Fe53_to_Mn53_weaktab)*Y(Fe53) + -screened_rates(k_Mn53_to_Fe53_weaktab)*Y(Mn53)) + - (-screened_rates(k_Mn53_to_Cr53_weaktab)*Y(Mn53) + screened_rates(k_Cr53_to_Mn53_weaktab)*Y(Cr53)); + (screened_rates(k_Fe53_to_Mn53_electron_capture_weaktab)*Y(Fe53) + -screened_rates(k_Mn53_to_Fe53_beta_neg_weaktab)*Y(Mn53)) + + (-screened_rates(k_Mn53_to_Cr53_electron_capture_weaktab)*Y(Mn53) + screened_rates(k_Cr53_to_Mn53_beta_neg_weaktab)*Y(Cr53)); ydot_nuc(Mn54) = - (-screened_rates(k_Mn54_to_Cr54_weaktab)*Y(Mn54) + screened_rates(k_Cr54_to_Mn54_weaktab)*Y(Cr54)) + - (-screened_rates(k_Mn54_to_Fe54_weaktab)*Y(Mn54) + screened_rates(k_Fe54_to_Mn54_weaktab)*Y(Fe54)); + (-screened_rates(k_Mn54_to_Cr54_electron_capture_weaktab)*Y(Mn54) + screened_rates(k_Cr54_to_Mn54_beta_neg_weaktab)*Y(Cr54)) + + (-screened_rates(k_Mn54_to_Fe54_beta_neg_weaktab)*Y(Mn54) + screened_rates(k_Fe54_to_Mn54_electron_capture_weaktab)*Y(Fe54)); ydot_nuc(Mn55) = - (screened_rates(k_Fe55_to_Mn55_weaktab)*Y(Fe55) + -screened_rates(k_Mn55_to_Fe55_weaktab)*Y(Mn55)); + (screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab)*Y(Fe55) + -screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab)*Y(Mn55)); ydot_nuc(Fe52) = - (-screened_rates(k_Fe52_to_Mn52_weaktab)*Y(Fe52) + screened_rates(k_Mn52_to_Fe52_weaktab)*Y(Mn52)); + (-screened_rates(k_Fe52_to_Mn52_electron_capture_weaktab)*Y(Fe52) + screened_rates(k_Mn52_to_Fe52_beta_neg_weaktab)*Y(Mn52)); ydot_nuc(Fe53) = - (screened_rates(k_Co53_to_Fe53_weaktab)*Y(Co53) + -screened_rates(k_Fe53_to_Co53_weaktab)*Y(Fe53)) + - (-screened_rates(k_Fe53_to_Mn53_weaktab)*Y(Fe53) + screened_rates(k_Mn53_to_Fe53_weaktab)*Y(Mn53)); + (screened_rates(k_Co53_to_Fe53_electron_capture_weaktab)*Y(Co53) + -screened_rates(k_Fe53_to_Co53_beta_neg_weaktab)*Y(Fe53)) + + (-screened_rates(k_Fe53_to_Mn53_electron_capture_weaktab)*Y(Fe53) + screened_rates(k_Mn53_to_Fe53_beta_neg_weaktab)*Y(Mn53)); ydot_nuc(Fe54) = - (screened_rates(k_Co54_to_Fe54_weaktab)*Y(Co54) + -screened_rates(k_Fe54_to_Co54_weaktab)*Y(Fe54)) + - (screened_rates(k_Mn54_to_Fe54_weaktab)*Y(Mn54) + -screened_rates(k_Fe54_to_Mn54_weaktab)*Y(Fe54)); + (screened_rates(k_Co54_to_Fe54_electron_capture_weaktab)*Y(Co54) + -screened_rates(k_Fe54_to_Co54_beta_neg_weaktab)*Y(Fe54)) + + (screened_rates(k_Mn54_to_Fe54_beta_neg_weaktab)*Y(Mn54) + -screened_rates(k_Fe54_to_Mn54_electron_capture_weaktab)*Y(Fe54)); ydot_nuc(Fe55) = - (screened_rates(k_Co55_to_Fe55_weaktab)*Y(Co55) + -screened_rates(k_Fe55_to_Co55_weaktab)*Y(Fe55)) + - (-screened_rates(k_Fe55_to_Mn55_weaktab)*Y(Fe55) + screened_rates(k_Mn55_to_Fe55_weaktab)*Y(Mn55)); + (screened_rates(k_Co55_to_Fe55_electron_capture_weaktab)*Y(Co55) + -screened_rates(k_Fe55_to_Co55_beta_neg_weaktab)*Y(Fe55)) + + (-screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab)*Y(Fe55) + screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab)*Y(Mn55)); ydot_nuc(Fe56) = - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Fe57) = - (screened_rates(k_Co57_to_Fe57_weaktab)*Y(Co57) + -screened_rates(k_Fe57_to_Co57_weaktab)*Y(Fe57)); + (screened_rates(k_Co57_to_Fe57_electron_capture_weaktab)*Y(Co57) + -screened_rates(k_Fe57_to_Co57_beta_neg_weaktab)*Y(Fe57)); ydot_nuc(Fe58) = - (screened_rates(k_Co58_to_Fe58_weaktab)*Y(Co58) + -screened_rates(k_Fe58_to_Co58_weaktab)*Y(Fe58)); + (screened_rates(k_Co58_to_Fe58_electron_capture_weaktab)*Y(Co58) + -screened_rates(k_Fe58_to_Co58_beta_neg_weaktab)*Y(Fe58)); ydot_nuc(Co53) = - (-screened_rates(k_Co53_to_Fe53_weaktab)*Y(Co53) + screened_rates(k_Fe53_to_Co53_weaktab)*Y(Fe53)); + (-screened_rates(k_Co53_to_Fe53_electron_capture_weaktab)*Y(Co53) + screened_rates(k_Fe53_to_Co53_beta_neg_weaktab)*Y(Fe53)); ydot_nuc(Co54) = - (-screened_rates(k_Co54_to_Fe54_weaktab)*Y(Co54) + screened_rates(k_Fe54_to_Co54_weaktab)*Y(Fe54)); + (-screened_rates(k_Co54_to_Fe54_electron_capture_weaktab)*Y(Co54) + screened_rates(k_Fe54_to_Co54_beta_neg_weaktab)*Y(Fe54)); ydot_nuc(Co55) = - (-screened_rates(k_Co55_to_Fe55_weaktab)*Y(Co55) + screened_rates(k_Fe55_to_Co55_weaktab)*Y(Fe55)); + (-screened_rates(k_Co55_to_Fe55_electron_capture_weaktab)*Y(Co55) + screened_rates(k_Fe55_to_Co55_beta_neg_weaktab)*Y(Fe55)); ydot_nuc(Co56) = - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = - (-screened_rates(k_Co57_to_Fe57_weaktab)*Y(Co57) + screened_rates(k_Fe57_to_Co57_weaktab)*Y(Fe57)) + - (screened_rates(k_Ni57_to_Co57_weaktab)*Y(Ni57) + -screened_rates(k_Co57_to_Ni57_weaktab)*Y(Co57)); + (-screened_rates(k_Co57_to_Fe57_electron_capture_weaktab)*Y(Co57) + screened_rates(k_Fe57_to_Co57_beta_neg_weaktab)*Y(Fe57)) + + (screened_rates(k_Ni57_to_Co57_electron_capture_weaktab)*Y(Ni57) + -screened_rates(k_Co57_to_Ni57_beta_neg_weaktab)*Y(Co57)); ydot_nuc(Co58) = - (-screened_rates(k_Co58_to_Fe58_weaktab)*Y(Co58) + screened_rates(k_Fe58_to_Co58_weaktab)*Y(Fe58)) + - (-screened_rates(k_Co58_to_Ni58_weaktab)*Y(Co58) + screened_rates(k_Ni58_to_Co58_weaktab)*Y(Ni58)); + (-screened_rates(k_Co58_to_Fe58_electron_capture_weaktab)*Y(Co58) + screened_rates(k_Fe58_to_Co58_beta_neg_weaktab)*Y(Fe58)) + + (-screened_rates(k_Co58_to_Ni58_beta_neg_weaktab)*Y(Co58) + screened_rates(k_Ni58_to_Co58_electron_capture_weaktab)*Y(Ni58)); ydot_nuc(Co59) = - (screened_rates(k_Ni59_to_Co59_weaktab)*Y(Ni59) + -screened_rates(k_Co59_to_Ni59_weaktab)*Y(Co59)); + (screened_rates(k_Ni59_to_Co59_electron_capture_weaktab)*Y(Ni59) + -screened_rates(k_Co59_to_Ni59_beta_neg_weaktab)*Y(Co59)); ydot_nuc(Ni56) = - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni57) = - (screened_rates(k_Cu57_to_Ni57_weaktab)*Y(Cu57) + -screened_rates(k_Ni57_to_Cu57_weaktab)*Y(Ni57)) + - (-screened_rates(k_Ni57_to_Co57_weaktab)*Y(Ni57) + screened_rates(k_Co57_to_Ni57_weaktab)*Y(Co57)); + (screened_rates(k_Cu57_to_Ni57_electron_capture_weaktab)*Y(Cu57) + -screened_rates(k_Ni57_to_Cu57_beta_neg_weaktab)*Y(Ni57)) + + (-screened_rates(k_Ni57_to_Co57_electron_capture_weaktab)*Y(Ni57) + screened_rates(k_Co57_to_Ni57_beta_neg_weaktab)*Y(Co57)); ydot_nuc(Ni58) = - screened_rates(k_Zn59_to_p_Ni58_reaclib)*Y(Zn59) + - (screened_rates(k_Co58_to_Ni58_weaktab)*Y(Co58) + -screened_rates(k_Ni58_to_Co58_weaktab)*Y(Ni58)) + - (screened_rates(k_Cu58_to_Ni58_weaktab)*Y(Cu58) + -screened_rates(k_Ni58_to_Cu58_weaktab)*Y(Ni58)); + screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib)*Y(Zn59) + + (screened_rates(k_Co58_to_Ni58_beta_neg_weaktab)*Y(Co58) + -screened_rates(k_Ni58_to_Co58_electron_capture_weaktab)*Y(Ni58)) + + (screened_rates(k_Cu58_to_Ni58_electron_capture_weaktab)*Y(Cu58) + -screened_rates(k_Ni58_to_Cu58_beta_neg_weaktab)*Y(Ni58)); ydot_nuc(Ni59) = - (screened_rates(k_Cu59_to_Ni59_weaktab)*Y(Cu59) + -screened_rates(k_Ni59_to_Cu59_weaktab)*Y(Ni59)) + - (-screened_rates(k_Ni59_to_Co59_weaktab)*Y(Ni59) + screened_rates(k_Co59_to_Ni59_weaktab)*Y(Co59)); + (screened_rates(k_Cu59_to_Ni59_electron_capture_weaktab)*Y(Cu59) + -screened_rates(k_Ni59_to_Cu59_beta_neg_weaktab)*Y(Ni59)) + + (-screened_rates(k_Ni59_to_Co59_electron_capture_weaktab)*Y(Ni59) + screened_rates(k_Co59_to_Ni59_beta_neg_weaktab)*Y(Co59)); ydot_nuc(Ni60) = - (screened_rates(k_Cu60_to_Ni60_weaktab)*Y(Cu60) + -screened_rates(k_Ni60_to_Cu60_weaktab)*Y(Ni60)); + (screened_rates(k_Cu60_to_Ni60_electron_capture_weaktab)*Y(Cu60) + -screened_rates(k_Ni60_to_Cu60_beta_neg_weaktab)*Y(Ni60)); ydot_nuc(Ni61) = - (screened_rates(k_Cu61_to_Ni61_weaktab)*Y(Cu61) + -screened_rates(k_Ni61_to_Cu61_weaktab)*Y(Ni61)); + (screened_rates(k_Cu61_to_Ni61_electron_capture_weaktab)*Y(Cu61) + -screened_rates(k_Ni61_to_Cu61_beta_neg_weaktab)*Y(Ni61)); ydot_nuc(Ni62) = - (screened_rates(k_Cu62_to_Ni62_weaktab)*Y(Cu62) + -screened_rates(k_Ni62_to_Cu62_weaktab)*Y(Ni62)); + (screened_rates(k_Cu62_to_Ni62_electron_capture_weaktab)*Y(Cu62) + -screened_rates(k_Ni62_to_Cu62_beta_neg_weaktab)*Y(Ni62)); ydot_nuc(Ni63) = - (-screened_rates(k_Ni63_to_Cu63_weaktab)*Y(Ni63) + screened_rates(k_Cu63_to_Ni63_weaktab)*Y(Cu63)); + (-screened_rates(k_Ni63_to_Cu63_beta_neg_weaktab)*Y(Ni63) + screened_rates(k_Cu63_to_Ni63_electron_capture_weaktab)*Y(Cu63)); ydot_nuc(Ni64) = - (screened_rates(k_Cu64_to_Ni64_weaktab)*Y(Cu64) + -screened_rates(k_Ni64_to_Cu64_weaktab)*Y(Ni64)); + (screened_rates(k_Cu64_to_Ni64_electron_capture_weaktab)*Y(Cu64) + -screened_rates(k_Ni64_to_Cu64_beta_neg_weaktab)*Y(Ni64)); ydot_nuc(Cu57) = - (-screened_rates(k_Cu57_to_Ni57_weaktab)*Y(Cu57) + screened_rates(k_Ni57_to_Cu57_weaktab)*Y(Ni57)); + (-screened_rates(k_Cu57_to_Ni57_electron_capture_weaktab)*Y(Cu57) + screened_rates(k_Ni57_to_Cu57_beta_neg_weaktab)*Y(Ni57)); ydot_nuc(Cu58) = - (-screened_rates(k_Cu58_to_Ni58_weaktab)*Y(Cu58) + screened_rates(k_Ni58_to_Cu58_weaktab)*Y(Ni58)); + (-screened_rates(k_Cu58_to_Ni58_electron_capture_weaktab)*Y(Cu58) + screened_rates(k_Ni58_to_Cu58_beta_neg_weaktab)*Y(Ni58)); ydot_nuc(Cu59) = - screened_rates(k_Zn59_to_Cu59_reaclib)*Y(Zn59) + - (-screened_rates(k_Cu59_to_Ni59_weaktab)*Y(Cu59) + screened_rates(k_Ni59_to_Cu59_weaktab)*Y(Ni59)); + screened_rates(k_Zn59_to_Cu59_beta_pos_reaclib)*Y(Zn59) + + (-screened_rates(k_Cu59_to_Ni59_electron_capture_weaktab)*Y(Cu59) + screened_rates(k_Ni59_to_Cu59_beta_neg_weaktab)*Y(Ni59)); ydot_nuc(Cu60) = - (-screened_rates(k_Cu60_to_Ni60_weaktab)*Y(Cu60) + screened_rates(k_Ni60_to_Cu60_weaktab)*Y(Ni60)) + - (screened_rates(k_Zn60_to_Cu60_weaktab)*Y(Zn60) + -screened_rates(k_Cu60_to_Zn60_weaktab)*Y(Cu60)); + (-screened_rates(k_Cu60_to_Ni60_electron_capture_weaktab)*Y(Cu60) + screened_rates(k_Ni60_to_Cu60_beta_neg_weaktab)*Y(Ni60)) + + (screened_rates(k_Zn60_to_Cu60_electron_capture_weaktab)*Y(Zn60) + -screened_rates(k_Cu60_to_Zn60_beta_neg_weaktab)*Y(Cu60)); ydot_nuc(Cu61) = - (-screened_rates(k_Cu61_to_Ni61_weaktab)*Y(Cu61) + screened_rates(k_Ni61_to_Cu61_weaktab)*Y(Ni61)) + - (screened_rates(k_Zn61_to_Cu61_weaktab)*Y(Zn61) + -screened_rates(k_Cu61_to_Zn61_weaktab)*Y(Cu61)); + (-screened_rates(k_Cu61_to_Ni61_electron_capture_weaktab)*Y(Cu61) + screened_rates(k_Ni61_to_Cu61_beta_neg_weaktab)*Y(Ni61)) + + (screened_rates(k_Zn61_to_Cu61_electron_capture_weaktab)*Y(Zn61) + -screened_rates(k_Cu61_to_Zn61_beta_neg_weaktab)*Y(Cu61)); ydot_nuc(Cu62) = - (-screened_rates(k_Cu62_to_Ni62_weaktab)*Y(Cu62) + screened_rates(k_Ni62_to_Cu62_weaktab)*Y(Ni62)) + - (screened_rates(k_Zn62_to_Cu62_weaktab)*Y(Zn62) + -screened_rates(k_Cu62_to_Zn62_weaktab)*Y(Cu62)); + (-screened_rates(k_Cu62_to_Ni62_electron_capture_weaktab)*Y(Cu62) + screened_rates(k_Ni62_to_Cu62_beta_neg_weaktab)*Y(Ni62)) + + (screened_rates(k_Zn62_to_Cu62_electron_capture_weaktab)*Y(Zn62) + -screened_rates(k_Cu62_to_Zn62_beta_neg_weaktab)*Y(Cu62)); ydot_nuc(Cu63) = - (screened_rates(k_Ni63_to_Cu63_weaktab)*Y(Ni63) + -screened_rates(k_Cu63_to_Ni63_weaktab)*Y(Cu63)) + - (screened_rates(k_Zn63_to_Cu63_weaktab)*Y(Zn63) + -screened_rates(k_Cu63_to_Zn63_weaktab)*Y(Cu63)); + (screened_rates(k_Ni63_to_Cu63_beta_neg_weaktab)*Y(Ni63) + -screened_rates(k_Cu63_to_Ni63_electron_capture_weaktab)*Y(Cu63)) + + (screened_rates(k_Zn63_to_Cu63_electron_capture_weaktab)*Y(Zn63) + -screened_rates(k_Cu63_to_Zn63_beta_neg_weaktab)*Y(Cu63)); ydot_nuc(Cu64) = - (-screened_rates(k_Cu64_to_Ni64_weaktab)*Y(Cu64) + screened_rates(k_Ni64_to_Cu64_weaktab)*Y(Ni64)) + - (-screened_rates(k_Cu64_to_Zn64_weaktab)*Y(Cu64) + screened_rates(k_Zn64_to_Cu64_weaktab)*Y(Zn64)); + (-screened_rates(k_Cu64_to_Ni64_electron_capture_weaktab)*Y(Cu64) + screened_rates(k_Ni64_to_Cu64_beta_neg_weaktab)*Y(Ni64)) + + (-screened_rates(k_Cu64_to_Zn64_beta_neg_weaktab)*Y(Cu64) + screened_rates(k_Zn64_to_Cu64_electron_capture_weaktab)*Y(Zn64)); ydot_nuc(Cu65) = - (screened_rates(k_Zn65_to_Cu65_weaktab)*Y(Zn65) + -screened_rates(k_Cu65_to_Zn65_weaktab)*Y(Cu65)); + (screened_rates(k_Zn65_to_Cu65_electron_capture_weaktab)*Y(Zn65) + -screened_rates(k_Cu65_to_Zn65_beta_neg_weaktab)*Y(Cu65)); ydot_nuc(Zn59) = - -screened_rates(k_Zn59_to_Cu59_reaclib)*Y(Zn59) + - -screened_rates(k_Zn59_to_p_Ni58_reaclib)*Y(Zn59); + -screened_rates(k_Zn59_to_Cu59_beta_pos_reaclib)*Y(Zn59) + + -screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib)*Y(Zn59); ydot_nuc(Zn60) = - (-screened_rates(k_Zn60_to_Cu60_weaktab)*Y(Zn60) + screened_rates(k_Cu60_to_Zn60_weaktab)*Y(Cu60)); + (-screened_rates(k_Zn60_to_Cu60_electron_capture_weaktab)*Y(Zn60) + screened_rates(k_Cu60_to_Zn60_beta_neg_weaktab)*Y(Cu60)); ydot_nuc(Zn61) = - (-screened_rates(k_Zn61_to_Cu61_weaktab)*Y(Zn61) + screened_rates(k_Cu61_to_Zn61_weaktab)*Y(Cu61)); + (-screened_rates(k_Zn61_to_Cu61_electron_capture_weaktab)*Y(Zn61) + screened_rates(k_Cu61_to_Zn61_beta_neg_weaktab)*Y(Cu61)); ydot_nuc(Zn62) = - (screened_rates(k_Ga62_to_Zn62_weaktab)*Y(Ga62) + -screened_rates(k_Zn62_to_Ga62_weaktab)*Y(Zn62)) + - (-screened_rates(k_Zn62_to_Cu62_weaktab)*Y(Zn62) + screened_rates(k_Cu62_to_Zn62_weaktab)*Y(Cu62)); + (screened_rates(k_Ga62_to_Zn62_electron_capture_weaktab)*Y(Ga62) + -screened_rates(k_Zn62_to_Ga62_beta_neg_weaktab)*Y(Zn62)) + + (-screened_rates(k_Zn62_to_Cu62_electron_capture_weaktab)*Y(Zn62) + screened_rates(k_Cu62_to_Zn62_beta_neg_weaktab)*Y(Cu62)); ydot_nuc(Zn63) = - (screened_rates(k_Ga63_to_Zn63_weaktab)*Y(Ga63) + -screened_rates(k_Zn63_to_Ga63_weaktab)*Y(Zn63)) + - (-screened_rates(k_Zn63_to_Cu63_weaktab)*Y(Zn63) + screened_rates(k_Cu63_to_Zn63_weaktab)*Y(Cu63)); + (screened_rates(k_Ga63_to_Zn63_electron_capture_weaktab)*Y(Ga63) + -screened_rates(k_Zn63_to_Ga63_beta_neg_weaktab)*Y(Zn63)) + + (-screened_rates(k_Zn63_to_Cu63_electron_capture_weaktab)*Y(Zn63) + screened_rates(k_Cu63_to_Zn63_beta_neg_weaktab)*Y(Cu63)); ydot_nuc(Zn64) = - (screened_rates(k_Cu64_to_Zn64_weaktab)*Y(Cu64) + -screened_rates(k_Zn64_to_Cu64_weaktab)*Y(Zn64)) + - (screened_rates(k_Ga64_to_Zn64_weaktab)*Y(Ga64) + -screened_rates(k_Zn64_to_Ga64_weaktab)*Y(Zn64)); + (screened_rates(k_Cu64_to_Zn64_beta_neg_weaktab)*Y(Cu64) + -screened_rates(k_Zn64_to_Cu64_electron_capture_weaktab)*Y(Zn64)) + + (screened_rates(k_Ga64_to_Zn64_electron_capture_weaktab)*Y(Ga64) + -screened_rates(k_Zn64_to_Ga64_beta_neg_weaktab)*Y(Zn64)); ydot_nuc(Zn65) = - (-screened_rates(k_Zn65_to_Cu65_weaktab)*Y(Zn65) + screened_rates(k_Cu65_to_Zn65_weaktab)*Y(Cu65)); + (-screened_rates(k_Zn65_to_Cu65_electron_capture_weaktab)*Y(Zn65) + screened_rates(k_Cu65_to_Zn65_beta_neg_weaktab)*Y(Cu65)); ydot_nuc(Zn66) = 0.0_rt; ydot_nuc(Ga62) = - (-screened_rates(k_Ga62_to_Zn62_weaktab)*Y(Ga62) + screened_rates(k_Zn62_to_Ga62_weaktab)*Y(Zn62)); + (-screened_rates(k_Ga62_to_Zn62_electron_capture_weaktab)*Y(Ga62) + screened_rates(k_Zn62_to_Ga62_beta_neg_weaktab)*Y(Zn62)); ydot_nuc(Ga63) = - screened_rates(k_Ge63_to_Ga63_reaclib)*Y(Ge63) + - (-screened_rates(k_Ga63_to_Zn63_weaktab)*Y(Ga63) + screened_rates(k_Zn63_to_Ga63_weaktab)*Y(Zn63)); + screened_rates(k_Ge63_to_Ga63_beta_pos_reaclib)*Y(Ge63) + + (-screened_rates(k_Ga63_to_Zn63_electron_capture_weaktab)*Y(Ga63) + screened_rates(k_Zn63_to_Ga63_beta_neg_weaktab)*Y(Zn63)); ydot_nuc(Ga64) = - (-screened_rates(k_Ga64_to_Zn64_weaktab)*Y(Ga64) + screened_rates(k_Zn64_to_Ga64_weaktab)*Y(Zn64)) + - (screened_rates(k_Ge64_to_Ga64_weaktab)*Y(Ge64) + -screened_rates(k_Ga64_to_Ge64_weaktab)*Y(Ga64)); + (-screened_rates(k_Ga64_to_Zn64_electron_capture_weaktab)*Y(Ga64) + screened_rates(k_Zn64_to_Ga64_beta_neg_weaktab)*Y(Zn64)) + + (screened_rates(k_Ge64_to_Ga64_electron_capture_weaktab)*Y(Ge64) + -screened_rates(k_Ga64_to_Ge64_beta_neg_weaktab)*Y(Ga64)); ydot_nuc(Ge63) = - -screened_rates(k_Ge63_to_Ga63_reaclib)*Y(Ge63); + -screened_rates(k_Ge63_to_Ga63_beta_pos_reaclib)*Y(Ge63); ydot_nuc(Ge64) = - (-screened_rates(k_Ge64_to_Ga64_weaktab)*Y(Ge64) + screened_rates(k_Ga64_to_Ge64_weaktab)*Y(Ga64)); + (-screened_rates(k_Ge64_to_Ga64_electron_capture_weaktab)*Y(Ge64) + screened_rates(k_Ga64_to_Ge64_beta_neg_weaktab)*Y(Ga64)); enuc_weak = rate_eval.enuc_weak; } @@ -6064,3030 +3872,3029 @@ AMREX_GPU_DEVICE AMREX_INLINE void rhs_nuc(const burn_t& state, amrex::Array1D& ydot_nuc, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) { + const amrex::Array1D& screened_rates) { using namespace Rates; ydot_nuc(N) = - (-screened_rates(k_n_p_to_d_reaclib)*Y(N)*Y(H1)*state.rho + screened_rates(k_d_to_n_p_reaclib)*Y(H2)) + - (-screened_rates(k_n_He3_to_He4_reaclib)*Y(He3)*Y(N)*state.rho + screened_rates(k_He4_to_n_He3_reaclib)*Y(He4)) + - (-screened_rates(k_n_Li6_to_Li7_reaclib)*Y(Li6)*Y(N)*state.rho + screened_rates(k_Li7_to_n_Li6_reaclib)*Y(Li7)) + - (-screened_rates(k_n_B10_to_B11_reaclib)*Y(B10)*Y(N)*state.rho + screened_rates(k_B11_to_n_B10_reaclib)*Y(B11)) + - (-screened_rates(k_n_C12_to_C13_reaclib)*Y(C12)*Y(N)*state.rho + screened_rates(k_C13_to_n_C12_reaclib)*Y(C13)) + - (-screened_rates(k_n_C13_to_C14_reaclib)*Y(C13)*Y(N)*state.rho + screened_rates(k_C14_to_n_C13_reaclib)*Y(C14)) + - (-screened_rates(k_n_N13_to_N14_reaclib)*Y(N13)*Y(N)*state.rho + screened_rates(k_N14_to_n_N13_reaclib)*Y(N14)) + - (-screened_rates(k_n_N14_to_N15_reaclib)*Y(N14)*Y(N)*state.rho + screened_rates(k_N15_to_n_N14_reaclib)*Y(N15)) + - (-screened_rates(k_n_O14_to_O15_reaclib)*Y(O14)*Y(N)*state.rho + screened_rates(k_O15_to_n_O14_reaclib)*Y(O15)) + - (-screened_rates(k_n_O15_to_O16_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_O16_to_n_O15_reaclib)*Y(O16)) + - (-screened_rates(k_n_O16_to_O17_reaclib)*Y(O16)*Y(N)*state.rho + screened_rates(k_O17_to_n_O16_reaclib)*Y(O17)) + - (-screened_rates(k_n_O17_to_O18_reaclib)*Y(O17)*Y(N)*state.rho + screened_rates(k_O18_to_n_O17_reaclib)*Y(O18)) + - (-screened_rates(k_n_F17_to_F18_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_F18_to_n_F17_reaclib)*Y(F18)) + - (-screened_rates(k_n_F18_to_F19_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_F19_to_n_F18_reaclib)*Y(F19)) + - (-screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_Ne19_to_n_Ne18_reaclib)*Y(Ne19)) + - (-screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_Ne20_to_n_Ne19_reaclib)*Y(Ne20)) + - (-screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(Ne20)*Y(N)*state.rho + screened_rates(k_Ne21_to_n_Ne20_reaclib)*Y(Ne21)) + - (-screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(Ne21)*Y(N)*state.rho + screened_rates(k_Ne22_to_n_Ne21_reaclib)*Y(Ne22)) + - (-screened_rates(k_n_Na21_to_Na22_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_Na22_to_n_Na21_reaclib)*Y(Na22)) + - (-screened_rates(k_n_Na22_to_Na23_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_Na23_to_n_Na22_reaclib)*Y(Na23)) + - (-screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_Mg24_to_n_Mg23_reaclib)*Y(Mg24)) + - (-screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(Mg24)*Y(N)*state.rho + screened_rates(k_Mg25_to_n_Mg24_reaclib)*Y(Mg25)) + - (-screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(Mg25)*Y(N)*state.rho + screened_rates(k_Mg26_to_n_Mg25_reaclib)*Y(Mg26)) + - (-screened_rates(k_n_Al25_to_Al26_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_Al26_to_n_Al25_reaclib)*Y(Al26)) + - (-screened_rates(k_n_Al26_to_Al27_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_Al27_to_n_Al26_reaclib)*Y(Al27)) + - (-screened_rates(k_n_Si28_to_Si29_reaclib)*Y(Si28)*Y(N)*state.rho + screened_rates(k_Si29_to_n_Si28_reaclib)*Y(Si29)) + - (-screened_rates(k_n_Si29_to_Si30_reaclib)*Y(Si29)*Y(N)*state.rho + screened_rates(k_Si30_to_n_Si29_reaclib)*Y(Si30)) + - (-screened_rates(k_n_Si30_to_Si31_reaclib)*Y(Si30)*Y(N)*state.rho + screened_rates(k_Si31_to_n_Si30_reaclib)*Y(Si31)) + - (-screened_rates(k_n_Si31_to_Si32_reaclib)*Y(Si31)*Y(N)*state.rho + screened_rates(k_Si32_to_n_Si31_reaclib)*Y(Si32)) + - (-screened_rates(k_n_P29_to_P30_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_P30_to_n_P29_reaclib)*Y(P30)) + - (-screened_rates(k_n_P30_to_P31_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_P31_to_n_P30_reaclib)*Y(P31)) + - (-screened_rates(k_n_P31_to_P32_reaclib)*Y(P31)*Y(N)*state.rho + screened_rates(k_P32_to_n_P31_reaclib)*Y(P32)) + - (-screened_rates(k_n_P32_to_P33_reaclib)*Y(P32)*Y(N)*state.rho + screened_rates(k_P33_to_n_P32_reaclib)*Y(P33)) + - (-screened_rates(k_n_S32_to_S33_reaclib)*Y(S32)*Y(N)*state.rho + screened_rates(k_S33_to_n_S32_reaclib)*Y(S33)) + - (-screened_rates(k_n_S33_to_S34_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_S34_to_n_S33_reaclib)*Y(S34)) + - (-screened_rates(k_n_S34_to_S35_reaclib)*Y(S34)*Y(N)*state.rho + screened_rates(k_S35_to_n_S34_reaclib)*Y(S35)) + - (-screened_rates(k_n_S35_to_S36_reaclib)*Y(S35)*Y(N)*state.rho + screened_rates(k_S36_to_n_S35_reaclib)*Y(S36)) + - (-screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_Cl34_to_n_Cl33_reaclib)*Y(Cl34)) + - (-screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_Cl35_to_n_Cl34_reaclib)*Y(Cl35)) + - (-screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_Cl36_to_n_Cl35_reaclib)*Y(Cl36)) + - (-screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_Cl37_to_n_Cl36_reaclib)*Y(Cl37)) + - (-screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_Ar37_to_n_Ar36_reaclib)*Y(Ar37)) + - (-screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_Ar38_to_n_Ar37_reaclib)*Y(Ar38)) + - (-screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(Ar38)*Y(N)*state.rho + screened_rates(k_Ar39_to_n_Ar38_reaclib)*Y(Ar39)) + - (-screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(Ar39)*Y(N)*state.rho + screened_rates(k_Ar40_to_n_Ar39_reaclib)*Y(Ar40)) + - (-screened_rates(k_n_K37_to_K38_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_K38_to_n_K37_reaclib)*Y(K38)) + - (-screened_rates(k_n_K38_to_K39_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_K39_to_n_K38_reaclib)*Y(K39)) + - (-screened_rates(k_n_K39_to_K40_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_K40_to_n_K39_reaclib)*Y(K40)) + - (-screened_rates(k_n_K40_to_K41_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_K41_to_n_K40_reaclib)*Y(K41)) + - (-screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(Ca40)*Y(N)*state.rho + screened_rates(k_Ca41_to_n_Ca40_reaclib)*Y(Ca41)) + - (-screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_Ca42_to_n_Ca41_reaclib)*Y(Ca42)) + - (-screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(Ca42)*Y(N)*state.rho + screened_rates(k_Ca43_to_n_Ca42_reaclib)*Y(Ca43)) + - (-screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(Ca43)*Y(N)*state.rho + screened_rates(k_Ca44_to_n_Ca43_reaclib)*Y(Ca44)) + - (-screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(Ca44)*Y(N)*state.rho + screened_rates(k_Ca45_to_n_Ca44_reaclib)*Y(Ca45)) + - (-screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(Ca45)*Y(N)*state.rho + screened_rates(k_Ca46_to_n_Ca45_reaclib)*Y(Ca46)) + - (-screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(Ca46)*Y(N)*state.rho + screened_rates(k_Ca47_to_n_Ca46_reaclib)*Y(Ca47)) + - (-screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(Ca47)*Y(N)*state.rho + screened_rates(k_Ca48_to_n_Ca47_reaclib)*Y(Ca48)) + - (-screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_Sc44_to_n_Sc43_reaclib)*Y(Sc44)) + - (-screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_Sc45_to_n_Sc44_reaclib)*Y(Sc45)) + - (-screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(Sc45)*Y(N)*state.rho + screened_rates(k_Sc46_to_n_Sc45_reaclib)*Y(Sc46)) + - (-screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(Sc46)*Y(N)*state.rho + screened_rates(k_Sc47_to_n_Sc46_reaclib)*Y(Sc47)) + - (-screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(Sc47)*Y(N)*state.rho + screened_rates(k_Sc48_to_n_Sc47_reaclib)*Y(Sc48)) + - (-screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(Sc48)*Y(N)*state.rho + screened_rates(k_Sc49_to_n_Sc48_reaclib)*Y(Sc49)) + - (-screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_Ti45_to_n_Ti44_reaclib)*Y(Ti45)) + - (-screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_Ti46_to_n_Ti45_reaclib)*Y(Ti46)) + - (-screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(Ti46)*Y(N)*state.rho + screened_rates(k_Ti47_to_n_Ti46_reaclib)*Y(Ti47)) + - (-screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_Ti48_to_n_Ti47_reaclib)*Y(Ti48)) + - (-screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(Ti48)*Y(N)*state.rho + screened_rates(k_Ti49_to_n_Ti48_reaclib)*Y(Ti49)) + - (-screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(Ti49)*Y(N)*state.rho + screened_rates(k_Ti50_to_n_Ti49_reaclib)*Y(Ti50)) + - (-screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(Ti50)*Y(N)*state.rho + screened_rates(k_Ti51_to_n_Ti50_reaclib)*Y(Ti51)) + - (-screened_rates(k_n_V46_to_V47_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_V47_to_n_V46_reaclib)*Y(V47)) + - (-screened_rates(k_n_V47_to_V48_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_V48_to_n_V47_reaclib)*Y(V48)) + - (-screened_rates(k_n_V48_to_V49_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_V49_to_n_V48_reaclib)*Y(V49)) + - (-screened_rates(k_n_V49_to_V50_reaclib)*Y(V49)*Y(N)*state.rho + screened_rates(k_V50_to_n_V49_reaclib)*Y(V50)) + - (-screened_rates(k_n_V50_to_V51_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_V51_to_n_V50_reaclib)*Y(V51)) + - (-screened_rates(k_n_V51_to_V52_reaclib)*Y(V51)*Y(N)*state.rho + screened_rates(k_V52_to_n_V51_reaclib)*Y(V52)) + - (-screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_Cr49_to_n_Cr48_reaclib)*Y(Cr49)) + - (-screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_Cr50_to_n_Cr49_reaclib)*Y(Cr50)) + - (-screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(Cr50)*Y(N)*state.rho + screened_rates(k_Cr51_to_n_Cr50_reaclib)*Y(Cr51)) + - (-screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_Cr52_to_n_Cr51_reaclib)*Y(Cr52)) + - (-screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(Cr52)*Y(N)*state.rho + screened_rates(k_Cr53_to_n_Cr52_reaclib)*Y(Cr53)) + - (-screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(Cr53)*Y(N)*state.rho + screened_rates(k_Cr54_to_n_Cr53_reaclib)*Y(Cr54)) + - (-screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_Mn51_to_n_Mn50_reaclib)*Y(Mn51)) + - (-screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_Mn52_to_n_Mn51_reaclib)*Y(Mn52)) + - (-screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_Mn53_to_n_Mn52_reaclib)*Y(Mn53)) + - (-screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_Mn54_to_n_Mn53_reaclib)*Y(Mn54)) + - (-screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_Mn55_to_n_Mn54_reaclib)*Y(Mn55)) + - (-screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_reaclib)*Y(Fe53)) + - (-screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_reaclib)*Y(Fe54)) + - (-screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Fe55_to_n_Fe54_reaclib)*Y(Fe55)) + - (-screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Fe56_to_n_Fe55_reaclib)*Y(Fe56)) + - (-screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(Fe56)*Y(N)*state.rho + screened_rates(k_Fe57_to_n_Fe56_reaclib)*Y(Fe57)) + - (-screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(Fe57)*Y(N)*state.rho + screened_rates(k_Fe58_to_n_Fe57_reaclib)*Y(Fe58)) + - (-screened_rates(k_n_Co53_to_Co54_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_Co54_to_n_Co53_reaclib)*Y(Co54)) + - (-screened_rates(k_n_Co54_to_Co55_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_Co55_to_n_Co54_reaclib)*Y(Co55)) + - (-screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_reaclib)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_reaclib)*Y(Co57)) + - (-screened_rates(k_n_Co57_to_Co58_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_Co58_to_n_Co57_reaclib)*Y(Co58)) + - (-screened_rates(k_n_Co58_to_Co59_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_Co59_to_n_Co58_reaclib)*Y(Co59)) + - (-screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_reaclib)*Y(Ni57)) + - (-screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_reaclib)*Y(Ni58)) + - (-screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Ni59_to_n_Ni58_reaclib)*Y(Ni59)) + - (-screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_Ni60_to_n_Ni59_reaclib)*Y(Ni60)) + - (-screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(Ni60)*Y(N)*state.rho + screened_rates(k_Ni61_to_n_Ni60_reaclib)*Y(Ni61)) + - (-screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(Ni61)*Y(N)*state.rho + screened_rates(k_Ni62_to_n_Ni61_reaclib)*Y(Ni62)) + - (-screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(Ni62)*Y(N)*state.rho + screened_rates(k_Ni63_to_n_Ni62_reaclib)*Y(Ni63)) + - (-screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(Ni63)*Y(N)*state.rho + screened_rates(k_Ni64_to_n_Ni63_reaclib)*Y(Ni64)) + - (-screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_Cu58_to_n_Cu57_reaclib)*Y(Cu58)) + - (-screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_Cu59_to_n_Cu58_reaclib)*Y(Cu59)) + - (-screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Cu60_to_n_Cu59_reaclib)*Y(Cu60)) + - (-screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_Cu61_to_n_Cu60_reaclib)*Y(Cu61)) + - (-screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_Cu62_to_n_Cu61_reaclib)*Y(Cu62)) + - (-screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_Cu63_to_n_Cu62_reaclib)*Y(Cu63)) + - (-screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(Cu63)*Y(N)*state.rho + screened_rates(k_Cu64_to_n_Cu63_reaclib)*Y(Cu64)) + - (-screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(Cu64)*Y(N)*state.rho + screened_rates(k_Cu65_to_n_Cu64_reaclib)*Y(Cu65)) + - (-screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_Zn60_to_n_Zn59_reaclib)*Y(Zn60)) + - (-screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Zn61_to_n_Zn60_reaclib)*Y(Zn61)) + - (-screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_Zn62_to_n_Zn61_reaclib)*Y(Zn62)) + - (-screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_Zn63_to_n_Zn62_reaclib)*Y(Zn63)) + - (-screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_Zn64_to_n_Zn63_reaclib)*Y(Zn64)) + - (-screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_Zn65_to_n_Zn64_reaclib)*Y(Zn65)) + - (-screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_Zn66_to_n_Zn65_reaclib)*Y(Zn66)) + - (-screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_Ga63_to_n_Ga62_reaclib)*Y(Ga63)) + - (-screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_Ga64_to_n_Ga63_reaclib)*Y(Ga64)) + - (-screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_Ge64_to_n_Ge63_reaclib)*Y(Ge64)) + - (0.5*screened_rates(k_d_d_to_n_He3_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + -screened_rates(k_n_He3_to_d_d_reaclib)*Y(He3)*Y(N)*state.rho) + - (screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(Li6)*Y(H2)*state.rho + -screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(Be7)*Y(N)*state.rho) + - (-screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(Be7)*Y(N)*state.rho + screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(Li7)*Y(H1)*state.rho) + - (-screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(Be7)*Y(N)*state.rho + 0.5*screened_rates(k_He4_He4_to_n_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + - (screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(Be9)*Y(He4)*state.rho + -screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(C12)*Y(N)*state.rho) + - (-screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(B10)*Y(N)*state.rho + screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(He4)*Y(Li7)*state.rho) + - (screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(B10)*Y(He4)*state.rho + -screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N13)*Y(N)*state.rho) + - (screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(B11)*Y(He4)*state.rho + -screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N14)*Y(N)*state.rho) + - (screened_rates(k_d_C13_to_n_N14_reaclib)*Y(C13)*Y(H2)*state.rho + -screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N14)*Y(N)*state.rho) + - (screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(C13)*Y(He4)*state.rho + -screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(O16)*Y(N)*state.rho) + - (screened_rates(k_d_C14_to_n_N15_reaclib)*Y(C14)*Y(H2)*state.rho + -screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N15)*Y(N)*state.rho) + - (-screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N13)*Y(N)*state.rho + screened_rates(k_p_C13_to_n_N13_reaclib)*Y(C13)*Y(H1)*state.rho) + - (-screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N14)*Y(N)*state.rho + screened_rates(k_p_C14_to_n_N14_reaclib)*Y(C14)*Y(H1)*state.rho) + - (-screened_rates(k_n_O14_to_p_N14_reaclib)*Y(O14)*Y(N)*state.rho + screened_rates(k_p_N14_to_n_O14_reaclib)*Y(N14)*Y(H1)*state.rho) + - (-screened_rates(k_n_O15_to_p_N15_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_p_N15_to_n_O15_reaclib)*Y(N15)*Y(H1)*state.rho) + - (-screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(C12)*Y(He4)*state.rho) + - (-screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(O17)*Y(N)*state.rho + screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(C14)*Y(He4)*state.rho) + - (screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(Ne20)*Y(N)*state.rho) + - (-screened_rates(k_n_F17_to_p_O17_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_p_O17_to_n_F17_reaclib)*Y(O17)*Y(H1)*state.rho) + - (-screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_n_F18_to_p_O18_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_p_O18_to_n_F18_reaclib)*Y(O18)*Y(H1)*state.rho) + - (-screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(He4)*Y(N15)*state.rho) + - (-screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(F18)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(F19)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(Ne21)*Y(N)*state.rho + screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(He4)*Y(O18)*state.rho) + - (screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(He4)*Y(Ne21)*state.rho + -screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(Mg24)*Y(N)*state.rho) + - (-screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(F18)*Y(He4)*state.rho) + - (-screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(Ne22)*Y(H1)*state.rho) + - (-screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(F19)*Y(He4)*state.rho) + - (-screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + - (-screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(Mg25)*Y(N)*state.rho + screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(He4)*Y(Ne22)*state.rho) + - (screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(He4)*Y(Mg25)*state.rho + -screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(Si28)*Y(N)*state.rho) + - (screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(He4)*Y(Mg26)*state.rho + -screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(Si29)*Y(N)*state.rho) + - (-screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(Mg25)*Y(H1)*state.rho) + - (-screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(He4)*Y(Na22)*state.rho) + - (-screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(Mg26)*Y(H1)*state.rho) + - (-screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(He4)*Y(Na23)*state.rho) + - (screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(Si31)*Y(H1)*state.rho + -screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(P31)*Y(N)*state.rho) + - (screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(He4)*Y(Si31)*state.rho + -screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(S34)*Y(N)*state.rho) + - (-screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(Si29)*Y(H1)*state.rho) + - (-screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(Al26)*Y(He4)*state.rho) + - (-screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(Si30)*Y(H1)*state.rho) + - (-screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(Al27)*Y(He4)*state.rho) + - (-screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(P32)*Y(N)*state.rho + screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(Si32)*Y(H1)*state.rho) + - (screened_rates(k_p_P32_to_n_S32_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_n_S32_to_p_P32_reaclib)*Y(S32)*Y(N)*state.rho) + - (-screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(S32)*Y(N)*state.rho + screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(He4)*Y(Si29)*state.rho) + - (-screened_rates(k_n_S33_to_p_P33_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_p_P33_to_n_S33_reaclib)*Y(P33)*Y(H1)*state.rho) + - (-screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(He4)*Y(Si30)*state.rho) + - (-screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(S35)*Y(N)*state.rho + screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(He4)*Y(Si32)*state.rho) + - (screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(He4)*Y(S35)*state.rho + -screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(Ar38)*Y(N)*state.rho) + - (-screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(S33)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(He4)*Y(P30)*state.rho) + - (-screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(S34)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(He4)*Y(P31)*state.rho) + - (-screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(S35)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(He4)*Y(P32)*state.rho) + - (-screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(S36)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(He4)*Y(P33)*state.rho) + - (-screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(Cl36)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(He4)*Y(S33)*state.rho) + - (-screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(Cl37)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(He4)*Y(S34)*state.rho) + - (-screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(Ar39)*Y(N)*state.rho + screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(He4)*Y(S36)*state.rho) + - (-screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(Ar37)*Y(H1)*state.rho) + - (-screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(Cl34)*Y(He4)*state.rho) + - (-screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(Ar38)*Y(H1)*state.rho) + - (-screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(Cl35)*Y(He4)*state.rho) + - (-screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(Ar39)*Y(H1)*state.rho) + - (-screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + - (-screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(Ar40)*Y(H1)*state.rho) + - (-screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + - (screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(Ca40)*Y(N)*state.rho) + - (-screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(Ca40)*Y(N)*state.rho + screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(K41)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(Ca42)*Y(N)*state.rho + screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(Ar39)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(Ca43)*Y(N)*state.rho + screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(Ar40)*Y(He4)*state.rho) + - (screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(Ca43)*Y(He4)*state.rho + -screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(Ti46)*Y(N)*state.rho) + - (screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(Ca45)*Y(He4)*state.rho + -screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(Ti48)*Y(N)*state.rho) + - (screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(Ca47)*Y(H1)*state.rho + -screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(Sc47)*Y(N)*state.rho) + - (screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(Ca47)*Y(He4)*state.rho + -screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(Ti50)*Y(N)*state.rho) + - (-screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(Ca43)*Y(H1)*state.rho) + - (-screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(He4)*Y(K40)*state.rho) + - (-screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(Ca44)*Y(H1)*state.rho) + - (-screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(He4)*Y(K41)*state.rho) + - (-screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(Sc45)*Y(N)*state.rho + screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(Ca45)*Y(H1)*state.rho) + - (-screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(Sc46)*Y(N)*state.rho + screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(Ca46)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(Ti46)*Y(N)*state.rho) + - (screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(V49)*Y(N)*state.rho) + - (-screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(Sc48)*Y(N)*state.rho + screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(Ca48)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(Ti48)*Y(N)*state.rho) + - (screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(V51)*Y(N)*state.rho) + - (screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(Ti49)*Y(N)*state.rho) + - (-screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(Sc44)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(Sc45)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(Sc47)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(Ti49)*Y(N)*state.rho + screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + - (screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(He4)*Y(Ti49)*state.rho + -screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(Cr52)*Y(N)*state.rho) + - (-screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(Ti51)*Y(N)*state.rho + screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(Ca48)*Y(He4)*state.rho) + - (screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(Ti51)*Y(H1)*state.rho + -screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(V51)*Y(N)*state.rho) + - (screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(He4)*Y(Ti51)*state.rho + -screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(Cr54)*Y(N)*state.rho) + - (-screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(Ti46)*Y(H1)*state.rho) + - (-screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(He4)*Y(Sc43)*state.rho) + - (-screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(Ti47)*Y(H1)*state.rho) + - (-screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(He4)*Y(Sc44)*state.rho) + - (-screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(Ti48)*Y(H1)*state.rho) + - (-screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(He4)*Y(Sc45)*state.rho) + - (-screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(V49)*Y(N)*state.rho + screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(Ti49)*Y(H1)*state.rho) + - (-screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(Ti50)*Y(H1)*state.rho) + - (-screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(He4)*Y(Sc47)*state.rho) + - (screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(Cr50)*Y(N)*state.rho) + - (-screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(V52)*Y(N)*state.rho + screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(He4)*Y(Sc49)*state.rho) + - (screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(Cr52)*Y(N)*state.rho) + - (screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(He4)*Y(V52)*state.rho + -screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(Mn55)*Y(N)*state.rho) + - (-screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(V48)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(He4)*Y(Ti45)*state.rho) + - (-screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(V49)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + - (-screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(Cr50)*Y(N)*state.rho + screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + - (-screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(V51)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + - (-screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(Cr53)*Y(N)*state.rho + screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(He4)*Y(Ti50)*state.rho) + - (-screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(Cr50)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(He4)*Y(V47)*state.rho) + - (-screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(Cr51)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(He4)*Y(V48)*state.rho) + - (-screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(Cr52)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(He4)*Y(V49)*state.rho) + - (-screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(Cr53)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(He4)*Y(V50)*state.rho) + - (-screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(Cr54)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(He4)*Y(V51)*state.rho) + - (-screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(Mn52)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(Cr49)*Y(He4)*state.rho) + - (-screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(Mn53)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + - (-screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(Mn54)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + - (-screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(Mn55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + - (-screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(Fe56)*Y(N)*state.rho + screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(Cr53)*Y(He4)*state.rho) + - (-screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(Fe57)*Y(N)*state.rho + screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(Cr54)*Y(He4)*state.rho) + - (-screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(Fe53)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(He4)*Y(Mn50)*state.rho) + - (-screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(Fe54)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(He4)*Y(Mn51)*state.rho) + - (-screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(Fe55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(He4)*Y(Mn52)*state.rho) + - (-screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(He4)*Y(Mn53)*state.rho) + - (-screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(Fe57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + - (-screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(Fe58)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + - (-screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(Fe53)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(Co57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(Co58)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(Co59)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(Ni60)*Y(N)*state.rho + screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(Fe57)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(Ni61)*Y(N)*state.rho + screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(Fe58)*Y(He4)*state.rho) + - (-screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(Ni57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(Co54)*Y(He4)*state.rho) + - (-screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(Ni58)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(Co55)*Y(He4)*state.rho) + - (-screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(Ni59)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(Co56)*Y(He4)*state.rho) + - (-screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(Ni60)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(Co57)*Y(He4)*state.rho) + - (-screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(Ni61)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(Co58)*Y(He4)*state.rho) + - (-screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(Ni62)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(Co59)*Y(He4)*state.rho) + - (-screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(Cu63)*Y(N)*state.rho + screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(Ni63)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(Cu64)*Y(N)*state.rho + screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(Ni64)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(Cu59)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(Cu60)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + - (-screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(Cu61)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + - (-screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(Cu62)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + - (-screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(Cu63)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + - (-screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(Cu64)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + - (-screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(Cu65)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + - (-screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(Zn66)*Y(N)*state.rho + screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(He4)*Y(Ni63)*state.rho) + - (-screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(Zn62)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(Zn63)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(Ga64)*Y(N)*state.rho + screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(Zn64)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(Ga64)*Y(N)*state.rho + screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + - (-screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(Ga63)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + - (-screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(Ge64)*Y(N)*state.rho + screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(Ga64)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(Ge64)*Y(N)*state.rho + screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + - (screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(Li7)*Y(H2)*state.rho + -0.5*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho)) + - (-screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(B8)*Y(N)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + - (screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + -0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)) + - (-screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_Li6_to_n_p_He4_reaclib)*Y(Li6)) + - (-0.5*screened_rates(k_n_He4_He4_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_Be9_to_n_He4_He4_reaclib)*Y(Be9)) + - (-0.5*screened_rates(k_n_p_p_to_p_d_reaclib)*Y(N)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H2)*Y(H1)*state.rho) + - (-0.5*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho) + - (-screened_rates(k_n_to_p_weaktab)*Y(N) + screened_rates(k_p_to_n_weaktab)*Y(H1)); + (-screened_rates(k_p_n_to_d_reaclib)*Y(N)*Y(H1)*state.rho + screened_rates(k_d_to_n_p_reaclib)*Y(H2)) + + (-screened_rates(k_He3_n_to_He4_reaclib)*Y(He3)*Y(N)*state.rho + screened_rates(k_He4_to_n_He3_reaclib)*Y(He4)) + + (-screened_rates(k_Li6_n_to_Li7_reaclib)*Y(Li6)*Y(N)*state.rho + screened_rates(k_Li7_to_n_Li6_reaclib)*Y(Li7)) + + (-screened_rates(k_B10_n_to_B11_reaclib)*Y(B10)*Y(N)*state.rho + screened_rates(k_B11_to_n_B10_reaclib)*Y(B11)) + + (-screened_rates(k_C12_n_to_C13_reaclib)*Y(C12)*Y(N)*state.rho + screened_rates(k_C13_to_n_C12_reaclib)*Y(C13)) + + (-screened_rates(k_C13_n_to_C14_reaclib)*Y(C13)*Y(N)*state.rho + screened_rates(k_C14_to_n_C13_reaclib)*Y(C14)) + + (-screened_rates(k_N13_n_to_N14_reaclib)*Y(N13)*Y(N)*state.rho + screened_rates(k_N14_to_n_N13_reaclib)*Y(N14)) + + (-screened_rates(k_N14_n_to_N15_reaclib)*Y(N14)*Y(N)*state.rho + screened_rates(k_N15_to_n_N14_reaclib)*Y(N15)) + + (-screened_rates(k_O14_n_to_O15_reaclib)*Y(O14)*Y(N)*state.rho + screened_rates(k_O15_to_n_O14_reaclib)*Y(O15)) + + (-screened_rates(k_O15_n_to_O16_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_O16_to_n_O15_reaclib)*Y(O16)) + + (-screened_rates(k_O16_n_to_O17_reaclib)*Y(O16)*Y(N)*state.rho + screened_rates(k_O17_to_n_O16_reaclib)*Y(O17)) + + (-screened_rates(k_O17_n_to_O18_reaclib)*Y(O17)*Y(N)*state.rho + screened_rates(k_O18_to_n_O17_reaclib)*Y(O18)) + + (-screened_rates(k_F17_n_to_F18_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_F18_to_n_F17_reaclib)*Y(F18)) + + (-screened_rates(k_F18_n_to_F19_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_F19_to_n_F18_reaclib)*Y(F19)) + + (-screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_Ne19_to_n_Ne18_reaclib)*Y(Ne19)) + + (-screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_Ne20_to_n_Ne19_reaclib)*Y(Ne20)) + + (-screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(Ne20)*Y(N)*state.rho + screened_rates(k_Ne21_to_n_Ne20_reaclib)*Y(Ne21)) + + (-screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(Ne21)*Y(N)*state.rho + screened_rates(k_Ne22_to_n_Ne21_reaclib)*Y(Ne22)) + + (-screened_rates(k_Na21_n_to_Na22_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_Na22_to_n_Na21_reaclib)*Y(Na22)) + + (-screened_rates(k_Na22_n_to_Na23_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_Na23_to_n_Na22_reaclib)*Y(Na23)) + + (-screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_Mg24_to_n_Mg23_reaclib)*Y(Mg24)) + + (-screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(Mg24)*Y(N)*state.rho + screened_rates(k_Mg25_to_n_Mg24_reaclib)*Y(Mg25)) + + (-screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(Mg25)*Y(N)*state.rho + screened_rates(k_Mg26_to_n_Mg25_reaclib)*Y(Mg26)) + + (-screened_rates(k_Al25_n_to_Al26_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_Al26_to_n_Al25_reaclib)*Y(Al26)) + + (-screened_rates(k_Al26_n_to_Al27_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_Al27_to_n_Al26_reaclib)*Y(Al27)) + + (-screened_rates(k_Si28_n_to_Si29_reaclib)*Y(Si28)*Y(N)*state.rho + screened_rates(k_Si29_to_n_Si28_reaclib)*Y(Si29)) + + (-screened_rates(k_Si29_n_to_Si30_reaclib)*Y(Si29)*Y(N)*state.rho + screened_rates(k_Si30_to_n_Si29_reaclib)*Y(Si30)) + + (-screened_rates(k_Si30_n_to_Si31_reaclib)*Y(Si30)*Y(N)*state.rho + screened_rates(k_Si31_to_n_Si30_reaclib)*Y(Si31)) + + (-screened_rates(k_Si31_n_to_Si32_reaclib)*Y(Si31)*Y(N)*state.rho + screened_rates(k_Si32_to_n_Si31_reaclib)*Y(Si32)) + + (-screened_rates(k_P29_n_to_P30_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_P30_to_n_P29_reaclib)*Y(P30)) + + (-screened_rates(k_P30_n_to_P31_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_P31_to_n_P30_reaclib)*Y(P31)) + + (-screened_rates(k_P31_n_to_P32_reaclib)*Y(P31)*Y(N)*state.rho + screened_rates(k_P32_to_n_P31_reaclib)*Y(P32)) + + (-screened_rates(k_P32_n_to_P33_reaclib)*Y(P32)*Y(N)*state.rho + screened_rates(k_P33_to_n_P32_reaclib)*Y(P33)) + + (-screened_rates(k_S32_n_to_S33_reaclib)*Y(S32)*Y(N)*state.rho + screened_rates(k_S33_to_n_S32_reaclib)*Y(S33)) + + (-screened_rates(k_S33_n_to_S34_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_S34_to_n_S33_reaclib)*Y(S34)) + + (-screened_rates(k_S34_n_to_S35_reaclib)*Y(S34)*Y(N)*state.rho + screened_rates(k_S35_to_n_S34_reaclib)*Y(S35)) + + (-screened_rates(k_S35_n_to_S36_reaclib)*Y(S35)*Y(N)*state.rho + screened_rates(k_S36_to_n_S35_reaclib)*Y(S36)) + + (-screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_Cl34_to_n_Cl33_reaclib)*Y(Cl34)) + + (-screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_Cl35_to_n_Cl34_reaclib)*Y(Cl35)) + + (-screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_Cl36_to_n_Cl35_reaclib)*Y(Cl36)) + + (-screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_Cl37_to_n_Cl36_reaclib)*Y(Cl37)) + + (-screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_Ar37_to_n_Ar36_reaclib)*Y(Ar37)) + + (-screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_Ar38_to_n_Ar37_reaclib)*Y(Ar38)) + + (-screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(Ar38)*Y(N)*state.rho + screened_rates(k_Ar39_to_n_Ar38_reaclib)*Y(Ar39)) + + (-screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(Ar39)*Y(N)*state.rho + screened_rates(k_Ar40_to_n_Ar39_reaclib)*Y(Ar40)) + + (-screened_rates(k_K37_n_to_K38_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_K38_to_n_K37_reaclib)*Y(K38)) + + (-screened_rates(k_K38_n_to_K39_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_K39_to_n_K38_reaclib)*Y(K39)) + + (-screened_rates(k_K39_n_to_K40_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_K40_to_n_K39_reaclib)*Y(K40)) + + (-screened_rates(k_K40_n_to_K41_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_K41_to_n_K40_reaclib)*Y(K41)) + + (-screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(Ca40)*Y(N)*state.rho + screened_rates(k_Ca41_to_n_Ca40_reaclib)*Y(Ca41)) + + (-screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_Ca42_to_n_Ca41_reaclib)*Y(Ca42)) + + (-screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(Ca42)*Y(N)*state.rho + screened_rates(k_Ca43_to_n_Ca42_reaclib)*Y(Ca43)) + + (-screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(Ca43)*Y(N)*state.rho + screened_rates(k_Ca44_to_n_Ca43_reaclib)*Y(Ca44)) + + (-screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(Ca44)*Y(N)*state.rho + screened_rates(k_Ca45_to_n_Ca44_reaclib)*Y(Ca45)) + + (-screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(Ca45)*Y(N)*state.rho + screened_rates(k_Ca46_to_n_Ca45_reaclib)*Y(Ca46)) + + (-screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(Ca46)*Y(N)*state.rho + screened_rates(k_Ca47_to_n_Ca46_reaclib)*Y(Ca47)) + + (-screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(Ca47)*Y(N)*state.rho + screened_rates(k_Ca48_to_n_Ca47_reaclib)*Y(Ca48)) + + (-screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_Sc44_to_n_Sc43_reaclib)*Y(Sc44)) + + (-screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_Sc45_to_n_Sc44_reaclib)*Y(Sc45)) + + (-screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(Sc45)*Y(N)*state.rho + screened_rates(k_Sc46_to_n_Sc45_reaclib)*Y(Sc46)) + + (-screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(Sc46)*Y(N)*state.rho + screened_rates(k_Sc47_to_n_Sc46_reaclib)*Y(Sc47)) + + (-screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(Sc47)*Y(N)*state.rho + screened_rates(k_Sc48_to_n_Sc47_reaclib)*Y(Sc48)) + + (-screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(Sc48)*Y(N)*state.rho + screened_rates(k_Sc49_to_n_Sc48_reaclib)*Y(Sc49)) + + (-screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_Ti45_to_n_Ti44_reaclib)*Y(Ti45)) + + (-screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_Ti46_to_n_Ti45_reaclib)*Y(Ti46)) + + (-screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(Ti46)*Y(N)*state.rho + screened_rates(k_Ti47_to_n_Ti46_reaclib)*Y(Ti47)) + + (-screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_Ti48_to_n_Ti47_reaclib)*Y(Ti48)) + + (-screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(Ti48)*Y(N)*state.rho + screened_rates(k_Ti49_to_n_Ti48_reaclib)*Y(Ti49)) + + (-screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(Ti49)*Y(N)*state.rho + screened_rates(k_Ti50_to_n_Ti49_reaclib)*Y(Ti50)) + + (-screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(Ti50)*Y(N)*state.rho + screened_rates(k_Ti51_to_n_Ti50_reaclib)*Y(Ti51)) + + (-screened_rates(k_V46_n_to_V47_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_V47_to_n_V46_reaclib)*Y(V47)) + + (-screened_rates(k_V47_n_to_V48_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_V48_to_n_V47_reaclib)*Y(V48)) + + (-screened_rates(k_V48_n_to_V49_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_V49_to_n_V48_reaclib)*Y(V49)) + + (-screened_rates(k_V49_n_to_V50_reaclib)*Y(V49)*Y(N)*state.rho + screened_rates(k_V50_to_n_V49_reaclib)*Y(V50)) + + (-screened_rates(k_V50_n_to_V51_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_V51_to_n_V50_reaclib)*Y(V51)) + + (-screened_rates(k_V51_n_to_V52_reaclib)*Y(V51)*Y(N)*state.rho + screened_rates(k_V52_to_n_V51_reaclib)*Y(V52)) + + (-screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_Cr49_to_n_Cr48_reaclib)*Y(Cr49)) + + (-screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_Cr50_to_n_Cr49_reaclib)*Y(Cr50)) + + (-screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(Cr50)*Y(N)*state.rho + screened_rates(k_Cr51_to_n_Cr50_reaclib)*Y(Cr51)) + + (-screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_Cr52_to_n_Cr51_reaclib)*Y(Cr52)) + + (-screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(Cr52)*Y(N)*state.rho + screened_rates(k_Cr53_to_n_Cr52_reaclib)*Y(Cr53)) + + (-screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(Cr53)*Y(N)*state.rho + screened_rates(k_Cr54_to_n_Cr53_reaclib)*Y(Cr54)) + + (-screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_Mn51_to_n_Mn50_reaclib)*Y(Mn51)) + + (-screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_Mn52_to_n_Mn51_reaclib)*Y(Mn52)) + + (-screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_Mn53_to_n_Mn52_reaclib)*Y(Mn53)) + + (-screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_Mn54_to_n_Mn53_reaclib)*Y(Mn54)) + + (-screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_Mn55_to_n_Mn54_reaclib)*Y(Mn55)) + + (-screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_reaclib)*Y(Fe53)) + + (-screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_reaclib)*Y(Fe54)) + + (-screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Fe55_to_n_Fe54_reaclib)*Y(Fe55)) + + (-screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Fe56_to_n_Fe55_reaclib)*Y(Fe56)) + + (-screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(Fe56)*Y(N)*state.rho + screened_rates(k_Fe57_to_n_Fe56_reaclib)*Y(Fe57)) + + (-screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(Fe57)*Y(N)*state.rho + screened_rates(k_Fe58_to_n_Fe57_reaclib)*Y(Fe58)) + + (-screened_rates(k_Co53_n_to_Co54_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_Co54_to_n_Co53_reaclib)*Y(Co54)) + + (-screened_rates(k_Co54_n_to_Co55_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_Co55_to_n_Co54_reaclib)*Y(Co55)) + + (-screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_reaclib)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_reaclib)*Y(Co57)) + + (-screened_rates(k_Co57_n_to_Co58_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_Co58_to_n_Co57_reaclib)*Y(Co58)) + + (-screened_rates(k_Co58_n_to_Co59_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_Co59_to_n_Co58_reaclib)*Y(Co59)) + + (-screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_reaclib)*Y(Ni57)) + + (-screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_reaclib)*Y(Ni58)) + + (-screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Ni59_to_n_Ni58_reaclib)*Y(Ni59)) + + (-screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_Ni60_to_n_Ni59_reaclib)*Y(Ni60)) + + (-screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(Ni60)*Y(N)*state.rho + screened_rates(k_Ni61_to_n_Ni60_reaclib)*Y(Ni61)) + + (-screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(Ni61)*Y(N)*state.rho + screened_rates(k_Ni62_to_n_Ni61_reaclib)*Y(Ni62)) + + (-screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(Ni62)*Y(N)*state.rho + screened_rates(k_Ni63_to_n_Ni62_reaclib)*Y(Ni63)) + + (-screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(Ni63)*Y(N)*state.rho + screened_rates(k_Ni64_to_n_Ni63_reaclib)*Y(Ni64)) + + (-screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_Cu58_to_n_Cu57_reaclib)*Y(Cu58)) + + (-screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_Cu59_to_n_Cu58_reaclib)*Y(Cu59)) + + (-screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Cu60_to_n_Cu59_reaclib)*Y(Cu60)) + + (-screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_Cu61_to_n_Cu60_reaclib)*Y(Cu61)) + + (-screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_Cu62_to_n_Cu61_reaclib)*Y(Cu62)) + + (-screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_Cu63_to_n_Cu62_reaclib)*Y(Cu63)) + + (-screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(Cu63)*Y(N)*state.rho + screened_rates(k_Cu64_to_n_Cu63_reaclib)*Y(Cu64)) + + (-screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(Cu64)*Y(N)*state.rho + screened_rates(k_Cu65_to_n_Cu64_reaclib)*Y(Cu65)) + + (-screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_Zn60_to_n_Zn59_reaclib)*Y(Zn60)) + + (-screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Zn61_to_n_Zn60_reaclib)*Y(Zn61)) + + (-screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_Zn62_to_n_Zn61_reaclib)*Y(Zn62)) + + (-screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_Zn63_to_n_Zn62_reaclib)*Y(Zn63)) + + (-screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_Zn64_to_n_Zn63_reaclib)*Y(Zn64)) + + (-screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_Zn65_to_n_Zn64_reaclib)*Y(Zn65)) + + (-screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_Zn66_to_n_Zn65_reaclib)*Y(Zn66)) + + (-screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_Ga63_to_n_Ga62_reaclib)*Y(Ga63)) + + (-screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_Ga64_to_n_Ga63_reaclib)*Y(Ga64)) + + (-screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_Ge64_to_n_Ge63_reaclib)*Y(Ge64)) + + (0.5*screened_rates(k_d_d_to_n_He3_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + -screened_rates(k_He3_n_to_d_d_reaclib)*Y(He3)*Y(N)*state.rho) + + (screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(Li6)*Y(H2)*state.rho + -screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(Be7)*Y(N)*state.rho) + + (-screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(Be7)*Y(N)*state.rho + screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(Li7)*Y(H1)*state.rho) + + (-screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(Be7)*Y(N)*state.rho + 0.5*screened_rates(k_He4_He4_to_n_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + + (screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(Be9)*Y(He4)*state.rho + -screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(C12)*Y(N)*state.rho) + + (-screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(B10)*Y(N)*state.rho + screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(He4)*Y(Li7)*state.rho) + + (screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(B10)*Y(He4)*state.rho + -screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N13)*Y(N)*state.rho) + + (screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(B11)*Y(He4)*state.rho + -screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N14)*Y(N)*state.rho) + + (screened_rates(k_C13_d_to_n_N14_reaclib)*Y(C13)*Y(H2)*state.rho + -screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N14)*Y(N)*state.rho) + + (screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(C13)*Y(He4)*state.rho + -screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(O16)*Y(N)*state.rho) + + (screened_rates(k_C14_d_to_n_N15_reaclib)*Y(C14)*Y(H2)*state.rho + -screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N15)*Y(N)*state.rho) + + (-screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N13)*Y(N)*state.rho + screened_rates(k_C13_p_to_n_N13_reaclib)*Y(C13)*Y(H1)*state.rho) + + (-screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N14)*Y(N)*state.rho + screened_rates(k_C14_p_to_n_N14_reaclib)*Y(C14)*Y(H1)*state.rho) + + (-screened_rates(k_O14_n_to_p_N14_reaclib)*Y(O14)*Y(N)*state.rho + screened_rates(k_N14_p_to_n_O14_reaclib)*Y(N14)*Y(H1)*state.rho) + + (-screened_rates(k_O15_n_to_p_N15_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_N15_p_to_n_O15_reaclib)*Y(N15)*Y(H1)*state.rho) + + (-screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(C12)*Y(He4)*state.rho) + + (-screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(O17)*Y(N)*state.rho + screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(C14)*Y(He4)*state.rho) + + (screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(Ne20)*Y(N)*state.rho) + + (-screened_rates(k_F17_n_to_p_O17_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_O17_p_to_n_F17_reaclib)*Y(O17)*Y(H1)*state.rho) + + (-screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_F18_n_to_p_O18_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_O18_p_to_n_F18_reaclib)*Y(O18)*Y(H1)*state.rho) + + (-screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(He4)*Y(N15)*state.rho) + + (-screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(F18)*Y(H1)*state.rho) + + (-screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(F19)*Y(H1)*state.rho) + + (-screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(Ne21)*Y(N)*state.rho + screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(He4)*Y(O18)*state.rho) + + (screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(He4)*Y(Ne21)*state.rho + -screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(Mg24)*Y(N)*state.rho) + + (-screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(F18)*Y(He4)*state.rho) + + (-screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(Ne22)*Y(H1)*state.rho) + + (-screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(F19)*Y(He4)*state.rho) + + (-screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + + (-screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(Mg25)*Y(N)*state.rho + screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(He4)*Y(Ne22)*state.rho) + + (screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(He4)*Y(Mg25)*state.rho + -screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(Si28)*Y(N)*state.rho) + + (screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(He4)*Y(Mg26)*state.rho + -screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(Si29)*Y(N)*state.rho) + + (-screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(Mg25)*Y(H1)*state.rho) + + (-screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(He4)*Y(Na22)*state.rho) + + (-screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(Mg26)*Y(H1)*state.rho) + + (-screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(He4)*Y(Na23)*state.rho) + + (screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(Si31)*Y(H1)*state.rho + -screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(P31)*Y(N)*state.rho) + + (screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(He4)*Y(Si31)*state.rho + -screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(S34)*Y(N)*state.rho) + + (-screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(Si29)*Y(H1)*state.rho) + + (-screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(Al26)*Y(He4)*state.rho) + + (-screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(Si30)*Y(H1)*state.rho) + + (-screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(Al27)*Y(He4)*state.rho) + + (-screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(P32)*Y(N)*state.rho + screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(Si32)*Y(H1)*state.rho) + + (screened_rates(k_P32_p_to_n_S32_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_S32_n_to_p_P32_reaclib)*Y(S32)*Y(N)*state.rho) + + (-screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(S32)*Y(N)*state.rho + screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(He4)*Y(Si29)*state.rho) + + (-screened_rates(k_S33_n_to_p_P33_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_P33_p_to_n_S33_reaclib)*Y(P33)*Y(H1)*state.rho) + + (-screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(He4)*Y(Si30)*state.rho) + + (-screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(S35)*Y(N)*state.rho + screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(He4)*Y(Si32)*state.rho) + + (screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(He4)*Y(S35)*state.rho + -screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(Ar38)*Y(N)*state.rho) + + (-screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(S33)*Y(H1)*state.rho) + + (-screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(He4)*Y(P30)*state.rho) + + (-screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(S34)*Y(H1)*state.rho) + + (-screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(He4)*Y(P31)*state.rho) + + (-screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(S35)*Y(H1)*state.rho) + + (-screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(He4)*Y(P32)*state.rho) + + (-screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(S36)*Y(H1)*state.rho) + + (-screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(He4)*Y(P33)*state.rho) + + (-screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(Cl36)*Y(H1)*state.rho) + + (-screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(He4)*Y(S33)*state.rho) + + (-screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(Cl37)*Y(H1)*state.rho) + + (-screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(He4)*Y(S34)*state.rho) + + (-screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(Ar39)*Y(N)*state.rho + screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(He4)*Y(S36)*state.rho) + + (-screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(Ar37)*Y(H1)*state.rho) + + (-screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(Cl34)*Y(He4)*state.rho) + + (-screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(Ar38)*Y(H1)*state.rho) + + (-screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(Cl35)*Y(He4)*state.rho) + + (-screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(Ar39)*Y(H1)*state.rho) + + (-screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + + (-screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(Ar40)*Y(H1)*state.rho) + + (-screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + + (screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(Ca40)*Y(N)*state.rho) + + (-screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(Ca40)*Y(N)*state.rho + screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + + (-screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(K41)*Y(H1)*state.rho) + + (-screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + + (-screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(Ca42)*Y(N)*state.rho + screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(Ar39)*Y(He4)*state.rho) + + (-screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(Ca43)*Y(N)*state.rho + screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(Ar40)*Y(He4)*state.rho) + + (screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(Ca43)*Y(He4)*state.rho + -screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(Ti46)*Y(N)*state.rho) + + (screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(Ca45)*Y(He4)*state.rho + -screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(Ti48)*Y(N)*state.rho) + + (screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(Ca47)*Y(H1)*state.rho + -screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(Sc47)*Y(N)*state.rho) + + (screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(Ca47)*Y(He4)*state.rho + -screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(Ti50)*Y(N)*state.rho) + + (-screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(Ca43)*Y(H1)*state.rho) + + (-screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(He4)*Y(K40)*state.rho) + + (-screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(Ca44)*Y(H1)*state.rho) + + (-screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(He4)*Y(K41)*state.rho) + + (-screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(Sc45)*Y(N)*state.rho + screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(Ca45)*Y(H1)*state.rho) + + (-screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(Sc46)*Y(N)*state.rho + screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(Ca46)*Y(H1)*state.rho) + + (screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(Ti46)*Y(N)*state.rho) + + (screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(V49)*Y(N)*state.rho) + + (-screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(Sc48)*Y(N)*state.rho + screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(Ca48)*Y(H1)*state.rho) + + (screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(Ti48)*Y(N)*state.rho) + + (screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(V51)*Y(N)*state.rho) + + (screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(Ti49)*Y(N)*state.rho) + + (-screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(Sc44)*Y(H1)*state.rho) + + (-screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + + (-screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(Sc45)*Y(H1)*state.rho) + + (-screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + + (-screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(Sc47)*Y(H1)*state.rho) + + (-screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + + (-screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(Ti49)*Y(N)*state.rho + screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + + (screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(He4)*Y(Ti49)*state.rho + -screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(Cr52)*Y(N)*state.rho) + + (-screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(Ti51)*Y(N)*state.rho + screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(Ca48)*Y(He4)*state.rho) + + (screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(Ti51)*Y(H1)*state.rho + -screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(V51)*Y(N)*state.rho) + + (screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(He4)*Y(Ti51)*state.rho + -screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(Cr54)*Y(N)*state.rho) + + (-screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(Ti46)*Y(H1)*state.rho) + + (-screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(He4)*Y(Sc43)*state.rho) + + (-screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(Ti47)*Y(H1)*state.rho) + + (-screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(He4)*Y(Sc44)*state.rho) + + (-screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(Ti48)*Y(H1)*state.rho) + + (-screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(He4)*Y(Sc45)*state.rho) + + (-screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(V49)*Y(N)*state.rho + screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(Ti49)*Y(H1)*state.rho) + + (-screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(Ti50)*Y(H1)*state.rho) + + (-screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(He4)*Y(Sc47)*state.rho) + + (screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(Cr50)*Y(N)*state.rho) + + (-screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(V52)*Y(N)*state.rho + screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(He4)*Y(Sc49)*state.rho) + + (screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(Cr52)*Y(N)*state.rho) + + (screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(He4)*Y(V52)*state.rho + -screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(Mn55)*Y(N)*state.rho) + + (-screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(V48)*Y(H1)*state.rho) + + (-screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(He4)*Y(Ti45)*state.rho) + + (-screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(V49)*Y(H1)*state.rho) + + (-screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + + (-screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(Cr50)*Y(N)*state.rho + screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + + (-screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(V51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + + (-screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(Cr53)*Y(N)*state.rho + screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(He4)*Y(Ti50)*state.rho) + + (-screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(Cr50)*Y(H1)*state.rho) + + (-screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(He4)*Y(V47)*state.rho) + + (-screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(Cr51)*Y(H1)*state.rho) + + (-screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(He4)*Y(V48)*state.rho) + + (-screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(Cr52)*Y(H1)*state.rho) + + (-screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(He4)*Y(V49)*state.rho) + + (-screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(Cr53)*Y(H1)*state.rho) + + (-screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(He4)*Y(V50)*state.rho) + + (-screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(Cr54)*Y(H1)*state.rho) + + (-screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(He4)*Y(V51)*state.rho) + + (-screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(Mn52)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(Cr49)*Y(He4)*state.rho) + + (-screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(Mn53)*Y(H1)*state.rho) + + (-screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + + (-screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(Mn54)*Y(H1)*state.rho) + + (-screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + + (-screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(Mn55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + + (-screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(Fe56)*Y(N)*state.rho + screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(Cr53)*Y(He4)*state.rho) + + (-screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(Fe57)*Y(N)*state.rho + screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(Cr54)*Y(He4)*state.rho) + + (-screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(Fe53)*Y(H1)*state.rho) + + (-screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(He4)*Y(Mn50)*state.rho) + + (-screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(He4)*Y(Mn51)*state.rho) + + (-screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(Fe55)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(He4)*Y(Mn52)*state.rho) + + (-screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(He4)*Y(Mn53)*state.rho) + + (-screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(Fe57)*Y(H1)*state.rho) + + (-screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + + (-screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(Fe58)*Y(H1)*state.rho) + + (-screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + + (-screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(Fe53)*Y(He4)*state.rho) + + (-screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(Co57)*Y(H1)*state.rho) + + (-screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + + (-screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(Co58)*Y(H1)*state.rho) + + (-screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + + (-screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(Co59)*Y(H1)*state.rho) + + (-screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + + (-screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(Ni60)*Y(N)*state.rho + screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(Fe57)*Y(He4)*state.rho) + + (-screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(Ni61)*Y(N)*state.rho + screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(Fe58)*Y(He4)*state.rho) + + (-screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(Ni57)*Y(H1)*state.rho) + + (-screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(Co54)*Y(He4)*state.rho) + + (-screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(Ni58)*Y(H1)*state.rho) + + (-screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(Co55)*Y(He4)*state.rho) + + (-screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(Ni59)*Y(H1)*state.rho) + + (-screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(Ni60)*Y(H1)*state.rho) + + (-screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(Co57)*Y(He4)*state.rho) + + (-screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(Ni61)*Y(H1)*state.rho) + + (-screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(Co58)*Y(He4)*state.rho) + + (-screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(Ni62)*Y(H1)*state.rho) + + (-screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(Co59)*Y(He4)*state.rho) + + (-screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(Cu63)*Y(N)*state.rho + screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(Ni63)*Y(H1)*state.rho) + + (-screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(Cu64)*Y(N)*state.rho + screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(Ni64)*Y(H1)*state.rho) + + (-screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(Cu59)*Y(H1)*state.rho) + + (-screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(Cu60)*Y(H1)*state.rho) + + (-screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + + (-screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(Cu61)*Y(H1)*state.rho) + + (-screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + + (-screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(Cu62)*Y(H1)*state.rho) + + (-screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + + (-screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(Cu63)*Y(H1)*state.rho) + + (-screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + + (-screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(Cu64)*Y(H1)*state.rho) + + (-screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + + (-screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(Cu65)*Y(H1)*state.rho) + + (-screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + + (-screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(Zn66)*Y(N)*state.rho + screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(He4)*Y(Ni63)*state.rho) + + (-screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(Zn62)*Y(H1)*state.rho) + + (-screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + + (-screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(Zn63)*Y(H1)*state.rho) + + (-screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + + (-screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(Ga64)*Y(N)*state.rho + screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(Zn64)*Y(H1)*state.rho) + + (-screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(Ga64)*Y(N)*state.rho + screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + + (-screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(Ga63)*Y(H1)*state.rho) + + (-screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + + (-screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(Ge64)*Y(N)*state.rho + screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(Ga64)*Y(H1)*state.rho) + + (-screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(Ge64)*Y(N)*state.rho + screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + + (screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(Li7)*Y(H2)*state.rho + -0.5*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho)) + + (-screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(B8)*Y(N)*state.rho + 0.5*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + + (screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + -0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)) + + (-screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_Li6_to_n_p_He4_reaclib)*Y(Li6)) + + (-0.5*screened_rates(k_He4_He4_n_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_Be9_to_n_He4_He4_reaclib)*Y(Be9)) + + (-0.5*screened_rates(k_p_p_n_to_p_d_reaclib)*Y(N)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) + screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H2)*Y(H1)*state.rho) + + (-0.5*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho) + + (-screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H1) = - screened_rates(k_Zn59_to_p_Ni58_reaclib)*Y(Zn59) + - (-screened_rates(k_n_p_to_d_reaclib)*Y(N)*Y(H1)*state.rho + screened_rates(k_d_to_n_p_reaclib)*Y(H2)) + - -screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - -screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - (-screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + screened_rates(k_He3_to_p_d_reaclib)*Y(He3)) + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - (-screened_rates(k_p_Li6_to_Be7_reaclib)*Y(Li6)*Y(H1)*state.rho + screened_rates(k_Be7_to_p_Li6_reaclib)*Y(Be7)) + - (-screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + - (-screened_rates(k_p_Be9_to_B10_reaclib)*Y(Be9)*Y(H1)*state.rho + screened_rates(k_B10_to_p_Be9_reaclib)*Y(B10)) + - (-screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + screened_rates(k_C12_to_p_B11_reaclib)*Y(C12)) + - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_reaclib)*Y(N13)) + - (-screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_reaclib)*Y(N14)) + - (-screened_rates(k_p_C14_to_N15_reaclib)*Y(C14)*Y(H1)*state.rho + screened_rates(k_N15_to_p_C14_reaclib)*Y(N15)) + - (-screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_reaclib)*Y(O14)) + - (-screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_reaclib)*Y(O15)) + - (-screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_reaclib)*Y(O16)) + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + - (-screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_reaclib)*Y(F18)) + - (-screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_reaclib)*Y(F19)) + - (-screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_reaclib)*Y(Ne18)) + - (-screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_reaclib)*Y(Ne19)) + - (-screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_reaclib)*Y(Ne20)) + - (-screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_reaclib)*Y(Na21)) + - (-screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_reaclib)*Y(Na22)) + - (-screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_reaclib)*Y(Na23)) + - (-screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(Na22)*Y(H1)*state.rho + screened_rates(k_Mg23_to_p_Na22_reaclib)*Y(Mg23)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_reaclib)*Y(Mg24)) + - (-screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(Mg24)*Y(H1)*state.rho + screened_rates(k_Al25_to_p_Mg24_reaclib)*Y(Al25)) + - (-screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(Mg25)*Y(H1)*state.rho + screened_rates(k_Al26_to_p_Mg25_reaclib)*Y(Al26)) + - (-screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(Mg26)*Y(H1)*state.rho + screened_rates(k_Al27_to_p_Mg26_reaclib)*Y(Al27)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_reaclib)*Y(Si28)) + - (-screened_rates(k_p_Si28_to_P29_reaclib)*Y(Si28)*Y(H1)*state.rho + screened_rates(k_P29_to_p_Si28_reaclib)*Y(P29)) + - (-screened_rates(k_p_Si29_to_P30_reaclib)*Y(Si29)*Y(H1)*state.rho + screened_rates(k_P30_to_p_Si29_reaclib)*Y(P30)) + - (-screened_rates(k_p_Si30_to_P31_reaclib)*Y(Si30)*Y(H1)*state.rho + screened_rates(k_P31_to_p_Si30_reaclib)*Y(P31)) + - (-screened_rates(k_p_Si31_to_P32_reaclib)*Y(Si31)*Y(H1)*state.rho + screened_rates(k_P32_to_p_Si31_reaclib)*Y(P32)) + - (-screened_rates(k_p_Si32_to_P33_reaclib)*Y(Si32)*Y(H1)*state.rho + screened_rates(k_P33_to_p_Si32_reaclib)*Y(P33)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_reaclib)*Y(S32)) + - (-screened_rates(k_p_P32_to_S33_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_S33_to_p_P32_reaclib)*Y(S33)) + - (-screened_rates(k_p_P33_to_S34_reaclib)*Y(P33)*Y(H1)*state.rho + screened_rates(k_S34_to_p_P33_reaclib)*Y(S34)) + - (-screened_rates(k_p_S32_to_Cl33_reaclib)*Y(S32)*Y(H1)*state.rho + screened_rates(k_Cl33_to_p_S32_reaclib)*Y(Cl33)) + - (-screened_rates(k_p_S33_to_Cl34_reaclib)*Y(S33)*Y(H1)*state.rho + screened_rates(k_Cl34_to_p_S33_reaclib)*Y(Cl34)) + - (-screened_rates(k_p_S34_to_Cl35_reaclib)*Y(S34)*Y(H1)*state.rho + screened_rates(k_Cl35_to_p_S34_reaclib)*Y(Cl35)) + - (-screened_rates(k_p_S35_to_Cl36_reaclib)*Y(S35)*Y(H1)*state.rho + screened_rates(k_Cl36_to_p_S35_reaclib)*Y(Cl36)) + - (-screened_rates(k_p_S36_to_Cl37_reaclib)*Y(S36)*Y(H1)*state.rho + screened_rates(k_Cl37_to_p_S36_reaclib)*Y(Cl37)) + - (-screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(Cl35)*Y(H1)*state.rho + screened_rates(k_Ar36_to_p_Cl35_reaclib)*Y(Ar36)) + - (-screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(Cl36)*Y(H1)*state.rho + screened_rates(k_Ar37_to_p_Cl36_reaclib)*Y(Ar37)) + - (-screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(Cl37)*Y(H1)*state.rho + screened_rates(k_Ar38_to_p_Cl37_reaclib)*Y(Ar38)) + - (-screened_rates(k_p_Ar36_to_K37_reaclib)*Y(Ar36)*Y(H1)*state.rho + screened_rates(k_K37_to_p_Ar36_reaclib)*Y(K37)) + - (-screened_rates(k_p_Ar37_to_K38_reaclib)*Y(Ar37)*Y(H1)*state.rho + screened_rates(k_K38_to_p_Ar37_reaclib)*Y(K38)) + - (-screened_rates(k_p_Ar38_to_K39_reaclib)*Y(Ar38)*Y(H1)*state.rho + screened_rates(k_K39_to_p_Ar38_reaclib)*Y(K39)) + - (-screened_rates(k_p_Ar39_to_K40_reaclib)*Y(Ar39)*Y(H1)*state.rho + screened_rates(k_K40_to_p_Ar39_reaclib)*Y(K40)) + - (-screened_rates(k_p_Ar40_to_K41_reaclib)*Y(Ar40)*Y(H1)*state.rho + screened_rates(k_K41_to_p_Ar40_reaclib)*Y(K41)) + - (-screened_rates(k_p_K39_to_Ca40_reaclib)*Y(K39)*Y(H1)*state.rho + screened_rates(k_Ca40_to_p_K39_reaclib)*Y(Ca40)) + - (-screened_rates(k_p_K40_to_Ca41_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_Ca41_to_p_K40_reaclib)*Y(Ca41)) + - (-screened_rates(k_p_K41_to_Ca42_reaclib)*Y(K41)*Y(H1)*state.rho + screened_rates(k_Ca42_to_p_K41_reaclib)*Y(Ca42)) + - (-screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(Ca42)*Y(H1)*state.rho + screened_rates(k_Sc43_to_p_Ca42_reaclib)*Y(Sc43)) + - (-screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(Ca43)*Y(H1)*state.rho + screened_rates(k_Sc44_to_p_Ca43_reaclib)*Y(Sc44)) + - (-screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(Ca44)*Y(H1)*state.rho + screened_rates(k_Sc45_to_p_Ca44_reaclib)*Y(Sc45)) + - (-screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(Ca45)*Y(H1)*state.rho + screened_rates(k_Sc46_to_p_Ca45_reaclib)*Y(Sc46)) + - (-screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(Ca46)*Y(H1)*state.rho + screened_rates(k_Sc47_to_p_Ca46_reaclib)*Y(Sc47)) + - (-screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(Ca47)*Y(H1)*state.rho + screened_rates(k_Sc48_to_p_Ca47_reaclib)*Y(Sc48)) + - (-screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(Ca48)*Y(H1)*state.rho + screened_rates(k_Sc49_to_p_Ca48_reaclib)*Y(Sc49)) + - (-screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(Sc43)*Y(H1)*state.rho + screened_rates(k_Ti44_to_p_Sc43_reaclib)*Y(Ti44)) + - (-screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(Sc44)*Y(H1)*state.rho + screened_rates(k_Ti45_to_p_Sc44_reaclib)*Y(Ti45)) + - (-screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(Sc45)*Y(H1)*state.rho + screened_rates(k_Ti46_to_p_Sc45_reaclib)*Y(Ti46)) + - (-screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_Ti47_to_p_Sc46_reaclib)*Y(Ti47)) + - (-screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(Sc47)*Y(H1)*state.rho + screened_rates(k_Ti48_to_p_Sc47_reaclib)*Y(Ti48)) + - (-screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_Ti49_to_p_Sc48_reaclib)*Y(Ti49)) + - (-screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_Ti50_to_p_Sc49_reaclib)*Y(Ti50)) + - (-screened_rates(k_p_Ti45_to_V46_reaclib)*Y(Ti45)*Y(H1)*state.rho + screened_rates(k_V46_to_p_Ti45_reaclib)*Y(V46)) + - (-screened_rates(k_p_Ti46_to_V47_reaclib)*Y(Ti46)*Y(H1)*state.rho + screened_rates(k_V47_to_p_Ti46_reaclib)*Y(V47)) + - (-screened_rates(k_p_Ti47_to_V48_reaclib)*Y(Ti47)*Y(H1)*state.rho + screened_rates(k_V48_to_p_Ti47_reaclib)*Y(V48)) + - (-screened_rates(k_p_Ti48_to_V49_reaclib)*Y(Ti48)*Y(H1)*state.rho + screened_rates(k_V49_to_p_Ti48_reaclib)*Y(V49)) + - (-screened_rates(k_p_Ti49_to_V50_reaclib)*Y(Ti49)*Y(H1)*state.rho + screened_rates(k_V50_to_p_Ti49_reaclib)*Y(V50)) + - (-screened_rates(k_p_Ti50_to_V51_reaclib)*Y(Ti50)*Y(H1)*state.rho + screened_rates(k_V51_to_p_Ti50_reaclib)*Y(V51)) + - (-screened_rates(k_p_Ti51_to_V52_reaclib)*Y(Ti51)*Y(H1)*state.rho + screened_rates(k_V52_to_p_Ti51_reaclib)*Y(V52)) + - (-screened_rates(k_p_V47_to_Cr48_reaclib)*Y(V47)*Y(H1)*state.rho + screened_rates(k_Cr48_to_p_V47_reaclib)*Y(Cr48)) + - (-screened_rates(k_p_V48_to_Cr49_reaclib)*Y(V48)*Y(H1)*state.rho + screened_rates(k_Cr49_to_p_V48_reaclib)*Y(Cr49)) + - (-screened_rates(k_p_V49_to_Cr50_reaclib)*Y(V49)*Y(H1)*state.rho + screened_rates(k_Cr50_to_p_V49_reaclib)*Y(Cr50)) + - (-screened_rates(k_p_V50_to_Cr51_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_Cr51_to_p_V50_reaclib)*Y(Cr51)) + - (-screened_rates(k_p_V51_to_Cr52_reaclib)*Y(V51)*Y(H1)*state.rho + screened_rates(k_Cr52_to_p_V51_reaclib)*Y(Cr52)) + - (-screened_rates(k_p_V52_to_Cr53_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_Cr53_to_p_V52_reaclib)*Y(Cr53)) + - (-screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(Cr49)*Y(H1)*state.rho + screened_rates(k_Mn50_to_p_Cr49_reaclib)*Y(Mn50)) + - (-screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(Cr50)*Y(H1)*state.rho + screened_rates(k_Mn51_to_p_Cr50_reaclib)*Y(Mn51)) + - (-screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(Cr51)*Y(H1)*state.rho + screened_rates(k_Mn52_to_p_Cr51_reaclib)*Y(Mn52)) + - (-screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(Cr52)*Y(H1)*state.rho + screened_rates(k_Mn53_to_p_Cr52_reaclib)*Y(Mn53)) + - (-screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(Cr53)*Y(H1)*state.rho + screened_rates(k_Mn54_to_p_Cr53_reaclib)*Y(Mn54)) + - (-screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(Cr54)*Y(H1)*state.rho + screened_rates(k_Mn55_to_p_Cr54_reaclib)*Y(Mn55)) + - (-screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_reaclib)*Y(Fe52)) + - (-screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(Mn52)*Y(H1)*state.rho + screened_rates(k_Fe53_to_p_Mn52_reaclib)*Y(Fe53)) + - (-screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(Mn53)*Y(H1)*state.rho + screened_rates(k_Fe54_to_p_Mn53_reaclib)*Y(Fe54)) + - (-screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(Mn54)*Y(H1)*state.rho + screened_rates(k_Fe55_to_p_Mn54_reaclib)*Y(Fe55)) + - (-screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_reaclib)*Y(Fe56)) + - (-screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(Fe52)*Y(H1)*state.rho + screened_rates(k_Co53_to_p_Fe52_reaclib)*Y(Co53)) + - (-screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(Fe53)*Y(H1)*state.rho + screened_rates(k_Co54_to_p_Fe53_reaclib)*Y(Co54)) + - (-screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_reaclib)*Y(Co55)) + - (-screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_reaclib)*Y(Co56)) + - (-screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_reaclib)*Y(Co57)) + - (-screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(Fe57)*Y(H1)*state.rho + screened_rates(k_Co58_to_p_Fe57_reaclib)*Y(Co58)) + - (-screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(Fe58)*Y(H1)*state.rho + screened_rates(k_Co59_to_p_Fe58_reaclib)*Y(Co59)) + - (-screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_reaclib)*Y(Ni56)) + - (-screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_reaclib)*Y(Ni57)) + - (-screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_reaclib)*Y(Ni58)) + - (-screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(Co58)*Y(H1)*state.rho + screened_rates(k_Ni59_to_p_Co58_reaclib)*Y(Ni59)) + - (-screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(Co59)*Y(H1)*state.rho + screened_rates(k_Ni60_to_p_Co59_reaclib)*Y(Ni60)) + - (-screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(Ni56)*Y(H1)*state.rho + screened_rates(k_Cu57_to_p_Ni56_reaclib)*Y(Cu57)) + - (-screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(Ni57)*Y(H1)*state.rho + screened_rates(k_Cu58_to_p_Ni57_reaclib)*Y(Cu58)) + - (-screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_reaclib)*Y(Cu59)) + - (-screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(Ni59)*Y(H1)*state.rho + screened_rates(k_Cu60_to_p_Ni59_reaclib)*Y(Cu60)) + - (-screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(Ni60)*Y(H1)*state.rho + screened_rates(k_Cu61_to_p_Ni60_reaclib)*Y(Cu61)) + - (-screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(Ni61)*Y(H1)*state.rho + screened_rates(k_Cu62_to_p_Ni61_reaclib)*Y(Cu62)) + - (-screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(Ni62)*Y(H1)*state.rho + screened_rates(k_Cu63_to_p_Ni62_reaclib)*Y(Cu63)) + - (-screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(Ni63)*Y(H1)*state.rho + screened_rates(k_Cu64_to_p_Ni63_reaclib)*Y(Cu64)) + - (-screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(Ni64)*Y(H1)*state.rho + screened_rates(k_Cu65_to_p_Ni64_reaclib)*Y(Cu65)) + - (-screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(Cu58)*Y(H1)*state.rho + screened_rates(k_Zn59_to_p_Cu58_reaclib)*Y(Zn59)) + - (-screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_reaclib)*Y(Zn60)) + - (-screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(Cu60)*Y(H1)*state.rho + screened_rates(k_Zn61_to_p_Cu60_reaclib)*Y(Zn61)) + - (-screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(Cu61)*Y(H1)*state.rho + screened_rates(k_Zn62_to_p_Cu61_reaclib)*Y(Zn62)) + - (-screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(Cu62)*Y(H1)*state.rho + screened_rates(k_Zn63_to_p_Cu62_reaclib)*Y(Zn63)) + - (-screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(Cu63)*Y(H1)*state.rho + screened_rates(k_Zn64_to_p_Cu63_reaclib)*Y(Zn64)) + - (-screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(Cu64)*Y(H1)*state.rho + screened_rates(k_Zn65_to_p_Cu64_reaclib)*Y(Zn65)) + - (-screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(Cu65)*Y(H1)*state.rho + screened_rates(k_Zn66_to_p_Cu65_reaclib)*Y(Zn66)) + - (-screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(Zn61)*Y(H1)*state.rho + screened_rates(k_Ga62_to_p_Zn61_reaclib)*Y(Ga62)) + - (-screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(Zn62)*Y(H1)*state.rho + screened_rates(k_Ga63_to_p_Zn62_reaclib)*Y(Ga63)) + - (-screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(Zn63)*Y(H1)*state.rho + screened_rates(k_Ga64_to_p_Zn63_reaclib)*Y(Ga64)) + - (-screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(Ga62)*Y(H1)*state.rho + screened_rates(k_Ge63_to_p_Ga62_reaclib)*Y(Ge63)) + - (-screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(Ga63)*Y(H1)*state.rho + screened_rates(k_Ge64_to_p_Ga63_reaclib)*Y(Ge64)) + - (screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_p_He4_to_d_He3_reaclib)*Y(He4)*Y(H1)*state.rho) + - (-screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(Li6)*Y(H1)*state.rho + screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He3)*Y(He4)*state.rho) + - (screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(Li6)*Y(H2)*state.rho + -screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(Li7)*Y(H1)*state.rho) + - (-screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + 0.5*screened_rates(k_He4_He4_to_p_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + - (screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(Be7)*Y(N)*state.rho + -screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(Li7)*Y(H1)*state.rho) + - (-screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(Be9)*Y(H1)*state.rho + screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(He4)*Y(Li6)*state.rho) + - (-screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(B10)*Y(H1)*state.rho + screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(Be7)*Y(He4)*state.rho) + - (screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(B10)*Y(He4)*state.rho + -screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(C13)*Y(H1)*state.rho) + - (screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(B11)*Y(He4)*state.rho + -screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(C14)*Y(H1)*state.rho) + - (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(Na23)*Y(H1)*state.rho) + - (screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N13)*Y(N)*state.rho + -screened_rates(k_p_C13_to_n_N13_reaclib)*Y(C13)*Y(H1)*state.rho) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N14)*Y(N)*state.rho + -screened_rates(k_p_C14_to_n_N14_reaclib)*Y(C14)*Y(H1)*state.rho) + - (-screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_n_O14_to_p_N14_reaclib)*Y(O14)*Y(N)*state.rho + -screened_rates(k_p_N14_to_n_O14_reaclib)*Y(N14)*Y(H1)*state.rho) + - (screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(F17)*Y(H1)*state.rho) + - (screened_rates(k_n_O15_to_p_N15_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_p_N15_to_n_O15_reaclib)*Y(N15)*Y(H1)*state.rho) + - (screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(Al27)*Y(H1)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_n_F17_to_p_O17_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_p_O17_to_n_F17_reaclib)*Y(O17)*Y(H1)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + - (screened_rates(k_n_F18_to_p_O18_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_p_O18_to_n_F18_reaclib)*Y(O18)*Y(H1)*state.rho) + - (-screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(He4)*Y(O15)*state.rho) + - (screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(He4)*Y(O16)*state.rho) + - (screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(F18)*Y(H1)*state.rho) + - (screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(Na21)*Y(H1)*state.rho) + - (screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(F19)*Y(H1)*state.rho) + - (screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(Na22)*Y(H1)*state.rho) + - (screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(C12)*Y(Ne20)*state.rho + -screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(P31)*Y(H1)*state.rho) + - (screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + - (screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(He4)*Y(Na22)*state.rho + -screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(Mg25)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(He4)*Y(Na23)*state.rho + -screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(Mg26)*Y(H1)*state.rho) + - (screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(Na23)*Y(H1)*state.rho) + - (screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(He4)*Y(Mg23)*state.rho + -screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(Al26)*Y(H1)*state.rho) + - (screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(Mg25)*Y(H1)*state.rho) + - (screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(Al25)*Y(He4)*state.rho + -screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(Si28)*Y(H1)*state.rho) + - (screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(Mg26)*Y(H1)*state.rho) + - (screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(Al26)*Y(He4)*state.rho + -screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(Si29)*Y(H1)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(Al27)*Y(He4)*state.rho + -screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(Si30)*Y(H1)*state.rho) + - (-screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(Si31)*Y(H1)*state.rho + screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(P31)*Y(N)*state.rho) + - (screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(Si29)*Y(H1)*state.rho) + - (screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(He4)*Y(P29)*state.rho + -screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(S32)*Y(H1)*state.rho) + - (screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(Si30)*Y(H1)*state.rho) + - (screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(He4)*Y(P30)*state.rho + -screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(S33)*Y(H1)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(He4)*Y(P31)*state.rho + -screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(S34)*Y(H1)*state.rho) + - (screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(P32)*Y(N)*state.rho + -screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(Si32)*Y(H1)*state.rho) + - (-screened_rates(k_p_P32_to_n_S32_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_n_S32_to_p_P32_reaclib)*Y(S32)*Y(N)*state.rho) + - (-screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(He4)*Y(Si29)*state.rho) + - (-screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(P33)*Y(H1)*state.rho + screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(He4)*Y(Si30)*state.rho) + - (screened_rates(k_n_S33_to_p_P33_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_p_P33_to_n_S33_reaclib)*Y(P33)*Y(H1)*state.rho) + - (-screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(S35)*Y(H1)*state.rho + screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(He4)*Y(P32)*state.rho) + - (-screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(S36)*Y(H1)*state.rho + screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(He4)*Y(P33)*state.rho) + - (screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(S33)*Y(H1)*state.rho) + - (screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(Cl33)*Y(He4)*state.rho + -screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(Ar36)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(S34)*Y(H1)*state.rho) + - (screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(Cl34)*Y(He4)*state.rho + -screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(Ar37)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(S35)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(Cl35)*Y(H1)*state.rho + screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(He4)*Y(S32)*state.rho) + - (screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(Cl35)*Y(He4)*state.rho + -screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(Ar38)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(S36)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(Cl36)*Y(H1)*state.rho + screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(He4)*Y(S33)*state.rho) + - (-screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(Cl37)*Y(H1)*state.rho + screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(He4)*Y(S34)*state.rho) + - (screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(Cl36)*Y(H1)*state.rho) + - (screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(Cl37)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(Ar39)*Y(H1)*state.rho + screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + - (-screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(Ar40)*Y(H1)*state.rho + screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + - (screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(Ar37)*Y(H1)*state.rho) + - (screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(He4)*Y(K37)*state.rho + -screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(Ca40)*Y(H1)*state.rho) + - (screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(Ar38)*Y(H1)*state.rho) + - (screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(He4)*Y(K38)*state.rho + -screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(Ca41)*Y(H1)*state.rho) + - (screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(Ar39)*Y(H1)*state.rho) + - (-screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(K39)*Y(H1)*state.rho + screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(Ar36)*Y(He4)*state.rho) + - (screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(Ar40)*Y(H1)*state.rho) + - (-screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(Ca40)*Y(N)*state.rho) + - (-screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + - (screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(He4)*Y(K40)*state.rho + -screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(Ca43)*Y(H1)*state.rho) + - (-screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(K41)*Y(H1)*state.rho + screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + - (screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(He4)*Y(K41)*state.rho + -screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(Ca44)*Y(H1)*state.rho) + - (screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(K41)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(Ca42)*Y(H1)*state.rho + screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(He4)*Y(K39)*state.rho) + - (-screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(Ca47)*Y(H1)*state.rho + screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(Sc47)*Y(N)*state.rho) + - (screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(Ca43)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(Sc43)*Y(H1)*state.rho + screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(Ca40)*Y(He4)*state.rho) + - (screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(He4)*Y(Sc43)*state.rho + -screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(Ti46)*Y(H1)*state.rho) + - (screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(Ca44)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(Sc44)*Y(H1)*state.rho + screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + - (screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(He4)*Y(Sc44)*state.rho + -screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(Ti47)*Y(H1)*state.rho) + - (screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(Sc45)*Y(N)*state.rho + -screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(Ca45)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(Sc45)*Y(H1)*state.rho + screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + - (screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(He4)*Y(Sc45)*state.rho + -screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(Ti48)*Y(H1)*state.rho) + - (screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(Sc46)*Y(N)*state.rho + -screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(Ca46)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(Ti46)*Y(N)*state.rho) + - (-screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(Ca43)*Y(He4)*state.rho) + - (screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(Ti49)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(Sc47)*Y(H1)*state.rho + screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + - (screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(He4)*Y(Sc47)*state.rho + -screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(Ti50)*Y(H1)*state.rho) + - (screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(Sc48)*Y(N)*state.rho + -screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(Ca48)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(Ti48)*Y(N)*state.rho) + - (-screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(Ca45)*Y(He4)*state.rho) + - (screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(Ti51)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(Ti49)*Y(N)*state.rho) + - (-screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + - (screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(Sc44)*Y(H1)*state.rho) + - (screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(Sc45)*Y(H1)*state.rho) + - (screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(He4)*Y(Ti45)*state.rho + -screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(V48)*Y(H1)*state.rho) + - (screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(Sc47)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(Ti51)*Y(H1)*state.rho + screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(V51)*Y(N)*state.rho) + - (screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(Ti46)*Y(H1)*state.rho) + - (screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(He4)*Y(V46)*state.rho + -screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(Cr49)*Y(H1)*state.rho) + - (screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(Ti47)*Y(H1)*state.rho) + - (-screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(V47)*Y(H1)*state.rho + screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(He4)*Y(Ti44)*state.rho) + - (screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(He4)*Y(V47)*state.rho + -screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(Cr50)*Y(H1)*state.rho) + - (screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(Ti48)*Y(H1)*state.rho) + - (screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(He4)*Y(V48)*state.rho + -screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(Cr51)*Y(H1)*state.rho) + - (screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(V49)*Y(N)*state.rho + -screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(Ti49)*Y(H1)*state.rho) + - (-screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(V49)*Y(H1)*state.rho + screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + - (screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(He4)*Y(V49)*state.rho + -screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(Cr52)*Y(H1)*state.rho) + - (screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(Ti50)*Y(H1)*state.rho) + - (-screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(Cr50)*Y(N)*state.rho) + - (-screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + - (screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(He4)*Y(V50)*state.rho + -screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(Cr53)*Y(H1)*state.rho) + - (-screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(V51)*Y(H1)*state.rho + screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + - (-screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(Cr52)*Y(N)*state.rho) + - (-screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(He4)*Y(Ti49)*state.rho) + - (screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(V48)*Y(H1)*state.rho) + - (screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(Mn51)*Y(H1)*state.rho) + - (screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(V49)*Y(H1)*state.rho) + - (screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(Cr49)*Y(He4)*state.rho + -screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(Mn52)*Y(H1)*state.rho) + - (screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(V51)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(Cr54)*Y(H1)*state.rho + screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(He4)*Y(V51)*state.rho) + - (screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(Cr50)*Y(H1)*state.rho) + - (screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(He4)*Y(Mn50)*state.rho + -screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(Fe53)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(Cr51)*Y(H1)*state.rho) + - (screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(Cr52)*Y(H1)*state.rho) + - (screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(He4)*Y(Mn52)*state.rho + -screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(Fe55)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(Cr53)*Y(H1)*state.rho) + - (-screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(Mn53)*Y(H1)*state.rho + screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + - (screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(He4)*Y(Mn53)*state.rho + -screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(Cr54)*Y(H1)*state.rho) + - (-screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(Mn54)*Y(H1)*state.rho + screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + - (-screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(Mn52)*Y(H1)*state.rho) + - (screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(Co55)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(Mn53)*Y(H1)*state.rho) + - (screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(Mn54)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(Mn55)*Y(H1)*state.rho) + - (-screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(Fe57)*Y(H1)*state.rho + screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + - (-screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(Fe58)*Y(H1)*state.rho + screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + - (screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(Fe53)*Y(H1)*state.rho) + - (screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(Co53)*Y(He4)*state.rho + -screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(Ni56)*Y(H1)*state.rho) + - (screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(Co54)*Y(He4)*state.rho + -screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(Ni57)*Y(H1)*state.rho) + - (screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(Fe55)*Y(H1)*state.rho) + - (screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(Co56)*Y(He4)*state.rho + -screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(Ni59)*Y(H1)*state.rho) + - (screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(Fe57)*Y(H1)*state.rho) + - (-screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(Co57)*Y(He4)*state.rho + -screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(Ni60)*Y(H1)*state.rho) + - (screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(Fe58)*Y(H1)*state.rho) + - (-screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(Co58)*Y(H1)*state.rho + screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + - (-screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(Co59)*Y(H1)*state.rho + screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(Co57)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(Co58)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(Co59)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(Ni61)*Y(H1)*state.rho + screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(Co58)*Y(He4)*state.rho) + - (-screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(Ni62)*Y(H1)*state.rho + screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(Co59)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(Ni57)*Y(H1)*state.rho) + - (screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(Cu57)*Y(He4)*state.rho + -screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(Zn60)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(Ni59)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + - (screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(Ni60)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(Cu60)*Y(H1)*state.rho + screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + - (screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(Ni61)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(Cu61)*Y(H1)*state.rho + screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + - (screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(Ni62)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(Cu62)*Y(H1)*state.rho + screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + - (screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(Cu63)*Y(N)*state.rho + -screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(Ni63)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(Cu63)*Y(H1)*state.rho + screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + - (screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(Cu64)*Y(N)*state.rho + -screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(Ni64)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(Cu64)*Y(H1)*state.rho + screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + - (-screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(Cu65)*Y(H1)*state.rho + screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + - (screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(Cu59)*Y(H1)*state.rho) + - (screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(Cu60)*Y(H1)*state.rho) + - (screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(Cu61)*Y(H1)*state.rho) + - (-screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(Zn61)*Y(H1)*state.rho + screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(Cu58)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(Cu62)*Y(H1)*state.rho) + - (-screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(Zn62)*Y(H1)*state.rho + screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(Cu63)*Y(H1)*state.rho) + - (-screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(Zn63)*Y(H1)*state.rho + screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(Cu64)*Y(H1)*state.rho) + - (-screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(Zn64)*Y(H1)*state.rho + screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(Cu65)*Y(H1)*state.rho) + - (-screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(Zn65)*Y(H1)*state.rho + screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(Cu62)*Y(He4)*state.rho) + - (-screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(Zn66)*Y(H1)*state.rho + screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(Cu63)*Y(He4)*state.rho) + - (screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(Zn62)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(Ga62)*Y(H1)*state.rho + screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(He4)*Y(Zn59)*state.rho) + - (screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(Zn63)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(Ga63)*Y(H1)*state.rho + screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + - (screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(Ga64)*Y(N)*state.rho + -screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(Zn64)*Y(H1)*state.rho) + - (-screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(Ga64)*Y(H1)*state.rho + screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + - (screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(Ga63)*Y(H1)*state.rho) + - (screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(Ge64)*Y(N)*state.rho + -screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(Ga64)*Y(H1)*state.rho) + - (screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + -screened_rates(k_p_p_He4_to_He3_He3_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)) + - (screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + -0.5*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + - (-screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho + 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H2)*amrex::Math::powi<2>(state.rho)) + - (screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(B8)*Y(N)*state.rho + -0.5*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + - (-screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*Y(H1)*state.rho + 0.16666666666666667*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho)) + - (screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + -0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)) + - (2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + -0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)) + - (-screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_Li6_to_n_p_He4_reaclib)*Y(Li6)) + - (-0.5*screened_rates(k_n_p_p_to_p_d_reaclib)*Y(N)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H2)*Y(H1)*state.rho) + - (0.0e0_rt + 0.0e0_rt) + - (screened_rates(k_n_to_p_weaktab)*Y(N) + -screened_rates(k_p_to_n_weaktab)*Y(H1)); + screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib)*Y(Zn59) + + (-screened_rates(k_p_n_to_d_reaclib)*Y(N)*Y(H1)*state.rho + screened_rates(k_d_to_n_p_reaclib)*Y(H2)) + + -screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + -screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + (-screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + screened_rates(k_He3_to_p_d_reaclib)*Y(He3)) + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + (-screened_rates(k_Li6_p_to_Be7_reaclib)*Y(Li6)*Y(H1)*state.rho + screened_rates(k_Be7_to_p_Li6_reaclib)*Y(Be7)) + + (-screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + + (-screened_rates(k_Be9_p_to_B10_reaclib)*Y(Be9)*Y(H1)*state.rho + screened_rates(k_B10_to_p_Be9_reaclib)*Y(B10)) + + (-screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + screened_rates(k_C12_to_p_B11_reaclib)*Y(C12)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_reaclib)*Y(N13)) + + (-screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_reaclib)*Y(N14)) + + (-screened_rates(k_C14_p_to_N15_reaclib)*Y(C14)*Y(H1)*state.rho + screened_rates(k_N15_to_p_C14_reaclib)*Y(N15)) + + (-screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_reaclib)*Y(O14)) + + (-screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_reaclib)*Y(O15)) + + (-screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_reaclib)*Y(O16)) + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + + (-screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_reaclib)*Y(F18)) + + (-screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_reaclib)*Y(F19)) + + (-screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_reaclib)*Y(Ne18)) + + (-screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_reaclib)*Y(Ne19)) + + (-screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_reaclib)*Y(Ne20)) + + (-screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_reaclib)*Y(Na21)) + + (-screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_reaclib)*Y(Na22)) + + (-screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_reaclib)*Y(Na23)) + + (-screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(Na22)*Y(H1)*state.rho + screened_rates(k_Mg23_to_p_Na22_reaclib)*Y(Mg23)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_reaclib)*Y(Mg24)) + + (-screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(Mg24)*Y(H1)*state.rho + screened_rates(k_Al25_to_p_Mg24_reaclib)*Y(Al25)) + + (-screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(Mg25)*Y(H1)*state.rho + screened_rates(k_Al26_to_p_Mg25_reaclib)*Y(Al26)) + + (-screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(Mg26)*Y(H1)*state.rho + screened_rates(k_Al27_to_p_Mg26_reaclib)*Y(Al27)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_reaclib)*Y(Si28)) + + (-screened_rates(k_Si28_p_to_P29_reaclib)*Y(Si28)*Y(H1)*state.rho + screened_rates(k_P29_to_p_Si28_reaclib)*Y(P29)) + + (-screened_rates(k_Si29_p_to_P30_reaclib)*Y(Si29)*Y(H1)*state.rho + screened_rates(k_P30_to_p_Si29_reaclib)*Y(P30)) + + (-screened_rates(k_Si30_p_to_P31_reaclib)*Y(Si30)*Y(H1)*state.rho + screened_rates(k_P31_to_p_Si30_reaclib)*Y(P31)) + + (-screened_rates(k_Si31_p_to_P32_reaclib)*Y(Si31)*Y(H1)*state.rho + screened_rates(k_P32_to_p_Si31_reaclib)*Y(P32)) + + (-screened_rates(k_Si32_p_to_P33_reaclib)*Y(Si32)*Y(H1)*state.rho + screened_rates(k_P33_to_p_Si32_reaclib)*Y(P33)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_reaclib)*Y(S32)) + + (-screened_rates(k_P32_p_to_S33_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_S33_to_p_P32_reaclib)*Y(S33)) + + (-screened_rates(k_P33_p_to_S34_reaclib)*Y(P33)*Y(H1)*state.rho + screened_rates(k_S34_to_p_P33_reaclib)*Y(S34)) + + (-screened_rates(k_S32_p_to_Cl33_reaclib)*Y(S32)*Y(H1)*state.rho + screened_rates(k_Cl33_to_p_S32_reaclib)*Y(Cl33)) + + (-screened_rates(k_S33_p_to_Cl34_reaclib)*Y(S33)*Y(H1)*state.rho + screened_rates(k_Cl34_to_p_S33_reaclib)*Y(Cl34)) + + (-screened_rates(k_S34_p_to_Cl35_reaclib)*Y(S34)*Y(H1)*state.rho + screened_rates(k_Cl35_to_p_S34_reaclib)*Y(Cl35)) + + (-screened_rates(k_S35_p_to_Cl36_reaclib)*Y(S35)*Y(H1)*state.rho + screened_rates(k_Cl36_to_p_S35_reaclib)*Y(Cl36)) + + (-screened_rates(k_S36_p_to_Cl37_reaclib)*Y(S36)*Y(H1)*state.rho + screened_rates(k_Cl37_to_p_S36_reaclib)*Y(Cl37)) + + (-screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(Cl35)*Y(H1)*state.rho + screened_rates(k_Ar36_to_p_Cl35_reaclib)*Y(Ar36)) + + (-screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(Cl36)*Y(H1)*state.rho + screened_rates(k_Ar37_to_p_Cl36_reaclib)*Y(Ar37)) + + (-screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(Cl37)*Y(H1)*state.rho + screened_rates(k_Ar38_to_p_Cl37_reaclib)*Y(Ar38)) + + (-screened_rates(k_Ar36_p_to_K37_reaclib)*Y(Ar36)*Y(H1)*state.rho + screened_rates(k_K37_to_p_Ar36_reaclib)*Y(K37)) + + (-screened_rates(k_Ar37_p_to_K38_reaclib)*Y(Ar37)*Y(H1)*state.rho + screened_rates(k_K38_to_p_Ar37_reaclib)*Y(K38)) + + (-screened_rates(k_Ar38_p_to_K39_reaclib)*Y(Ar38)*Y(H1)*state.rho + screened_rates(k_K39_to_p_Ar38_reaclib)*Y(K39)) + + (-screened_rates(k_Ar39_p_to_K40_reaclib)*Y(Ar39)*Y(H1)*state.rho + screened_rates(k_K40_to_p_Ar39_reaclib)*Y(K40)) + + (-screened_rates(k_Ar40_p_to_K41_reaclib)*Y(Ar40)*Y(H1)*state.rho + screened_rates(k_K41_to_p_Ar40_reaclib)*Y(K41)) + + (-screened_rates(k_K39_p_to_Ca40_reaclib)*Y(K39)*Y(H1)*state.rho + screened_rates(k_Ca40_to_p_K39_reaclib)*Y(Ca40)) + + (-screened_rates(k_K40_p_to_Ca41_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_Ca41_to_p_K40_reaclib)*Y(Ca41)) + + (-screened_rates(k_K41_p_to_Ca42_reaclib)*Y(K41)*Y(H1)*state.rho + screened_rates(k_Ca42_to_p_K41_reaclib)*Y(Ca42)) + + (-screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(Ca42)*Y(H1)*state.rho + screened_rates(k_Sc43_to_p_Ca42_reaclib)*Y(Sc43)) + + (-screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(Ca43)*Y(H1)*state.rho + screened_rates(k_Sc44_to_p_Ca43_reaclib)*Y(Sc44)) + + (-screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(Ca44)*Y(H1)*state.rho + screened_rates(k_Sc45_to_p_Ca44_reaclib)*Y(Sc45)) + + (-screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(Ca45)*Y(H1)*state.rho + screened_rates(k_Sc46_to_p_Ca45_reaclib)*Y(Sc46)) + + (-screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(Ca46)*Y(H1)*state.rho + screened_rates(k_Sc47_to_p_Ca46_reaclib)*Y(Sc47)) + + (-screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(Ca47)*Y(H1)*state.rho + screened_rates(k_Sc48_to_p_Ca47_reaclib)*Y(Sc48)) + + (-screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(Ca48)*Y(H1)*state.rho + screened_rates(k_Sc49_to_p_Ca48_reaclib)*Y(Sc49)) + + (-screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(Sc43)*Y(H1)*state.rho + screened_rates(k_Ti44_to_p_Sc43_reaclib)*Y(Ti44)) + + (-screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(Sc44)*Y(H1)*state.rho + screened_rates(k_Ti45_to_p_Sc44_reaclib)*Y(Ti45)) + + (-screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(Sc45)*Y(H1)*state.rho + screened_rates(k_Ti46_to_p_Sc45_reaclib)*Y(Ti46)) + + (-screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_Ti47_to_p_Sc46_reaclib)*Y(Ti47)) + + (-screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(Sc47)*Y(H1)*state.rho + screened_rates(k_Ti48_to_p_Sc47_reaclib)*Y(Ti48)) + + (-screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_Ti49_to_p_Sc48_reaclib)*Y(Ti49)) + + (-screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_Ti50_to_p_Sc49_reaclib)*Y(Ti50)) + + (-screened_rates(k_Ti45_p_to_V46_reaclib)*Y(Ti45)*Y(H1)*state.rho + screened_rates(k_V46_to_p_Ti45_reaclib)*Y(V46)) + + (-screened_rates(k_Ti46_p_to_V47_reaclib)*Y(Ti46)*Y(H1)*state.rho + screened_rates(k_V47_to_p_Ti46_reaclib)*Y(V47)) + + (-screened_rates(k_Ti47_p_to_V48_reaclib)*Y(Ti47)*Y(H1)*state.rho + screened_rates(k_V48_to_p_Ti47_reaclib)*Y(V48)) + + (-screened_rates(k_Ti48_p_to_V49_reaclib)*Y(Ti48)*Y(H1)*state.rho + screened_rates(k_V49_to_p_Ti48_reaclib)*Y(V49)) + + (-screened_rates(k_Ti49_p_to_V50_reaclib)*Y(Ti49)*Y(H1)*state.rho + screened_rates(k_V50_to_p_Ti49_reaclib)*Y(V50)) + + (-screened_rates(k_Ti50_p_to_V51_reaclib)*Y(Ti50)*Y(H1)*state.rho + screened_rates(k_V51_to_p_Ti50_reaclib)*Y(V51)) + + (-screened_rates(k_Ti51_p_to_V52_reaclib)*Y(Ti51)*Y(H1)*state.rho + screened_rates(k_V52_to_p_Ti51_reaclib)*Y(V52)) + + (-screened_rates(k_V47_p_to_Cr48_reaclib)*Y(V47)*Y(H1)*state.rho + screened_rates(k_Cr48_to_p_V47_reaclib)*Y(Cr48)) + + (-screened_rates(k_V48_p_to_Cr49_reaclib)*Y(V48)*Y(H1)*state.rho + screened_rates(k_Cr49_to_p_V48_reaclib)*Y(Cr49)) + + (-screened_rates(k_V49_p_to_Cr50_reaclib)*Y(V49)*Y(H1)*state.rho + screened_rates(k_Cr50_to_p_V49_reaclib)*Y(Cr50)) + + (-screened_rates(k_V50_p_to_Cr51_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_Cr51_to_p_V50_reaclib)*Y(Cr51)) + + (-screened_rates(k_V51_p_to_Cr52_reaclib)*Y(V51)*Y(H1)*state.rho + screened_rates(k_Cr52_to_p_V51_reaclib)*Y(Cr52)) + + (-screened_rates(k_V52_p_to_Cr53_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_Cr53_to_p_V52_reaclib)*Y(Cr53)) + + (-screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(Cr49)*Y(H1)*state.rho + screened_rates(k_Mn50_to_p_Cr49_reaclib)*Y(Mn50)) + + (-screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(Cr50)*Y(H1)*state.rho + screened_rates(k_Mn51_to_p_Cr50_reaclib)*Y(Mn51)) + + (-screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(Cr51)*Y(H1)*state.rho + screened_rates(k_Mn52_to_p_Cr51_reaclib)*Y(Mn52)) + + (-screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(Cr52)*Y(H1)*state.rho + screened_rates(k_Mn53_to_p_Cr52_reaclib)*Y(Mn53)) + + (-screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(Cr53)*Y(H1)*state.rho + screened_rates(k_Mn54_to_p_Cr53_reaclib)*Y(Mn54)) + + (-screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(Cr54)*Y(H1)*state.rho + screened_rates(k_Mn55_to_p_Cr54_reaclib)*Y(Mn55)) + + (-screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_reaclib)*Y(Fe52)) + + (-screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(Mn52)*Y(H1)*state.rho + screened_rates(k_Fe53_to_p_Mn52_reaclib)*Y(Fe53)) + + (-screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(Mn53)*Y(H1)*state.rho + screened_rates(k_Fe54_to_p_Mn53_reaclib)*Y(Fe54)) + + (-screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(Mn54)*Y(H1)*state.rho + screened_rates(k_Fe55_to_p_Mn54_reaclib)*Y(Fe55)) + + (-screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_reaclib)*Y(Fe56)) + + (-screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(Fe52)*Y(H1)*state.rho + screened_rates(k_Co53_to_p_Fe52_reaclib)*Y(Co53)) + + (-screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(Fe53)*Y(H1)*state.rho + screened_rates(k_Co54_to_p_Fe53_reaclib)*Y(Co54)) + + (-screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_reaclib)*Y(Co55)) + + (-screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_reaclib)*Y(Co56)) + + (-screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_reaclib)*Y(Co57)) + + (-screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(Fe57)*Y(H1)*state.rho + screened_rates(k_Co58_to_p_Fe57_reaclib)*Y(Co58)) + + (-screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(Fe58)*Y(H1)*state.rho + screened_rates(k_Co59_to_p_Fe58_reaclib)*Y(Co59)) + + (-screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_reaclib)*Y(Ni56)) + + (-screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_reaclib)*Y(Ni57)) + + (-screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_reaclib)*Y(Ni58)) + + (-screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(Co58)*Y(H1)*state.rho + screened_rates(k_Ni59_to_p_Co58_reaclib)*Y(Ni59)) + + (-screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(Co59)*Y(H1)*state.rho + screened_rates(k_Ni60_to_p_Co59_reaclib)*Y(Ni60)) + + (-screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(Ni56)*Y(H1)*state.rho + screened_rates(k_Cu57_to_p_Ni56_reaclib)*Y(Cu57)) + + (-screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(Ni57)*Y(H1)*state.rho + screened_rates(k_Cu58_to_p_Ni57_reaclib)*Y(Cu58)) + + (-screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_reaclib)*Y(Cu59)) + + (-screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(Ni59)*Y(H1)*state.rho + screened_rates(k_Cu60_to_p_Ni59_reaclib)*Y(Cu60)) + + (-screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(Ni60)*Y(H1)*state.rho + screened_rates(k_Cu61_to_p_Ni60_reaclib)*Y(Cu61)) + + (-screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(Ni61)*Y(H1)*state.rho + screened_rates(k_Cu62_to_p_Ni61_reaclib)*Y(Cu62)) + + (-screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(Ni62)*Y(H1)*state.rho + screened_rates(k_Cu63_to_p_Ni62_reaclib)*Y(Cu63)) + + (-screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(Ni63)*Y(H1)*state.rho + screened_rates(k_Cu64_to_p_Ni63_reaclib)*Y(Cu64)) + + (-screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(Ni64)*Y(H1)*state.rho + screened_rates(k_Cu65_to_p_Ni64_reaclib)*Y(Cu65)) + + (-screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(Cu58)*Y(H1)*state.rho + screened_rates(k_Zn59_to_p_Cu58_reaclib)*Y(Zn59)) + + (-screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_reaclib)*Y(Zn60)) + + (-screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(Cu60)*Y(H1)*state.rho + screened_rates(k_Zn61_to_p_Cu60_reaclib)*Y(Zn61)) + + (-screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(Cu61)*Y(H1)*state.rho + screened_rates(k_Zn62_to_p_Cu61_reaclib)*Y(Zn62)) + + (-screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(Cu62)*Y(H1)*state.rho + screened_rates(k_Zn63_to_p_Cu62_reaclib)*Y(Zn63)) + + (-screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(Cu63)*Y(H1)*state.rho + screened_rates(k_Zn64_to_p_Cu63_reaclib)*Y(Zn64)) + + (-screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(Cu64)*Y(H1)*state.rho + screened_rates(k_Zn65_to_p_Cu64_reaclib)*Y(Zn65)) + + (-screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(Cu65)*Y(H1)*state.rho + screened_rates(k_Zn66_to_p_Cu65_reaclib)*Y(Zn66)) + + (-screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(Zn61)*Y(H1)*state.rho + screened_rates(k_Ga62_to_p_Zn61_reaclib)*Y(Ga62)) + + (-screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(Zn62)*Y(H1)*state.rho + screened_rates(k_Ga63_to_p_Zn62_reaclib)*Y(Ga63)) + + (-screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(Zn63)*Y(H1)*state.rho + screened_rates(k_Ga64_to_p_Zn63_reaclib)*Y(Ga64)) + + (-screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(Ga62)*Y(H1)*state.rho + screened_rates(k_Ge63_to_p_Ga62_reaclib)*Y(Ge63)) + + (-screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(Ga63)*Y(H1)*state.rho + screened_rates(k_Ge64_to_p_Ga63_reaclib)*Y(Ge64)) + + (screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_He4_p_to_d_He3_reaclib)*Y(He4)*Y(H1)*state.rho) + + (-screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(Li6)*Y(H1)*state.rho + screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He3)*Y(He4)*state.rho) + + (screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(Li6)*Y(H2)*state.rho + -screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(Li7)*Y(H1)*state.rho) + + (-screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + 0.5*screened_rates(k_He4_He4_to_p_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + + (screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(Be7)*Y(N)*state.rho + -screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(Li7)*Y(H1)*state.rho) + + (-screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(Be9)*Y(H1)*state.rho + screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(He4)*Y(Li6)*state.rho) + + (-screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(B10)*Y(H1)*state.rho + screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(Be7)*Y(He4)*state.rho) + + (screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(B10)*Y(He4)*state.rho + -screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(C13)*Y(H1)*state.rho) + + (screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(B11)*Y(He4)*state.rho + -screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(C14)*Y(H1)*state.rho) + + (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(Na23)*Y(H1)*state.rho) + + (screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N13)*Y(N)*state.rho + -screened_rates(k_C13_p_to_n_N13_reaclib)*Y(C13)*Y(H1)*state.rho) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N14)*Y(N)*state.rho + -screened_rates(k_C14_p_to_n_N14_reaclib)*Y(C14)*Y(H1)*state.rho) + + (-screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O14_n_to_p_N14_reaclib)*Y(O14)*Y(N)*state.rho + -screened_rates(k_N14_p_to_n_O14_reaclib)*Y(N14)*Y(H1)*state.rho) + + (screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(F17)*Y(H1)*state.rho) + + (screened_rates(k_O15_n_to_p_N15_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_N15_p_to_n_O15_reaclib)*Y(N15)*Y(H1)*state.rho) + + (screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(Al27)*Y(H1)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F17_n_to_p_O17_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_O17_p_to_n_F17_reaclib)*Y(O17)*Y(H1)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (screened_rates(k_F18_n_to_p_O18_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_O18_p_to_n_F18_reaclib)*Y(O18)*Y(H1)*state.rho) + + (-screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(He4)*Y(O15)*state.rho) + + (screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(F18)*Y(H1)*state.rho) + + (screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(Na21)*Y(H1)*state.rho) + + (screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(F19)*Y(H1)*state.rho) + + (screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(Na22)*Y(H1)*state.rho) + + (screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(C12)*Y(Ne20)*state.rho + -screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(P31)*Y(H1)*state.rho) + + (screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + + (screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(He4)*Y(Na22)*state.rho + -screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(Mg25)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(He4)*Y(Na23)*state.rho + -screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(Mg26)*Y(H1)*state.rho) + + (screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(Na23)*Y(H1)*state.rho) + + (screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(He4)*Y(Mg23)*state.rho + -screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(Al26)*Y(H1)*state.rho) + + (screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(Mg25)*Y(H1)*state.rho) + + (screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(Al25)*Y(He4)*state.rho + -screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(Si28)*Y(H1)*state.rho) + + (screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(Mg26)*Y(H1)*state.rho) + + (screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(Al26)*Y(He4)*state.rho + -screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(Si29)*Y(H1)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(Al27)*Y(He4)*state.rho + -screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(Si30)*Y(H1)*state.rho) + + (-screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(Si31)*Y(H1)*state.rho + screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(P31)*Y(N)*state.rho) + + (screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(Si29)*Y(H1)*state.rho) + + (screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(He4)*Y(P29)*state.rho + -screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(S32)*Y(H1)*state.rho) + + (screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(Si30)*Y(H1)*state.rho) + + (screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(He4)*Y(P30)*state.rho + -screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(S33)*Y(H1)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(He4)*Y(P31)*state.rho + -screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(S34)*Y(H1)*state.rho) + + (screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(P32)*Y(N)*state.rho + -screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(Si32)*Y(H1)*state.rho) + + (-screened_rates(k_P32_p_to_n_S32_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_S32_n_to_p_P32_reaclib)*Y(S32)*Y(N)*state.rho) + + (-screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(He4)*Y(Si29)*state.rho) + + (-screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(P33)*Y(H1)*state.rho + screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(He4)*Y(Si30)*state.rho) + + (screened_rates(k_S33_n_to_p_P33_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_P33_p_to_n_S33_reaclib)*Y(P33)*Y(H1)*state.rho) + + (-screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(S35)*Y(H1)*state.rho + screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(He4)*Y(P32)*state.rho) + + (-screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(S36)*Y(H1)*state.rho + screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(He4)*Y(P33)*state.rho) + + (screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(S33)*Y(H1)*state.rho) + + (screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(Cl33)*Y(He4)*state.rho + -screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(Ar36)*Y(H1)*state.rho) + + (screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(S34)*Y(H1)*state.rho) + + (screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(Cl34)*Y(He4)*state.rho + -screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(Ar37)*Y(H1)*state.rho) + + (screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(S35)*Y(H1)*state.rho) + + (-screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(Cl35)*Y(H1)*state.rho + screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(He4)*Y(S32)*state.rho) + + (screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(Cl35)*Y(He4)*state.rho + -screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(Ar38)*Y(H1)*state.rho) + + (screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(S36)*Y(H1)*state.rho) + + (-screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(Cl36)*Y(H1)*state.rho + screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(He4)*Y(S33)*state.rho) + + (-screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(Cl37)*Y(H1)*state.rho + screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(He4)*Y(S34)*state.rho) + + (screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(Cl36)*Y(H1)*state.rho) + + (screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(Cl37)*Y(H1)*state.rho) + + (-screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(Ar39)*Y(H1)*state.rho + screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + + (-screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(Ar40)*Y(H1)*state.rho + screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + + (screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(Ar37)*Y(H1)*state.rho) + + (screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(He4)*Y(K37)*state.rho + -screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(Ca40)*Y(H1)*state.rho) + + (screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(Ar38)*Y(H1)*state.rho) + + (screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(He4)*Y(K38)*state.rho + -screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(Ca41)*Y(H1)*state.rho) + + (screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(Ar39)*Y(H1)*state.rho) + + (-screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(K39)*Y(H1)*state.rho + screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(Ar36)*Y(He4)*state.rho) + + (screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(Ar40)*Y(H1)*state.rho) + + (-screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(Ca40)*Y(N)*state.rho) + + (-screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + + (screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(He4)*Y(K40)*state.rho + -screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(Ca43)*Y(H1)*state.rho) + + (-screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(K41)*Y(H1)*state.rho + screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + + (screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(He4)*Y(K41)*state.rho + -screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(Ca44)*Y(H1)*state.rho) + + (screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(K41)*Y(H1)*state.rho) + + (-screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(Ca42)*Y(H1)*state.rho + screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(He4)*Y(K39)*state.rho) + + (-screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(Ca47)*Y(H1)*state.rho + screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(Sc47)*Y(N)*state.rho) + + (screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(Ca43)*Y(H1)*state.rho) + + (-screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(Sc43)*Y(H1)*state.rho + screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(Ca40)*Y(He4)*state.rho) + + (screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(He4)*Y(Sc43)*state.rho + -screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(Ti46)*Y(H1)*state.rho) + + (screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(Ca44)*Y(H1)*state.rho) + + (-screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(Sc44)*Y(H1)*state.rho + screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + + (screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(He4)*Y(Sc44)*state.rho + -screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(Ti47)*Y(H1)*state.rho) + + (screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(Sc45)*Y(N)*state.rho + -screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(Ca45)*Y(H1)*state.rho) + + (-screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(Sc45)*Y(H1)*state.rho + screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + + (screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(He4)*Y(Sc45)*state.rho + -screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(Ti48)*Y(H1)*state.rho) + + (screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(Sc46)*Y(N)*state.rho + -screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(Ca46)*Y(H1)*state.rho) + + (-screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(Ti46)*Y(N)*state.rho) + + (-screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(Ca43)*Y(He4)*state.rho) + + (screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(Ti49)*Y(H1)*state.rho) + + (-screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(Sc47)*Y(H1)*state.rho + screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + + (screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(He4)*Y(Sc47)*state.rho + -screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(Ti50)*Y(H1)*state.rho) + + (screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(Sc48)*Y(N)*state.rho + -screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(Ca48)*Y(H1)*state.rho) + + (-screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(Ti48)*Y(N)*state.rho) + + (-screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(Ca45)*Y(He4)*state.rho) + + (screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(Ti51)*Y(H1)*state.rho) + + (-screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(Ti49)*Y(N)*state.rho) + + (-screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + + (screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(Sc44)*Y(H1)*state.rho) + + (screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(Sc45)*Y(H1)*state.rho) + + (screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(He4)*Y(Ti45)*state.rho + -screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(V48)*Y(H1)*state.rho) + + (screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(Sc47)*Y(H1)*state.rho) + + (-screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(Ti51)*Y(H1)*state.rho + screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(V51)*Y(N)*state.rho) + + (screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(Ti46)*Y(H1)*state.rho) + + (screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(He4)*Y(V46)*state.rho + -screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(Cr49)*Y(H1)*state.rho) + + (screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(Ti47)*Y(H1)*state.rho) + + (-screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(V47)*Y(H1)*state.rho + screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(He4)*Y(Ti44)*state.rho) + + (screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(He4)*Y(V47)*state.rho + -screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(Cr50)*Y(H1)*state.rho) + + (screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(Ti48)*Y(H1)*state.rho) + + (screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(He4)*Y(V48)*state.rho + -screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(Cr51)*Y(H1)*state.rho) + + (screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(V49)*Y(N)*state.rho + -screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(Ti49)*Y(H1)*state.rho) + + (-screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(V49)*Y(H1)*state.rho + screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + + (screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(He4)*Y(V49)*state.rho + -screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(Cr52)*Y(H1)*state.rho) + + (screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(Ti50)*Y(H1)*state.rho) + + (-screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(Cr50)*Y(N)*state.rho) + + (-screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + + (screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(He4)*Y(V50)*state.rho + -screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(Cr53)*Y(H1)*state.rho) + + (-screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(V51)*Y(H1)*state.rho + screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + + (-screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(Cr52)*Y(N)*state.rho) + + (-screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(He4)*Y(Ti49)*state.rho) + + (screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(V48)*Y(H1)*state.rho) + + (screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(Mn51)*Y(H1)*state.rho) + + (screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(V49)*Y(H1)*state.rho) + + (screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(Cr49)*Y(He4)*state.rho + -screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(Mn52)*Y(H1)*state.rho) + + (screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(V51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(Cr54)*Y(H1)*state.rho + screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(He4)*Y(V51)*state.rho) + + (screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(Cr50)*Y(H1)*state.rho) + + (screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(He4)*Y(Mn50)*state.rho + -screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(Fe53)*Y(H1)*state.rho) + + (screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(Cr51)*Y(H1)*state.rho) + + (screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(Cr52)*Y(H1)*state.rho) + + (screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(He4)*Y(Mn52)*state.rho + -screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(Fe55)*Y(H1)*state.rho) + + (screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(Cr53)*Y(H1)*state.rho) + + (-screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(Mn53)*Y(H1)*state.rho + screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + + (screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(He4)*Y(Mn53)*state.rho + -screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(Cr54)*Y(H1)*state.rho) + + (-screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(Mn54)*Y(H1)*state.rho + screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + + (-screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + + (screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(Mn52)*Y(H1)*state.rho) + + (screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(Co55)*Y(H1)*state.rho) + + (screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(Mn53)*Y(H1)*state.rho) + + (screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(Mn54)*Y(H1)*state.rho) + + (screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(Mn55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(Fe57)*Y(H1)*state.rho + screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + + (-screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(Fe58)*Y(H1)*state.rho + screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + + (screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(Fe53)*Y(H1)*state.rho) + + (screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(Co53)*Y(He4)*state.rho + -screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(Ni56)*Y(H1)*state.rho) + + (screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(Co54)*Y(He4)*state.rho + -screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(Ni57)*Y(H1)*state.rho) + + (screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(Fe55)*Y(H1)*state.rho) + + (screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(Co56)*Y(He4)*state.rho + -screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(Ni59)*Y(H1)*state.rho) + + (screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(Fe57)*Y(H1)*state.rho) + + (-screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(Co57)*Y(He4)*state.rho + -screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(Ni60)*Y(H1)*state.rho) + + (screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(Fe58)*Y(H1)*state.rho) + + (-screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(Co58)*Y(H1)*state.rho + screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + + (-screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(Co59)*Y(H1)*state.rho + screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + + (screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(Co57)*Y(H1)*state.rho) + + (screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(Co58)*Y(H1)*state.rho) + + (screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(Co59)*Y(H1)*state.rho) + + (-screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(Ni61)*Y(H1)*state.rho + screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(Co58)*Y(He4)*state.rho) + + (-screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(Ni62)*Y(H1)*state.rho + screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(Co59)*Y(He4)*state.rho) + + (screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(Ni57)*Y(H1)*state.rho) + + (screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(Cu57)*Y(He4)*state.rho + -screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(Zn60)*Y(H1)*state.rho) + + (screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(Ni59)*Y(H1)*state.rho) + + (-screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + + (screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(Ni60)*Y(H1)*state.rho) + + (-screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(Cu60)*Y(H1)*state.rho + screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + + (screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(Ni61)*Y(H1)*state.rho) + + (-screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(Cu61)*Y(H1)*state.rho + screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + + (screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(Ni62)*Y(H1)*state.rho) + + (-screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(Cu62)*Y(H1)*state.rho + screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + + (screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(Cu63)*Y(N)*state.rho + -screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(Ni63)*Y(H1)*state.rho) + + (-screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(Cu63)*Y(H1)*state.rho + screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + + (screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(Cu64)*Y(N)*state.rho + -screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(Ni64)*Y(H1)*state.rho) + + (-screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(Cu64)*Y(H1)*state.rho + screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + + (-screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(Cu65)*Y(H1)*state.rho + screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + + (screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(Cu59)*Y(H1)*state.rho) + + (screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(Cu60)*Y(H1)*state.rho) + + (screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(Cu61)*Y(H1)*state.rho) + + (-screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(Zn61)*Y(H1)*state.rho + screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(Cu58)*Y(He4)*state.rho) + + (screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(Cu62)*Y(H1)*state.rho) + + (-screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(Zn62)*Y(H1)*state.rho + screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + + (screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(Cu63)*Y(H1)*state.rho) + + (-screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(Zn63)*Y(H1)*state.rho + screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + + (screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(Cu64)*Y(H1)*state.rho) + + (-screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(Zn64)*Y(H1)*state.rho + screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + + (screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(Cu65)*Y(H1)*state.rho) + + (-screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(Zn65)*Y(H1)*state.rho + screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(Cu62)*Y(He4)*state.rho) + + (-screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(Zn66)*Y(H1)*state.rho + screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(Cu63)*Y(He4)*state.rho) + + (screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(Zn62)*Y(H1)*state.rho) + + (-screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(Ga62)*Y(H1)*state.rho + screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(He4)*Y(Zn59)*state.rho) + + (screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(Zn63)*Y(H1)*state.rho) + + (-screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(Ga63)*Y(H1)*state.rho + screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + + (screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(Ga64)*Y(N)*state.rho + -screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(Zn64)*Y(H1)*state.rho) + + (-screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(Ga64)*Y(H1)*state.rho + screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + + (screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(Ga63)*Y(H1)*state.rho) + + (screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(Ge64)*Y(N)*state.rho + -screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(Ga64)*Y(H1)*state.rho) + + (screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + -screened_rates(k_He4_p_p_to_He3_He3_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)) + + (screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + -0.5*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + + (-screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho + 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H2)*amrex::Math::powi<2>(state.rho)) + + (screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(B8)*Y(N)*state.rho + -0.5*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + + (-screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*Y(H1)*state.rho + 0.16666666666666667*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho)) + + (screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + -0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)) + + (2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + -0.5*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)) + + (-screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_Li6_to_n_p_He4_reaclib)*Y(Li6)) + + (-0.5*screened_rates(k_p_p_n_to_p_d_reaclib)*Y(N)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) + screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H2)*Y(H1)*state.rho) + + (screened_rates(k_n_to_p_beta_neg_weaktab)*Y(N) + -screened_rates(k_p_to_n_electron_capture_weaktab)*Y(H1)); ydot_nuc(H2) = - (screened_rates(k_n_p_to_d_reaclib)*Y(N)*Y(H1)*state.rho + -screened_rates(k_d_to_n_p_reaclib)*Y(H2)) + - 0.5*screened_rates(k_p_p_to_d_reaclib_beta_pos)*amrex::Math::powi<2>(Y(H1))*state.rho + - 0.5*screened_rates(k_p_p_to_d_reaclib_electron_capture)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + - (-screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + screened_rates(k_He3_to_p_d_reaclib)*Y(He3)) + + (screened_rates(k_p_n_to_d_reaclib)*Y(N)*Y(H1)*state.rho + -screened_rates(k_d_to_n_p_reaclib)*Y(H2)) + + 0.5*screened_rates(k_p_p_to_d_beta_pos_reaclib)*amrex::Math::powi<2>(Y(H1))*state.rho + + 0.5*screened_rates(k_p_p_to_d_electron_capture_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)*state.y_e + + (-screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + screened_rates(k_He3_to_p_d_reaclib)*Y(He3)) + (-screened_rates(k_d_d_to_He4_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + 2.0*screened_rates(k_He4_to_d_d_reaclib)*Y(He4)) + - (-screened_rates(k_He4_d_to_Li6_reaclib)*Y(He4)*Y(H2)*state.rho + screened_rates(k_Li6_to_He4_d_reaclib)*Y(Li6)) + - (-screened_rates(k_d_d_to_n_He3_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + 2.0*screened_rates(k_n_He3_to_d_d_reaclib)*Y(He3)*Y(N)*state.rho) + - (-screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + screened_rates(k_p_He4_to_d_He3_reaclib)*Y(He4)*Y(H1)*state.rho) + - (-screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(Li6)*Y(H2)*state.rho + screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(Be7)*Y(N)*state.rho) + - (-screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(Li6)*Y(H2)*state.rho + screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(Li7)*Y(H1)*state.rho) + - (-screened_rates(k_d_C13_to_n_N14_reaclib)*Y(C13)*Y(H2)*state.rho + screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N14)*Y(N)*state.rho) + - (-screened_rates(k_d_C14_to_n_N15_reaclib)*Y(C14)*Y(H2)*state.rho + screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N15)*Y(N)*state.rho) + - (-screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(Li7)*Y(H2)*state.rho + 0.5*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho)) + - (-screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + - (screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho + -0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H2)*amrex::Math::powi<2>(state.rho)) + - (0.5*screened_rates(k_n_p_p_to_p_d_reaclib)*Y(N)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H2)*Y(H1)*state.rho); + (-screened_rates(k_d_He4_to_Li6_reaclib)*Y(He4)*Y(H2)*state.rho + screened_rates(k_Li6_to_He4_d_reaclib)*Y(Li6)) + + (-screened_rates(k_d_d_to_n_He3_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + 2.0*screened_rates(k_He3_n_to_d_d_reaclib)*Y(He3)*Y(N)*state.rho) + + (-screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + screened_rates(k_He4_p_to_d_He3_reaclib)*Y(He4)*Y(H1)*state.rho) + + (-screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(Li6)*Y(H2)*state.rho + screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(Be7)*Y(N)*state.rho) + + (-screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(Li6)*Y(H2)*state.rho + screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(Li7)*Y(H1)*state.rho) + + (-screened_rates(k_C13_d_to_n_N14_reaclib)*Y(C13)*Y(H2)*state.rho + screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N14)*Y(N)*state.rho) + + (-screened_rates(k_C14_d_to_n_N15_reaclib)*Y(C14)*Y(H2)*state.rho + screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N15)*Y(N)*state.rho) + + (-screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(Li7)*Y(H2)*state.rho + 0.5*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho)) + + (-screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + 0.5*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + + (screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho + -0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H2)*amrex::Math::powi<2>(state.rho)) + + (0.5*screened_rates(k_p_p_n_to_p_d_reaclib)*Y(N)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H2)*Y(H1)*state.rho); ydot_nuc(He3) = - (screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + -screened_rates(k_He3_to_p_d_reaclib)*Y(He3)) + - (-screened_rates(k_n_He3_to_He4_reaclib)*Y(He3)*Y(N)*state.rho + screened_rates(k_He4_to_n_He3_reaclib)*Y(He4)) + - -screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - (-screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + screened_rates(k_Be7_to_He4_He3_reaclib)*Y(Be7)) + - (0.5*screened_rates(k_d_d_to_n_He3_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + -screened_rates(k_n_He3_to_d_d_reaclib)*Y(He3)*Y(N)*state.rho) + - (-screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + screened_rates(k_p_He4_to_d_He3_reaclib)*Y(He4)*Y(H1)*state.rho) + - (screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(Li6)*Y(H1)*state.rho + -screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He3)*Y(He4)*state.rho) + - (-screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + screened_rates(k_p_p_He4_to_He3_He3_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)) + - (-screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + 0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)) + - (-screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + 0.25*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)); + (screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*Y(H1)*state.rho + -screened_rates(k_He3_to_p_d_reaclib)*Y(He3)) + + (-screened_rates(k_He3_n_to_He4_reaclib)*Y(He3)*Y(N)*state.rho + screened_rates(k_He4_to_n_He3_reaclib)*Y(He4)) + + -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + (-screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + screened_rates(k_Be7_to_He4_He3_reaclib)*Y(Be7)) + + (0.5*screened_rates(k_d_d_to_n_He3_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + -screened_rates(k_He3_n_to_d_d_reaclib)*Y(He3)*Y(N)*state.rho) + + (-screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + screened_rates(k_He4_p_to_d_He3_reaclib)*Y(He4)*Y(H1)*state.rho) + + (screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(Li6)*Y(H1)*state.rho + -screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He3)*Y(He4)*state.rho) + + (-screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + screened_rates(k_He4_p_p_to_He3_He3_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)) + + (-screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)) + + (-screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + 0.25*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)); ydot_nuc(He4) = - 2.0*screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + + 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + (0.5*screened_rates(k_d_d_to_He4_reaclib)*amrex::Math::powi<2>(Y(H2))*state.rho + -screened_rates(k_He4_to_d_d_reaclib)*Y(He4)) + - (-screened_rates(k_He4_d_to_Li6_reaclib)*Y(He4)*Y(H2)*state.rho + screened_rates(k_Li6_to_He4_d_reaclib)*Y(Li6)) + - (screened_rates(k_n_He3_to_He4_reaclib)*Y(He3)*Y(N)*state.rho + -screened_rates(k_He4_to_n_He3_reaclib)*Y(He4)) + - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*Y(H1)*state.rho + - (-screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + screened_rates(k_Be7_to_He4_He3_reaclib)*Y(Be7)) + - (-screened_rates(k_He4_Li6_to_B10_reaclib)*Y(He4)*Y(Li6)*state.rho + screened_rates(k_B10_to_He4_Li6_reaclib)*Y(B10)) + - (-screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + screened_rates(k_B11_to_He4_Li7_reaclib)*Y(B11)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_reaclib)*Y(O16)) + - (-screened_rates(k_He4_C14_to_O18_reaclib)*Y(C14)*Y(He4)*state.rho + screened_rates(k_O18_to_He4_C14_reaclib)*Y(O18)) + - (-screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_reaclib)*Y(F18)) + - (-screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_reaclib)*Y(F19)) + - (-screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_reaclib)*Y(Ne18)) + - (-screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_reaclib)*Y(Ne19)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + - (-screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_reaclib)*Y(Ne21)) + - (-screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + screened_rates(k_Ne22_to_He4_O18_reaclib)*Y(Ne22)) + - (-screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_reaclib)*Y(Na21)) + - (-screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_reaclib)*Y(Na22)) + - (-screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_reaclib)*Y(Na23)) + - (-screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Mg23_to_He4_Ne19_reaclib)*Y(Mg23)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_reaclib)*Y(Mg24)) + - (-screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(He4)*Y(Ne21)*state.rho + screened_rates(k_Mg25_to_He4_Ne21_reaclib)*Y(Mg25)) + - (-screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(He4)*Y(Ne22)*state.rho + screened_rates(k_Mg26_to_He4_Ne22_reaclib)*Y(Mg26)) + - (-screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_Al25_to_He4_Na21_reaclib)*Y(Al25)) + - (-screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(He4)*Y(Na22)*state.rho + screened_rates(k_Al26_to_He4_Na22_reaclib)*Y(Al26)) + - (-screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Al27_to_He4_Na23_reaclib)*Y(Al27)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_reaclib)*Y(Si28)) + - (-screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(He4)*Y(Mg25)*state.rho + screened_rates(k_Si29_to_He4_Mg25_reaclib)*Y(Si29)) + - (-screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(He4)*Y(Mg26)*state.rho + screened_rates(k_Si30_to_He4_Mg26_reaclib)*Y(Si30)) + - (-screened_rates(k_He4_Al25_to_P29_reaclib)*Y(Al25)*Y(He4)*state.rho + screened_rates(k_P29_to_He4_Al25_reaclib)*Y(P29)) + - (-screened_rates(k_He4_Al26_to_P30_reaclib)*Y(Al26)*Y(He4)*state.rho + screened_rates(k_P30_to_He4_Al26_reaclib)*Y(P30)) + - (-screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_reaclib)*Y(P31)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_reaclib)*Y(S32)) + - (-screened_rates(k_He4_Si29_to_S33_reaclib)*Y(He4)*Y(Si29)*state.rho + screened_rates(k_S33_to_He4_Si29_reaclib)*Y(S33)) + - (-screened_rates(k_He4_Si30_to_S34_reaclib)*Y(He4)*Y(Si30)*state.rho + screened_rates(k_S34_to_He4_Si30_reaclib)*Y(S34)) + - (-screened_rates(k_He4_Si31_to_S35_reaclib)*Y(He4)*Y(Si31)*state.rho + screened_rates(k_S35_to_He4_Si31_reaclib)*Y(S35)) + - (-screened_rates(k_He4_Si32_to_S36_reaclib)*Y(He4)*Y(Si32)*state.rho + screened_rates(k_S36_to_He4_Si32_reaclib)*Y(S36)) + - (-screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(He4)*Y(P29)*state.rho + screened_rates(k_Cl33_to_He4_P29_reaclib)*Y(Cl33)) + - (-screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(He4)*Y(P30)*state.rho + screened_rates(k_Cl34_to_He4_P30_reaclib)*Y(Cl34)) + - (-screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(He4)*Y(P31)*state.rho + screened_rates(k_Cl35_to_He4_P31_reaclib)*Y(Cl35)) + - (-screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(He4)*Y(P32)*state.rho + screened_rates(k_Cl36_to_He4_P32_reaclib)*Y(Cl36)) + - (-screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(He4)*Y(P33)*state.rho + screened_rates(k_Cl37_to_He4_P33_reaclib)*Y(Cl37)) + - (-screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_He4_S32_reaclib)*Y(Ar36)) + - (-screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(He4)*Y(S33)*state.rho + screened_rates(k_Ar37_to_He4_S33_reaclib)*Y(Ar37)) + - (-screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(He4)*Y(S34)*state.rho + screened_rates(k_Ar38_to_He4_S34_reaclib)*Y(Ar38)) + - (-screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(He4)*Y(S35)*state.rho + screened_rates(k_Ar39_to_He4_S35_reaclib)*Y(Ar39)) + - (-screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(He4)*Y(S36)*state.rho + screened_rates(k_Ar40_to_He4_S36_reaclib)*Y(Ar40)) + - (-screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(Cl33)*Y(He4)*state.rho + screened_rates(k_K37_to_He4_Cl33_reaclib)*Y(K37)) + - (-screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(Cl34)*Y(He4)*state.rho + screened_rates(k_K38_to_He4_Cl34_reaclib)*Y(K38)) + - (-screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(Cl35)*Y(He4)*state.rho + screened_rates(k_K39_to_He4_Cl35_reaclib)*Y(K39)) + - (-screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(Cl36)*Y(He4)*state.rho + screened_rates(k_K40_to_He4_Cl36_reaclib)*Y(K40)) + - (-screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(Cl37)*Y(He4)*state.rho + screened_rates(k_K41_to_He4_Cl37_reaclib)*Y(K41)) + - (-screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_He4_Ar36_reaclib)*Y(Ca40)) + - (-screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(Ar37)*Y(He4)*state.rho + screened_rates(k_Ca41_to_He4_Ar37_reaclib)*Y(Ca41)) + - (-screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(Ar38)*Y(He4)*state.rho + screened_rates(k_Ca42_to_He4_Ar38_reaclib)*Y(Ca42)) + - (-screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(Ar39)*Y(He4)*state.rho + screened_rates(k_Ca43_to_He4_Ar39_reaclib)*Y(Ca43)) + - (-screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(Ar40)*Y(He4)*state.rho + screened_rates(k_Ca44_to_He4_Ar40_reaclib)*Y(Ca44)) + - (-screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(He4)*Y(K39)*state.rho + screened_rates(k_Sc43_to_He4_K39_reaclib)*Y(Sc43)) + - (-screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(He4)*Y(K40)*state.rho + screened_rates(k_Sc44_to_He4_K40_reaclib)*Y(Sc44)) + - (-screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(He4)*Y(K41)*state.rho + screened_rates(k_Sc45_to_He4_K41_reaclib)*Y(Sc45)) + - (-screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_He4_Ca40_reaclib)*Y(Ti44)) + - (-screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(Ca41)*Y(He4)*state.rho + screened_rates(k_Ti45_to_He4_Ca41_reaclib)*Y(Ti45)) + - (-screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(Ca42)*Y(He4)*state.rho + screened_rates(k_Ti46_to_He4_Ca42_reaclib)*Y(Ti46)) + - (-screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(Ca43)*Y(He4)*state.rho + screened_rates(k_Ti47_to_He4_Ca43_reaclib)*Y(Ti47)) + - (-screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(Ca44)*Y(He4)*state.rho + screened_rates(k_Ti48_to_He4_Ca44_reaclib)*Y(Ti48)) + - (-screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(Ca45)*Y(He4)*state.rho + screened_rates(k_Ti49_to_He4_Ca45_reaclib)*Y(Ti49)) + - (-screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(Ca46)*Y(He4)*state.rho + screened_rates(k_Ti50_to_He4_Ca46_reaclib)*Y(Ti50)) + - (-screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(Ca47)*Y(He4)*state.rho + screened_rates(k_Ti51_to_He4_Ca47_reaclib)*Y(Ti51)) + - (-screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(He4)*Y(Sc43)*state.rho + screened_rates(k_V47_to_He4_Sc43_reaclib)*Y(V47)) + - (-screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(He4)*Y(Sc44)*state.rho + screened_rates(k_V48_to_He4_Sc44_reaclib)*Y(V48)) + - (-screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(He4)*Y(Sc45)*state.rho + screened_rates(k_V49_to_He4_Sc45_reaclib)*Y(V49)) + - (-screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_V50_to_He4_Sc46_reaclib)*Y(V50)) + - (-screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(He4)*Y(Sc47)*state.rho + screened_rates(k_V51_to_He4_Sc47_reaclib)*Y(V51)) + - (-screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_V52_to_He4_Sc48_reaclib)*Y(V52)) + - (-screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_He4_Ti44_reaclib)*Y(Cr48)) + - (-screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(He4)*Y(Ti45)*state.rho + screened_rates(k_Cr49_to_He4_Ti45_reaclib)*Y(Cr49)) + - (-screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(He4)*Y(Ti46)*state.rho + screened_rates(k_Cr50_to_He4_Ti46_reaclib)*Y(Cr50)) + - (-screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(He4)*Y(Ti47)*state.rho + screened_rates(k_Cr51_to_He4_Ti47_reaclib)*Y(Cr51)) + - (-screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(He4)*Y(Ti48)*state.rho + screened_rates(k_Cr52_to_He4_Ti48_reaclib)*Y(Cr52)) + - (-screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(He4)*Y(Ti49)*state.rho + screened_rates(k_Cr53_to_He4_Ti49_reaclib)*Y(Cr53)) + - (-screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(He4)*Y(Ti50)*state.rho + screened_rates(k_Cr54_to_He4_Ti50_reaclib)*Y(Cr54)) + - (-screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(He4)*Y(V46)*state.rho + screened_rates(k_Mn50_to_He4_V46_reaclib)*Y(Mn50)) + - (-screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(He4)*Y(V47)*state.rho + screened_rates(k_Mn51_to_He4_V47_reaclib)*Y(Mn51)) + - (-screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(He4)*Y(V48)*state.rho + screened_rates(k_Mn52_to_He4_V48_reaclib)*Y(Mn52)) + - (-screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(He4)*Y(V49)*state.rho + screened_rates(k_Mn53_to_He4_V49_reaclib)*Y(Mn53)) + - (-screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(He4)*Y(V50)*state.rho + screened_rates(k_Mn54_to_He4_V50_reaclib)*Y(Mn54)) + - (-screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(He4)*Y(V51)*state.rho + screened_rates(k_Mn55_to_He4_V51_reaclib)*Y(Mn55)) + - (-screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_reaclib)*Y(Fe52)) + - (-screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(Cr49)*Y(He4)*state.rho + screened_rates(k_Fe53_to_He4_Cr49_reaclib)*Y(Fe53)) + - (-screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(Cr50)*Y(He4)*state.rho + screened_rates(k_Fe54_to_He4_Cr50_reaclib)*Y(Fe54)) + - (-screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(Cr51)*Y(He4)*state.rho + screened_rates(k_Fe55_to_He4_Cr51_reaclib)*Y(Fe55)) + - (-screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(Cr52)*Y(He4)*state.rho + screened_rates(k_Fe56_to_He4_Cr52_reaclib)*Y(Fe56)) + - (-screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(Cr53)*Y(He4)*state.rho + screened_rates(k_Fe57_to_He4_Cr53_reaclib)*Y(Fe57)) + - (-screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(Cr54)*Y(He4)*state.rho + screened_rates(k_Fe58_to_He4_Cr54_reaclib)*Y(Fe58)) + - (-screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(He4)*Y(Mn50)*state.rho + screened_rates(k_Co54_to_He4_Mn50_reaclib)*Y(Co54)) + - (-screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_reaclib)*Y(Co55)) + - (-screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(He4)*Y(Mn52)*state.rho + screened_rates(k_Co56_to_He4_Mn52_reaclib)*Y(Co56)) + - (-screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(He4)*Y(Mn53)*state.rho + screened_rates(k_Co57_to_He4_Mn53_reaclib)*Y(Co57)) + - (-screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(He4)*Y(Mn54)*state.rho + screened_rates(k_Co58_to_He4_Mn54_reaclib)*Y(Co58)) + - (-screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(He4)*Y(Mn55)*state.rho + screened_rates(k_Co59_to_He4_Mn55_reaclib)*Y(Co59)) + - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_reaclib)*Y(Ni56)) + - (-screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_reaclib)*Y(Ni57)) + - (-screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_reaclib)*Y(Ni58)) + - (-screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(Fe55)*Y(He4)*state.rho + screened_rates(k_Ni59_to_He4_Fe55_reaclib)*Y(Ni59)) + - (-screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(Fe56)*Y(He4)*state.rho + screened_rates(k_Ni60_to_He4_Fe56_reaclib)*Y(Ni60)) + - (-screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(Fe57)*Y(He4)*state.rho + screened_rates(k_Ni61_to_He4_Fe57_reaclib)*Y(Ni61)) + - (-screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(Fe58)*Y(He4)*state.rho + screened_rates(k_Ni62_to_He4_Fe58_reaclib)*Y(Ni62)) + - (-screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(Co53)*Y(He4)*state.rho + screened_rates(k_Cu57_to_He4_Co53_reaclib)*Y(Cu57)) + - (-screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(Co54)*Y(He4)*state.rho + screened_rates(k_Cu58_to_He4_Co54_reaclib)*Y(Cu58)) + - (-screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_reaclib)*Y(Cu59)) + - (-screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(Co56)*Y(He4)*state.rho + screened_rates(k_Cu60_to_He4_Co56_reaclib)*Y(Cu60)) + - (-screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(Co57)*Y(He4)*state.rho + screened_rates(k_Cu61_to_He4_Co57_reaclib)*Y(Cu61)) + - (-screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(Co58)*Y(He4)*state.rho + screened_rates(k_Cu62_to_He4_Co58_reaclib)*Y(Cu62)) + - (-screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(Co59)*Y(He4)*state.rho + screened_rates(k_Cu63_to_He4_Co59_reaclib)*Y(Cu63)) + - (-screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_reaclib)*Y(Zn60)) + - (-screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(He4)*Y(Ni57)*state.rho + screened_rates(k_Zn61_to_He4_Ni57_reaclib)*Y(Zn61)) + - (-screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(He4)*Y(Ni58)*state.rho + screened_rates(k_Zn62_to_He4_Ni58_reaclib)*Y(Zn62)) + - (-screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(He4)*Y(Ni59)*state.rho + screened_rates(k_Zn63_to_He4_Ni59_reaclib)*Y(Zn63)) + - (-screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(He4)*Y(Ni60)*state.rho + screened_rates(k_Zn64_to_He4_Ni60_reaclib)*Y(Zn64)) + - (-screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(He4)*Y(Ni61)*state.rho + screened_rates(k_Zn65_to_He4_Ni61_reaclib)*Y(Zn65)) + - (-screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(He4)*Y(Ni62)*state.rho + screened_rates(k_Zn66_to_He4_Ni62_reaclib)*Y(Zn66)) + - (-screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(Cu58)*Y(He4)*state.rho + screened_rates(k_Ga62_to_He4_Cu58_reaclib)*Y(Ga62)) + - (-screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(Cu59)*Y(He4)*state.rho + screened_rates(k_Ga63_to_He4_Cu59_reaclib)*Y(Ga63)) + - (-screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(Cu60)*Y(He4)*state.rho + screened_rates(k_Ga64_to_He4_Cu60_reaclib)*Y(Ga64)) + - (-screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(He4)*Y(Zn59)*state.rho + screened_rates(k_Ge63_to_He4_Zn59_reaclib)*Y(Ge63)) + - (-screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(He4)*Y(Zn60)*state.rho + screened_rates(k_Ge64_to_He4_Zn60_reaclib)*Y(Ge64)) + - (screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_p_He4_to_d_He3_reaclib)*Y(He4)*Y(H1)*state.rho) + - (screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(Li6)*Y(H1)*state.rho + -screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He3)*Y(He4)*state.rho) + - (2.0*screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + -screened_rates(k_He4_He4_to_p_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + - (2.0*screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(Be7)*Y(N)*state.rho + -screened_rates(k_He4_He4_to_n_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + - (screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(Be9)*Y(H1)*state.rho + -screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(He4)*Y(Li6)*state.rho) + - (-screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(Be9)*Y(He4)*state.rho + screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(C12)*Y(N)*state.rho) + - (screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(B10)*Y(N)*state.rho + -screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(He4)*Y(Li7)*state.rho) + - (screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(B10)*Y(H1)*state.rho + -screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(Be7)*Y(He4)*state.rho) + - (-screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(B10)*Y(He4)*state.rho + screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N13)*Y(N)*state.rho) + - (-screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(B10)*Y(He4)*state.rho + screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(C13)*Y(H1)*state.rho) + - (-screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(B11)*Y(He4)*state.rho + screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N14)*Y(N)*state.rho) + - (-screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(B11)*Y(He4)*state.rho + screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(C14)*Y(H1)*state.rho) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(C13)*Y(He4)*state.rho + screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(O16)*Y(N)*state.rho) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(O16)*Y(H1)*state.rho) + - (screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(C12)*Y(He4)*state.rho) + - (-screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(F17)*Y(H1)*state.rho) + - (screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(O17)*Y(N)*state.rho + -screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(C14)*Y(He4)*state.rho) + - (screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(Ne20)*Y(N)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + - (screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(Na21)*Y(H1)*state.rho) + - (screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(Na22)*Y(H1)*state.rho) + - (screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(C12)*Y(Ne20)*state.rho + -screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(Ne21)*Y(N)*state.rho + -screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(He4)*Y(O18)*state.rho) + - (-screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(He4)*Y(Ne21)*state.rho + screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(Mg24)*Y(N)*state.rho) + - (screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(F18)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + - (screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(F19)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(He4)*Y(Na22)*state.rho + screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(Mg25)*Y(H1)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(Mg26)*Y(H1)*state.rho) + - (screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(He4)*Y(Mg23)*state.rho + screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(Al26)*Y(H1)*state.rho) + - (screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(Mg25)*Y(N)*state.rho + -screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(He4)*Y(Ne22)*state.rho) + - (-screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(He4)*Y(Mg25)*state.rho + screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(Si28)*Y(N)*state.rho) + - (-screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(He4)*Y(Mg26)*state.rho + screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(Si29)*Y(N)*state.rho) + - (screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(He4)*Y(Na22)*state.rho) + - (-screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(Al25)*Y(He4)*state.rho + screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(Si28)*Y(H1)*state.rho) + - (screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(He4)*Y(Na23)*state.rho) + - (-screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(Al26)*Y(He4)*state.rho + screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(Si29)*Y(H1)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(Si30)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(He4)*Y(Si31)*state.rho + screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(S34)*Y(N)*state.rho) + - (screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(Al26)*Y(He4)*state.rho) + - (-screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(He4)*Y(P29)*state.rho + screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(S32)*Y(H1)*state.rho) + - (screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(Al27)*Y(He4)*state.rho) + - (-screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(He4)*Y(P30)*state.rho + screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(S33)*Y(H1)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (-screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(He4)*Y(P31)*state.rho + screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(S34)*Y(H1)*state.rho) + - (screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(He4)*Y(Si29)*state.rho) + - (screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(P33)*Y(H1)*state.rho + -screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(He4)*Y(Si30)*state.rho) + - (screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(S32)*Y(N)*state.rho + -screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(He4)*Y(Si29)*state.rho) + - (screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(He4)*Y(Si30)*state.rho) + - (screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(S35)*Y(N)*state.rho + -screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(He4)*Y(Si32)*state.rho) + - (screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(S35)*Y(H1)*state.rho + -screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(He4)*Y(P32)*state.rho) + - (-screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(He4)*Y(S35)*state.rho + screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(Ar38)*Y(N)*state.rho) + - (screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(S36)*Y(H1)*state.rho + -screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(He4)*Y(P33)*state.rho) + - (screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(He4)*Y(P30)*state.rho) + - (-screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(Cl33)*Y(He4)*state.rho + screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(Ar36)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(He4)*Y(P31)*state.rho) + - (-screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(Cl34)*Y(He4)*state.rho + screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(Ar37)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(He4)*Y(P32)*state.rho) + - (screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(Cl35)*Y(H1)*state.rho + -screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(He4)*Y(S32)*state.rho) + - (-screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(Cl35)*Y(He4)*state.rho + screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(Ar38)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(He4)*Y(P33)*state.rho) + - (screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(Cl36)*Y(H1)*state.rho + -screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(He4)*Y(S33)*state.rho) + - (screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(Cl37)*Y(H1)*state.rho + -screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(He4)*Y(S34)*state.rho) + - (screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(He4)*Y(S33)*state.rho) + - (screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(He4)*Y(S34)*state.rho) + - (screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(Ar39)*Y(N)*state.rho + -screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(He4)*Y(S36)*state.rho) + - (screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(Ar39)*Y(H1)*state.rho + -screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + - (screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(Ar40)*Y(H1)*state.rho + -screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + - (screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(Cl34)*Y(He4)*state.rho) + - (-screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(He4)*Y(K37)*state.rho + screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(Ca40)*Y(H1)*state.rho) + - (screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(Cl35)*Y(He4)*state.rho) + - (-screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(He4)*Y(K38)*state.rho + screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(Ca41)*Y(H1)*state.rho) + - (screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + - (screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(K39)*Y(H1)*state.rho + -screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(Ar36)*Y(He4)*state.rho) + - (screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + - (screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + - (-screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(He4)*Y(K40)*state.rho + screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(Ca43)*Y(H1)*state.rho) + - (screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(K41)*Y(H1)*state.rho + -screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + - (-screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(He4)*Y(K41)*state.rho + screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(Ca44)*Y(H1)*state.rho) + - (screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(Ca40)*Y(N)*state.rho + -screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + - (screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + - (screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(Ca42)*Y(N)*state.rho + -screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(Ar39)*Y(He4)*state.rho) + - (screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(Ca42)*Y(H1)*state.rho + -screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(He4)*Y(K39)*state.rho) + - (screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(Ca43)*Y(N)*state.rho + -screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(Ar40)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(Ca43)*Y(He4)*state.rho + screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(Ti46)*Y(N)*state.rho) + - (-screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(Ca45)*Y(He4)*state.rho + screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(Ti48)*Y(N)*state.rho) + - (-screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(Ca47)*Y(He4)*state.rho + screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(Ti50)*Y(N)*state.rho) + - (screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(He4)*Y(K40)*state.rho) + - (screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(Sc43)*Y(H1)*state.rho + -screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(Ca40)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(He4)*Y(Sc43)*state.rho + screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(Ti46)*Y(H1)*state.rho) + - (screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(He4)*Y(K41)*state.rho) + - (screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(Sc44)*Y(H1)*state.rho + -screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(He4)*Y(Sc44)*state.rho + screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(Ti47)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(Sc45)*Y(H1)*state.rho + -screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(He4)*Y(Sc45)*state.rho + screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(Ti48)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(Ca43)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(V49)*Y(N)*state.rho) + - (-screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(Ti49)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(Sc47)*Y(H1)*state.rho + -screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(He4)*Y(Sc47)*state.rho + screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(Ti50)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(Ca45)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(V51)*Y(N)*state.rho) + - (-screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(Ti51)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + - (screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + - (screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(He4)*Y(Ti45)*state.rho + screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(V48)*Y(H1)*state.rho) + - (screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + - (screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(Ti49)*Y(N)*state.rho + -screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(He4)*Y(Ti49)*state.rho + screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(Cr52)*Y(N)*state.rho) + - (screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(Ti51)*Y(N)*state.rho + -screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(Ca48)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(He4)*Y(Ti51)*state.rho + screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(Cr54)*Y(N)*state.rho) + - (screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(He4)*Y(Sc43)*state.rho) + - (-screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(He4)*Y(V46)*state.rho + screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(Cr49)*Y(H1)*state.rho) + - (screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(He4)*Y(Sc44)*state.rho) + - (screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(V47)*Y(H1)*state.rho + -screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(He4)*Y(Ti44)*state.rho) + - (-screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(He4)*Y(V47)*state.rho + screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(Cr50)*Y(H1)*state.rho) + - (screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(He4)*Y(Sc45)*state.rho) + - (-screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(He4)*Y(V48)*state.rho + screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(Cr51)*Y(H1)*state.rho) + - (screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(V49)*Y(H1)*state.rho + -screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + - (-screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(He4)*Y(V49)*state.rho + screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(Cr52)*Y(H1)*state.rho) + - (screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(He4)*Y(Sc47)*state.rho) + - (screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + - (-screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(He4)*Y(V50)*state.rho + screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(Cr53)*Y(H1)*state.rho) + - (screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(V51)*Y(H1)*state.rho + -screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + - (screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(V52)*Y(N)*state.rho + -screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(He4)*Y(Sc49)*state.rho) + - (screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(He4)*Y(Ti49)*state.rho) + - (-screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(He4)*Y(V52)*state.rho + screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(Mn55)*Y(N)*state.rho) + - (screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(He4)*Y(Ti45)*state.rho) + - (-screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(Mn51)*Y(H1)*state.rho) + - (screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + - (-screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(Cr49)*Y(He4)*state.rho + screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(Mn52)*Y(H1)*state.rho) + - (screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(Cr50)*Y(N)*state.rho + -screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + - (screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + - (screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(Cr53)*Y(N)*state.rho + -screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(He4)*Y(Ti50)*state.rho) + - (screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(Cr54)*Y(H1)*state.rho + -screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(He4)*Y(V51)*state.rho) + - (screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(He4)*Y(V47)*state.rho) + - (-screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(He4)*Y(Mn50)*state.rho + screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(Fe53)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(He4)*Y(V48)*state.rho) + - (-screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(He4)*Y(V49)*state.rho) + - (-screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(He4)*Y(Mn52)*state.rho + screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(Fe55)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(He4)*Y(V50)*state.rho) + - (screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(Mn53)*Y(H1)*state.rho + -screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(He4)*Y(Mn53)*state.rho + screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(He4)*Y(V51)*state.rho) + - (screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(Mn54)*Y(H1)*state.rho + -screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + - (screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(Mn55)*Y(H1)*state.rho + -screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(Cr49)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(Co55)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(Fe56)*Y(N)*state.rho + -screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(Cr53)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(Fe57)*Y(N)*state.rho + -screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(Cr54)*Y(He4)*state.rho) + - (screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(Fe57)*Y(H1)*state.rho + -screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + - (screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(Fe58)*Y(H1)*state.rho + -screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + - (screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(He4)*Y(Mn50)*state.rho) + - (-screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(Co53)*Y(He4)*state.rho + screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(Ni56)*Y(H1)*state.rho) + - (screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(He4)*Y(Mn51)*state.rho) + - (-screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(Co54)*Y(He4)*state.rho + screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(Ni57)*Y(H1)*state.rho) + - (screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(He4)*Y(Mn52)*state.rho) + - (-screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(He4)*Y(Mn53)*state.rho) + - (-screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(Co56)*Y(He4)*state.rho + screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(Ni59)*Y(H1)*state.rho) + - (screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + - (screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(Co57)*Y(He4)*state.rho + screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(Ni60)*Y(H1)*state.rho) + - (screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + - (screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(Co58)*Y(H1)*state.rho + -screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + - (screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(Co59)*Y(H1)*state.rho + -screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(Fe53)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(Ni60)*Y(N)*state.rho + -screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(Fe57)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(Ni61)*Y(N)*state.rho + -screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(Fe58)*Y(He4)*state.rho) + - (screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(Ni61)*Y(H1)*state.rho + -screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(Co58)*Y(He4)*state.rho) + - (screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(Ni62)*Y(H1)*state.rho + -screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(Co59)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(Co54)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(Cu57)*Y(He4)*state.rho + screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(Zn60)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(Co55)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(Co56)*Y(He4)*state.rho) + - (screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + - (screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(Co57)*Y(He4)*state.rho) + - (screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(Cu60)*Y(H1)*state.rho + -screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + - (screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(Co58)*Y(He4)*state.rho) + - (screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(Cu61)*Y(H1)*state.rho + -screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + - (screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(Co59)*Y(He4)*state.rho) + - (screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(Cu62)*Y(H1)*state.rho + -screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + - (screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(Cu63)*Y(H1)*state.rho + -screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + - (screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(Cu64)*Y(H1)*state.rho + -screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + - (screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(Cu65)*Y(H1)*state.rho + -screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + - (screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + - (screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + - (screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + - (screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(Zn61)*Y(H1)*state.rho + -screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(Cu58)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + - (screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(Zn62)*Y(H1)*state.rho + -screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + - (screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(Zn63)*Y(H1)*state.rho + -screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + - (screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(Zn64)*Y(H1)*state.rho + -screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + - (screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(Zn65)*Y(H1)*state.rho + -screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(Cu62)*Y(He4)*state.rho) + - (screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(Zn66)*Y(N)*state.rho + -screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(He4)*Y(Ni63)*state.rho) + - (screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(Zn66)*Y(H1)*state.rho + -screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(Cu63)*Y(He4)*state.rho) + - (screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + - (screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(Ga62)*Y(H1)*state.rho + -screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(He4)*Y(Zn59)*state.rho) + - (screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + - (screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(Ga63)*Y(H1)*state.rho + -screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + - (screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(Ga64)*Y(N)*state.rho + -screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + - (screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(Ga64)*Y(H1)*state.rho + -screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + - (screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + - (screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(Ge64)*Y(N)*state.rho + -screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + - (0.5*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + -0.5*screened_rates(k_p_p_He4_to_He3_He3_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)) + - (2.0*screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(Li7)*Y(H2)*state.rho + -screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho)) + - (2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + -screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + - (2.0*screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho + -screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H2)*amrex::Math::powi<2>(state.rho)) + - (2.0*screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(B8)*Y(N)*state.rho + -screened_rates(k_p_He4_He4_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + - (3.0*screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*Y(H1)*state.rho + -0.5*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho)) + - (2.0*screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + -screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)) + - (2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + -0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)) + - (-screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_Li6_to_n_p_He4_reaclib)*Y(Li6)) + - (-screened_rates(k_n_He4_He4_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Be9_to_n_He4_He4_reaclib)*Y(Be9)) + - (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_He4_He4_He4_reaclib)*Y(C12)) + - (-screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + 2.0*screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho); + (-screened_rates(k_d_He4_to_Li6_reaclib)*Y(He4)*Y(H2)*state.rho + screened_rates(k_Li6_to_He4_d_reaclib)*Y(Li6)) + + (screened_rates(k_He3_n_to_He4_reaclib)*Y(He3)*Y(N)*state.rho + -screened_rates(k_He4_to_n_He3_reaclib)*Y(He4)) + + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*Y(H1)*state.rho + + (-screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + screened_rates(k_Be7_to_He4_He3_reaclib)*Y(Be7)) + + (-screened_rates(k_Li6_He4_to_B10_reaclib)*Y(He4)*Y(Li6)*state.rho + screened_rates(k_B10_to_He4_Li6_reaclib)*Y(B10)) + + (-screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + screened_rates(k_B11_to_He4_Li7_reaclib)*Y(B11)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_reaclib)*Y(O16)) + + (-screened_rates(k_C14_He4_to_O18_reaclib)*Y(C14)*Y(He4)*state.rho + screened_rates(k_O18_to_He4_C14_reaclib)*Y(O18)) + + (-screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_reaclib)*Y(F18)) + + (-screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_reaclib)*Y(F19)) + + (-screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_reaclib)*Y(Ne18)) + + (-screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_reaclib)*Y(Ne19)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + + (-screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_reaclib)*Y(Ne21)) + + (-screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + screened_rates(k_Ne22_to_He4_O18_reaclib)*Y(Ne22)) + + (-screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_reaclib)*Y(Na21)) + + (-screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_reaclib)*Y(Na22)) + + (-screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_reaclib)*Y(Na23)) + + (-screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Mg23_to_He4_Ne19_reaclib)*Y(Mg23)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_reaclib)*Y(Mg24)) + + (-screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(He4)*Y(Ne21)*state.rho + screened_rates(k_Mg25_to_He4_Ne21_reaclib)*Y(Mg25)) + + (-screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(He4)*Y(Ne22)*state.rho + screened_rates(k_Mg26_to_He4_Ne22_reaclib)*Y(Mg26)) + + (-screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_Al25_to_He4_Na21_reaclib)*Y(Al25)) + + (-screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(He4)*Y(Na22)*state.rho + screened_rates(k_Al26_to_He4_Na22_reaclib)*Y(Al26)) + + (-screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Al27_to_He4_Na23_reaclib)*Y(Al27)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_reaclib)*Y(Si28)) + + (-screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(He4)*Y(Mg25)*state.rho + screened_rates(k_Si29_to_He4_Mg25_reaclib)*Y(Si29)) + + (-screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(He4)*Y(Mg26)*state.rho + screened_rates(k_Si30_to_He4_Mg26_reaclib)*Y(Si30)) + + (-screened_rates(k_Al25_He4_to_P29_reaclib)*Y(Al25)*Y(He4)*state.rho + screened_rates(k_P29_to_He4_Al25_reaclib)*Y(P29)) + + (-screened_rates(k_Al26_He4_to_P30_reaclib)*Y(Al26)*Y(He4)*state.rho + screened_rates(k_P30_to_He4_Al26_reaclib)*Y(P30)) + + (-screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_reaclib)*Y(P31)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_reaclib)*Y(S32)) + + (-screened_rates(k_Si29_He4_to_S33_reaclib)*Y(He4)*Y(Si29)*state.rho + screened_rates(k_S33_to_He4_Si29_reaclib)*Y(S33)) + + (-screened_rates(k_Si30_He4_to_S34_reaclib)*Y(He4)*Y(Si30)*state.rho + screened_rates(k_S34_to_He4_Si30_reaclib)*Y(S34)) + + (-screened_rates(k_Si31_He4_to_S35_reaclib)*Y(He4)*Y(Si31)*state.rho + screened_rates(k_S35_to_He4_Si31_reaclib)*Y(S35)) + + (-screened_rates(k_Si32_He4_to_S36_reaclib)*Y(He4)*Y(Si32)*state.rho + screened_rates(k_S36_to_He4_Si32_reaclib)*Y(S36)) + + (-screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(He4)*Y(P29)*state.rho + screened_rates(k_Cl33_to_He4_P29_reaclib)*Y(Cl33)) + + (-screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(He4)*Y(P30)*state.rho + screened_rates(k_Cl34_to_He4_P30_reaclib)*Y(Cl34)) + + (-screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(He4)*Y(P31)*state.rho + screened_rates(k_Cl35_to_He4_P31_reaclib)*Y(Cl35)) + + (-screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(He4)*Y(P32)*state.rho + screened_rates(k_Cl36_to_He4_P32_reaclib)*Y(Cl36)) + + (-screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(He4)*Y(P33)*state.rho + screened_rates(k_Cl37_to_He4_P33_reaclib)*Y(Cl37)) + + (-screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_He4_S32_reaclib)*Y(Ar36)) + + (-screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(He4)*Y(S33)*state.rho + screened_rates(k_Ar37_to_He4_S33_reaclib)*Y(Ar37)) + + (-screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(He4)*Y(S34)*state.rho + screened_rates(k_Ar38_to_He4_S34_reaclib)*Y(Ar38)) + + (-screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(He4)*Y(S35)*state.rho + screened_rates(k_Ar39_to_He4_S35_reaclib)*Y(Ar39)) + + (-screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(He4)*Y(S36)*state.rho + screened_rates(k_Ar40_to_He4_S36_reaclib)*Y(Ar40)) + + (-screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(Cl33)*Y(He4)*state.rho + screened_rates(k_K37_to_He4_Cl33_reaclib)*Y(K37)) + + (-screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(Cl34)*Y(He4)*state.rho + screened_rates(k_K38_to_He4_Cl34_reaclib)*Y(K38)) + + (-screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(Cl35)*Y(He4)*state.rho + screened_rates(k_K39_to_He4_Cl35_reaclib)*Y(K39)) + + (-screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(Cl36)*Y(He4)*state.rho + screened_rates(k_K40_to_He4_Cl36_reaclib)*Y(K40)) + + (-screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(Cl37)*Y(He4)*state.rho + screened_rates(k_K41_to_He4_Cl37_reaclib)*Y(K41)) + + (-screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_He4_Ar36_reaclib)*Y(Ca40)) + + (-screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(Ar37)*Y(He4)*state.rho + screened_rates(k_Ca41_to_He4_Ar37_reaclib)*Y(Ca41)) + + (-screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(Ar38)*Y(He4)*state.rho + screened_rates(k_Ca42_to_He4_Ar38_reaclib)*Y(Ca42)) + + (-screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(Ar39)*Y(He4)*state.rho + screened_rates(k_Ca43_to_He4_Ar39_reaclib)*Y(Ca43)) + + (-screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(Ar40)*Y(He4)*state.rho + screened_rates(k_Ca44_to_He4_Ar40_reaclib)*Y(Ca44)) + + (-screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(He4)*Y(K39)*state.rho + screened_rates(k_Sc43_to_He4_K39_reaclib)*Y(Sc43)) + + (-screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(He4)*Y(K40)*state.rho + screened_rates(k_Sc44_to_He4_K40_reaclib)*Y(Sc44)) + + (-screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(He4)*Y(K41)*state.rho + screened_rates(k_Sc45_to_He4_K41_reaclib)*Y(Sc45)) + + (-screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_He4_Ca40_reaclib)*Y(Ti44)) + + (-screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(Ca41)*Y(He4)*state.rho + screened_rates(k_Ti45_to_He4_Ca41_reaclib)*Y(Ti45)) + + (-screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(Ca42)*Y(He4)*state.rho + screened_rates(k_Ti46_to_He4_Ca42_reaclib)*Y(Ti46)) + + (-screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(Ca43)*Y(He4)*state.rho + screened_rates(k_Ti47_to_He4_Ca43_reaclib)*Y(Ti47)) + + (-screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(Ca44)*Y(He4)*state.rho + screened_rates(k_Ti48_to_He4_Ca44_reaclib)*Y(Ti48)) + + (-screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(Ca45)*Y(He4)*state.rho + screened_rates(k_Ti49_to_He4_Ca45_reaclib)*Y(Ti49)) + + (-screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(Ca46)*Y(He4)*state.rho + screened_rates(k_Ti50_to_He4_Ca46_reaclib)*Y(Ti50)) + + (-screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(Ca47)*Y(He4)*state.rho + screened_rates(k_Ti51_to_He4_Ca47_reaclib)*Y(Ti51)) + + (-screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(He4)*Y(Sc43)*state.rho + screened_rates(k_V47_to_He4_Sc43_reaclib)*Y(V47)) + + (-screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(He4)*Y(Sc44)*state.rho + screened_rates(k_V48_to_He4_Sc44_reaclib)*Y(V48)) + + (-screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(He4)*Y(Sc45)*state.rho + screened_rates(k_V49_to_He4_Sc45_reaclib)*Y(V49)) + + (-screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_V50_to_He4_Sc46_reaclib)*Y(V50)) + + (-screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(He4)*Y(Sc47)*state.rho + screened_rates(k_V51_to_He4_Sc47_reaclib)*Y(V51)) + + (-screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_V52_to_He4_Sc48_reaclib)*Y(V52)) + + (-screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_He4_Ti44_reaclib)*Y(Cr48)) + + (-screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(He4)*Y(Ti45)*state.rho + screened_rates(k_Cr49_to_He4_Ti45_reaclib)*Y(Cr49)) + + (-screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(He4)*Y(Ti46)*state.rho + screened_rates(k_Cr50_to_He4_Ti46_reaclib)*Y(Cr50)) + + (-screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(He4)*Y(Ti47)*state.rho + screened_rates(k_Cr51_to_He4_Ti47_reaclib)*Y(Cr51)) + + (-screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(He4)*Y(Ti48)*state.rho + screened_rates(k_Cr52_to_He4_Ti48_reaclib)*Y(Cr52)) + + (-screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(He4)*Y(Ti49)*state.rho + screened_rates(k_Cr53_to_He4_Ti49_reaclib)*Y(Cr53)) + + (-screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(He4)*Y(Ti50)*state.rho + screened_rates(k_Cr54_to_He4_Ti50_reaclib)*Y(Cr54)) + + (-screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(He4)*Y(V46)*state.rho + screened_rates(k_Mn50_to_He4_V46_reaclib)*Y(Mn50)) + + (-screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(He4)*Y(V47)*state.rho + screened_rates(k_Mn51_to_He4_V47_reaclib)*Y(Mn51)) + + (-screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(He4)*Y(V48)*state.rho + screened_rates(k_Mn52_to_He4_V48_reaclib)*Y(Mn52)) + + (-screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(He4)*Y(V49)*state.rho + screened_rates(k_Mn53_to_He4_V49_reaclib)*Y(Mn53)) + + (-screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(He4)*Y(V50)*state.rho + screened_rates(k_Mn54_to_He4_V50_reaclib)*Y(Mn54)) + + (-screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(He4)*Y(V51)*state.rho + screened_rates(k_Mn55_to_He4_V51_reaclib)*Y(Mn55)) + + (-screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_reaclib)*Y(Fe52)) + + (-screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(Cr49)*Y(He4)*state.rho + screened_rates(k_Fe53_to_He4_Cr49_reaclib)*Y(Fe53)) + + (-screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(Cr50)*Y(He4)*state.rho + screened_rates(k_Fe54_to_He4_Cr50_reaclib)*Y(Fe54)) + + (-screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(Cr51)*Y(He4)*state.rho + screened_rates(k_Fe55_to_He4_Cr51_reaclib)*Y(Fe55)) + + (-screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(Cr52)*Y(He4)*state.rho + screened_rates(k_Fe56_to_He4_Cr52_reaclib)*Y(Fe56)) + + (-screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(Cr53)*Y(He4)*state.rho + screened_rates(k_Fe57_to_He4_Cr53_reaclib)*Y(Fe57)) + + (-screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(Cr54)*Y(He4)*state.rho + screened_rates(k_Fe58_to_He4_Cr54_reaclib)*Y(Fe58)) + + (-screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(He4)*Y(Mn50)*state.rho + screened_rates(k_Co54_to_He4_Mn50_reaclib)*Y(Co54)) + + (-screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_reaclib)*Y(Co55)) + + (-screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(He4)*Y(Mn52)*state.rho + screened_rates(k_Co56_to_He4_Mn52_reaclib)*Y(Co56)) + + (-screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(He4)*Y(Mn53)*state.rho + screened_rates(k_Co57_to_He4_Mn53_reaclib)*Y(Co57)) + + (-screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(He4)*Y(Mn54)*state.rho + screened_rates(k_Co58_to_He4_Mn54_reaclib)*Y(Co58)) + + (-screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(He4)*Y(Mn55)*state.rho + screened_rates(k_Co59_to_He4_Mn55_reaclib)*Y(Co59)) + + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_reaclib)*Y(Ni56)) + + (-screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_reaclib)*Y(Ni57)) + + (-screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_reaclib)*Y(Ni58)) + + (-screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(Fe55)*Y(He4)*state.rho + screened_rates(k_Ni59_to_He4_Fe55_reaclib)*Y(Ni59)) + + (-screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(Fe56)*Y(He4)*state.rho + screened_rates(k_Ni60_to_He4_Fe56_reaclib)*Y(Ni60)) + + (-screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(Fe57)*Y(He4)*state.rho + screened_rates(k_Ni61_to_He4_Fe57_reaclib)*Y(Ni61)) + + (-screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(Fe58)*Y(He4)*state.rho + screened_rates(k_Ni62_to_He4_Fe58_reaclib)*Y(Ni62)) + + (-screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(Co53)*Y(He4)*state.rho + screened_rates(k_Cu57_to_He4_Co53_reaclib)*Y(Cu57)) + + (-screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(Co54)*Y(He4)*state.rho + screened_rates(k_Cu58_to_He4_Co54_reaclib)*Y(Cu58)) + + (-screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_reaclib)*Y(Cu59)) + + (-screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(Co56)*Y(He4)*state.rho + screened_rates(k_Cu60_to_He4_Co56_reaclib)*Y(Cu60)) + + (-screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(Co57)*Y(He4)*state.rho + screened_rates(k_Cu61_to_He4_Co57_reaclib)*Y(Cu61)) + + (-screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(Co58)*Y(He4)*state.rho + screened_rates(k_Cu62_to_He4_Co58_reaclib)*Y(Cu62)) + + (-screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(Co59)*Y(He4)*state.rho + screened_rates(k_Cu63_to_He4_Co59_reaclib)*Y(Cu63)) + + (-screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_reaclib)*Y(Zn60)) + + (-screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(He4)*Y(Ni57)*state.rho + screened_rates(k_Zn61_to_He4_Ni57_reaclib)*Y(Zn61)) + + (-screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(He4)*Y(Ni58)*state.rho + screened_rates(k_Zn62_to_He4_Ni58_reaclib)*Y(Zn62)) + + (-screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(He4)*Y(Ni59)*state.rho + screened_rates(k_Zn63_to_He4_Ni59_reaclib)*Y(Zn63)) + + (-screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(He4)*Y(Ni60)*state.rho + screened_rates(k_Zn64_to_He4_Ni60_reaclib)*Y(Zn64)) + + (-screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(He4)*Y(Ni61)*state.rho + screened_rates(k_Zn65_to_He4_Ni61_reaclib)*Y(Zn65)) + + (-screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(He4)*Y(Ni62)*state.rho + screened_rates(k_Zn66_to_He4_Ni62_reaclib)*Y(Zn66)) + + (-screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(Cu58)*Y(He4)*state.rho + screened_rates(k_Ga62_to_He4_Cu58_reaclib)*Y(Ga62)) + + (-screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(Cu59)*Y(He4)*state.rho + screened_rates(k_Ga63_to_He4_Cu59_reaclib)*Y(Ga63)) + + (-screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(Cu60)*Y(He4)*state.rho + screened_rates(k_Ga64_to_He4_Cu60_reaclib)*Y(Ga64)) + + (-screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(He4)*Y(Zn59)*state.rho + screened_rates(k_Ge63_to_He4_Zn59_reaclib)*Y(Ge63)) + + (-screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(He4)*Y(Zn60)*state.rho + screened_rates(k_Ge64_to_He4_Zn60_reaclib)*Y(Ge64)) + + (screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*Y(H2)*state.rho + -screened_rates(k_He4_p_to_d_He3_reaclib)*Y(He4)*Y(H1)*state.rho) + + (screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(Li6)*Y(H1)*state.rho + -screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He3)*Y(He4)*state.rho) + + (2.0*screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + -screened_rates(k_He4_He4_to_p_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + + (2.0*screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(Be7)*Y(N)*state.rho + -screened_rates(k_He4_He4_to_n_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + + (screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(Be9)*Y(H1)*state.rho + -screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(He4)*Y(Li6)*state.rho) + + (-screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(Be9)*Y(He4)*state.rho + screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(C12)*Y(N)*state.rho) + + (screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(B10)*Y(N)*state.rho + -screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(He4)*Y(Li7)*state.rho) + + (screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(B10)*Y(H1)*state.rho + -screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(Be7)*Y(He4)*state.rho) + + (-screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(B10)*Y(He4)*state.rho + screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N13)*Y(N)*state.rho) + + (-screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(B10)*Y(He4)*state.rho + screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(C13)*Y(H1)*state.rho) + + (-screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(B11)*Y(He4)*state.rho + screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N14)*Y(N)*state.rho) + + (-screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(B11)*Y(He4)*state.rho + screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(C14)*Y(H1)*state.rho) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(C13)*Y(He4)*state.rho + screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(O16)*Y(N)*state.rho) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(O16)*Y(H1)*state.rho) + + (screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(C12)*Y(He4)*state.rho) + + (-screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(F17)*Y(H1)*state.rho) + + (screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(O17)*Y(N)*state.rho + -screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(C14)*Y(He4)*state.rho) + + (screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(Ne20)*Y(N)*state.rho) + + (screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(Na21)*Y(H1)*state.rho) + + (screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(Na22)*Y(H1)*state.rho) + + (screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(C12)*Y(Ne20)*state.rho + -screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(Ne21)*Y(N)*state.rho + -screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(He4)*Y(O18)*state.rho) + + (-screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(He4)*Y(Ne21)*state.rho + screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(Mg24)*Y(N)*state.rho) + + (screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(F18)*Y(He4)*state.rho) + + (-screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + + (screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(F19)*Y(He4)*state.rho) + + (-screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(He4)*Y(Na22)*state.rho + screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(Mg25)*Y(H1)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(Mg26)*Y(H1)*state.rho) + + (screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(He4)*Y(Mg23)*state.rho + screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(Al26)*Y(H1)*state.rho) + + (screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(Mg25)*Y(N)*state.rho + -screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(He4)*Y(Ne22)*state.rho) + + (-screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(He4)*Y(Mg25)*state.rho + screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(Si28)*Y(N)*state.rho) + + (-screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(He4)*Y(Mg26)*state.rho + screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(Si29)*Y(N)*state.rho) + + (screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(He4)*Y(Na22)*state.rho) + + (-screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(Al25)*Y(He4)*state.rho + screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(Si28)*Y(H1)*state.rho) + + (screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(He4)*Y(Na23)*state.rho) + + (-screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(Al26)*Y(He4)*state.rho + screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(Si29)*Y(H1)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(Si30)*Y(H1)*state.rho) + + (-screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(He4)*Y(Si31)*state.rho + screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(S34)*Y(N)*state.rho) + + (screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(Al26)*Y(He4)*state.rho) + + (-screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(He4)*Y(P29)*state.rho + screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(S32)*Y(H1)*state.rho) + + (screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(Al27)*Y(He4)*state.rho) + + (-screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(He4)*Y(P30)*state.rho + screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(S33)*Y(H1)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (-screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(He4)*Y(P31)*state.rho + screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(S34)*Y(H1)*state.rho) + + (screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(He4)*Y(Si29)*state.rho) + + (screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(P33)*Y(H1)*state.rho + -screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(He4)*Y(Si30)*state.rho) + + (screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(S32)*Y(N)*state.rho + -screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(He4)*Y(Si29)*state.rho) + + (screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(He4)*Y(Si30)*state.rho) + + (screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(S35)*Y(N)*state.rho + -screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(He4)*Y(Si32)*state.rho) + + (screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(S35)*Y(H1)*state.rho + -screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(He4)*Y(P32)*state.rho) + + (-screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(He4)*Y(S35)*state.rho + screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(Ar38)*Y(N)*state.rho) + + (screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(S36)*Y(H1)*state.rho + -screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(He4)*Y(P33)*state.rho) + + (screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(He4)*Y(P30)*state.rho) + + (-screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(Cl33)*Y(He4)*state.rho + screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(Ar36)*Y(H1)*state.rho) + + (screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(He4)*Y(P31)*state.rho) + + (-screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(Cl34)*Y(He4)*state.rho + screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(Ar37)*Y(H1)*state.rho) + + (screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(He4)*Y(P32)*state.rho) + + (screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(Cl35)*Y(H1)*state.rho + -screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(He4)*Y(S32)*state.rho) + + (-screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(Cl35)*Y(He4)*state.rho + screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(Ar38)*Y(H1)*state.rho) + + (screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(He4)*Y(P33)*state.rho) + + (screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(Cl36)*Y(H1)*state.rho + -screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(He4)*Y(S33)*state.rho) + + (screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(Cl37)*Y(H1)*state.rho + -screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(He4)*Y(S34)*state.rho) + + (screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(He4)*Y(S33)*state.rho) + + (screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(He4)*Y(S34)*state.rho) + + (screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(Ar39)*Y(N)*state.rho + -screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(He4)*Y(S36)*state.rho) + + (screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(Ar39)*Y(H1)*state.rho + -screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + + (screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(Ar40)*Y(H1)*state.rho + -screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + + (screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(Cl34)*Y(He4)*state.rho) + + (-screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(He4)*Y(K37)*state.rho + screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(Ca40)*Y(H1)*state.rho) + + (screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(Cl35)*Y(He4)*state.rho) + + (-screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(He4)*Y(K38)*state.rho + screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(Ca41)*Y(H1)*state.rho) + + (screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + + (screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(K39)*Y(H1)*state.rho + -screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(Ar36)*Y(He4)*state.rho) + + (screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + + (screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + + (-screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(He4)*Y(K40)*state.rho + screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(Ca43)*Y(H1)*state.rho) + + (screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(K41)*Y(H1)*state.rho + -screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + + (-screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(He4)*Y(K41)*state.rho + screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(Ca44)*Y(H1)*state.rho) + + (screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(Ca40)*Y(N)*state.rho + -screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + + (screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + + (screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(Ca42)*Y(N)*state.rho + -screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(Ar39)*Y(He4)*state.rho) + + (screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(Ca42)*Y(H1)*state.rho + -screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(He4)*Y(K39)*state.rho) + + (screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(Ca43)*Y(N)*state.rho + -screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(Ar40)*Y(He4)*state.rho) + + (-screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(Ca43)*Y(He4)*state.rho + screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(Ti46)*Y(N)*state.rho) + + (-screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(Ca45)*Y(He4)*state.rho + screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(Ti48)*Y(N)*state.rho) + + (-screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(Ca47)*Y(He4)*state.rho + screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(Ti50)*Y(N)*state.rho) + + (screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(He4)*Y(K40)*state.rho) + + (screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(Sc43)*Y(H1)*state.rho + -screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(Ca40)*Y(He4)*state.rho) + + (-screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(He4)*Y(Sc43)*state.rho + screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(Ti46)*Y(H1)*state.rho) + + (screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(He4)*Y(K41)*state.rho) + + (screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(Sc44)*Y(H1)*state.rho + -screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + + (-screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(He4)*Y(Sc44)*state.rho + screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(Ti47)*Y(H1)*state.rho) + + (screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(Sc45)*Y(H1)*state.rho + -screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + + (-screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(He4)*Y(Sc45)*state.rho + screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(Ti48)*Y(H1)*state.rho) + + (screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(Ca43)*Y(He4)*state.rho) + + (-screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(V49)*Y(N)*state.rho) + + (-screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(Ti49)*Y(H1)*state.rho) + + (screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(Sc47)*Y(H1)*state.rho + -screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + + (-screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(He4)*Y(Sc47)*state.rho + screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(Ti50)*Y(H1)*state.rho) + + (screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(Ca45)*Y(He4)*state.rho) + + (-screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(V51)*Y(N)*state.rho) + + (-screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(Ti51)*Y(H1)*state.rho) + + (screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + + (screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + + (screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + + (-screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(He4)*Y(Ti45)*state.rho + screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(V48)*Y(H1)*state.rho) + + (screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + + (screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(Ti49)*Y(N)*state.rho + -screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + + (-screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(He4)*Y(Ti49)*state.rho + screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(Cr52)*Y(N)*state.rho) + + (screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(Ti51)*Y(N)*state.rho + -screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(Ca48)*Y(He4)*state.rho) + + (-screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(He4)*Y(Ti51)*state.rho + screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(Cr54)*Y(N)*state.rho) + + (screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(He4)*Y(Sc43)*state.rho) + + (-screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(He4)*Y(V46)*state.rho + screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(Cr49)*Y(H1)*state.rho) + + (screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(He4)*Y(Sc44)*state.rho) + + (screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(V47)*Y(H1)*state.rho + -screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(He4)*Y(Ti44)*state.rho) + + (-screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(He4)*Y(V47)*state.rho + screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(Cr50)*Y(H1)*state.rho) + + (screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(He4)*Y(Sc45)*state.rho) + + (-screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(He4)*Y(V48)*state.rho + screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(Cr51)*Y(H1)*state.rho) + + (screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(V49)*Y(H1)*state.rho + -screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + + (-screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(He4)*Y(V49)*state.rho + screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(Cr52)*Y(H1)*state.rho) + + (screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(He4)*Y(Sc47)*state.rho) + + (screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + + (-screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(He4)*Y(V50)*state.rho + screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(Cr53)*Y(H1)*state.rho) + + (screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(V51)*Y(H1)*state.rho + -screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + + (screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(V52)*Y(N)*state.rho + -screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(He4)*Y(Sc49)*state.rho) + + (screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(He4)*Y(Ti49)*state.rho) + + (-screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(He4)*Y(V52)*state.rho + screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(Mn55)*Y(N)*state.rho) + + (screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(He4)*Y(Ti45)*state.rho) + + (-screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(Mn51)*Y(H1)*state.rho) + + (screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + + (-screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(Cr49)*Y(He4)*state.rho + screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(Mn52)*Y(H1)*state.rho) + + (screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(Cr50)*Y(N)*state.rho + -screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + + (screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + + (screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(Cr53)*Y(N)*state.rho + -screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(He4)*Y(Ti50)*state.rho) + + (screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(Cr54)*Y(H1)*state.rho + -screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(He4)*Y(V51)*state.rho) + + (screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(He4)*Y(V47)*state.rho) + + (-screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(He4)*Y(Mn50)*state.rho + screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(Fe53)*Y(H1)*state.rho) + + (screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(He4)*Y(V48)*state.rho) + + (-screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(He4)*Y(V49)*state.rho) + + (-screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(He4)*Y(Mn52)*state.rho + screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(Fe55)*Y(H1)*state.rho) + + (screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(He4)*Y(V50)*state.rho) + + (screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(Mn53)*Y(H1)*state.rho + -screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + + (-screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(He4)*Y(Mn53)*state.rho + screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(He4)*Y(V51)*state.rho) + + (screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(Mn54)*Y(H1)*state.rho + -screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + + (screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(Mn55)*Y(H1)*state.rho + -screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + + (screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(Cr49)*Y(He4)*state.rho) + + (-screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(Co55)*Y(H1)*state.rho) + + (screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + + (-screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + + (screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + + (screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(Fe56)*Y(N)*state.rho + -screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(Cr53)*Y(He4)*state.rho) + + (screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(Fe57)*Y(N)*state.rho + -screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(Cr54)*Y(He4)*state.rho) + + (screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(Fe57)*Y(H1)*state.rho + -screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + + (screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(Fe58)*Y(H1)*state.rho + -screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + + (screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(He4)*Y(Mn50)*state.rho) + + (-screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(Co53)*Y(He4)*state.rho + screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(Ni56)*Y(H1)*state.rho) + + (screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(He4)*Y(Mn51)*state.rho) + + (-screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(Co54)*Y(He4)*state.rho + screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(Ni57)*Y(H1)*state.rho) + + (screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(He4)*Y(Mn52)*state.rho) + + (-screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(He4)*Y(Mn53)*state.rho) + + (-screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(Co56)*Y(He4)*state.rho + screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(Ni59)*Y(H1)*state.rho) + + (screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + + (screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + + (-screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(Co57)*Y(He4)*state.rho + screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(Ni60)*Y(H1)*state.rho) + + (screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + + (screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(Co58)*Y(H1)*state.rho + -screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + + (screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(Co59)*Y(H1)*state.rho + -screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + + (screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(Fe53)*Y(He4)*state.rho) + + (screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + + (screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + + (screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(Ni60)*Y(N)*state.rho + -screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(Fe57)*Y(He4)*state.rho) + + (screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(Ni61)*Y(N)*state.rho + -screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(Fe58)*Y(He4)*state.rho) + + (screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(Ni61)*Y(H1)*state.rho + -screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(Co58)*Y(He4)*state.rho) + + (screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(Ni62)*Y(H1)*state.rho + -screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(Co59)*Y(He4)*state.rho) + + (screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(Co54)*Y(He4)*state.rho) + + (-screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(Cu57)*Y(He4)*state.rho + screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(Zn60)*Y(H1)*state.rho) + + (screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(Co55)*Y(He4)*state.rho) + + (screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(Co56)*Y(He4)*state.rho) + + (screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + + (screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(Co57)*Y(He4)*state.rho) + + (screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(Cu60)*Y(H1)*state.rho + -screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + + (screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(Co58)*Y(He4)*state.rho) + + (screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(Cu61)*Y(H1)*state.rho + -screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + + (screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(Co59)*Y(He4)*state.rho) + + (screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(Cu62)*Y(H1)*state.rho + -screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + + (screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(Cu63)*Y(H1)*state.rho + -screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + + (screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(Cu64)*Y(H1)*state.rho + -screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + + (screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(Cu65)*Y(H1)*state.rho + -screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + + (screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + + (screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + + (screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + + (screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(Zn61)*Y(H1)*state.rho + -screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(Cu58)*Y(He4)*state.rho) + + (screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + + (screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(Zn62)*Y(H1)*state.rho + -screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + + (screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + + (screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(Zn63)*Y(H1)*state.rho + -screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + + (screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + + (screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(Zn64)*Y(H1)*state.rho + -screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + + (screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + + (screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(Zn65)*Y(H1)*state.rho + -screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(Cu62)*Y(He4)*state.rho) + + (screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(Zn66)*Y(N)*state.rho + -screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(He4)*Y(Ni63)*state.rho) + + (screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(Zn66)*Y(H1)*state.rho + -screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(Cu63)*Y(He4)*state.rho) + + (screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + + (screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(Ga62)*Y(H1)*state.rho + -screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(He4)*Y(Zn59)*state.rho) + + (screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + + (screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(Ga63)*Y(H1)*state.rho + -screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + + (screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(Ga64)*Y(N)*state.rho + -screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + + (screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(Ga64)*Y(H1)*state.rho + -screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + + (screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + + (screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(Ge64)*Y(N)*state.rho + -screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + + (0.5*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*amrex::Math::powi<2>(Y(He3))*state.rho + -0.5*screened_rates(k_He4_p_p_to_He3_He3_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho)) + + (2.0*screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(Li7)*Y(H2)*state.rho + -screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho)) + + (2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + -screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + + (2.0*screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho + -screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H2)*amrex::Math::powi<2>(state.rho)) + + (2.0*screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(B8)*Y(N)*state.rho + -screened_rates(k_He4_He4_p_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + + (3.0*screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*Y(H1)*state.rho + -0.5*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho)) + + (2.0*screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + -screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)) + + (2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + -0.5*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)) + + (-screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_Li6_to_n_p_He4_reaclib)*Y(Li6)) + + (-screened_rates(k_He4_He4_n_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_Be9_to_n_He4_He4_reaclib)*Y(Be9)) + + (-0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + 3.0*screened_rates(k_C12_to_3He4_reaclib)*Y(C12)) + + (-screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + 2.0*screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho); ydot_nuc(Li6) = - (screened_rates(k_He4_d_to_Li6_reaclib)*Y(He4)*Y(H2)*state.rho + -screened_rates(k_Li6_to_He4_d_reaclib)*Y(Li6)) + - (-screened_rates(k_n_Li6_to_Li7_reaclib)*Y(Li6)*Y(N)*state.rho + screened_rates(k_Li7_to_n_Li6_reaclib)*Y(Li7)) + - (-screened_rates(k_p_Li6_to_Be7_reaclib)*Y(Li6)*Y(H1)*state.rho + screened_rates(k_Be7_to_p_Li6_reaclib)*Y(Be7)) + - (-screened_rates(k_He4_Li6_to_B10_reaclib)*Y(He4)*Y(Li6)*state.rho + screened_rates(k_B10_to_He4_Li6_reaclib)*Y(B10)) + - (-screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(Li6)*Y(H1)*state.rho + screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He3)*Y(He4)*state.rho) + - (-screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(Li6)*Y(H2)*state.rho + screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(Be7)*Y(N)*state.rho) + - (-screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(Li6)*Y(H2)*state.rho + screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(Li7)*Y(H1)*state.rho) + - (screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(Be9)*Y(H1)*state.rho + -screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(He4)*Y(Li6)*state.rho) + - (screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Li6_to_n_p_He4_reaclib)*Y(Li6)); + (screened_rates(k_d_He4_to_Li6_reaclib)*Y(He4)*Y(H2)*state.rho + -screened_rates(k_Li6_to_He4_d_reaclib)*Y(Li6)) + + (-screened_rates(k_Li6_n_to_Li7_reaclib)*Y(Li6)*Y(N)*state.rho + screened_rates(k_Li7_to_n_Li6_reaclib)*Y(Li7)) + + (-screened_rates(k_Li6_p_to_Be7_reaclib)*Y(Li6)*Y(H1)*state.rho + screened_rates(k_Be7_to_p_Li6_reaclib)*Y(Be7)) + + (-screened_rates(k_Li6_He4_to_B10_reaclib)*Y(He4)*Y(Li6)*state.rho + screened_rates(k_B10_to_He4_Li6_reaclib)*Y(B10)) + + (-screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(Li6)*Y(H1)*state.rho + screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He3)*Y(He4)*state.rho) + + (-screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(Li6)*Y(H2)*state.rho + screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(Be7)*Y(N)*state.rho) + + (-screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(Li6)*Y(H2)*state.rho + screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(Li7)*Y(H1)*state.rho) + + (screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(Be9)*Y(H1)*state.rho + -screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(He4)*Y(Li6)*state.rho) + + (screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Li6_to_n_p_He4_reaclib)*Y(Li6)); ydot_nuc(Li7) = - screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e + - (screened_rates(k_n_Li6_to_Li7_reaclib)*Y(Li6)*Y(N)*state.rho + -screened_rates(k_Li7_to_n_Li6_reaclib)*Y(Li7)) + - (-screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + screened_rates(k_B11_to_He4_Li7_reaclib)*Y(B11)) + - (screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(Li6)*Y(H2)*state.rho + -screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(Li7)*Y(H1)*state.rho) + - (-screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + 0.5*screened_rates(k_He4_He4_to_p_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + - (screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(Be7)*Y(N)*state.rho + -screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(Li7)*Y(H1)*state.rho) + - (screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(B10)*Y(N)*state.rho + -screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(He4)*Y(Li7)*state.rho) + - (-screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(Li7)*Y(H2)*state.rho + 0.5*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho)) + - (-screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + 0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)); + screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*Y(Be7)*state.rho*state.y_e + + (screened_rates(k_Li6_n_to_Li7_reaclib)*Y(Li6)*Y(N)*state.rho + -screened_rates(k_Li7_to_n_Li6_reaclib)*Y(Li7)) + + (-screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + screened_rates(k_B11_to_He4_Li7_reaclib)*Y(B11)) + + (screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(Li6)*Y(H2)*state.rho + -screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(Li7)*Y(H1)*state.rho) + + (-screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*Y(H1)*state.rho + 0.5*screened_rates(k_He4_He4_to_p_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + + (screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(Be7)*Y(N)*state.rho + -screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(Li7)*Y(H1)*state.rho) + + (screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(B10)*Y(N)*state.rho + -screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(He4)*Y(Li7)*state.rho) + + (-screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(Li7)*Y(H2)*state.rho + 0.5*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho)) + + (-screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*Y(Li7)*state.rho + 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho)); ydot_nuc(Be7) = - -screened_rates(k_Be7_to_Li7_reaclib)*Y(Be7)*state.rho*state.y_e + - (screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + -screened_rates(k_Be7_to_He4_He3_reaclib)*Y(Be7)) + - (screened_rates(k_p_Li6_to_Be7_reaclib)*Y(Li6)*Y(H1)*state.rho + -screened_rates(k_Be7_to_p_Li6_reaclib)*Y(Be7)) + - (-screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + - (screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(Li6)*Y(H2)*state.rho + -screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(Be7)*Y(N)*state.rho) + - (-screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(Be7)*Y(N)*state.rho + screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(Li7)*Y(H1)*state.rho) + - (-screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(Be7)*Y(N)*state.rho + 0.5*screened_rates(k_He4_He4_to_n_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + - (screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(B10)*Y(H1)*state.rho + -screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(Be7)*Y(He4)*state.rho) + - (-screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + - (-screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + 0.25*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)); + -screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*Y(Be7)*state.rho*state.y_e + + (screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*Y(He4)*state.rho + -screened_rates(k_Be7_to_He4_He3_reaclib)*Y(Be7)) + + (screened_rates(k_Li6_p_to_Be7_reaclib)*Y(Li6)*Y(H1)*state.rho + -screened_rates(k_Be7_to_p_Li6_reaclib)*Y(Be7)) + + (-screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + + (screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(Li6)*Y(H2)*state.rho + -screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(Be7)*Y(N)*state.rho) + + (-screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(Be7)*Y(N)*state.rho + screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(Li7)*Y(H1)*state.rho) + + (-screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(Be7)*Y(N)*state.rho + 0.5*screened_rates(k_He4_He4_to_n_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*state.rho) + + (screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(B10)*Y(H1)*state.rho + -screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(Be7)*Y(He4)*state.rho) + + (-screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*Y(H2)*state.rho + 0.5*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)) + + (-screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*Y(He3)*state.rho + 0.25*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho)); ydot_nuc(Be9) = - (-screened_rates(k_p_Be9_to_B10_reaclib)*Y(Be9)*Y(H1)*state.rho + screened_rates(k_B10_to_p_Be9_reaclib)*Y(B10)) + - (-screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(Be9)*Y(H1)*state.rho + screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(He4)*Y(Li6)*state.rho) + - (-screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(Be9)*Y(He4)*state.rho + screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(C12)*Y(N)*state.rho) + - (-screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho + 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H2)*amrex::Math::powi<2>(state.rho)) + - (0.5*screened_rates(k_n_He4_He4_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Be9_to_n_He4_He4_reaclib)*Y(Be9)) + - (0.5*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + -screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho); + (-screened_rates(k_Be9_p_to_B10_reaclib)*Y(Be9)*Y(H1)*state.rho + screened_rates(k_B10_to_p_Be9_reaclib)*Y(B10)) + + (-screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(Be9)*Y(H1)*state.rho + screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(He4)*Y(Li6)*state.rho) + + (-screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(Be9)*Y(He4)*state.rho + screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(C12)*Y(N)*state.rho) + + (-screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho + 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H2)*amrex::Math::powi<2>(state.rho)) + + (0.5*screened_rates(k_He4_He4_n_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<2>(state.rho) + -screened_rates(k_Be9_to_n_He4_He4_reaclib)*Y(Be9)) + + (0.5*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + -screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(Be9)*Y(H1)*state.rho); ydot_nuc(B8) = - -screened_rates(k_B8_to_He4_He4_reaclib)*Y(B8) + - (screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + -screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + - (-screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(B8)*Y(N)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)); + -screened_rates(k_B8_to_He4_He4_beta_pos_reaclib)*Y(B8) + + (screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*Y(H1)*state.rho + -screened_rates(k_B8_to_p_Be7_reaclib)*Y(B8)) + + (-screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(B8)*Y(N)*state.rho + 0.5*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<2>(state.rho)); ydot_nuc(B10) = - (screened_rates(k_He4_Li6_to_B10_reaclib)*Y(He4)*Y(Li6)*state.rho + -screened_rates(k_B10_to_He4_Li6_reaclib)*Y(B10)) + - (screened_rates(k_p_Be9_to_B10_reaclib)*Y(Be9)*Y(H1)*state.rho + -screened_rates(k_B10_to_p_Be9_reaclib)*Y(B10)) + - (-screened_rates(k_n_B10_to_B11_reaclib)*Y(B10)*Y(N)*state.rho + screened_rates(k_B11_to_n_B10_reaclib)*Y(B11)) + - (-screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(B10)*Y(N)*state.rho + screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(He4)*Y(Li7)*state.rho) + - (-screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(B10)*Y(H1)*state.rho + screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(Be7)*Y(He4)*state.rho) + - (-screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(B10)*Y(He4)*state.rho + screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N13)*Y(N)*state.rho) + - (-screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(B10)*Y(He4)*state.rho + screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(C13)*Y(H1)*state.rho); + (screened_rates(k_Li6_He4_to_B10_reaclib)*Y(He4)*Y(Li6)*state.rho + -screened_rates(k_B10_to_He4_Li6_reaclib)*Y(B10)) + + (screened_rates(k_Be9_p_to_B10_reaclib)*Y(Be9)*Y(H1)*state.rho + -screened_rates(k_B10_to_p_Be9_reaclib)*Y(B10)) + + (-screened_rates(k_B10_n_to_B11_reaclib)*Y(B10)*Y(N)*state.rho + screened_rates(k_B11_to_n_B10_reaclib)*Y(B11)) + + (-screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(B10)*Y(N)*state.rho + screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(He4)*Y(Li7)*state.rho) + + (-screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(B10)*Y(H1)*state.rho + screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(Be7)*Y(He4)*state.rho) + + (-screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(B10)*Y(He4)*state.rho + screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N13)*Y(N)*state.rho) + + (-screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(B10)*Y(He4)*state.rho + screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(C13)*Y(H1)*state.rho); ydot_nuc(B11) = - (screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + -screened_rates(k_B11_to_He4_Li7_reaclib)*Y(B11)) + - (screened_rates(k_n_B10_to_B11_reaclib)*Y(B10)*Y(N)*state.rho + -screened_rates(k_B11_to_n_B10_reaclib)*Y(B11)) + - (-screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + screened_rates(k_C12_to_p_B11_reaclib)*Y(C12)) + - (-screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(B11)*Y(He4)*state.rho + screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N14)*Y(N)*state.rho) + - (-screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(B11)*Y(He4)*state.rho + screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(C14)*Y(H1)*state.rho) + - (-screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*Y(H1)*state.rho + 0.16666666666666667*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho)); + (screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*Y(Li7)*state.rho + -screened_rates(k_B11_to_He4_Li7_reaclib)*Y(B11)) + + (screened_rates(k_B10_n_to_B11_reaclib)*Y(B10)*Y(N)*state.rho + -screened_rates(k_B11_to_n_B10_reaclib)*Y(B11)) + + (-screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + screened_rates(k_C12_to_p_B11_reaclib)*Y(C12)) + + (-screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(B11)*Y(He4)*state.rho + screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N14)*Y(N)*state.rho) + + (-screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(B11)*Y(He4)*state.rho + screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(C14)*Y(H1)*state.rho) + + (-screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*Y(H1)*state.rho + 0.16666666666666667*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho)); ydot_nuc(C12) = - (screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + -screened_rates(k_C12_to_p_B11_reaclib)*Y(C12)) + - (-screened_rates(k_n_C12_to_C13_reaclib)*Y(C12)*Y(N)*state.rho + screened_rates(k_C13_to_n_C12_reaclib)*Y(C13)) + - (-screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_reaclib)*Y(N13)) + - (-screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_reaclib)*Y(O16)) + - (screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(Be9)*Y(He4)*state.rho + -screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(C12)*Y(N)*state.rho) + - (-screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(C12)*Y(He4)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(C12)*Y(Ne20)*state.rho + screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(C12)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (2.0*screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + - (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_He4_He4_He4_reaclib)*Y(C12)); + (screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*Y(H1)*state.rho + -screened_rates(k_C12_to_p_B11_reaclib)*Y(C12)) + + (-screened_rates(k_C12_n_to_C13_reaclib)*Y(C12)*Y(N)*state.rho + screened_rates(k_C13_to_n_C12_reaclib)*Y(C13)) + + (-screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_reaclib)*Y(N13)) + + (-screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + screened_rates(k_O16_to_He4_C12_reaclib)*Y(O16)) + + (screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(Be9)*Y(He4)*state.rho + -screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(C12)*Y(N)*state.rho) + + (-screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(C12)*Y(He4)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(C12)*Y(Ne20)*state.rho + screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(C12)*Y(Ne20)*state.rho + screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (2.0*screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + + (0.16666666666666667*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<3>(Y(He4))*amrex::Math::powi<2>(state.rho) + -screened_rates(k_C12_to_3He4_reaclib)*Y(C12)); ydot_nuc(C13) = - screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - (screened_rates(k_n_C12_to_C13_reaclib)*Y(C12)*Y(N)*state.rho + -screened_rates(k_C13_to_n_C12_reaclib)*Y(C13)) + - (-screened_rates(k_n_C13_to_C14_reaclib)*Y(C13)*Y(N)*state.rho + screened_rates(k_C14_to_n_C13_reaclib)*Y(C14)) + - (-screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_reaclib)*Y(N14)) + - (screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(B10)*Y(He4)*state.rho + -screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(C13)*Y(H1)*state.rho) + - (-screened_rates(k_d_C13_to_n_N14_reaclib)*Y(C13)*Y(H2)*state.rho + screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N14)*Y(N)*state.rho) + - (-screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(C13)*Y(He4)*state.rho + screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(O16)*Y(N)*state.rho) + - (screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N13)*Y(N)*state.rho + -screened_rates(k_p_C13_to_n_N13_reaclib)*Y(C13)*Y(H1)*state.rho); + screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + (screened_rates(k_C12_n_to_C13_reaclib)*Y(C12)*Y(N)*state.rho + -screened_rates(k_C13_to_n_C12_reaclib)*Y(C13)) + + (-screened_rates(k_C13_n_to_C14_reaclib)*Y(C13)*Y(N)*state.rho + screened_rates(k_C14_to_n_C13_reaclib)*Y(C14)) + + (-screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_reaclib)*Y(N14)) + + (screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(B10)*Y(He4)*state.rho + -screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(C13)*Y(H1)*state.rho) + + (-screened_rates(k_C13_d_to_n_N14_reaclib)*Y(C13)*Y(H2)*state.rho + screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N14)*Y(N)*state.rho) + + (-screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(C13)*Y(He4)*state.rho + screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(O16)*Y(N)*state.rho) + + (screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N13)*Y(N)*state.rho + -screened_rates(k_C13_p_to_n_N13_reaclib)*Y(C13)*Y(H1)*state.rho); ydot_nuc(C14) = - -screened_rates(k_C14_to_N14_reaclib)*Y(C14) + - (screened_rates(k_n_C13_to_C14_reaclib)*Y(C13)*Y(N)*state.rho + -screened_rates(k_C14_to_n_C13_reaclib)*Y(C14)) + - (-screened_rates(k_p_C14_to_N15_reaclib)*Y(C14)*Y(H1)*state.rho + screened_rates(k_N15_to_p_C14_reaclib)*Y(N15)) + - (-screened_rates(k_He4_C14_to_O18_reaclib)*Y(C14)*Y(He4)*state.rho + screened_rates(k_O18_to_He4_C14_reaclib)*Y(O18)) + - (screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(B11)*Y(He4)*state.rho + -screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(C14)*Y(H1)*state.rho) + - (-screened_rates(k_d_C14_to_n_N15_reaclib)*Y(C14)*Y(H2)*state.rho + screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N15)*Y(N)*state.rho) + - (screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N14)*Y(N)*state.rho + -screened_rates(k_p_C14_to_n_N14_reaclib)*Y(C14)*Y(H1)*state.rho) + - (screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(O17)*Y(N)*state.rho + -screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(C14)*Y(He4)*state.rho); + -screened_rates(k_C14_to_N14_beta_neg_reaclib)*Y(C14) + + (screened_rates(k_C13_n_to_C14_reaclib)*Y(C13)*Y(N)*state.rho + -screened_rates(k_C14_to_n_C13_reaclib)*Y(C14)) + + (-screened_rates(k_C14_p_to_N15_reaclib)*Y(C14)*Y(H1)*state.rho + screened_rates(k_N15_to_p_C14_reaclib)*Y(N15)) + + (-screened_rates(k_C14_He4_to_O18_reaclib)*Y(C14)*Y(He4)*state.rho + screened_rates(k_O18_to_He4_C14_reaclib)*Y(O18)) + + (screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(B11)*Y(He4)*state.rho + -screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(C14)*Y(H1)*state.rho) + + (-screened_rates(k_C14_d_to_n_N15_reaclib)*Y(C14)*Y(H2)*state.rho + screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N15)*Y(N)*state.rho) + + (screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N14)*Y(N)*state.rho + -screened_rates(k_C14_p_to_n_N14_reaclib)*Y(C14)*Y(H1)*state.rho) + + (screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(O17)*Y(N)*state.rho + -screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(C14)*Y(He4)*state.rho); ydot_nuc(N13) = - -screened_rates(k_N13_to_C13_reaclib)*Y(N13) + - (screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_reaclib)*Y(N13)) + - (-screened_rates(k_n_N13_to_N14_reaclib)*Y(N13)*Y(N)*state.rho + screened_rates(k_N14_to_n_N13_reaclib)*Y(N14)) + - (-screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_reaclib)*Y(O14)) + - (screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(B10)*Y(He4)*state.rho + -screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N13)*Y(N)*state.rho) + - (-screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N13)*Y(N)*state.rho + screened_rates(k_p_C13_to_n_N13_reaclib)*Y(C13)*Y(H1)*state.rho) + - (-screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(O16)*Y(H1)*state.rho); + -screened_rates(k_N13_to_C13_beta_pos_reaclib)*Y(N13) + + (screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*Y(H1)*state.rho + -screened_rates(k_N13_to_p_C12_reaclib)*Y(N13)) + + (-screened_rates(k_N13_n_to_N14_reaclib)*Y(N13)*Y(N)*state.rho + screened_rates(k_N14_to_n_N13_reaclib)*Y(N14)) + + (-screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + screened_rates(k_O14_to_p_N13_reaclib)*Y(O14)) + + (screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(B10)*Y(He4)*state.rho + -screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N13)*Y(N)*state.rho) + + (-screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N13)*Y(N)*state.rho + screened_rates(k_C13_p_to_n_N13_reaclib)*Y(C13)*Y(H1)*state.rho) + + (-screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(O16)*Y(H1)*state.rho); ydot_nuc(N14) = - screened_rates(k_C14_to_N14_reaclib)*Y(C14) + - screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - (screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_reaclib)*Y(N14)) + - (screened_rates(k_n_N13_to_N14_reaclib)*Y(N13)*Y(N)*state.rho + -screened_rates(k_N14_to_n_N13_reaclib)*Y(N14)) + - (-screened_rates(k_n_N14_to_N15_reaclib)*Y(N14)*Y(N)*state.rho + screened_rates(k_N15_to_n_N14_reaclib)*Y(N15)) + - (-screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_reaclib)*Y(O15)) + - (-screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_reaclib)*Y(F18)) + - (screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(B11)*Y(He4)*state.rho + -screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N14)*Y(N)*state.rho) + - (screened_rates(k_d_C13_to_n_N14_reaclib)*Y(C13)*Y(H2)*state.rho + -screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N14)*Y(N)*state.rho) + - (-screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N14)*Y(N)*state.rho + screened_rates(k_p_C14_to_n_N14_reaclib)*Y(C14)*Y(H1)*state.rho) + - (screened_rates(k_n_O14_to_p_N14_reaclib)*Y(O14)*Y(N)*state.rho + -screened_rates(k_p_N14_to_n_O14_reaclib)*Y(N14)*Y(H1)*state.rho) + - (screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(He4)*Y(N14)*state.rho) + - (screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(He4)*Y(N14)*state.rho); + screened_rates(k_C14_to_N14_beta_neg_reaclib)*Y(C14) + + screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + (screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*Y(H1)*state.rho + -screened_rates(k_N14_to_p_C13_reaclib)*Y(N14)) + + (screened_rates(k_N13_n_to_N14_reaclib)*Y(N13)*Y(N)*state.rho + -screened_rates(k_N14_to_n_N13_reaclib)*Y(N14)) + + (-screened_rates(k_N14_n_to_N15_reaclib)*Y(N14)*Y(N)*state.rho + screened_rates(k_N15_to_n_N14_reaclib)*Y(N15)) + + (-screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + screened_rates(k_O15_to_p_N14_reaclib)*Y(O15)) + + (-screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + screened_rates(k_F18_to_He4_N14_reaclib)*Y(F18)) + + (screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(B11)*Y(He4)*state.rho + -screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N14)*Y(N)*state.rho) + + (screened_rates(k_C13_d_to_n_N14_reaclib)*Y(C13)*Y(H2)*state.rho + -screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N14)*Y(N)*state.rho) + + (-screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N14)*Y(N)*state.rho + screened_rates(k_C14_p_to_n_N14_reaclib)*Y(C14)*Y(H1)*state.rho) + + (screened_rates(k_O14_n_to_p_N14_reaclib)*Y(O14)*Y(N)*state.rho + -screened_rates(k_N14_p_to_n_O14_reaclib)*Y(N14)*Y(H1)*state.rho) + + (screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(He4)*Y(N14)*state.rho) + + (screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(He4)*Y(N14)*state.rho); ydot_nuc(N15) = - screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - (screened_rates(k_p_C14_to_N15_reaclib)*Y(C14)*Y(H1)*state.rho + -screened_rates(k_N15_to_p_C14_reaclib)*Y(N15)) + - (screened_rates(k_n_N14_to_N15_reaclib)*Y(N14)*Y(N)*state.rho + -screened_rates(k_N15_to_n_N14_reaclib)*Y(N15)) + - (-screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_reaclib)*Y(O16)) + - (-screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_reaclib)*Y(F19)) + - (screened_rates(k_d_C14_to_n_N15_reaclib)*Y(C14)*Y(H2)*state.rho + -screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N15)*Y(N)*state.rho) + - (-screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_n_O15_to_p_N15_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_p_N15_to_n_O15_reaclib)*Y(N15)*Y(H1)*state.rho) + - (screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(He4)*Y(N15)*state.rho); + screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + (screened_rates(k_C14_p_to_N15_reaclib)*Y(C14)*Y(H1)*state.rho + -screened_rates(k_N15_to_p_C14_reaclib)*Y(N15)) + + (screened_rates(k_N14_n_to_N15_reaclib)*Y(N14)*Y(N)*state.rho + -screened_rates(k_N15_to_n_N14_reaclib)*Y(N15)) + + (-screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_reaclib)*Y(O16)) + + (-screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + screened_rates(k_F19_to_He4_N15_reaclib)*Y(F19)) + + (screened_rates(k_C14_d_to_n_N15_reaclib)*Y(C14)*Y(H2)*state.rho + -screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N15)*Y(N)*state.rho) + + (-screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*Y(H1)*state.rho + screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_O15_n_to_p_N15_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_N15_p_to_n_O15_reaclib)*Y(N15)*Y(H1)*state.rho) + + (screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(He4)*Y(N15)*state.rho); ydot_nuc(O14) = - -screened_rates(k_O14_to_N14_reaclib)*Y(O14) + - (screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_reaclib)*Y(O14)) + - (-screened_rates(k_n_O14_to_O15_reaclib)*Y(O14)*Y(N)*state.rho + screened_rates(k_O15_to_n_O14_reaclib)*Y(O15)) + - (-screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_reaclib)*Y(Ne18)) + - (-screened_rates(k_n_O14_to_p_N14_reaclib)*Y(O14)*Y(N)*state.rho + screened_rates(k_p_N14_to_n_O14_reaclib)*Y(N14)*Y(H1)*state.rho) + - (-screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(F17)*Y(H1)*state.rho); + -screened_rates(k_O14_to_N14_beta_pos_reaclib)*Y(O14) + + (screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*Y(H1)*state.rho + -screened_rates(k_O14_to_p_N13_reaclib)*Y(O14)) + + (-screened_rates(k_O14_n_to_O15_reaclib)*Y(O14)*Y(N)*state.rho + screened_rates(k_O15_to_n_O14_reaclib)*Y(O15)) + + (-screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_Ne18_to_He4_O14_reaclib)*Y(Ne18)) + + (-screened_rates(k_O14_n_to_p_N14_reaclib)*Y(O14)*Y(N)*state.rho + screened_rates(k_N14_p_to_n_O14_reaclib)*Y(N14)*Y(H1)*state.rho) + + (-screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(F17)*Y(H1)*state.rho); ydot_nuc(O15) = - -screened_rates(k_O15_to_N15_reaclib)*Y(O15) + - (screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_reaclib)*Y(O15)) + - (screened_rates(k_n_O14_to_O15_reaclib)*Y(O14)*Y(N)*state.rho + -screened_rates(k_O15_to_n_O14_reaclib)*Y(O15)) + - (-screened_rates(k_n_O15_to_O16_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_O16_to_n_O15_reaclib)*Y(O16)) + - (-screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_reaclib)*Y(Ne19)) + - (-screened_rates(k_n_O15_to_p_N15_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_p_N15_to_n_O15_reaclib)*Y(N15)*Y(H1)*state.rho) + - (-screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(C12)*Y(He4)*state.rho) + - (screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(He4)*Y(O15)*state.rho) + - (screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(He4)*Y(O15)*state.rho); + -screened_rates(k_O15_to_N15_beta_pos_reaclib)*Y(O15) + + (screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*Y(H1)*state.rho + -screened_rates(k_O15_to_p_N14_reaclib)*Y(O15)) + + (screened_rates(k_O14_n_to_O15_reaclib)*Y(O14)*Y(N)*state.rho + -screened_rates(k_O15_to_n_O14_reaclib)*Y(O15)) + + (-screened_rates(k_O15_n_to_O16_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_O16_to_n_O15_reaclib)*Y(O16)) + + (-screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + screened_rates(k_Ne19_to_He4_O15_reaclib)*Y(Ne19)) + + (-screened_rates(k_O15_n_to_p_N15_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_N15_p_to_n_O15_reaclib)*Y(N15)*Y(H1)*state.rho) + + (-screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(O15)*Y(N)*state.rho + screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(C12)*Y(He4)*state.rho) + + (screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(He4)*Y(O15)*state.rho) + + (screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(He4)*Y(O15)*state.rho); ydot_nuc(O16) = - (screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_reaclib)*Y(O16)) + - (screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_reaclib)*Y(O16)) + - (screened_rates(k_n_O15_to_O16_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_O16_to_n_O15_reaclib)*Y(O16)) + - (-screened_rates(k_n_O16_to_O17_reaclib)*Y(O16)*Y(N)*state.rho + screened_rates(k_O17_to_n_O16_reaclib)*Y(O17)) + - (-screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + - (-screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + - (screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(C13)*Y(He4)*state.rho + -screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(O16)*Y(N)*state.rho) + - (screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(O16)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(He4)*Y(O16)*state.rho) + - (screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(He4)*Y(O16)*state.rho); + (screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*Y(He4)*state.rho + -screened_rates(k_O16_to_He4_C12_reaclib)*Y(O16)) + + (screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*Y(H1)*state.rho + -screened_rates(k_O16_to_p_N15_reaclib)*Y(O16)) + + (screened_rates(k_O15_n_to_O16_reaclib)*Y(O15)*Y(N)*state.rho + -screened_rates(k_O16_to_n_O15_reaclib)*Y(O16)) + + (-screened_rates(k_O16_n_to_O17_reaclib)*Y(O16)*Y(N)*state.rho + screened_rates(k_O17_to_n_O16_reaclib)*Y(O17)) + + (-screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + + (-screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + + (screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(C13)*Y(He4)*state.rho + -screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(O16)*Y(N)*state.rho) + + (screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*Y(N13)*state.rho + -screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(O16)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(He4)*Y(O16)*state.rho) + + (screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(He4)*Y(O16)*state.rho); ydot_nuc(O17) = - screened_rates(k_F17_to_O17_reaclib)*Y(F17) + - (screened_rates(k_n_O16_to_O17_reaclib)*Y(O16)*Y(N)*state.rho + -screened_rates(k_O17_to_n_O16_reaclib)*Y(O17)) + - (-screened_rates(k_n_O17_to_O18_reaclib)*Y(O17)*Y(N)*state.rho + screened_rates(k_O18_to_n_O17_reaclib)*Y(O18)) + - (-screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_reaclib)*Y(F18)) + - (-screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_reaclib)*Y(Ne21)) + - (-screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(O17)*Y(N)*state.rho + screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(C14)*Y(He4)*state.rho) + - (-screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(Ne20)*Y(N)*state.rho) + - (screened_rates(k_n_F17_to_p_O17_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_p_O17_to_n_F17_reaclib)*Y(O17)*Y(H1)*state.rho); + screened_rates(k_F17_to_O17_beta_pos_reaclib)*Y(F17) + + (screened_rates(k_O16_n_to_O17_reaclib)*Y(O16)*Y(N)*state.rho + -screened_rates(k_O17_to_n_O16_reaclib)*Y(O17)) + + (-screened_rates(k_O17_n_to_O18_reaclib)*Y(O17)*Y(N)*state.rho + screened_rates(k_O18_to_n_O17_reaclib)*Y(O18)) + + (-screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_reaclib)*Y(F18)) + + (-screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne21_to_He4_O17_reaclib)*Y(Ne21)) + + (-screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(O17)*Y(N)*state.rho + screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(C14)*Y(He4)*state.rho) + + (-screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*Y(H1)*state.rho + screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(He4)*Y(O17)*state.rho + screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(Ne20)*Y(N)*state.rho) + + (screened_rates(k_F17_n_to_p_O17_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_O17_p_to_n_F17_reaclib)*Y(O17)*Y(H1)*state.rho); ydot_nuc(O18) = - screened_rates(k_F18_to_O18_reaclib)*Y(F18) + - (screened_rates(k_He4_C14_to_O18_reaclib)*Y(C14)*Y(He4)*state.rho + -screened_rates(k_O18_to_He4_C14_reaclib)*Y(O18)) + - (screened_rates(k_n_O17_to_O18_reaclib)*Y(O17)*Y(N)*state.rho + -screened_rates(k_O18_to_n_O17_reaclib)*Y(O18)) + - (-screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_reaclib)*Y(F19)) + - (-screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + screened_rates(k_Ne22_to_He4_O18_reaclib)*Y(Ne22)) + - (-screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(He4)*Y(N15)*state.rho) + - (screened_rates(k_n_F18_to_p_O18_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_p_O18_to_n_F18_reaclib)*Y(O18)*Y(H1)*state.rho) + - (screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(Ne21)*Y(N)*state.rho + -screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(He4)*Y(O18)*state.rho); + screened_rates(k_F18_to_O18_beta_pos_reaclib)*Y(F18) + + (screened_rates(k_C14_He4_to_O18_reaclib)*Y(C14)*Y(He4)*state.rho + -screened_rates(k_O18_to_He4_C14_reaclib)*Y(O18)) + + (screened_rates(k_O17_n_to_O18_reaclib)*Y(O17)*Y(N)*state.rho + -screened_rates(k_O18_to_n_O17_reaclib)*Y(O18)) + + (-screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_reaclib)*Y(F19)) + + (-screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + screened_rates(k_Ne22_to_He4_O18_reaclib)*Y(Ne22)) + + (-screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*Y(H1)*state.rho + screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(He4)*Y(N15)*state.rho) + + (screened_rates(k_F18_n_to_p_O18_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_O18_p_to_n_F18_reaclib)*Y(O18)*Y(H1)*state.rho) + + (screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(Ne21)*Y(N)*state.rho + -screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(He4)*Y(O18)*state.rho); ydot_nuc(F17) = - -screened_rates(k_F17_to_O17_reaclib)*Y(F17) + - (screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + - (-screened_rates(k_n_F17_to_F18_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_F18_to_n_F17_reaclib)*Y(F18)) + - (-screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_reaclib)*Y(Ne18)) + - (-screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_reaclib)*Y(Na21)) + - (screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(F17)*Y(H1)*state.rho) + - (-screened_rates(k_n_F17_to_p_O17_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_p_O17_to_n_F17_reaclib)*Y(O17)*Y(H1)*state.rho) + - (-screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(He4)*Y(N14)*state.rho) + - (-screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); + -screened_rates(k_F17_to_O17_beta_pos_reaclib)*Y(F17) + + (screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*Y(H1)*state.rho + -screened_rates(k_F17_to_p_O16_reaclib)*Y(F17)) + + (-screened_rates(k_F17_n_to_F18_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_F18_to_n_F17_reaclib)*Y(F18)) + + (-screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + screened_rates(k_Ne18_to_p_F17_reaclib)*Y(Ne18)) + + (-screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_reaclib)*Y(Na21)) + + (screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(F17)*Y(H1)*state.rho) + + (-screened_rates(k_F17_n_to_p_O17_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_O17_p_to_n_F17_reaclib)*Y(O17)*Y(H1)*state.rho) + + (-screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(F17)*Y(N)*state.rho + screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(He4)*Y(N14)*state.rho) + + (-screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho); ydot_nuc(F18) = - -screened_rates(k_F18_to_O18_reaclib)*Y(F18) + - screened_rates(k_Ne18_to_F18_reaclib)*Y(Ne18) + - (screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_reaclib)*Y(F18)) + - (screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_reaclib)*Y(F18)) + - (screened_rates(k_n_F17_to_F18_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_F18_to_n_F17_reaclib)*Y(F18)) + - (-screened_rates(k_n_F18_to_F19_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_F19_to_n_F18_reaclib)*Y(F19)) + - (-screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_reaclib)*Y(Ne19)) + - (-screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_reaclib)*Y(Na22)) + - (-screened_rates(k_n_F18_to_p_O18_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_p_O18_to_n_F18_reaclib)*Y(O18)*Y(H1)*state.rho) + - (-screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(He4)*Y(N15)*state.rho) + - (-screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(F18)*Y(H1)*state.rho) + - (screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(F18)*Y(He4)*state.rho); + -screened_rates(k_F18_to_O18_beta_pos_reaclib)*Y(F18) + + screened_rates(k_Ne18_to_F18_beta_pos_reaclib)*Y(Ne18) + + (screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*Y(N14)*state.rho + -screened_rates(k_F18_to_He4_N14_reaclib)*Y(F18)) + + (screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*Y(H1)*state.rho + -screened_rates(k_F18_to_p_O17_reaclib)*Y(F18)) + + (screened_rates(k_F17_n_to_F18_reaclib)*Y(F17)*Y(N)*state.rho + -screened_rates(k_F18_to_n_F17_reaclib)*Y(F18)) + + (-screened_rates(k_F18_n_to_F19_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_F19_to_n_F18_reaclib)*Y(F19)) + + (-screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_Ne19_to_p_F18_reaclib)*Y(Ne19)) + + (-screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_reaclib)*Y(Na22)) + + (-screened_rates(k_F18_n_to_p_O18_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_O18_p_to_n_F18_reaclib)*Y(O18)*Y(H1)*state.rho) + + (-screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(F18)*Y(N)*state.rho + screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(He4)*Y(N15)*state.rho) + + (-screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*Y(H1)*state.rho + screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(F18)*Y(H1)*state.rho) + + (screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(F18)*Y(He4)*state.rho); ydot_nuc(F19) = - screened_rates(k_Ne19_to_F19_reaclib)*Y(Ne19) + - (screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_reaclib)*Y(F19)) + - (screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_reaclib)*Y(F19)) + - (screened_rates(k_n_F18_to_F19_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_F19_to_n_F18_reaclib)*Y(F19)) + - (-screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_reaclib)*Y(Ne20)) + - (-screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_reaclib)*Y(Na23)) + - (-screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(F19)*Y(H1)*state.rho) + - (screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(F19)*Y(He4)*state.rho); + screened_rates(k_Ne19_to_F19_beta_pos_reaclib)*Y(Ne19) + + (screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*Y(N15)*state.rho + -screened_rates(k_F19_to_He4_N15_reaclib)*Y(F19)) + + (screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*Y(H1)*state.rho + -screened_rates(k_F19_to_p_O18_reaclib)*Y(F19)) + + (screened_rates(k_F18_n_to_F19_reaclib)*Y(F18)*Y(N)*state.rho + -screened_rates(k_F19_to_n_F18_reaclib)*Y(F19)) + + (-screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_reaclib)*Y(Ne20)) + + (-screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_reaclib)*Y(Na23)) + + (-screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*Y(H1)*state.rho + screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(F19)*Y(H1)*state.rho) + + (screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(F19)*Y(He4)*state.rho); ydot_nuc(Ne18) = - -screened_rates(k_Ne18_to_F18_reaclib)*Y(Ne18) + - (screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_reaclib)*Y(Ne18)) + - (screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_reaclib)*Y(Ne18)) + - (-screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_Ne19_to_n_Ne18_reaclib)*Y(Ne19)) + - (-screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(F18)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(He4)*Y(O15)*state.rho) + - (-screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(Na21)*Y(H1)*state.rho); + -screened_rates(k_Ne18_to_F18_beta_pos_reaclib)*Y(Ne18) + + (screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*Y(O14)*state.rho + -screened_rates(k_Ne18_to_He4_O14_reaclib)*Y(Ne18)) + + (screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*Y(H1)*state.rho + -screened_rates(k_Ne18_to_p_F17_reaclib)*Y(Ne18)) + + (-screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_Ne19_to_n_Ne18_reaclib)*Y(Ne19)) + + (-screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(F18)*Y(H1)*state.rho) + + (-screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(Ne18)*Y(N)*state.rho + screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(He4)*Y(O15)*state.rho) + + (-screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(Na21)*Y(H1)*state.rho); ydot_nuc(Ne19) = - -screened_rates(k_Ne19_to_F19_reaclib)*Y(Ne19) + - (screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_reaclib)*Y(Ne19)) + - (screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_reaclib)*Y(Ne19)) + - (screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_Ne19_to_n_Ne18_reaclib)*Y(Ne19)) + - (-screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_Ne20_to_n_Ne19_reaclib)*Y(Ne20)) + - (-screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Mg23_to_He4_Ne19_reaclib)*Y(Mg23)) + - (-screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(F19)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(He4)*Y(O16)*state.rho) + - (-screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(Na22)*Y(H1)*state.rho); + -screened_rates(k_Ne19_to_F19_beta_pos_reaclib)*Y(Ne19) + + (screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*Y(O15)*state.rho + -screened_rates(k_Ne19_to_He4_O15_reaclib)*Y(Ne19)) + + (screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*Y(H1)*state.rho + -screened_rates(k_Ne19_to_p_F18_reaclib)*Y(Ne19)) + + (screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(Ne18)*Y(N)*state.rho + -screened_rates(k_Ne19_to_n_Ne18_reaclib)*Y(Ne19)) + + (-screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_Ne20_to_n_Ne19_reaclib)*Y(Ne20)) + + (-screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Mg23_to_He4_Ne19_reaclib)*Y(Mg23)) + + (-screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(F19)*Y(H1)*state.rho) + + (-screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(Ne19)*Y(N)*state.rho + screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(He4)*Y(O16)*state.rho) + + (-screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(Na22)*Y(H1)*state.rho); ydot_nuc(Ne20) = - (screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + - (screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_reaclib)*Y(Ne20)) + - (screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_Ne20_to_n_Ne19_reaclib)*Y(Ne20)) + - (-screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(Ne20)*Y(N)*state.rho + screened_rates(k_Ne21_to_n_Ne20_reaclib)*Y(Ne21)) + - (-screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_reaclib)*Y(Na21)) + - (-screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_reaclib)*Y(Mg24)) + - (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(Ne20)*Y(N)*state.rho) + - (screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + - (-screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(C12)*Y(Ne20)*state.rho + screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(P31)*Y(H1)*state.rho) + - (-screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(C12)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(He4)*Y(Ne20)*state.rho); + (screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*Y(O16)*state.rho + -screened_rates(k_Ne20_to_He4_O16_reaclib)*Y(Ne20)) + + (screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*Y(H1)*state.rho + -screened_rates(k_Ne20_to_p_F19_reaclib)*Y(Ne20)) + + (screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(Ne19)*Y(N)*state.rho + -screened_rates(k_Ne20_to_n_Ne19_reaclib)*Y(Ne20)) + + (-screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(Ne20)*Y(N)*state.rho + screened_rates(k_Ne21_to_n_Ne20_reaclib)*Y(Ne21)) + + (-screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_reaclib)*Y(Na21)) + + (-screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_reaclib)*Y(Mg24)) + + (0.5*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(Ne20)*Y(N)*state.rho) + + (screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*Y(H1)*state.rho) + + (-screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(C12)*Y(Ne20)*state.rho + screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(P31)*Y(H1)*state.rho) + + (-screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(C12)*Y(Ne20)*state.rho + screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(He4)*Y(Ne20)*state.rho); ydot_nuc(Ne21) = - (screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne21_to_He4_O17_reaclib)*Y(Ne21)) + - (screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(Ne20)*Y(N)*state.rho + -screened_rates(k_Ne21_to_n_Ne20_reaclib)*Y(Ne21)) + - (-screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(Ne21)*Y(N)*state.rho + screened_rates(k_Ne22_to_n_Ne21_reaclib)*Y(Ne22)) + - (-screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_reaclib)*Y(Na22)) + - (-screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(He4)*Y(Ne21)*state.rho + screened_rates(k_Mg25_to_He4_Ne21_reaclib)*Y(Mg25)) + - (screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(Ne21)*Y(N)*state.rho + screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(He4)*Y(O18)*state.rho) + - (-screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(He4)*Y(Ne21)*state.rho + screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(Mg24)*Y(N)*state.rho) + - (screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(Ne21)*Y(H1)*state.rho) + - (screened_rates(k_Na21_to_Ne21_weaktab)*Y(Na21) + -screened_rates(k_Ne21_to_Na21_weaktab)*Y(Ne21)); + (screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*Y(O17)*state.rho + -screened_rates(k_Ne21_to_He4_O17_reaclib)*Y(Ne21)) + + (screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(Ne20)*Y(N)*state.rho + -screened_rates(k_Ne21_to_n_Ne20_reaclib)*Y(Ne21)) + + (-screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(Ne21)*Y(N)*state.rho + screened_rates(k_Ne22_to_n_Ne21_reaclib)*Y(Ne22)) + + (-screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_reaclib)*Y(Na22)) + + (-screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(He4)*Y(Ne21)*state.rho + screened_rates(k_Mg25_to_He4_Ne21_reaclib)*Y(Mg25)) + + (screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(Ne21)*Y(N)*state.rho + screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(He4)*Y(O18)*state.rho) + + (-screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(He4)*Y(Ne21)*state.rho + screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(Mg24)*Y(N)*state.rho) + + (screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(Ne21)*Y(H1)*state.rho) + + (screened_rates(k_Na21_to_Ne21_electron_capture_weaktab)*Y(Na21) + -screened_rates(k_Ne21_to_Na21_beta_neg_weaktab)*Y(Ne21)); ydot_nuc(Ne22) = - (screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + -screened_rates(k_Ne22_to_He4_O18_reaclib)*Y(Ne22)) + - (screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(Ne21)*Y(N)*state.rho + -screened_rates(k_Ne22_to_n_Ne21_reaclib)*Y(Ne22)) + - (-screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_reaclib)*Y(Na23)) + - (-screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(He4)*Y(Ne22)*state.rho + screened_rates(k_Mg26_to_He4_Ne22_reaclib)*Y(Mg26)) + - (screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(Ne22)*Y(H1)*state.rho) + - (screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(Mg25)*Y(N)*state.rho + -screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(He4)*Y(Ne22)*state.rho) + - (screened_rates(k_Na22_to_Ne22_weaktab)*Y(Na22) + -screened_rates(k_Ne22_to_Na22_weaktab)*Y(Ne22)); + (screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*Y(O18)*state.rho + -screened_rates(k_Ne22_to_He4_O18_reaclib)*Y(Ne22)) + + (screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(Ne21)*Y(N)*state.rho + -screened_rates(k_Ne22_to_n_Ne21_reaclib)*Y(Ne22)) + + (-screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_reaclib)*Y(Na23)) + + (-screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(He4)*Y(Ne22)*state.rho + screened_rates(k_Mg26_to_He4_Ne22_reaclib)*Y(Mg26)) + + (screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(Ne22)*Y(H1)*state.rho) + + (screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(Mg25)*Y(N)*state.rho + -screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(He4)*Y(Ne22)*state.rho) + + (screened_rates(k_Na22_to_Ne22_electron_capture_weaktab)*Y(Na22) + -screened_rates(k_Ne22_to_Na22_beta_neg_weaktab)*Y(Ne22)); ydot_nuc(Na21) = - (screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Na21_to_He4_F17_reaclib)*Y(Na21)) + - (screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + -screened_rates(k_Na21_to_p_Ne20_reaclib)*Y(Na21)) + - (-screened_rates(k_n_Na21_to_Na22_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_Na22_to_n_Na21_reaclib)*Y(Na22)) + - (-screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_Al25_to_He4_Na21_reaclib)*Y(Al25)) + - (screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(Na21)*Y(H1)*state.rho) + - (-screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(Ne21)*Y(H1)*state.rho) + - (-screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(F18)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + - (-screened_rates(k_Na21_to_Ne21_weaktab)*Y(Na21) + screened_rates(k_Ne21_to_Na21_weaktab)*Y(Ne21)); + (screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*Y(He4)*state.rho + -screened_rates(k_Na21_to_He4_F17_reaclib)*Y(Na21)) + + (screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*Y(H1)*state.rho + -screened_rates(k_Na21_to_p_Ne20_reaclib)*Y(Na21)) + + (-screened_rates(k_Na21_n_to_Na22_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_Na22_to_n_Na21_reaclib)*Y(Na22)) + + (-screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_Al25_to_He4_Na21_reaclib)*Y(Al25)) + + (screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*Y(Ne18)*state.rho + -screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(Na21)*Y(H1)*state.rho) + + (-screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(Ne21)*Y(H1)*state.rho) + + (-screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(Na21)*Y(N)*state.rho + screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(F18)*Y(He4)*state.rho) + + (-screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(He4)*Y(Na21)*state.rho + screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + + (-screened_rates(k_Na21_to_Ne21_electron_capture_weaktab)*Y(Na21) + screened_rates(k_Ne21_to_Na21_beta_neg_weaktab)*Y(Ne21)); ydot_nuc(Na22) = - (screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18_reaclib)*Y(Na22)) + - (screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21_reaclib)*Y(Na22)) + - (screened_rates(k_n_Na21_to_Na22_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_Na22_to_n_Na21_reaclib)*Y(Na22)) + - (-screened_rates(k_n_Na22_to_Na23_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_Na23_to_n_Na22_reaclib)*Y(Na23)) + - (-screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(Na22)*Y(H1)*state.rho + screened_rates(k_Mg23_to_p_Na22_reaclib)*Y(Mg23)) + - (-screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(He4)*Y(Na22)*state.rho + screened_rates(k_Al26_to_He4_Na22_reaclib)*Y(Al26)) + - (screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(Na22)*Y(H1)*state.rho) + - (-screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(Ne22)*Y(H1)*state.rho) + - (-screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(F19)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(He4)*Y(Na22)*state.rho + screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(Mg25)*Y(H1)*state.rho) + - (screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(He4)*Y(Na22)*state.rho) + - (-screened_rates(k_Na22_to_Ne22_weaktab)*Y(Na22) + screened_rates(k_Ne22_to_Na22_weaktab)*Y(Ne22)); + (screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*Y(He4)*state.rho + -screened_rates(k_Na22_to_He4_F18_reaclib)*Y(Na22)) + + (screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*Y(H1)*state.rho + -screened_rates(k_Na22_to_p_Ne21_reaclib)*Y(Na22)) + + (screened_rates(k_Na21_n_to_Na22_reaclib)*Y(Na21)*Y(N)*state.rho + -screened_rates(k_Na22_to_n_Na21_reaclib)*Y(Na22)) + + (-screened_rates(k_Na22_n_to_Na23_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_Na23_to_n_Na22_reaclib)*Y(Na23)) + + (-screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(Na22)*Y(H1)*state.rho + screened_rates(k_Mg23_to_p_Na22_reaclib)*Y(Mg23)) + + (-screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(He4)*Y(Na22)*state.rho + screened_rates(k_Al26_to_He4_Na22_reaclib)*Y(Al26)) + + (screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(Na22)*Y(H1)*state.rho) + + (-screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(Ne22)*Y(H1)*state.rho) + + (-screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(Na22)*Y(N)*state.rho + screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(F19)*Y(He4)*state.rho) + + (-screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(He4)*Y(Na22)*state.rho + screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(Mg25)*Y(H1)*state.rho) + + (screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(He4)*Y(Na22)*state.rho) + + (-screened_rates(k_Na22_to_Ne22_electron_capture_weaktab)*Y(Na22) + screened_rates(k_Ne22_to_Na22_beta_neg_weaktab)*Y(Ne22)); ydot_nuc(Na23) = - (screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Na23_to_He4_F19_reaclib)*Y(Na23)) + - (screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + -screened_rates(k_Na23_to_p_Ne22_reaclib)*Y(Na23)) + - (screened_rates(k_n_Na22_to_Na23_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_Na23_to_n_Na22_reaclib)*Y(Na23)) + - (-screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_reaclib)*Y(Mg24)) + - (-screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Al27_to_He4_Na23_reaclib)*Y(Al27)) + - (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(Mg26)*Y(H1)*state.rho) + - (screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(Na23)*Y(H1)*state.rho) + - (screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(He4)*Y(Na23)*state.rho) + - (screened_rates(k_Mg23_to_Na23_weaktab)*Y(Mg23) + -screened_rates(k_Na23_to_Mg23_weaktab)*Y(Na23)); + (screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*Y(He4)*state.rho + -screened_rates(k_Na23_to_He4_F19_reaclib)*Y(Na23)) + + (screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*Y(H1)*state.rho + -screened_rates(k_Na23_to_p_Ne22_reaclib)*Y(Na23)) + + (screened_rates(k_Na22_n_to_Na23_reaclib)*Y(Na22)*Y(N)*state.rho + -screened_rates(k_Na23_to_n_Na22_reaclib)*Y(Na23)) + + (-screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_reaclib)*Y(Mg24)) + + (-screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Al27_to_He4_Na23_reaclib)*Y(Al27)) + + (0.5*screened_rates(k_C12_C12_to_p_Na23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho + -screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*Y(H1)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(He4)*Y(Na23)*state.rho + screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(Mg26)*Y(H1)*state.rho) + + (screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(Na23)*Y(H1)*state.rho) + + (screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(He4)*Y(Na23)*state.rho) + + (screened_rates(k_Mg23_to_Na23_electron_capture_weaktab)*Y(Mg23) + -screened_rates(k_Na23_to_Mg23_beta_neg_weaktab)*Y(Na23)); ydot_nuc(Mg23) = - (screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_Mg23_to_He4_Ne19_reaclib)*Y(Mg23)) + - (screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(Na22)*Y(H1)*state.rho + -screened_rates(k_Mg23_to_p_Na22_reaclib)*Y(Mg23)) + - (-screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_Mg24_to_n_Mg23_reaclib)*Y(Mg24)) + - (-screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(Na23)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + - (-screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + - (-screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(He4)*Y(Mg23)*state.rho + screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(Al26)*Y(H1)*state.rho) + - (-screened_rates(k_Mg23_to_Na23_weaktab)*Y(Mg23) + screened_rates(k_Na23_to_Mg23_weaktab)*Y(Na23)); + (screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(He4)*Y(Ne19)*state.rho + -screened_rates(k_Mg23_to_He4_Ne19_reaclib)*Y(Mg23)) + + (screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(Na22)*Y(H1)*state.rho + -screened_rates(k_Mg23_to_p_Na22_reaclib)*Y(Mg23)) + + (-screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_Mg24_to_n_Mg23_reaclib)*Y(Mg24)) + + (-screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(Na23)*Y(H1)*state.rho) + + (-screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*Y(N)*state.rho + screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(He4)*Y(Ne20)*state.rho) + + (-screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*Y(N)*state.rho + 0.5*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*amrex::Math::powi<2>(Y(C12))*state.rho) + + (-screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(He4)*Y(Mg23)*state.rho + screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(Al26)*Y(H1)*state.rho) + + (-screened_rates(k_Mg23_to_Na23_electron_capture_weaktab)*Y(Mg23) + screened_rates(k_Na23_to_Mg23_beta_neg_weaktab)*Y(Na23)); ydot_nuc(Mg24) = - (screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_reaclib)*Y(Mg24)) + - (screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_reaclib)*Y(Mg24)) + - (screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_Mg24_to_n_Mg23_reaclib)*Y(Mg24)) + - (-screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(Mg24)*Y(N)*state.rho + screened_rates(k_Mg25_to_n_Mg24_reaclib)*Y(Mg25)) + - (-screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(Mg24)*Y(H1)*state.rho + screened_rates(k_Al25_to_p_Mg24_reaclib)*Y(Al25)) + - (-screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_reaclib)*Y(Si28)) + - (screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(He4)*Y(Ne21)*state.rho + -screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(Mg24)*Y(N)*state.rho) + - (screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + - (screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho); + (screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*Y(Ne20)*state.rho + -screened_rates(k_Mg24_to_He4_Ne20_reaclib)*Y(Mg24)) + + (screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*Y(H1)*state.rho + -screened_rates(k_Mg24_to_p_Na23_reaclib)*Y(Mg24)) + + (screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*Y(N)*state.rho + -screened_rates(k_Mg24_to_n_Mg23_reaclib)*Y(Mg24)) + + (-screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(Mg24)*Y(N)*state.rho + screened_rates(k_Mg25_to_n_Mg24_reaclib)*Y(Mg25)) + + (-screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(Mg24)*Y(H1)*state.rho + screened_rates(k_Al25_to_p_Mg24_reaclib)*Y(Al25)) + + (-screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + screened_rates(k_Si28_to_He4_Mg24_reaclib)*Y(Si28)) + + (screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(He4)*Y(Ne21)*state.rho + -screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(Mg24)*Y(N)*state.rho) + + (screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*Y(H1)*state.rho) + + (screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho); ydot_nuc(Mg25) = - (screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(He4)*Y(Ne21)*state.rho + -screened_rates(k_Mg25_to_He4_Ne21_reaclib)*Y(Mg25)) + - (screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(Mg24)*Y(N)*state.rho + -screened_rates(k_Mg25_to_n_Mg24_reaclib)*Y(Mg25)) + - (-screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(Mg25)*Y(N)*state.rho + screened_rates(k_Mg26_to_n_Mg25_reaclib)*Y(Mg26)) + - (-screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(Mg25)*Y(H1)*state.rho + screened_rates(k_Al26_to_p_Mg25_reaclib)*Y(Al26)) + - (-screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(He4)*Y(Mg25)*state.rho + screened_rates(k_Si29_to_He4_Mg25_reaclib)*Y(Si29)) + - (screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(He4)*Y(Na22)*state.rho + -screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(Mg25)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(Mg25)*Y(N)*state.rho + screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(He4)*Y(Ne22)*state.rho) + - (-screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(He4)*Y(Mg25)*state.rho + screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(Si28)*Y(N)*state.rho) + - (screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(Mg25)*Y(H1)*state.rho) + - (screened_rates(k_Al25_to_Mg25_weaktab)*Y(Al25) + -screened_rates(k_Mg25_to_Al25_weaktab)*Y(Mg25)); + (screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(He4)*Y(Ne21)*state.rho + -screened_rates(k_Mg25_to_He4_Ne21_reaclib)*Y(Mg25)) + + (screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(Mg24)*Y(N)*state.rho + -screened_rates(k_Mg25_to_n_Mg24_reaclib)*Y(Mg25)) + + (-screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(Mg25)*Y(N)*state.rho + screened_rates(k_Mg26_to_n_Mg25_reaclib)*Y(Mg26)) + + (-screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(Mg25)*Y(H1)*state.rho + screened_rates(k_Al26_to_p_Mg25_reaclib)*Y(Al26)) + + (-screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(He4)*Y(Mg25)*state.rho + screened_rates(k_Si29_to_He4_Mg25_reaclib)*Y(Si29)) + + (screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(He4)*Y(Na22)*state.rho + -screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(Mg25)*Y(H1)*state.rho) + + (-screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(Mg25)*Y(N)*state.rho + screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(He4)*Y(Ne22)*state.rho) + + (-screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(He4)*Y(Mg25)*state.rho + screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(Si28)*Y(N)*state.rho) + + (screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(Mg25)*Y(H1)*state.rho) + + (screened_rates(k_Al25_to_Mg25_electron_capture_weaktab)*Y(Al25) + -screened_rates(k_Mg25_to_Al25_beta_neg_weaktab)*Y(Mg25)); ydot_nuc(Mg26) = - (screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(He4)*Y(Ne22)*state.rho + -screened_rates(k_Mg26_to_He4_Ne22_reaclib)*Y(Mg26)) + - (screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(Mg25)*Y(N)*state.rho + -screened_rates(k_Mg26_to_n_Mg25_reaclib)*Y(Mg26)) + - (-screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(Mg26)*Y(H1)*state.rho + screened_rates(k_Al27_to_p_Mg26_reaclib)*Y(Al27)) + - (-screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(He4)*Y(Mg26)*state.rho + screened_rates(k_Si30_to_He4_Mg26_reaclib)*Y(Si30)) + - (screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(He4)*Y(Na23)*state.rho + -screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(Mg26)*Y(H1)*state.rho) + - (-screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(He4)*Y(Mg26)*state.rho + screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(Si29)*Y(N)*state.rho) + - (screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(Mg26)*Y(H1)*state.rho) + - (screened_rates(k_Al26_to_Mg26_weaktab)*Y(Al26) + -screened_rates(k_Mg26_to_Al26_weaktab)*Y(Mg26)); + (screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(He4)*Y(Ne22)*state.rho + -screened_rates(k_Mg26_to_He4_Ne22_reaclib)*Y(Mg26)) + + (screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(Mg25)*Y(N)*state.rho + -screened_rates(k_Mg26_to_n_Mg25_reaclib)*Y(Mg26)) + + (-screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(Mg26)*Y(H1)*state.rho + screened_rates(k_Al27_to_p_Mg26_reaclib)*Y(Al27)) + + (-screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(He4)*Y(Mg26)*state.rho + screened_rates(k_Si30_to_He4_Mg26_reaclib)*Y(Si30)) + + (screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(He4)*Y(Na23)*state.rho + -screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(Mg26)*Y(H1)*state.rho) + + (-screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(He4)*Y(Mg26)*state.rho + screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(Si29)*Y(N)*state.rho) + + (screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(Mg26)*Y(H1)*state.rho) + + (screened_rates(k_Al26_to_Mg26_electron_capture_weaktab)*Y(Al26) + -screened_rates(k_Mg26_to_Al26_beta_neg_weaktab)*Y(Mg26)); ydot_nuc(Al25) = - (screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_Al25_to_He4_Na21_reaclib)*Y(Al25)) + - (screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(Mg24)*Y(H1)*state.rho + -screened_rates(k_Al25_to_p_Mg24_reaclib)*Y(Al25)) + - (-screened_rates(k_n_Al25_to_Al26_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_Al26_to_n_Al25_reaclib)*Y(Al26)) + - (-screened_rates(k_He4_Al25_to_P29_reaclib)*Y(Al25)*Y(He4)*state.rho + screened_rates(k_P29_to_He4_Al25_reaclib)*Y(P29)) + - (-screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(Mg25)*Y(H1)*state.rho) + - (-screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(He4)*Y(Na22)*state.rho) + - (-screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(Al25)*Y(He4)*state.rho + screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(Si28)*Y(H1)*state.rho) + - (-screened_rates(k_Al25_to_Mg25_weaktab)*Y(Al25) + screened_rates(k_Mg25_to_Al25_weaktab)*Y(Mg25)); + (screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(He4)*Y(Na21)*state.rho + -screened_rates(k_Al25_to_He4_Na21_reaclib)*Y(Al25)) + + (screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(Mg24)*Y(H1)*state.rho + -screened_rates(k_Al25_to_p_Mg24_reaclib)*Y(Al25)) + + (-screened_rates(k_Al25_n_to_Al26_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_Al26_to_n_Al25_reaclib)*Y(Al26)) + + (-screened_rates(k_Al25_He4_to_P29_reaclib)*Y(Al25)*Y(He4)*state.rho + screened_rates(k_P29_to_He4_Al25_reaclib)*Y(P29)) + + (-screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(Mg25)*Y(H1)*state.rho) + + (-screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(Al25)*Y(N)*state.rho + screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(He4)*Y(Na22)*state.rho) + + (-screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(Al25)*Y(He4)*state.rho + screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(Si28)*Y(H1)*state.rho) + + (-screened_rates(k_Al25_to_Mg25_electron_capture_weaktab)*Y(Al25) + screened_rates(k_Mg25_to_Al25_beta_neg_weaktab)*Y(Mg25)); ydot_nuc(Al26) = - (screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(He4)*Y(Na22)*state.rho + -screened_rates(k_Al26_to_He4_Na22_reaclib)*Y(Al26)) + - (screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(Mg25)*Y(H1)*state.rho + -screened_rates(k_Al26_to_p_Mg25_reaclib)*Y(Al26)) + - (screened_rates(k_n_Al25_to_Al26_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_Al26_to_n_Al25_reaclib)*Y(Al26)) + - (-screened_rates(k_n_Al26_to_Al27_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_Al27_to_n_Al26_reaclib)*Y(Al27)) + - (-screened_rates(k_He4_Al26_to_P30_reaclib)*Y(Al26)*Y(He4)*state.rho + screened_rates(k_P30_to_He4_Al26_reaclib)*Y(P30)) + - (screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(He4)*Y(Mg23)*state.rho + -screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(Al26)*Y(H1)*state.rho) + - (-screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(Mg26)*Y(H1)*state.rho) + - (-screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(He4)*Y(Na23)*state.rho) + - (-screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(Al26)*Y(He4)*state.rho + screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(Si29)*Y(H1)*state.rho) + - (screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(Al26)*Y(He4)*state.rho) + - (-screened_rates(k_Al26_to_Mg26_weaktab)*Y(Al26) + screened_rates(k_Mg26_to_Al26_weaktab)*Y(Mg26)); + (screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(He4)*Y(Na22)*state.rho + -screened_rates(k_Al26_to_He4_Na22_reaclib)*Y(Al26)) + + (screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(Mg25)*Y(H1)*state.rho + -screened_rates(k_Al26_to_p_Mg25_reaclib)*Y(Al26)) + + (screened_rates(k_Al25_n_to_Al26_reaclib)*Y(Al25)*Y(N)*state.rho + -screened_rates(k_Al26_to_n_Al25_reaclib)*Y(Al26)) + + (-screened_rates(k_Al26_n_to_Al27_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_Al27_to_n_Al26_reaclib)*Y(Al27)) + + (-screened_rates(k_Al26_He4_to_P30_reaclib)*Y(Al26)*Y(He4)*state.rho + screened_rates(k_P30_to_He4_Al26_reaclib)*Y(P30)) + + (screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(He4)*Y(Mg23)*state.rho + -screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(Al26)*Y(H1)*state.rho) + + (-screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(Mg26)*Y(H1)*state.rho) + + (-screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(Al26)*Y(N)*state.rho + screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(He4)*Y(Na23)*state.rho) + + (-screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(Al26)*Y(He4)*state.rho + screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(Si29)*Y(H1)*state.rho) + + (screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(Al26)*Y(He4)*state.rho) + + (-screened_rates(k_Al26_to_Mg26_electron_capture_weaktab)*Y(Al26) + screened_rates(k_Mg26_to_Al26_beta_neg_weaktab)*Y(Mg26)); ydot_nuc(Al27) = - (screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + -screened_rates(k_Al27_to_He4_Na23_reaclib)*Y(Al27)) + - (screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(Mg26)*Y(H1)*state.rho + -screened_rates(k_Al27_to_p_Mg26_reaclib)*Y(Al27)) + - (screened_rates(k_n_Al26_to_Al27_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_Al27_to_n_Al26_reaclib)*Y(Al27)) + - (-screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_reaclib)*Y(Si28)) + - (-screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_reaclib)*Y(P31)) + - (screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(Al27)*Y(H1)*state.rho) + - (-screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + - (-screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(Si30)*Y(H1)*state.rho) + - (screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(Al27)*Y(He4)*state.rho); + (screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*Y(Na23)*state.rho + -screened_rates(k_Al27_to_He4_Na23_reaclib)*Y(Al27)) + + (screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(Mg26)*Y(H1)*state.rho + -screened_rates(k_Al27_to_p_Mg26_reaclib)*Y(Al27)) + + (screened_rates(k_Al26_n_to_Al27_reaclib)*Y(Al26)*Y(N)*state.rho + -screened_rates(k_Al27_to_n_Al26_reaclib)*Y(Al27)) + + (-screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_reaclib)*Y(Si28)) + + (-screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_reaclib)*Y(P31)) + + (screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*Y(O16)*state.rho + -screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(Al27)*Y(H1)*state.rho) + + (-screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*Y(H1)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*Y(Mg24)*state.rho) + + (-screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(Al27)*Y(He4)*state.rho + screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(Si30)*Y(H1)*state.rho) + + (screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(Al27)*Y(He4)*state.rho); ydot_nuc(Si28) = - (screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_reaclib)*Y(Si28)) + - (screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_reaclib)*Y(Si28)) + - (-screened_rates(k_n_Si28_to_Si29_reaclib)*Y(Si28)*Y(N)*state.rho + screened_rates(k_Si29_to_n_Si28_reaclib)*Y(Si29)) + - (-screened_rates(k_p_Si28_to_P29_reaclib)*Y(Si28)*Y(H1)*state.rho + screened_rates(k_P29_to_p_Si28_reaclib)*Y(P29)) + - (-screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_reaclib)*Y(S32)) + - (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(C12)*Y(Ne20)*state.rho + -screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(He4)*Y(Mg25)*state.rho + -screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(Si28)*Y(N)*state.rho) + - (screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(Al25)*Y(He4)*state.rho + -screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(Si28)*Y(H1)*state.rho) + - (screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); + (screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*Y(Mg24)*state.rho + -screened_rates(k_Si28_to_He4_Mg24_reaclib)*Y(Si28)) + + (screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*Y(H1)*state.rho + -screened_rates(k_Si28_to_p_Al27_reaclib)*Y(Si28)) + + (-screened_rates(k_Si28_n_to_Si29_reaclib)*Y(Si28)*Y(N)*state.rho + screened_rates(k_Si29_to_n_Si28_reaclib)*Y(Si29)) + + (-screened_rates(k_Si28_p_to_P29_reaclib)*Y(Si28)*Y(H1)*state.rho + screened_rates(k_P29_to_p_Si28_reaclib)*Y(P29)) + + (-screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + screened_rates(k_S32_to_He4_Si28_reaclib)*Y(S32)) + + (0.5*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(C12)*Y(Ne20)*state.rho + -screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(He4)*Y(Mg25)*state.rho + -screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(Si28)*Y(N)*state.rho) + + (screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(Al25)*Y(He4)*state.rho + -screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(Si28)*Y(H1)*state.rho) + + (screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho); ydot_nuc(Si29) = - (screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(He4)*Y(Mg25)*state.rho + -screened_rates(k_Si29_to_He4_Mg25_reaclib)*Y(Si29)) + - (screened_rates(k_n_Si28_to_Si29_reaclib)*Y(Si28)*Y(N)*state.rho + -screened_rates(k_Si29_to_n_Si28_reaclib)*Y(Si29)) + - (-screened_rates(k_n_Si29_to_Si30_reaclib)*Y(Si29)*Y(N)*state.rho + screened_rates(k_Si30_to_n_Si29_reaclib)*Y(Si30)) + - (-screened_rates(k_p_Si29_to_P30_reaclib)*Y(Si29)*Y(H1)*state.rho + screened_rates(k_P30_to_p_Si29_reaclib)*Y(P30)) + - (-screened_rates(k_He4_Si29_to_S33_reaclib)*Y(He4)*Y(Si29)*state.rho + screened_rates(k_S33_to_He4_Si29_reaclib)*Y(S33)) + - (screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(He4)*Y(Mg26)*state.rho + -screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(Si29)*Y(N)*state.rho) + - (screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(Al26)*Y(He4)*state.rho + -screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(Si29)*Y(H1)*state.rho) + - (screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(Si29)*Y(H1)*state.rho) + - (screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(He4)*Y(Si29)*state.rho) + - (screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(S32)*Y(N)*state.rho + -screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(He4)*Y(Si29)*state.rho) + - (screened_rates(k_P29_to_Si29_weaktab)*Y(P29) + -screened_rates(k_Si29_to_P29_weaktab)*Y(Si29)); + (screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(He4)*Y(Mg25)*state.rho + -screened_rates(k_Si29_to_He4_Mg25_reaclib)*Y(Si29)) + + (screened_rates(k_Si28_n_to_Si29_reaclib)*Y(Si28)*Y(N)*state.rho + -screened_rates(k_Si29_to_n_Si28_reaclib)*Y(Si29)) + + (-screened_rates(k_Si29_n_to_Si30_reaclib)*Y(Si29)*Y(N)*state.rho + screened_rates(k_Si30_to_n_Si29_reaclib)*Y(Si30)) + + (-screened_rates(k_Si29_p_to_P30_reaclib)*Y(Si29)*Y(H1)*state.rho + screened_rates(k_P30_to_p_Si29_reaclib)*Y(P30)) + + (-screened_rates(k_Si29_He4_to_S33_reaclib)*Y(He4)*Y(Si29)*state.rho + screened_rates(k_S33_to_He4_Si29_reaclib)*Y(S33)) + + (screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(He4)*Y(Mg26)*state.rho + -screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(Si29)*Y(N)*state.rho) + + (screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(Al26)*Y(He4)*state.rho + -screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(Si29)*Y(H1)*state.rho) + + (screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(Si29)*Y(H1)*state.rho) + + (screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(He4)*Y(Si29)*state.rho) + + (screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(S32)*Y(N)*state.rho + -screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(He4)*Y(Si29)*state.rho) + + (screened_rates(k_P29_to_Si29_electron_capture_weaktab)*Y(P29) + -screened_rates(k_Si29_to_P29_beta_neg_weaktab)*Y(Si29)); ydot_nuc(Si30) = - (screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(He4)*Y(Mg26)*state.rho + -screened_rates(k_Si30_to_He4_Mg26_reaclib)*Y(Si30)) + - (screened_rates(k_n_Si29_to_Si30_reaclib)*Y(Si29)*Y(N)*state.rho + -screened_rates(k_Si30_to_n_Si29_reaclib)*Y(Si30)) + - (-screened_rates(k_n_Si30_to_Si31_reaclib)*Y(Si30)*Y(N)*state.rho + screened_rates(k_Si31_to_n_Si30_reaclib)*Y(Si31)) + - (-screened_rates(k_p_Si30_to_P31_reaclib)*Y(Si30)*Y(H1)*state.rho + screened_rates(k_P31_to_p_Si30_reaclib)*Y(P31)) + - (-screened_rates(k_He4_Si30_to_S34_reaclib)*Y(He4)*Y(Si30)*state.rho + screened_rates(k_S34_to_He4_Si30_reaclib)*Y(S34)) + - (screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(Al27)*Y(He4)*state.rho + -screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(Si30)*Y(H1)*state.rho) + - (screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(Si30)*Y(H1)*state.rho) + - (screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(P33)*Y(H1)*state.rho + -screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(He4)*Y(Si30)*state.rho) + - (screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(He4)*Y(Si30)*state.rho) + - (screened_rates(k_P30_to_Si30_weaktab)*Y(P30) + -screened_rates(k_Si30_to_P30_weaktab)*Y(Si30)); + (screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(He4)*Y(Mg26)*state.rho + -screened_rates(k_Si30_to_He4_Mg26_reaclib)*Y(Si30)) + + (screened_rates(k_Si29_n_to_Si30_reaclib)*Y(Si29)*Y(N)*state.rho + -screened_rates(k_Si30_to_n_Si29_reaclib)*Y(Si30)) + + (-screened_rates(k_Si30_n_to_Si31_reaclib)*Y(Si30)*Y(N)*state.rho + screened_rates(k_Si31_to_n_Si30_reaclib)*Y(Si31)) + + (-screened_rates(k_Si30_p_to_P31_reaclib)*Y(Si30)*Y(H1)*state.rho + screened_rates(k_P31_to_p_Si30_reaclib)*Y(P31)) + + (-screened_rates(k_Si30_He4_to_S34_reaclib)*Y(He4)*Y(Si30)*state.rho + screened_rates(k_S34_to_He4_Si30_reaclib)*Y(S34)) + + (screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(Al27)*Y(He4)*state.rho + -screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(Si30)*Y(H1)*state.rho) + + (screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(Si30)*Y(H1)*state.rho) + + (screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(P33)*Y(H1)*state.rho + -screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(He4)*Y(Si30)*state.rho) + + (screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(He4)*Y(Si30)*state.rho) + + (screened_rates(k_P30_to_Si30_electron_capture_weaktab)*Y(P30) + -screened_rates(k_Si30_to_P30_beta_neg_weaktab)*Y(Si30)); ydot_nuc(Si31) = - (screened_rates(k_n_Si30_to_Si31_reaclib)*Y(Si30)*Y(N)*state.rho + -screened_rates(k_Si31_to_n_Si30_reaclib)*Y(Si31)) + - (-screened_rates(k_n_Si31_to_Si32_reaclib)*Y(Si31)*Y(N)*state.rho + screened_rates(k_Si32_to_n_Si31_reaclib)*Y(Si32)) + - (-screened_rates(k_p_Si31_to_P32_reaclib)*Y(Si31)*Y(H1)*state.rho + screened_rates(k_P32_to_p_Si31_reaclib)*Y(P32)) + - (-screened_rates(k_He4_Si31_to_S35_reaclib)*Y(He4)*Y(Si31)*state.rho + screened_rates(k_S35_to_He4_Si31_reaclib)*Y(S35)) + - (-screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(Si31)*Y(H1)*state.rho + screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(P31)*Y(N)*state.rho) + - (-screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(He4)*Y(Si31)*state.rho + screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(S34)*Y(N)*state.rho) + - (-screened_rates(k_Si31_to_P31_weaktab)*Y(Si31) + screened_rates(k_P31_to_Si31_weaktab)*Y(P31)); + (screened_rates(k_Si30_n_to_Si31_reaclib)*Y(Si30)*Y(N)*state.rho + -screened_rates(k_Si31_to_n_Si30_reaclib)*Y(Si31)) + + (-screened_rates(k_Si31_n_to_Si32_reaclib)*Y(Si31)*Y(N)*state.rho + screened_rates(k_Si32_to_n_Si31_reaclib)*Y(Si32)) + + (-screened_rates(k_Si31_p_to_P32_reaclib)*Y(Si31)*Y(H1)*state.rho + screened_rates(k_P32_to_p_Si31_reaclib)*Y(P32)) + + (-screened_rates(k_Si31_He4_to_S35_reaclib)*Y(He4)*Y(Si31)*state.rho + screened_rates(k_S35_to_He4_Si31_reaclib)*Y(S35)) + + (-screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(Si31)*Y(H1)*state.rho + screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(P31)*Y(N)*state.rho) + + (-screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(He4)*Y(Si31)*state.rho + screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(S34)*Y(N)*state.rho) + + (-screened_rates(k_Si31_to_P31_beta_neg_weaktab)*Y(Si31) + screened_rates(k_P31_to_Si31_electron_capture_weaktab)*Y(P31)); ydot_nuc(Si32) = - (screened_rates(k_n_Si31_to_Si32_reaclib)*Y(Si31)*Y(N)*state.rho + -screened_rates(k_Si32_to_n_Si31_reaclib)*Y(Si32)) + - (-screened_rates(k_p_Si32_to_P33_reaclib)*Y(Si32)*Y(H1)*state.rho + screened_rates(k_P33_to_p_Si32_reaclib)*Y(P33)) + - (-screened_rates(k_He4_Si32_to_S36_reaclib)*Y(He4)*Y(Si32)*state.rho + screened_rates(k_S36_to_He4_Si32_reaclib)*Y(S36)) + - (screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(P32)*Y(N)*state.rho + -screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(Si32)*Y(H1)*state.rho) + - (screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(S35)*Y(N)*state.rho + -screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(He4)*Y(Si32)*state.rho) + - (-screened_rates(k_Si32_to_P32_weaktab)*Y(Si32) + screened_rates(k_P32_to_Si32_weaktab)*Y(P32)); + (screened_rates(k_Si31_n_to_Si32_reaclib)*Y(Si31)*Y(N)*state.rho + -screened_rates(k_Si32_to_n_Si31_reaclib)*Y(Si32)) + + (-screened_rates(k_Si32_p_to_P33_reaclib)*Y(Si32)*Y(H1)*state.rho + screened_rates(k_P33_to_p_Si32_reaclib)*Y(P33)) + + (-screened_rates(k_Si32_He4_to_S36_reaclib)*Y(He4)*Y(Si32)*state.rho + screened_rates(k_S36_to_He4_Si32_reaclib)*Y(S36)) + + (screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(P32)*Y(N)*state.rho + -screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(Si32)*Y(H1)*state.rho) + + (screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(S35)*Y(N)*state.rho + -screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(He4)*Y(Si32)*state.rho) + + (-screened_rates(k_Si32_to_P32_beta_neg_weaktab)*Y(Si32) + screened_rates(k_P32_to_Si32_electron_capture_weaktab)*Y(P32)); ydot_nuc(P29) = - (screened_rates(k_He4_Al25_to_P29_reaclib)*Y(Al25)*Y(He4)*state.rho + -screened_rates(k_P29_to_He4_Al25_reaclib)*Y(P29)) + - (screened_rates(k_p_Si28_to_P29_reaclib)*Y(Si28)*Y(H1)*state.rho + -screened_rates(k_P29_to_p_Si28_reaclib)*Y(P29)) + - (-screened_rates(k_n_P29_to_P30_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_P30_to_n_P29_reaclib)*Y(P30)) + - (-screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(He4)*Y(P29)*state.rho + screened_rates(k_Cl33_to_He4_P29_reaclib)*Y(Cl33)) + - (-screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(Si29)*Y(H1)*state.rho) + - (-screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(Al26)*Y(He4)*state.rho) + - (-screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(He4)*Y(P29)*state.rho + screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(S32)*Y(H1)*state.rho) + - (-screened_rates(k_P29_to_Si29_weaktab)*Y(P29) + screened_rates(k_Si29_to_P29_weaktab)*Y(Si29)); + (screened_rates(k_Al25_He4_to_P29_reaclib)*Y(Al25)*Y(He4)*state.rho + -screened_rates(k_P29_to_He4_Al25_reaclib)*Y(P29)) + + (screened_rates(k_Si28_p_to_P29_reaclib)*Y(Si28)*Y(H1)*state.rho + -screened_rates(k_P29_to_p_Si28_reaclib)*Y(P29)) + + (-screened_rates(k_P29_n_to_P30_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_P30_to_n_P29_reaclib)*Y(P30)) + + (-screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(He4)*Y(P29)*state.rho + screened_rates(k_Cl33_to_He4_P29_reaclib)*Y(Cl33)) + + (-screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(Si29)*Y(H1)*state.rho) + + (-screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(P29)*Y(N)*state.rho + screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(Al26)*Y(He4)*state.rho) + + (-screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(He4)*Y(P29)*state.rho + screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(S32)*Y(H1)*state.rho) + + (-screened_rates(k_P29_to_Si29_electron_capture_weaktab)*Y(P29) + screened_rates(k_Si29_to_P29_beta_neg_weaktab)*Y(Si29)); ydot_nuc(P30) = - (screened_rates(k_He4_Al26_to_P30_reaclib)*Y(Al26)*Y(He4)*state.rho + -screened_rates(k_P30_to_He4_Al26_reaclib)*Y(P30)) + - (screened_rates(k_p_Si29_to_P30_reaclib)*Y(Si29)*Y(H1)*state.rho + -screened_rates(k_P30_to_p_Si29_reaclib)*Y(P30)) + - (screened_rates(k_n_P29_to_P30_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_P30_to_n_P29_reaclib)*Y(P30)) + - (-screened_rates(k_n_P30_to_P31_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_P31_to_n_P30_reaclib)*Y(P31)) + - (-screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(He4)*Y(P30)*state.rho + screened_rates(k_Cl34_to_He4_P30_reaclib)*Y(Cl34)) + - (-screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(Si30)*Y(H1)*state.rho) + - (-screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(Al27)*Y(He4)*state.rho) + - (-screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(He4)*Y(P30)*state.rho + screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(S33)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(He4)*Y(P30)*state.rho) + - (-screened_rates(k_P30_to_Si30_weaktab)*Y(P30) + screened_rates(k_Si30_to_P30_weaktab)*Y(Si30)); + (screened_rates(k_Al26_He4_to_P30_reaclib)*Y(Al26)*Y(He4)*state.rho + -screened_rates(k_P30_to_He4_Al26_reaclib)*Y(P30)) + + (screened_rates(k_Si29_p_to_P30_reaclib)*Y(Si29)*Y(H1)*state.rho + -screened_rates(k_P30_to_p_Si29_reaclib)*Y(P30)) + + (screened_rates(k_P29_n_to_P30_reaclib)*Y(P29)*Y(N)*state.rho + -screened_rates(k_P30_to_n_P29_reaclib)*Y(P30)) + + (-screened_rates(k_P30_n_to_P31_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_P31_to_n_P30_reaclib)*Y(P31)) + + (-screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(He4)*Y(P30)*state.rho + screened_rates(k_Cl34_to_He4_P30_reaclib)*Y(Cl34)) + + (-screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(Si30)*Y(H1)*state.rho) + + (-screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(P30)*Y(N)*state.rho + screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(Al27)*Y(He4)*state.rho) + + (-screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(He4)*Y(P30)*state.rho + screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(S33)*Y(H1)*state.rho) + + (screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(He4)*Y(P30)*state.rho) + + (-screened_rates(k_P30_to_Si30_electron_capture_weaktab)*Y(P30) + screened_rates(k_Si30_to_P30_beta_neg_weaktab)*Y(Si30)); ydot_nuc(P31) = - (screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + -screened_rates(k_P31_to_He4_Al27_reaclib)*Y(P31)) + - (screened_rates(k_p_Si30_to_P31_reaclib)*Y(Si30)*Y(H1)*state.rho + -screened_rates(k_P31_to_p_Si30_reaclib)*Y(P31)) + - (screened_rates(k_n_P30_to_P31_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_P31_to_n_P30_reaclib)*Y(P31)) + - (-screened_rates(k_n_P31_to_P32_reaclib)*Y(P31)*Y(N)*state.rho + screened_rates(k_P32_to_n_P31_reaclib)*Y(P32)) + - (-screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_reaclib)*Y(S32)) + - (-screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(He4)*Y(P31)*state.rho + screened_rates(k_Cl35_to_He4_P31_reaclib)*Y(Cl35)) + - (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(P31)*Y(H1)*state.rho) + - (screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(C12)*Y(Ne20)*state.rho + -screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(P31)*Y(H1)*state.rho) + - (screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(Si31)*Y(H1)*state.rho + -screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(P31)*Y(N)*state.rho) + - (-screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho) + - (-screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(He4)*Y(P31)*state.rho + screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(S34)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(He4)*Y(P31)*state.rho) + - (screened_rates(k_Si31_to_P31_weaktab)*Y(Si31) + -screened_rates(k_P31_to_Si31_weaktab)*Y(P31)); + (screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*Y(He4)*state.rho + -screened_rates(k_P31_to_He4_Al27_reaclib)*Y(P31)) + + (screened_rates(k_Si30_p_to_P31_reaclib)*Y(Si30)*Y(H1)*state.rho + -screened_rates(k_P31_to_p_Si30_reaclib)*Y(P31)) + + (screened_rates(k_P30_n_to_P31_reaclib)*Y(P30)*Y(N)*state.rho + -screened_rates(k_P31_to_n_P30_reaclib)*Y(P31)) + + (-screened_rates(k_P31_n_to_P32_reaclib)*Y(P31)*Y(N)*state.rho + screened_rates(k_P32_to_n_P31_reaclib)*Y(P32)) + + (-screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_reaclib)*Y(S32)) + + (-screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(He4)*Y(P31)*state.rho + screened_rates(k_Cl35_to_He4_P31_reaclib)*Y(Cl35)) + + (0.5*screened_rates(k_O16_O16_to_p_P31_reaclib)*amrex::Math::powi<2>(Y(O16))*state.rho + -screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(P31)*Y(H1)*state.rho) + + (screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(C12)*Y(Ne20)*state.rho + -screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(P31)*Y(H1)*state.rho) + + (screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(Si31)*Y(H1)*state.rho + -screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(P31)*Y(N)*state.rho) + + (-screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*Y(H1)*state.rho + screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*Y(Si28)*state.rho) + + (-screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(He4)*Y(P31)*state.rho + screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(S34)*Y(H1)*state.rho) + + (screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(He4)*Y(P31)*state.rho) + + (screened_rates(k_Si31_to_P31_beta_neg_weaktab)*Y(Si31) + -screened_rates(k_P31_to_Si31_electron_capture_weaktab)*Y(P31)); ydot_nuc(P32) = - (screened_rates(k_p_Si31_to_P32_reaclib)*Y(Si31)*Y(H1)*state.rho + -screened_rates(k_P32_to_p_Si31_reaclib)*Y(P32)) + - (screened_rates(k_n_P31_to_P32_reaclib)*Y(P31)*Y(N)*state.rho + -screened_rates(k_P32_to_n_P31_reaclib)*Y(P32)) + - (-screened_rates(k_n_P32_to_P33_reaclib)*Y(P32)*Y(N)*state.rho + screened_rates(k_P33_to_n_P32_reaclib)*Y(P33)) + - (-screened_rates(k_p_P32_to_S33_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_S33_to_p_P32_reaclib)*Y(S33)) + - (-screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(He4)*Y(P32)*state.rho + screened_rates(k_Cl36_to_He4_P32_reaclib)*Y(Cl36)) + - (-screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(P32)*Y(N)*state.rho + screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(Si32)*Y(H1)*state.rho) + - (-screened_rates(k_p_P32_to_n_S32_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_n_S32_to_p_P32_reaclib)*Y(S32)*Y(N)*state.rho) + - (-screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(He4)*Y(Si29)*state.rho) + - (screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(S35)*Y(H1)*state.rho + -screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(He4)*Y(P32)*state.rho) + - (screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(He4)*Y(P32)*state.rho) + - (-screened_rates(k_P32_to_S32_weaktab)*Y(P32) + screened_rates(k_S32_to_P32_weaktab)*Y(S32)) + - (screened_rates(k_Si32_to_P32_weaktab)*Y(Si32) + -screened_rates(k_P32_to_Si32_weaktab)*Y(P32)); + (screened_rates(k_Si31_p_to_P32_reaclib)*Y(Si31)*Y(H1)*state.rho + -screened_rates(k_P32_to_p_Si31_reaclib)*Y(P32)) + + (screened_rates(k_P31_n_to_P32_reaclib)*Y(P31)*Y(N)*state.rho + -screened_rates(k_P32_to_n_P31_reaclib)*Y(P32)) + + (-screened_rates(k_P32_n_to_P33_reaclib)*Y(P32)*Y(N)*state.rho + screened_rates(k_P33_to_n_P32_reaclib)*Y(P33)) + + (-screened_rates(k_P32_p_to_S33_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_S33_to_p_P32_reaclib)*Y(S33)) + + (-screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(He4)*Y(P32)*state.rho + screened_rates(k_Cl36_to_He4_P32_reaclib)*Y(Cl36)) + + (-screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(P32)*Y(N)*state.rho + screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(Si32)*Y(H1)*state.rho) + + (-screened_rates(k_P32_p_to_n_S32_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_S32_n_to_p_P32_reaclib)*Y(S32)*Y(N)*state.rho) + + (-screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(P32)*Y(H1)*state.rho + screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(He4)*Y(Si29)*state.rho) + + (screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(S35)*Y(H1)*state.rho + -screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(He4)*Y(P32)*state.rho) + + (screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(He4)*Y(P32)*state.rho) + + (-screened_rates(k_P32_to_S32_beta_neg_weaktab)*Y(P32) + screened_rates(k_S32_to_P32_electron_capture_weaktab)*Y(S32)) + + (screened_rates(k_Si32_to_P32_beta_neg_weaktab)*Y(Si32) + -screened_rates(k_P32_to_Si32_electron_capture_weaktab)*Y(P32)); ydot_nuc(P33) = - (screened_rates(k_p_Si32_to_P33_reaclib)*Y(Si32)*Y(H1)*state.rho + -screened_rates(k_P33_to_p_Si32_reaclib)*Y(P33)) + - (screened_rates(k_n_P32_to_P33_reaclib)*Y(P32)*Y(N)*state.rho + -screened_rates(k_P33_to_n_P32_reaclib)*Y(P33)) + - (-screened_rates(k_p_P33_to_S34_reaclib)*Y(P33)*Y(H1)*state.rho + screened_rates(k_S34_to_p_P33_reaclib)*Y(S34)) + - (-screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(He4)*Y(P33)*state.rho + screened_rates(k_Cl37_to_He4_P33_reaclib)*Y(Cl37)) + - (-screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(P33)*Y(H1)*state.rho + screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(He4)*Y(Si30)*state.rho) + - (screened_rates(k_n_S33_to_p_P33_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_p_P33_to_n_S33_reaclib)*Y(P33)*Y(H1)*state.rho) + - (screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(S36)*Y(H1)*state.rho + -screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(He4)*Y(P33)*state.rho) + - (screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(He4)*Y(P33)*state.rho) + - (-screened_rates(k_P33_to_S33_weaktab)*Y(P33) + screened_rates(k_S33_to_P33_weaktab)*Y(S33)); + (screened_rates(k_Si32_p_to_P33_reaclib)*Y(Si32)*Y(H1)*state.rho + -screened_rates(k_P33_to_p_Si32_reaclib)*Y(P33)) + + (screened_rates(k_P32_n_to_P33_reaclib)*Y(P32)*Y(N)*state.rho + -screened_rates(k_P33_to_n_P32_reaclib)*Y(P33)) + + (-screened_rates(k_P33_p_to_S34_reaclib)*Y(P33)*Y(H1)*state.rho + screened_rates(k_S34_to_p_P33_reaclib)*Y(S34)) + + (-screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(He4)*Y(P33)*state.rho + screened_rates(k_Cl37_to_He4_P33_reaclib)*Y(Cl37)) + + (-screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(P33)*Y(H1)*state.rho + screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(He4)*Y(Si30)*state.rho) + + (screened_rates(k_S33_n_to_p_P33_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_P33_p_to_n_S33_reaclib)*Y(P33)*Y(H1)*state.rho) + + (screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(S36)*Y(H1)*state.rho + -screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(He4)*Y(P33)*state.rho) + + (screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(He4)*Y(P33)*state.rho) + + (-screened_rates(k_P33_to_S33_beta_neg_weaktab)*Y(P33) + screened_rates(k_S33_to_P33_electron_capture_weaktab)*Y(S33)); ydot_nuc(S32) = - (screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_reaclib)*Y(S32)) + - (screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_reaclib)*Y(S32)) + - (-screened_rates(k_n_S32_to_S33_reaclib)*Y(S32)*Y(N)*state.rho + screened_rates(k_S33_to_n_S32_reaclib)*Y(S33)) + - (-screened_rates(k_p_S32_to_Cl33_reaclib)*Y(S32)*Y(H1)*state.rho + screened_rates(k_Cl33_to_p_S32_reaclib)*Y(Cl33)) + - (-screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_He4_S32_reaclib)*Y(Ar36)) + - (screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(He4)*Y(P29)*state.rho + -screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(S32)*Y(H1)*state.rho) + - (screened_rates(k_p_P32_to_n_S32_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_n_S32_to_p_P32_reaclib)*Y(S32)*Y(N)*state.rho) + - (-screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(S32)*Y(N)*state.rho + screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(He4)*Y(Si29)*state.rho) + - (screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(Cl35)*Y(H1)*state.rho + -screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(He4)*Y(S32)*state.rho) + - (screened_rates(k_P32_to_S32_weaktab)*Y(P32) + -screened_rates(k_S32_to_P32_weaktab)*Y(S32)); + (screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*Y(Si28)*state.rho + -screened_rates(k_S32_to_He4_Si28_reaclib)*Y(S32)) + + (screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*Y(H1)*state.rho + -screened_rates(k_S32_to_p_P31_reaclib)*Y(S32)) + + (-screened_rates(k_S32_n_to_S33_reaclib)*Y(S32)*Y(N)*state.rho + screened_rates(k_S33_to_n_S32_reaclib)*Y(S33)) + + (-screened_rates(k_S32_p_to_Cl33_reaclib)*Y(S32)*Y(H1)*state.rho + screened_rates(k_Cl33_to_p_S32_reaclib)*Y(Cl33)) + + (-screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(He4)*Y(S32)*state.rho + screened_rates(k_Ar36_to_He4_S32_reaclib)*Y(Ar36)) + + (screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(He4)*Y(P29)*state.rho + -screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(S32)*Y(H1)*state.rho) + + (screened_rates(k_P32_p_to_n_S32_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_S32_n_to_p_P32_reaclib)*Y(S32)*Y(N)*state.rho) + + (-screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(S32)*Y(N)*state.rho + screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(He4)*Y(Si29)*state.rho) + + (screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(Cl35)*Y(H1)*state.rho + -screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(He4)*Y(S32)*state.rho) + + (screened_rates(k_P32_to_S32_beta_neg_weaktab)*Y(P32) + -screened_rates(k_S32_to_P32_electron_capture_weaktab)*Y(S32)); ydot_nuc(S33) = - (screened_rates(k_He4_Si29_to_S33_reaclib)*Y(He4)*Y(Si29)*state.rho + -screened_rates(k_S33_to_He4_Si29_reaclib)*Y(S33)) + - (screened_rates(k_p_P32_to_S33_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_S33_to_p_P32_reaclib)*Y(S33)) + - (screened_rates(k_n_S32_to_S33_reaclib)*Y(S32)*Y(N)*state.rho + -screened_rates(k_S33_to_n_S32_reaclib)*Y(S33)) + - (-screened_rates(k_n_S33_to_S34_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_S34_to_n_S33_reaclib)*Y(S34)) + - (-screened_rates(k_p_S33_to_Cl34_reaclib)*Y(S33)*Y(H1)*state.rho + screened_rates(k_Cl34_to_p_S33_reaclib)*Y(Cl34)) + - (-screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(He4)*Y(S33)*state.rho + screened_rates(k_Ar37_to_He4_S33_reaclib)*Y(Ar37)) + - (screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(He4)*Y(P30)*state.rho + -screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(S33)*Y(H1)*state.rho) + - (-screened_rates(k_n_S33_to_p_P33_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_p_P33_to_n_S33_reaclib)*Y(P33)*Y(H1)*state.rho) + - (-screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(He4)*Y(Si30)*state.rho) + - (screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(S33)*Y(H1)*state.rho) + - (screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(Cl36)*Y(H1)*state.rho + -screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(He4)*Y(S33)*state.rho) + - (screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(He4)*Y(S33)*state.rho) + - (screened_rates(k_Cl33_to_S33_weaktab)*Y(Cl33) + -screened_rates(k_S33_to_Cl33_weaktab)*Y(S33)) + - (screened_rates(k_P33_to_S33_weaktab)*Y(P33) + -screened_rates(k_S33_to_P33_weaktab)*Y(S33)); + (screened_rates(k_Si29_He4_to_S33_reaclib)*Y(He4)*Y(Si29)*state.rho + -screened_rates(k_S33_to_He4_Si29_reaclib)*Y(S33)) + + (screened_rates(k_P32_p_to_S33_reaclib)*Y(P32)*Y(H1)*state.rho + -screened_rates(k_S33_to_p_P32_reaclib)*Y(S33)) + + (screened_rates(k_S32_n_to_S33_reaclib)*Y(S32)*Y(N)*state.rho + -screened_rates(k_S33_to_n_S32_reaclib)*Y(S33)) + + (-screened_rates(k_S33_n_to_S34_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_S34_to_n_S33_reaclib)*Y(S34)) + + (-screened_rates(k_S33_p_to_Cl34_reaclib)*Y(S33)*Y(H1)*state.rho + screened_rates(k_Cl34_to_p_S33_reaclib)*Y(Cl34)) + + (-screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(He4)*Y(S33)*state.rho + screened_rates(k_Ar37_to_He4_S33_reaclib)*Y(Ar37)) + + (screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(He4)*Y(P30)*state.rho + -screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(S33)*Y(H1)*state.rho) + + (-screened_rates(k_S33_n_to_p_P33_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_P33_p_to_n_S33_reaclib)*Y(P33)*Y(H1)*state.rho) + + (-screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(S33)*Y(N)*state.rho + screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(He4)*Y(Si30)*state.rho) + + (screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(S33)*Y(H1)*state.rho) + + (screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(Cl36)*Y(H1)*state.rho + -screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(He4)*Y(S33)*state.rho) + + (screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(He4)*Y(S33)*state.rho) + + (screened_rates(k_Cl33_to_S33_electron_capture_weaktab)*Y(Cl33) + -screened_rates(k_S33_to_Cl33_beta_neg_weaktab)*Y(S33)) + + (screened_rates(k_P33_to_S33_beta_neg_weaktab)*Y(P33) + -screened_rates(k_S33_to_P33_electron_capture_weaktab)*Y(S33)); ydot_nuc(S34) = - (screened_rates(k_He4_Si30_to_S34_reaclib)*Y(He4)*Y(Si30)*state.rho + -screened_rates(k_S34_to_He4_Si30_reaclib)*Y(S34)) + - (screened_rates(k_p_P33_to_S34_reaclib)*Y(P33)*Y(H1)*state.rho + -screened_rates(k_S34_to_p_P33_reaclib)*Y(S34)) + - (screened_rates(k_n_S33_to_S34_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_S34_to_n_S33_reaclib)*Y(S34)) + - (-screened_rates(k_n_S34_to_S35_reaclib)*Y(S34)*Y(N)*state.rho + screened_rates(k_S35_to_n_S34_reaclib)*Y(S35)) + - (-screened_rates(k_p_S34_to_Cl35_reaclib)*Y(S34)*Y(H1)*state.rho + screened_rates(k_Cl35_to_p_S34_reaclib)*Y(Cl35)) + - (-screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(He4)*Y(S34)*state.rho + screened_rates(k_Ar38_to_He4_S34_reaclib)*Y(Ar38)) + - (screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(He4)*Y(Si31)*state.rho + -screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(S34)*Y(N)*state.rho) + - (screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(He4)*Y(P31)*state.rho + -screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(S34)*Y(H1)*state.rho) + - (screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(S34)*Y(H1)*state.rho) + - (screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(Cl37)*Y(H1)*state.rho + -screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(He4)*Y(S34)*state.rho) + - (screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(He4)*Y(S34)*state.rho) + - (screened_rates(k_Cl34_to_S34_weaktab)*Y(Cl34) + -screened_rates(k_S34_to_Cl34_weaktab)*Y(S34)); + (screened_rates(k_Si30_He4_to_S34_reaclib)*Y(He4)*Y(Si30)*state.rho + -screened_rates(k_S34_to_He4_Si30_reaclib)*Y(S34)) + + (screened_rates(k_P33_p_to_S34_reaclib)*Y(P33)*Y(H1)*state.rho + -screened_rates(k_S34_to_p_P33_reaclib)*Y(S34)) + + (screened_rates(k_S33_n_to_S34_reaclib)*Y(S33)*Y(N)*state.rho + -screened_rates(k_S34_to_n_S33_reaclib)*Y(S34)) + + (-screened_rates(k_S34_n_to_S35_reaclib)*Y(S34)*Y(N)*state.rho + screened_rates(k_S35_to_n_S34_reaclib)*Y(S35)) + + (-screened_rates(k_S34_p_to_Cl35_reaclib)*Y(S34)*Y(H1)*state.rho + screened_rates(k_Cl35_to_p_S34_reaclib)*Y(Cl35)) + + (-screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(He4)*Y(S34)*state.rho + screened_rates(k_Ar38_to_He4_S34_reaclib)*Y(Ar38)) + + (screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(He4)*Y(Si31)*state.rho + -screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(S34)*Y(N)*state.rho) + + (screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(He4)*Y(P31)*state.rho + -screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(S34)*Y(H1)*state.rho) + + (screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(S34)*Y(H1)*state.rho) + + (screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(Cl37)*Y(H1)*state.rho + -screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(He4)*Y(S34)*state.rho) + + (screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(He4)*Y(S34)*state.rho) + + (screened_rates(k_Cl34_to_S34_electron_capture_weaktab)*Y(Cl34) + -screened_rates(k_S34_to_Cl34_beta_neg_weaktab)*Y(S34)); ydot_nuc(S35) = - (screened_rates(k_He4_Si31_to_S35_reaclib)*Y(He4)*Y(Si31)*state.rho + -screened_rates(k_S35_to_He4_Si31_reaclib)*Y(S35)) + - (screened_rates(k_n_S34_to_S35_reaclib)*Y(S34)*Y(N)*state.rho + -screened_rates(k_S35_to_n_S34_reaclib)*Y(S35)) + - (-screened_rates(k_n_S35_to_S36_reaclib)*Y(S35)*Y(N)*state.rho + screened_rates(k_S36_to_n_S35_reaclib)*Y(S36)) + - (-screened_rates(k_p_S35_to_Cl36_reaclib)*Y(S35)*Y(H1)*state.rho + screened_rates(k_Cl36_to_p_S35_reaclib)*Y(Cl36)) + - (-screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(He4)*Y(S35)*state.rho + screened_rates(k_Ar39_to_He4_S35_reaclib)*Y(Ar39)) + - (-screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(S35)*Y(N)*state.rho + screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(He4)*Y(Si32)*state.rho) + - (-screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(S35)*Y(H1)*state.rho + screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(He4)*Y(P32)*state.rho) + - (-screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(He4)*Y(S35)*state.rho + screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(Ar38)*Y(N)*state.rho) + - (screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(S35)*Y(H1)*state.rho) + - (-screened_rates(k_S35_to_Cl35_weaktab)*Y(S35) + screened_rates(k_Cl35_to_S35_weaktab)*Y(Cl35)); + (screened_rates(k_Si31_He4_to_S35_reaclib)*Y(He4)*Y(Si31)*state.rho + -screened_rates(k_S35_to_He4_Si31_reaclib)*Y(S35)) + + (screened_rates(k_S34_n_to_S35_reaclib)*Y(S34)*Y(N)*state.rho + -screened_rates(k_S35_to_n_S34_reaclib)*Y(S35)) + + (-screened_rates(k_S35_n_to_S36_reaclib)*Y(S35)*Y(N)*state.rho + screened_rates(k_S36_to_n_S35_reaclib)*Y(S36)) + + (-screened_rates(k_S35_p_to_Cl36_reaclib)*Y(S35)*Y(H1)*state.rho + screened_rates(k_Cl36_to_p_S35_reaclib)*Y(Cl36)) + + (-screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(He4)*Y(S35)*state.rho + screened_rates(k_Ar39_to_He4_S35_reaclib)*Y(Ar39)) + + (-screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(S35)*Y(N)*state.rho + screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(He4)*Y(Si32)*state.rho) + + (-screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(S35)*Y(H1)*state.rho + screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(He4)*Y(P32)*state.rho) + + (-screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(He4)*Y(S35)*state.rho + screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(Ar38)*Y(N)*state.rho) + + (screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(S35)*Y(H1)*state.rho) + + (-screened_rates(k_S35_to_Cl35_beta_neg_weaktab)*Y(S35) + screened_rates(k_Cl35_to_S35_electron_capture_weaktab)*Y(Cl35)); ydot_nuc(S36) = - (screened_rates(k_He4_Si32_to_S36_reaclib)*Y(He4)*Y(Si32)*state.rho + -screened_rates(k_S36_to_He4_Si32_reaclib)*Y(S36)) + - (screened_rates(k_n_S35_to_S36_reaclib)*Y(S35)*Y(N)*state.rho + -screened_rates(k_S36_to_n_S35_reaclib)*Y(S36)) + - (-screened_rates(k_p_S36_to_Cl37_reaclib)*Y(S36)*Y(H1)*state.rho + screened_rates(k_Cl37_to_p_S36_reaclib)*Y(Cl37)) + - (-screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(He4)*Y(S36)*state.rho + screened_rates(k_Ar40_to_He4_S36_reaclib)*Y(Ar40)) + - (-screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(S36)*Y(H1)*state.rho + screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(He4)*Y(P33)*state.rho) + - (screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(S36)*Y(H1)*state.rho) + - (screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(Ar39)*Y(N)*state.rho + -screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(He4)*Y(S36)*state.rho) + - (screened_rates(k_Cl36_to_S36_weaktab)*Y(Cl36) + -screened_rates(k_S36_to_Cl36_weaktab)*Y(S36)); + (screened_rates(k_Si32_He4_to_S36_reaclib)*Y(He4)*Y(Si32)*state.rho + -screened_rates(k_S36_to_He4_Si32_reaclib)*Y(S36)) + + (screened_rates(k_S35_n_to_S36_reaclib)*Y(S35)*Y(N)*state.rho + -screened_rates(k_S36_to_n_S35_reaclib)*Y(S36)) + + (-screened_rates(k_S36_p_to_Cl37_reaclib)*Y(S36)*Y(H1)*state.rho + screened_rates(k_Cl37_to_p_S36_reaclib)*Y(Cl37)) + + (-screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(He4)*Y(S36)*state.rho + screened_rates(k_Ar40_to_He4_S36_reaclib)*Y(Ar40)) + + (-screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(S36)*Y(H1)*state.rho + screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(He4)*Y(P33)*state.rho) + + (screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(S36)*Y(H1)*state.rho) + + (screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(Ar39)*Y(N)*state.rho + -screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(He4)*Y(S36)*state.rho) + + (screened_rates(k_Cl36_to_S36_electron_capture_weaktab)*Y(Cl36) + -screened_rates(k_S36_to_Cl36_beta_neg_weaktab)*Y(S36)); ydot_nuc(Cl33) = - (screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(He4)*Y(P29)*state.rho + -screened_rates(k_Cl33_to_He4_P29_reaclib)*Y(Cl33)) + - (screened_rates(k_p_S32_to_Cl33_reaclib)*Y(S32)*Y(H1)*state.rho + -screened_rates(k_Cl33_to_p_S32_reaclib)*Y(Cl33)) + - (-screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_Cl34_to_n_Cl33_reaclib)*Y(Cl34)) + - (-screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(Cl33)*Y(He4)*state.rho + screened_rates(k_K37_to_He4_Cl33_reaclib)*Y(K37)) + - (-screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(S33)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(He4)*Y(P30)*state.rho) + - (-screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(Cl33)*Y(He4)*state.rho + screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(Ar36)*Y(H1)*state.rho) + - (-screened_rates(k_Cl33_to_S33_weaktab)*Y(Cl33) + screened_rates(k_S33_to_Cl33_weaktab)*Y(S33)); + (screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(He4)*Y(P29)*state.rho + -screened_rates(k_Cl33_to_He4_P29_reaclib)*Y(Cl33)) + + (screened_rates(k_S32_p_to_Cl33_reaclib)*Y(S32)*Y(H1)*state.rho + -screened_rates(k_Cl33_to_p_S32_reaclib)*Y(Cl33)) + + (-screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_Cl34_to_n_Cl33_reaclib)*Y(Cl34)) + + (-screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(Cl33)*Y(He4)*state.rho + screened_rates(k_K37_to_He4_Cl33_reaclib)*Y(K37)) + + (-screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(S33)*Y(H1)*state.rho) + + (-screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(Cl33)*Y(N)*state.rho + screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(He4)*Y(P30)*state.rho) + + (-screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(Cl33)*Y(He4)*state.rho + screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(Ar36)*Y(H1)*state.rho) + + (-screened_rates(k_Cl33_to_S33_electron_capture_weaktab)*Y(Cl33) + screened_rates(k_S33_to_Cl33_beta_neg_weaktab)*Y(S33)); ydot_nuc(Cl34) = - (screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(He4)*Y(P30)*state.rho + -screened_rates(k_Cl34_to_He4_P30_reaclib)*Y(Cl34)) + - (screened_rates(k_p_S33_to_Cl34_reaclib)*Y(S33)*Y(H1)*state.rho + -screened_rates(k_Cl34_to_p_S33_reaclib)*Y(Cl34)) + - (screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_Cl34_to_n_Cl33_reaclib)*Y(Cl34)) + - (-screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_Cl35_to_n_Cl34_reaclib)*Y(Cl35)) + - (-screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(Cl34)*Y(He4)*state.rho + screened_rates(k_K38_to_He4_Cl34_reaclib)*Y(K38)) + - (-screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(S34)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(He4)*Y(P31)*state.rho) + - (-screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(Cl34)*Y(He4)*state.rho + screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(Ar37)*Y(H1)*state.rho) + - (screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(Cl34)*Y(He4)*state.rho) + - (-screened_rates(k_Cl34_to_S34_weaktab)*Y(Cl34) + screened_rates(k_S34_to_Cl34_weaktab)*Y(S34)); + (screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(He4)*Y(P30)*state.rho + -screened_rates(k_Cl34_to_He4_P30_reaclib)*Y(Cl34)) + + (screened_rates(k_S33_p_to_Cl34_reaclib)*Y(S33)*Y(H1)*state.rho + -screened_rates(k_Cl34_to_p_S33_reaclib)*Y(Cl34)) + + (screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(Cl33)*Y(N)*state.rho + -screened_rates(k_Cl34_to_n_Cl33_reaclib)*Y(Cl34)) + + (-screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_Cl35_to_n_Cl34_reaclib)*Y(Cl35)) + + (-screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(Cl34)*Y(He4)*state.rho + screened_rates(k_K38_to_He4_Cl34_reaclib)*Y(K38)) + + (-screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(S34)*Y(H1)*state.rho) + + (-screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(Cl34)*Y(N)*state.rho + screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(He4)*Y(P31)*state.rho) + + (-screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(Cl34)*Y(He4)*state.rho + screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(Ar37)*Y(H1)*state.rho) + + (screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(Cl34)*Y(He4)*state.rho) + + (-screened_rates(k_Cl34_to_S34_electron_capture_weaktab)*Y(Cl34) + screened_rates(k_S34_to_Cl34_beta_neg_weaktab)*Y(S34)); ydot_nuc(Cl35) = - (screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(He4)*Y(P31)*state.rho + -screened_rates(k_Cl35_to_He4_P31_reaclib)*Y(Cl35)) + - (screened_rates(k_p_S34_to_Cl35_reaclib)*Y(S34)*Y(H1)*state.rho + -screened_rates(k_Cl35_to_p_S34_reaclib)*Y(Cl35)) + - (screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_Cl35_to_n_Cl34_reaclib)*Y(Cl35)) + - (-screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_Cl36_to_n_Cl35_reaclib)*Y(Cl36)) + - (-screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(Cl35)*Y(H1)*state.rho + screened_rates(k_Ar36_to_p_Cl35_reaclib)*Y(Ar36)) + - (-screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(Cl35)*Y(He4)*state.rho + screened_rates(k_K39_to_He4_Cl35_reaclib)*Y(K39)) + - (-screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(S35)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(He4)*Y(P32)*state.rho) + - (-screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(Cl35)*Y(H1)*state.rho + screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(He4)*Y(S32)*state.rho) + - (-screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(Cl35)*Y(He4)*state.rho + screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(Ar38)*Y(H1)*state.rho) + - (screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(Cl35)*Y(He4)*state.rho) + - (screened_rates(k_S35_to_Cl35_weaktab)*Y(S35) + -screened_rates(k_Cl35_to_S35_weaktab)*Y(Cl35)); + (screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(He4)*Y(P31)*state.rho + -screened_rates(k_Cl35_to_He4_P31_reaclib)*Y(Cl35)) + + (screened_rates(k_S34_p_to_Cl35_reaclib)*Y(S34)*Y(H1)*state.rho + -screened_rates(k_Cl35_to_p_S34_reaclib)*Y(Cl35)) + + (screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(Cl34)*Y(N)*state.rho + -screened_rates(k_Cl35_to_n_Cl34_reaclib)*Y(Cl35)) + + (-screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_Cl36_to_n_Cl35_reaclib)*Y(Cl36)) + + (-screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(Cl35)*Y(H1)*state.rho + screened_rates(k_Ar36_to_p_Cl35_reaclib)*Y(Ar36)) + + (-screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(Cl35)*Y(He4)*state.rho + screened_rates(k_K39_to_He4_Cl35_reaclib)*Y(K39)) + + (-screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(S35)*Y(H1)*state.rho) + + (-screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(Cl35)*Y(N)*state.rho + screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(He4)*Y(P32)*state.rho) + + (-screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(Cl35)*Y(H1)*state.rho + screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(He4)*Y(S32)*state.rho) + + (-screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(Cl35)*Y(He4)*state.rho + screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(Ar38)*Y(H1)*state.rho) + + (screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(Cl35)*Y(He4)*state.rho) + + (screened_rates(k_S35_to_Cl35_beta_neg_weaktab)*Y(S35) + -screened_rates(k_Cl35_to_S35_electron_capture_weaktab)*Y(Cl35)); ydot_nuc(Cl36) = - (screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(He4)*Y(P32)*state.rho + -screened_rates(k_Cl36_to_He4_P32_reaclib)*Y(Cl36)) + - (screened_rates(k_p_S35_to_Cl36_reaclib)*Y(S35)*Y(H1)*state.rho + -screened_rates(k_Cl36_to_p_S35_reaclib)*Y(Cl36)) + - (screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_Cl36_to_n_Cl35_reaclib)*Y(Cl36)) + - (-screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_Cl37_to_n_Cl36_reaclib)*Y(Cl37)) + - (-screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(Cl36)*Y(H1)*state.rho + screened_rates(k_Ar37_to_p_Cl36_reaclib)*Y(Ar37)) + - (-screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(Cl36)*Y(He4)*state.rho + screened_rates(k_K40_to_He4_Cl36_reaclib)*Y(K40)) + - (-screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(S36)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(He4)*Y(P33)*state.rho) + - (-screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(Cl36)*Y(H1)*state.rho + screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(He4)*Y(S33)*state.rho) + - (screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(Cl36)*Y(H1)*state.rho) + - (screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(Ar39)*Y(H1)*state.rho + -screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + - (screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + - (-screened_rates(k_Cl36_to_Ar36_weaktab)*Y(Cl36) + screened_rates(k_Ar36_to_Cl36_weaktab)*Y(Ar36)) + - (-screened_rates(k_Cl36_to_S36_weaktab)*Y(Cl36) + screened_rates(k_S36_to_Cl36_weaktab)*Y(S36)); + (screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(He4)*Y(P32)*state.rho + -screened_rates(k_Cl36_to_He4_P32_reaclib)*Y(Cl36)) + + (screened_rates(k_S35_p_to_Cl36_reaclib)*Y(S35)*Y(H1)*state.rho + -screened_rates(k_Cl36_to_p_S35_reaclib)*Y(Cl36)) + + (screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(Cl35)*Y(N)*state.rho + -screened_rates(k_Cl36_to_n_Cl35_reaclib)*Y(Cl36)) + + (-screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_Cl37_to_n_Cl36_reaclib)*Y(Cl37)) + + (-screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(Cl36)*Y(H1)*state.rho + screened_rates(k_Ar37_to_p_Cl36_reaclib)*Y(Ar37)) + + (-screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(Cl36)*Y(He4)*state.rho + screened_rates(k_K40_to_He4_Cl36_reaclib)*Y(K40)) + + (-screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(S36)*Y(H1)*state.rho) + + (-screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(Cl36)*Y(N)*state.rho + screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(He4)*Y(P33)*state.rho) + + (-screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(Cl36)*Y(H1)*state.rho + screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(He4)*Y(S33)*state.rho) + + (screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(Cl36)*Y(H1)*state.rho) + + (screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(Ar39)*Y(H1)*state.rho + -screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + + (screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + + (-screened_rates(k_Cl36_to_Ar36_beta_neg_weaktab)*Y(Cl36) + screened_rates(k_Ar36_to_Cl36_electron_capture_weaktab)*Y(Ar36)) + + (-screened_rates(k_Cl36_to_S36_electron_capture_weaktab)*Y(Cl36) + screened_rates(k_S36_to_Cl36_beta_neg_weaktab)*Y(S36)); ydot_nuc(Cl37) = - (screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(He4)*Y(P33)*state.rho + -screened_rates(k_Cl37_to_He4_P33_reaclib)*Y(Cl37)) + - (screened_rates(k_p_S36_to_Cl37_reaclib)*Y(S36)*Y(H1)*state.rho + -screened_rates(k_Cl37_to_p_S36_reaclib)*Y(Cl37)) + - (screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_Cl37_to_n_Cl36_reaclib)*Y(Cl37)) + - (-screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(Cl37)*Y(H1)*state.rho + screened_rates(k_Ar38_to_p_Cl37_reaclib)*Y(Ar38)) + - (-screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(Cl37)*Y(He4)*state.rho + screened_rates(k_K41_to_He4_Cl37_reaclib)*Y(K41)) + - (-screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(Cl37)*Y(H1)*state.rho + screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(He4)*Y(S34)*state.rho) + - (screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(Cl37)*Y(H1)*state.rho) + - (screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(Ar40)*Y(H1)*state.rho + -screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + - (screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + - (screened_rates(k_Ar37_to_Cl37_weaktab)*Y(Ar37) + -screened_rates(k_Cl37_to_Ar37_weaktab)*Y(Cl37)); + (screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(He4)*Y(P33)*state.rho + -screened_rates(k_Cl37_to_He4_P33_reaclib)*Y(Cl37)) + + (screened_rates(k_S36_p_to_Cl37_reaclib)*Y(S36)*Y(H1)*state.rho + -screened_rates(k_Cl37_to_p_S36_reaclib)*Y(Cl37)) + + (screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(Cl36)*Y(N)*state.rho + -screened_rates(k_Cl37_to_n_Cl36_reaclib)*Y(Cl37)) + + (-screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(Cl37)*Y(H1)*state.rho + screened_rates(k_Ar38_to_p_Cl37_reaclib)*Y(Ar38)) + + (-screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(Cl37)*Y(He4)*state.rho + screened_rates(k_K41_to_He4_Cl37_reaclib)*Y(K41)) + + (-screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(Cl37)*Y(H1)*state.rho + screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(He4)*Y(S34)*state.rho) + + (screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(Cl37)*Y(H1)*state.rho) + + (screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(Ar40)*Y(H1)*state.rho + -screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + + (screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + + (screened_rates(k_Ar37_to_Cl37_electron_capture_weaktab)*Y(Ar37) + -screened_rates(k_Cl37_to_Ar37_beta_neg_weaktab)*Y(Cl37)); ydot_nuc(Ar36) = - (screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(He4)*Y(S32)*state.rho + -screened_rates(k_Ar36_to_He4_S32_reaclib)*Y(Ar36)) + - (screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(Cl35)*Y(H1)*state.rho + -screened_rates(k_Ar36_to_p_Cl35_reaclib)*Y(Ar36)) + - (-screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_Ar37_to_n_Ar36_reaclib)*Y(Ar37)) + - (-screened_rates(k_p_Ar36_to_K37_reaclib)*Y(Ar36)*Y(H1)*state.rho + screened_rates(k_K37_to_p_Ar36_reaclib)*Y(K37)) + - (-screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_He4_Ar36_reaclib)*Y(Ca40)) + - (screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(Cl33)*Y(He4)*state.rho + -screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(Ar36)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(Cl36)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(He4)*Y(S33)*state.rho) + - (screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(K39)*Y(H1)*state.rho + -screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(Ar36)*Y(He4)*state.rho) + - (screened_rates(k_Cl36_to_Ar36_weaktab)*Y(Cl36) + -screened_rates(k_Ar36_to_Cl36_weaktab)*Y(Ar36)); + (screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(He4)*Y(S32)*state.rho + -screened_rates(k_Ar36_to_He4_S32_reaclib)*Y(Ar36)) + + (screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(Cl35)*Y(H1)*state.rho + -screened_rates(k_Ar36_to_p_Cl35_reaclib)*Y(Ar36)) + + (-screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_Ar37_to_n_Ar36_reaclib)*Y(Ar37)) + + (-screened_rates(k_Ar36_p_to_K37_reaclib)*Y(Ar36)*Y(H1)*state.rho + screened_rates(k_K37_to_p_Ar36_reaclib)*Y(K37)) + + (-screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(Ar36)*Y(He4)*state.rho + screened_rates(k_Ca40_to_He4_Ar36_reaclib)*Y(Ca40)) + + (screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(Cl33)*Y(He4)*state.rho + -screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(Ar36)*Y(H1)*state.rho) + + (-screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(Cl36)*Y(H1)*state.rho) + + (-screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(Ar36)*Y(N)*state.rho + screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(He4)*Y(S33)*state.rho) + + (screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(K39)*Y(H1)*state.rho + -screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(Ar36)*Y(He4)*state.rho) + + (screened_rates(k_Cl36_to_Ar36_beta_neg_weaktab)*Y(Cl36) + -screened_rates(k_Ar36_to_Cl36_electron_capture_weaktab)*Y(Ar36)); ydot_nuc(Ar37) = - (screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(He4)*Y(S33)*state.rho + -screened_rates(k_Ar37_to_He4_S33_reaclib)*Y(Ar37)) + - (screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(Cl36)*Y(H1)*state.rho + -screened_rates(k_Ar37_to_p_Cl36_reaclib)*Y(Ar37)) + - (screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_Ar37_to_n_Ar36_reaclib)*Y(Ar37)) + - (-screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_Ar38_to_n_Ar37_reaclib)*Y(Ar38)) + - (-screened_rates(k_p_Ar37_to_K38_reaclib)*Y(Ar37)*Y(H1)*state.rho + screened_rates(k_K38_to_p_Ar37_reaclib)*Y(K38)) + - (-screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(Ar37)*Y(He4)*state.rho + screened_rates(k_Ca41_to_He4_Ar37_reaclib)*Y(Ca41)) + - (screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(Cl34)*Y(He4)*state.rho + -screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(Ar37)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(Cl37)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(He4)*Y(S34)*state.rho) + - (screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(Ar37)*Y(H1)*state.rho) + - (screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + - (screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(Ca40)*Y(N)*state.rho + -screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + - (-screened_rates(k_Ar37_to_Cl37_weaktab)*Y(Ar37) + screened_rates(k_Cl37_to_Ar37_weaktab)*Y(Cl37)) + - (screened_rates(k_K37_to_Ar37_weaktab)*Y(K37) + -screened_rates(k_Ar37_to_K37_weaktab)*Y(Ar37)); + (screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(He4)*Y(S33)*state.rho + -screened_rates(k_Ar37_to_He4_S33_reaclib)*Y(Ar37)) + + (screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(Cl36)*Y(H1)*state.rho + -screened_rates(k_Ar37_to_p_Cl36_reaclib)*Y(Ar37)) + + (screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(Ar36)*Y(N)*state.rho + -screened_rates(k_Ar37_to_n_Ar36_reaclib)*Y(Ar37)) + + (-screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_Ar38_to_n_Ar37_reaclib)*Y(Ar38)) + + (-screened_rates(k_Ar37_p_to_K38_reaclib)*Y(Ar37)*Y(H1)*state.rho + screened_rates(k_K38_to_p_Ar37_reaclib)*Y(K38)) + + (-screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(Ar37)*Y(He4)*state.rho + screened_rates(k_Ca41_to_He4_Ar37_reaclib)*Y(Ca41)) + + (screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(Cl34)*Y(He4)*state.rho + -screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(Ar37)*Y(H1)*state.rho) + + (-screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(Cl37)*Y(H1)*state.rho) + + (-screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(Ar37)*Y(N)*state.rho + screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(He4)*Y(S34)*state.rho) + + (screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(Ar37)*Y(H1)*state.rho) + + (screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + + (screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(Ca40)*Y(N)*state.rho + -screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + + (-screened_rates(k_Ar37_to_Cl37_electron_capture_weaktab)*Y(Ar37) + screened_rates(k_Cl37_to_Ar37_beta_neg_weaktab)*Y(Cl37)) + + (screened_rates(k_K37_to_Ar37_electron_capture_weaktab)*Y(K37) + -screened_rates(k_Ar37_to_K37_beta_neg_weaktab)*Y(Ar37)); ydot_nuc(Ar38) = - (screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(He4)*Y(S34)*state.rho + -screened_rates(k_Ar38_to_He4_S34_reaclib)*Y(Ar38)) + - (screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(Cl37)*Y(H1)*state.rho + -screened_rates(k_Ar38_to_p_Cl37_reaclib)*Y(Ar38)) + - (screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_Ar38_to_n_Ar37_reaclib)*Y(Ar38)) + - (-screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(Ar38)*Y(N)*state.rho + screened_rates(k_Ar39_to_n_Ar38_reaclib)*Y(Ar39)) + - (-screened_rates(k_p_Ar38_to_K39_reaclib)*Y(Ar38)*Y(H1)*state.rho + screened_rates(k_K39_to_p_Ar38_reaclib)*Y(K39)) + - (-screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(Ar38)*Y(He4)*state.rho + screened_rates(k_Ca42_to_He4_Ar38_reaclib)*Y(Ca42)) + - (screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(He4)*Y(S35)*state.rho + -screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(Ar38)*Y(N)*state.rho) + - (screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(Cl35)*Y(He4)*state.rho + -screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(Ar38)*Y(H1)*state.rho) + - (screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(Ar38)*Y(H1)*state.rho) + - (screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(K41)*Y(H1)*state.rho + -screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + - (screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + - (screened_rates(k_K38_to_Ar38_weaktab)*Y(K38) + -screened_rates(k_Ar38_to_K38_weaktab)*Y(Ar38)); + (screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(He4)*Y(S34)*state.rho + -screened_rates(k_Ar38_to_He4_S34_reaclib)*Y(Ar38)) + + (screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(Cl37)*Y(H1)*state.rho + -screened_rates(k_Ar38_to_p_Cl37_reaclib)*Y(Ar38)) + + (screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(Ar37)*Y(N)*state.rho + -screened_rates(k_Ar38_to_n_Ar37_reaclib)*Y(Ar38)) + + (-screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(Ar38)*Y(N)*state.rho + screened_rates(k_Ar39_to_n_Ar38_reaclib)*Y(Ar39)) + + (-screened_rates(k_Ar38_p_to_K39_reaclib)*Y(Ar38)*Y(H1)*state.rho + screened_rates(k_K39_to_p_Ar38_reaclib)*Y(K39)) + + (-screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(Ar38)*Y(He4)*state.rho + screened_rates(k_Ca42_to_He4_Ar38_reaclib)*Y(Ca42)) + + (screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(He4)*Y(S35)*state.rho + -screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(Ar38)*Y(N)*state.rho) + + (screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(Cl35)*Y(He4)*state.rho + -screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(Ar38)*Y(H1)*state.rho) + + (screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(Ar38)*Y(H1)*state.rho) + + (screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(K41)*Y(H1)*state.rho + -screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + + (screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + + (screened_rates(k_K38_to_Ar38_electron_capture_weaktab)*Y(K38) + -screened_rates(k_Ar38_to_K38_beta_neg_weaktab)*Y(Ar38)); ydot_nuc(Ar39) = - (screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(He4)*Y(S35)*state.rho + -screened_rates(k_Ar39_to_He4_S35_reaclib)*Y(Ar39)) + - (screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(Ar38)*Y(N)*state.rho + -screened_rates(k_Ar39_to_n_Ar38_reaclib)*Y(Ar39)) + - (-screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(Ar39)*Y(N)*state.rho + screened_rates(k_Ar40_to_n_Ar39_reaclib)*Y(Ar40)) + - (-screened_rates(k_p_Ar39_to_K40_reaclib)*Y(Ar39)*Y(H1)*state.rho + screened_rates(k_K40_to_p_Ar39_reaclib)*Y(K40)) + - (-screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(Ar39)*Y(He4)*state.rho + screened_rates(k_Ca43_to_He4_Ar39_reaclib)*Y(Ca43)) + - (-screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(Ar39)*Y(N)*state.rho + screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(He4)*Y(S36)*state.rho) + - (-screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(Ar39)*Y(H1)*state.rho + screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + - (screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(Ar39)*Y(H1)*state.rho) + - (screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(Ca42)*Y(N)*state.rho + -screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(Ar39)*Y(He4)*state.rho) + - (-screened_rates(k_Ar39_to_K39_weaktab)*Y(Ar39) + screened_rates(k_K39_to_Ar39_weaktab)*Y(K39)); + (screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(He4)*Y(S35)*state.rho + -screened_rates(k_Ar39_to_He4_S35_reaclib)*Y(Ar39)) + + (screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(Ar38)*Y(N)*state.rho + -screened_rates(k_Ar39_to_n_Ar38_reaclib)*Y(Ar39)) + + (-screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(Ar39)*Y(N)*state.rho + screened_rates(k_Ar40_to_n_Ar39_reaclib)*Y(Ar40)) + + (-screened_rates(k_Ar39_p_to_K40_reaclib)*Y(Ar39)*Y(H1)*state.rho + screened_rates(k_K40_to_p_Ar39_reaclib)*Y(K40)) + + (-screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(Ar39)*Y(He4)*state.rho + screened_rates(k_Ca43_to_He4_Ar39_reaclib)*Y(Ca43)) + + (-screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(Ar39)*Y(N)*state.rho + screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(He4)*Y(S36)*state.rho) + + (-screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(Ar39)*Y(H1)*state.rho + screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + + (screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(Ar39)*Y(H1)*state.rho) + + (screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(Ca42)*Y(N)*state.rho + -screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(Ar39)*Y(He4)*state.rho) + + (-screened_rates(k_Ar39_to_K39_beta_neg_weaktab)*Y(Ar39) + screened_rates(k_K39_to_Ar39_electron_capture_weaktab)*Y(K39)); ydot_nuc(Ar40) = - (screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(He4)*Y(S36)*state.rho + -screened_rates(k_Ar40_to_He4_S36_reaclib)*Y(Ar40)) + - (screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(Ar39)*Y(N)*state.rho + -screened_rates(k_Ar40_to_n_Ar39_reaclib)*Y(Ar40)) + - (-screened_rates(k_p_Ar40_to_K41_reaclib)*Y(Ar40)*Y(H1)*state.rho + screened_rates(k_K41_to_p_Ar40_reaclib)*Y(K41)) + - (-screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(Ar40)*Y(He4)*state.rho + screened_rates(k_Ca44_to_He4_Ar40_reaclib)*Y(Ca44)) + - (-screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(Ar40)*Y(H1)*state.rho + screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + - (screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(Ar40)*Y(H1)*state.rho) + - (screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(Ca43)*Y(N)*state.rho + -screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(Ar40)*Y(He4)*state.rho) + - (screened_rates(k_K40_to_Ar40_weaktab)*Y(K40) + -screened_rates(k_Ar40_to_K40_weaktab)*Y(Ar40)); + (screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(He4)*Y(S36)*state.rho + -screened_rates(k_Ar40_to_He4_S36_reaclib)*Y(Ar40)) + + (screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(Ar39)*Y(N)*state.rho + -screened_rates(k_Ar40_to_n_Ar39_reaclib)*Y(Ar40)) + + (-screened_rates(k_Ar40_p_to_K41_reaclib)*Y(Ar40)*Y(H1)*state.rho + screened_rates(k_K41_to_p_Ar40_reaclib)*Y(K41)) + + (-screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(Ar40)*Y(He4)*state.rho + screened_rates(k_Ca44_to_He4_Ar40_reaclib)*Y(Ca44)) + + (-screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(Ar40)*Y(H1)*state.rho + screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + + (screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(Ar40)*Y(H1)*state.rho) + + (screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(Ca43)*Y(N)*state.rho + -screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(Ar40)*Y(He4)*state.rho) + + (screened_rates(k_K40_to_Ar40_electron_capture_weaktab)*Y(K40) + -screened_rates(k_Ar40_to_K40_beta_neg_weaktab)*Y(Ar40)); ydot_nuc(K37) = - (screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(Cl33)*Y(He4)*state.rho + -screened_rates(k_K37_to_He4_Cl33_reaclib)*Y(K37)) + - (screened_rates(k_p_Ar36_to_K37_reaclib)*Y(Ar36)*Y(H1)*state.rho + -screened_rates(k_K37_to_p_Ar36_reaclib)*Y(K37)) + - (-screened_rates(k_n_K37_to_K38_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_K38_to_n_K37_reaclib)*Y(K38)) + - (-screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(Ar37)*Y(H1)*state.rho) + - (-screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(Cl34)*Y(He4)*state.rho) + - (-screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(He4)*Y(K37)*state.rho + screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(Ca40)*Y(H1)*state.rho) + - (-screened_rates(k_K37_to_Ar37_weaktab)*Y(K37) + screened_rates(k_Ar37_to_K37_weaktab)*Y(Ar37)); + (screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(Cl33)*Y(He4)*state.rho + -screened_rates(k_K37_to_He4_Cl33_reaclib)*Y(K37)) + + (screened_rates(k_Ar36_p_to_K37_reaclib)*Y(Ar36)*Y(H1)*state.rho + -screened_rates(k_K37_to_p_Ar36_reaclib)*Y(K37)) + + (-screened_rates(k_K37_n_to_K38_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_K38_to_n_K37_reaclib)*Y(K38)) + + (-screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(Ar37)*Y(H1)*state.rho) + + (-screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(K37)*Y(N)*state.rho + screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(Cl34)*Y(He4)*state.rho) + + (-screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(He4)*Y(K37)*state.rho + screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(Ca40)*Y(H1)*state.rho) + + (-screened_rates(k_K37_to_Ar37_electron_capture_weaktab)*Y(K37) + screened_rates(k_Ar37_to_K37_beta_neg_weaktab)*Y(Ar37)); ydot_nuc(K38) = - (screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(Cl34)*Y(He4)*state.rho + -screened_rates(k_K38_to_He4_Cl34_reaclib)*Y(K38)) + - (screened_rates(k_p_Ar37_to_K38_reaclib)*Y(Ar37)*Y(H1)*state.rho + -screened_rates(k_K38_to_p_Ar37_reaclib)*Y(K38)) + - (screened_rates(k_n_K37_to_K38_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_K38_to_n_K37_reaclib)*Y(K38)) + - (-screened_rates(k_n_K38_to_K39_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_K39_to_n_K38_reaclib)*Y(K39)) + - (-screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(Ar38)*Y(H1)*state.rho) + - (-screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(Cl35)*Y(He4)*state.rho) + - (-screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(He4)*Y(K38)*state.rho + screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(Ca41)*Y(H1)*state.rho) + - (-screened_rates(k_K38_to_Ar38_weaktab)*Y(K38) + screened_rates(k_Ar38_to_K38_weaktab)*Y(Ar38)); + (screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(Cl34)*Y(He4)*state.rho + -screened_rates(k_K38_to_He4_Cl34_reaclib)*Y(K38)) + + (screened_rates(k_Ar37_p_to_K38_reaclib)*Y(Ar37)*Y(H1)*state.rho + -screened_rates(k_K38_to_p_Ar37_reaclib)*Y(K38)) + + (screened_rates(k_K37_n_to_K38_reaclib)*Y(K37)*Y(N)*state.rho + -screened_rates(k_K38_to_n_K37_reaclib)*Y(K38)) + + (-screened_rates(k_K38_n_to_K39_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_K39_to_n_K38_reaclib)*Y(K39)) + + (-screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(Ar38)*Y(H1)*state.rho) + + (-screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(K38)*Y(N)*state.rho + screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(Cl35)*Y(He4)*state.rho) + + (-screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(He4)*Y(K38)*state.rho + screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(Ca41)*Y(H1)*state.rho) + + (-screened_rates(k_K38_to_Ar38_electron_capture_weaktab)*Y(K38) + screened_rates(k_Ar38_to_K38_beta_neg_weaktab)*Y(Ar38)); ydot_nuc(K39) = - (screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(Cl35)*Y(He4)*state.rho + -screened_rates(k_K39_to_He4_Cl35_reaclib)*Y(K39)) + - (screened_rates(k_p_Ar38_to_K39_reaclib)*Y(Ar38)*Y(H1)*state.rho + -screened_rates(k_K39_to_p_Ar38_reaclib)*Y(K39)) + - (screened_rates(k_n_K38_to_K39_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_K39_to_n_K38_reaclib)*Y(K39)) + - (-screened_rates(k_n_K39_to_K40_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_K40_to_n_K39_reaclib)*Y(K40)) + - (-screened_rates(k_p_K39_to_Ca40_reaclib)*Y(K39)*Y(H1)*state.rho + screened_rates(k_Ca40_to_p_K39_reaclib)*Y(Ca40)) + - (-screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(He4)*Y(K39)*state.rho + screened_rates(k_Sc43_to_He4_K39_reaclib)*Y(Sc43)) + - (-screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(Ar39)*Y(H1)*state.rho) + - (-screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + - (-screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(K39)*Y(H1)*state.rho + screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(Ar36)*Y(He4)*state.rho) + - (screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(Ca42)*Y(H1)*state.rho + -screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(He4)*Y(K39)*state.rho) + - (screened_rates(k_Ar39_to_K39_weaktab)*Y(Ar39) + -screened_rates(k_K39_to_Ar39_weaktab)*Y(K39)); + (screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(Cl35)*Y(He4)*state.rho + -screened_rates(k_K39_to_He4_Cl35_reaclib)*Y(K39)) + + (screened_rates(k_Ar38_p_to_K39_reaclib)*Y(Ar38)*Y(H1)*state.rho + -screened_rates(k_K39_to_p_Ar38_reaclib)*Y(K39)) + + (screened_rates(k_K38_n_to_K39_reaclib)*Y(K38)*Y(N)*state.rho + -screened_rates(k_K39_to_n_K38_reaclib)*Y(K39)) + + (-screened_rates(k_K39_n_to_K40_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_K40_to_n_K39_reaclib)*Y(K40)) + + (-screened_rates(k_K39_p_to_Ca40_reaclib)*Y(K39)*Y(H1)*state.rho + screened_rates(k_Ca40_to_p_K39_reaclib)*Y(Ca40)) + + (-screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(He4)*Y(K39)*state.rho + screened_rates(k_Sc43_to_He4_K39_reaclib)*Y(Sc43)) + + (-screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(Ar39)*Y(H1)*state.rho) + + (-screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(K39)*Y(N)*state.rho + screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(Cl36)*Y(He4)*state.rho) + + (-screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(K39)*Y(H1)*state.rho + screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(Ar36)*Y(He4)*state.rho) + + (screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(Ca42)*Y(H1)*state.rho + -screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(He4)*Y(K39)*state.rho) + + (screened_rates(k_Ar39_to_K39_beta_neg_weaktab)*Y(Ar39) + -screened_rates(k_K39_to_Ar39_electron_capture_weaktab)*Y(K39)); ydot_nuc(K40) = - (screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(Cl36)*Y(He4)*state.rho + -screened_rates(k_K40_to_He4_Cl36_reaclib)*Y(K40)) + - (screened_rates(k_p_Ar39_to_K40_reaclib)*Y(Ar39)*Y(H1)*state.rho + -screened_rates(k_K40_to_p_Ar39_reaclib)*Y(K40)) + - (screened_rates(k_n_K39_to_K40_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_K40_to_n_K39_reaclib)*Y(K40)) + - (-screened_rates(k_n_K40_to_K41_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_K41_to_n_K40_reaclib)*Y(K41)) + - (-screened_rates(k_p_K40_to_Ca41_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_Ca41_to_p_K40_reaclib)*Y(Ca41)) + - (-screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(He4)*Y(K40)*state.rho + screened_rates(k_Sc44_to_He4_K40_reaclib)*Y(Sc44)) + - (-screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(Ar40)*Y(H1)*state.rho) + - (-screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + - (-screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(Ca40)*Y(N)*state.rho) + - (-screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + - (-screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(He4)*Y(K40)*state.rho + screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(Ca43)*Y(H1)*state.rho) + - (screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(He4)*Y(K40)*state.rho) + - (-screened_rates(k_K40_to_Ar40_weaktab)*Y(K40) + screened_rates(k_Ar40_to_K40_weaktab)*Y(Ar40)) + - (-screened_rates(k_K40_to_Ca40_weaktab)*Y(K40) + screened_rates(k_Ca40_to_K40_weaktab)*Y(Ca40)); + (screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(Cl36)*Y(He4)*state.rho + -screened_rates(k_K40_to_He4_Cl36_reaclib)*Y(K40)) + + (screened_rates(k_Ar39_p_to_K40_reaclib)*Y(Ar39)*Y(H1)*state.rho + -screened_rates(k_K40_to_p_Ar39_reaclib)*Y(K40)) + + (screened_rates(k_K39_n_to_K40_reaclib)*Y(K39)*Y(N)*state.rho + -screened_rates(k_K40_to_n_K39_reaclib)*Y(K40)) + + (-screened_rates(k_K40_n_to_K41_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_K41_to_n_K40_reaclib)*Y(K41)) + + (-screened_rates(k_K40_p_to_Ca41_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_Ca41_to_p_K40_reaclib)*Y(Ca41)) + + (-screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(He4)*Y(K40)*state.rho + screened_rates(k_Sc44_to_He4_K40_reaclib)*Y(Sc44)) + + (-screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(Ar40)*Y(H1)*state.rho) + + (-screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(K40)*Y(N)*state.rho + screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(Cl37)*Y(He4)*state.rho) + + (-screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(Ca40)*Y(N)*state.rho) + + (-screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(K40)*Y(H1)*state.rho + screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + + (-screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(He4)*Y(K40)*state.rho + screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(Ca43)*Y(H1)*state.rho) + + (screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(He4)*Y(K40)*state.rho) + + (-screened_rates(k_K40_to_Ar40_electron_capture_weaktab)*Y(K40) + screened_rates(k_Ar40_to_K40_beta_neg_weaktab)*Y(Ar40)) + + (-screened_rates(k_K40_to_Ca40_beta_neg_weaktab)*Y(K40) + screened_rates(k_Ca40_to_K40_electron_capture_weaktab)*Y(Ca40)); ydot_nuc(K41) = - (screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(Cl37)*Y(He4)*state.rho + -screened_rates(k_K41_to_He4_Cl37_reaclib)*Y(K41)) + - (screened_rates(k_p_Ar40_to_K41_reaclib)*Y(Ar40)*Y(H1)*state.rho + -screened_rates(k_K41_to_p_Ar40_reaclib)*Y(K41)) + - (screened_rates(k_n_K40_to_K41_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_K41_to_n_K40_reaclib)*Y(K41)) + - (-screened_rates(k_p_K41_to_Ca42_reaclib)*Y(K41)*Y(H1)*state.rho + screened_rates(k_Ca42_to_p_K41_reaclib)*Y(Ca42)) + - (-screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(He4)*Y(K41)*state.rho + screened_rates(k_Sc45_to_He4_K41_reaclib)*Y(Sc45)) + - (-screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(K41)*Y(H1)*state.rho + screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + - (-screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(He4)*Y(K41)*state.rho + screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(Ca44)*Y(H1)*state.rho) + - (screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(K41)*Y(H1)*state.rho) + - (screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(He4)*Y(K41)*state.rho) + - (screened_rates(k_Ca41_to_K41_weaktab)*Y(Ca41) + -screened_rates(k_K41_to_Ca41_weaktab)*Y(K41)); + (screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(Cl37)*Y(He4)*state.rho + -screened_rates(k_K41_to_He4_Cl37_reaclib)*Y(K41)) + + (screened_rates(k_Ar40_p_to_K41_reaclib)*Y(Ar40)*Y(H1)*state.rho + -screened_rates(k_K41_to_p_Ar40_reaclib)*Y(K41)) + + (screened_rates(k_K40_n_to_K41_reaclib)*Y(K40)*Y(N)*state.rho + -screened_rates(k_K41_to_n_K40_reaclib)*Y(K41)) + + (-screened_rates(k_K41_p_to_Ca42_reaclib)*Y(K41)*Y(H1)*state.rho + screened_rates(k_Ca42_to_p_K41_reaclib)*Y(Ca42)) + + (-screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(He4)*Y(K41)*state.rho + screened_rates(k_Sc45_to_He4_K41_reaclib)*Y(Sc45)) + + (-screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(K41)*Y(H1)*state.rho + screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + + (-screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(He4)*Y(K41)*state.rho + screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(Ca44)*Y(H1)*state.rho) + + (screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(K41)*Y(H1)*state.rho) + + (screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(He4)*Y(K41)*state.rho) + + (screened_rates(k_Ca41_to_K41_electron_capture_weaktab)*Y(Ca41) + -screened_rates(k_K41_to_Ca41_beta_neg_weaktab)*Y(K41)); ydot_nuc(Ca40) = - (screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(Ar36)*Y(He4)*state.rho + -screened_rates(k_Ca40_to_He4_Ar36_reaclib)*Y(Ca40)) + - (screened_rates(k_p_K39_to_Ca40_reaclib)*Y(K39)*Y(H1)*state.rho + -screened_rates(k_Ca40_to_p_K39_reaclib)*Y(Ca40)) + - (-screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(Ca40)*Y(N)*state.rho + screened_rates(k_Ca41_to_n_Ca40_reaclib)*Y(Ca41)) + - (-screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_He4_Ca40_reaclib)*Y(Ti44)) + - (screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(He4)*Y(K37)*state.rho + -screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(Ca40)*Y(H1)*state.rho) + - (screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(Ca40)*Y(N)*state.rho) + - (-screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(Ca40)*Y(N)*state.rho + screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + - (screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(Sc43)*Y(H1)*state.rho + -screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(Ca40)*Y(He4)*state.rho) + - (screened_rates(k_K40_to_Ca40_weaktab)*Y(K40) + -screened_rates(k_Ca40_to_K40_weaktab)*Y(Ca40)); + (screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(Ar36)*Y(He4)*state.rho + -screened_rates(k_Ca40_to_He4_Ar36_reaclib)*Y(Ca40)) + + (screened_rates(k_K39_p_to_Ca40_reaclib)*Y(K39)*Y(H1)*state.rho + -screened_rates(k_Ca40_to_p_K39_reaclib)*Y(Ca40)) + + (-screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(Ca40)*Y(N)*state.rho + screened_rates(k_Ca41_to_n_Ca40_reaclib)*Y(Ca41)) + + (-screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(Ca40)*Y(He4)*state.rho + screened_rates(k_Ti44_to_He4_Ca40_reaclib)*Y(Ti44)) + + (screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(He4)*Y(K37)*state.rho + -screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(Ca40)*Y(H1)*state.rho) + + (screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(Ca40)*Y(N)*state.rho) + + (-screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(Ca40)*Y(N)*state.rho + screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(Ar37)*Y(He4)*state.rho) + + (screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(Sc43)*Y(H1)*state.rho + -screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(Ca40)*Y(He4)*state.rho) + + (screened_rates(k_K40_to_Ca40_beta_neg_weaktab)*Y(K40) + -screened_rates(k_Ca40_to_K40_electron_capture_weaktab)*Y(Ca40)); ydot_nuc(Ca41) = - (screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(Ar37)*Y(He4)*state.rho + -screened_rates(k_Ca41_to_He4_Ar37_reaclib)*Y(Ca41)) + - (screened_rates(k_p_K40_to_Ca41_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_Ca41_to_p_K40_reaclib)*Y(Ca41)) + - (screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(Ca40)*Y(N)*state.rho + -screened_rates(k_Ca41_to_n_Ca40_reaclib)*Y(Ca41)) + - (-screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_Ca42_to_n_Ca41_reaclib)*Y(Ca42)) + - (-screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(Ca41)*Y(He4)*state.rho + screened_rates(k_Ti45_to_He4_Ca41_reaclib)*Y(Ti45)) + - (screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(He4)*Y(K38)*state.rho + -screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(Ca41)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(K41)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + - (screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(Sc44)*Y(H1)*state.rho + -screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + - (screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + - (-screened_rates(k_Ca41_to_K41_weaktab)*Y(Ca41) + screened_rates(k_K41_to_Ca41_weaktab)*Y(K41)); + (screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(Ar37)*Y(He4)*state.rho + -screened_rates(k_Ca41_to_He4_Ar37_reaclib)*Y(Ca41)) + + (screened_rates(k_K40_p_to_Ca41_reaclib)*Y(K40)*Y(H1)*state.rho + -screened_rates(k_Ca41_to_p_K40_reaclib)*Y(Ca41)) + + (screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(Ca40)*Y(N)*state.rho + -screened_rates(k_Ca41_to_n_Ca40_reaclib)*Y(Ca41)) + + (-screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_Ca42_to_n_Ca41_reaclib)*Y(Ca42)) + + (-screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(Ca41)*Y(He4)*state.rho + screened_rates(k_Ti45_to_He4_Ca41_reaclib)*Y(Ti45)) + + (screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(He4)*Y(K38)*state.rho + -screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(Ca41)*Y(H1)*state.rho) + + (-screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(K41)*Y(H1)*state.rho) + + (-screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(Ca41)*Y(N)*state.rho + screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(Ar38)*Y(He4)*state.rho) + + (screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(Sc44)*Y(H1)*state.rho + -screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + + (screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + + (-screened_rates(k_Ca41_to_K41_electron_capture_weaktab)*Y(Ca41) + screened_rates(k_K41_to_Ca41_beta_neg_weaktab)*Y(K41)); ydot_nuc(Ca42) = - (screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(Ar38)*Y(He4)*state.rho + -screened_rates(k_Ca42_to_He4_Ar38_reaclib)*Y(Ca42)) + - (screened_rates(k_p_K41_to_Ca42_reaclib)*Y(K41)*Y(H1)*state.rho + -screened_rates(k_Ca42_to_p_K41_reaclib)*Y(Ca42)) + - (screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_Ca42_to_n_Ca41_reaclib)*Y(Ca42)) + - (-screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(Ca42)*Y(N)*state.rho + screened_rates(k_Ca43_to_n_Ca42_reaclib)*Y(Ca43)) + - (-screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(Ca42)*Y(H1)*state.rho + screened_rates(k_Sc43_to_p_Ca42_reaclib)*Y(Sc43)) + - (-screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(Ca42)*Y(He4)*state.rho + screened_rates(k_Ti46_to_He4_Ca42_reaclib)*Y(Ti46)) + - (-screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(Ca42)*Y(N)*state.rho + screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(Ar39)*Y(He4)*state.rho) + - (-screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(Ca42)*Y(H1)*state.rho + screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(He4)*Y(K39)*state.rho) + - (screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(Sc45)*Y(H1)*state.rho + -screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + - (screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(Ca42)*Y(He4)*state.rho); + (screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(Ar38)*Y(He4)*state.rho + -screened_rates(k_Ca42_to_He4_Ar38_reaclib)*Y(Ca42)) + + (screened_rates(k_K41_p_to_Ca42_reaclib)*Y(K41)*Y(H1)*state.rho + -screened_rates(k_Ca42_to_p_K41_reaclib)*Y(Ca42)) + + (screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(Ca41)*Y(N)*state.rho + -screened_rates(k_Ca42_to_n_Ca41_reaclib)*Y(Ca42)) + + (-screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(Ca42)*Y(N)*state.rho + screened_rates(k_Ca43_to_n_Ca42_reaclib)*Y(Ca43)) + + (-screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(Ca42)*Y(H1)*state.rho + screened_rates(k_Sc43_to_p_Ca42_reaclib)*Y(Sc43)) + + (-screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(Ca42)*Y(He4)*state.rho + screened_rates(k_Ti46_to_He4_Ca42_reaclib)*Y(Ti46)) + + (-screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(Ca42)*Y(N)*state.rho + screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(Ar39)*Y(He4)*state.rho) + + (-screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(Ca42)*Y(H1)*state.rho + screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(He4)*Y(K39)*state.rho) + + (screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(Sc45)*Y(H1)*state.rho + -screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + + (screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(Ca42)*Y(He4)*state.rho); ydot_nuc(Ca43) = - (screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(Ar39)*Y(He4)*state.rho + -screened_rates(k_Ca43_to_He4_Ar39_reaclib)*Y(Ca43)) + - (screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(Ca42)*Y(N)*state.rho + -screened_rates(k_Ca43_to_n_Ca42_reaclib)*Y(Ca43)) + - (-screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(Ca43)*Y(N)*state.rho + screened_rates(k_Ca44_to_n_Ca43_reaclib)*Y(Ca44)) + - (-screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(Ca43)*Y(H1)*state.rho + screened_rates(k_Sc44_to_p_Ca43_reaclib)*Y(Sc44)) + - (-screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(Ca43)*Y(He4)*state.rho + screened_rates(k_Ti47_to_He4_Ca43_reaclib)*Y(Ti47)) + - (screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(He4)*Y(K40)*state.rho + -screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(Ca43)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(Ca43)*Y(N)*state.rho + screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(Ar40)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(Ca43)*Y(He4)*state.rho + screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(Ti46)*Y(N)*state.rho) + - (screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(Ca43)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(Ca43)*Y(He4)*state.rho) + - (screened_rates(k_Sc43_to_Ca43_weaktab)*Y(Sc43) + -screened_rates(k_Ca43_to_Sc43_weaktab)*Y(Ca43)); + (screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(Ar39)*Y(He4)*state.rho + -screened_rates(k_Ca43_to_He4_Ar39_reaclib)*Y(Ca43)) + + (screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(Ca42)*Y(N)*state.rho + -screened_rates(k_Ca43_to_n_Ca42_reaclib)*Y(Ca43)) + + (-screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(Ca43)*Y(N)*state.rho + screened_rates(k_Ca44_to_n_Ca43_reaclib)*Y(Ca44)) + + (-screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(Ca43)*Y(H1)*state.rho + screened_rates(k_Sc44_to_p_Ca43_reaclib)*Y(Sc44)) + + (-screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(Ca43)*Y(He4)*state.rho + screened_rates(k_Ti47_to_He4_Ca43_reaclib)*Y(Ti47)) + + (screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(He4)*Y(K40)*state.rho + -screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(Ca43)*Y(H1)*state.rho) + + (-screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(Ca43)*Y(N)*state.rho + screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(Ar40)*Y(He4)*state.rho) + + (-screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(Ca43)*Y(He4)*state.rho + screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(Ti46)*Y(N)*state.rho) + + (screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(Ca43)*Y(H1)*state.rho) + + (screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(Ca43)*Y(He4)*state.rho) + + (screened_rates(k_Sc43_to_Ca43_electron_capture_weaktab)*Y(Sc43) + -screened_rates(k_Ca43_to_Sc43_beta_neg_weaktab)*Y(Ca43)); ydot_nuc(Ca44) = - (screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(Ar40)*Y(He4)*state.rho + -screened_rates(k_Ca44_to_He4_Ar40_reaclib)*Y(Ca44)) + - (screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(Ca43)*Y(N)*state.rho + -screened_rates(k_Ca44_to_n_Ca43_reaclib)*Y(Ca44)) + - (-screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(Ca44)*Y(N)*state.rho + screened_rates(k_Ca45_to_n_Ca44_reaclib)*Y(Ca45)) + - (-screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(Ca44)*Y(H1)*state.rho + screened_rates(k_Sc45_to_p_Ca44_reaclib)*Y(Sc45)) + - (-screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(Ca44)*Y(He4)*state.rho + screened_rates(k_Ti48_to_He4_Ca44_reaclib)*Y(Ti48)) + - (screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(He4)*Y(K41)*state.rho + -screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(Ca44)*Y(H1)*state.rho) + - (screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(Ca44)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(Sc47)*Y(H1)*state.rho + -screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + - (screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + - (screened_rates(k_Sc44_to_Ca44_weaktab)*Y(Sc44) + -screened_rates(k_Ca44_to_Sc44_weaktab)*Y(Ca44)); + (screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(Ar40)*Y(He4)*state.rho + -screened_rates(k_Ca44_to_He4_Ar40_reaclib)*Y(Ca44)) + + (screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(Ca43)*Y(N)*state.rho + -screened_rates(k_Ca44_to_n_Ca43_reaclib)*Y(Ca44)) + + (-screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(Ca44)*Y(N)*state.rho + screened_rates(k_Ca45_to_n_Ca44_reaclib)*Y(Ca45)) + + (-screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(Ca44)*Y(H1)*state.rho + screened_rates(k_Sc45_to_p_Ca44_reaclib)*Y(Sc45)) + + (-screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(Ca44)*Y(He4)*state.rho + screened_rates(k_Ti48_to_He4_Ca44_reaclib)*Y(Ti48)) + + (screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(He4)*Y(K41)*state.rho + -screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(Ca44)*Y(H1)*state.rho) + + (screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(Ca44)*Y(H1)*state.rho) + + (screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(Sc47)*Y(H1)*state.rho + -screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + + (screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + + (screened_rates(k_Sc44_to_Ca44_electron_capture_weaktab)*Y(Sc44) + -screened_rates(k_Ca44_to_Sc44_beta_neg_weaktab)*Y(Ca44)); ydot_nuc(Ca45) = - (screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(Ca44)*Y(N)*state.rho + -screened_rates(k_Ca45_to_n_Ca44_reaclib)*Y(Ca45)) + - (-screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(Ca45)*Y(N)*state.rho + screened_rates(k_Ca46_to_n_Ca45_reaclib)*Y(Ca46)) + - (-screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(Ca45)*Y(H1)*state.rho + screened_rates(k_Sc46_to_p_Ca45_reaclib)*Y(Sc46)) + - (-screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(Ca45)*Y(He4)*state.rho + screened_rates(k_Ti49_to_He4_Ca45_reaclib)*Y(Ti49)) + - (-screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(Ca45)*Y(He4)*state.rho + screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(Ti48)*Y(N)*state.rho) + - (screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(Sc45)*Y(N)*state.rho + -screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(Ca45)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(Ca45)*Y(He4)*state.rho) + - (-screened_rates(k_Ca45_to_Sc45_weaktab)*Y(Ca45) + screened_rates(k_Sc45_to_Ca45_weaktab)*Y(Sc45)); + (screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(Ca44)*Y(N)*state.rho + -screened_rates(k_Ca45_to_n_Ca44_reaclib)*Y(Ca45)) + + (-screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(Ca45)*Y(N)*state.rho + screened_rates(k_Ca46_to_n_Ca45_reaclib)*Y(Ca46)) + + (-screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(Ca45)*Y(H1)*state.rho + screened_rates(k_Sc46_to_p_Ca45_reaclib)*Y(Sc46)) + + (-screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(Ca45)*Y(He4)*state.rho + screened_rates(k_Ti49_to_He4_Ca45_reaclib)*Y(Ti49)) + + (-screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(Ca45)*Y(He4)*state.rho + screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(Ti48)*Y(N)*state.rho) + + (screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(Sc45)*Y(N)*state.rho + -screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(Ca45)*Y(H1)*state.rho) + + (screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(Ca45)*Y(He4)*state.rho) + + (-screened_rates(k_Ca45_to_Sc45_beta_neg_weaktab)*Y(Ca45) + screened_rates(k_Sc45_to_Ca45_electron_capture_weaktab)*Y(Sc45)); ydot_nuc(Ca46) = - (screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(Ca45)*Y(N)*state.rho + -screened_rates(k_Ca46_to_n_Ca45_reaclib)*Y(Ca46)) + - (-screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(Ca46)*Y(N)*state.rho + screened_rates(k_Ca47_to_n_Ca46_reaclib)*Y(Ca47)) + - (-screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(Ca46)*Y(H1)*state.rho + screened_rates(k_Sc47_to_p_Ca46_reaclib)*Y(Sc47)) + - (-screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(Ca46)*Y(He4)*state.rho + screened_rates(k_Ti50_to_He4_Ca46_reaclib)*Y(Ti50)) + - (screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(Sc46)*Y(N)*state.rho + -screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(Ca46)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + - (screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(Ti49)*Y(N)*state.rho + -screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + - (screened_rates(k_Sc46_to_Ca46_weaktab)*Y(Sc46) + -screened_rates(k_Ca46_to_Sc46_weaktab)*Y(Ca46)); + (screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(Ca45)*Y(N)*state.rho + -screened_rates(k_Ca46_to_n_Ca45_reaclib)*Y(Ca46)) + + (-screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(Ca46)*Y(N)*state.rho + screened_rates(k_Ca47_to_n_Ca46_reaclib)*Y(Ca47)) + + (-screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(Ca46)*Y(H1)*state.rho + screened_rates(k_Sc47_to_p_Ca46_reaclib)*Y(Sc47)) + + (-screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(Ca46)*Y(He4)*state.rho + screened_rates(k_Ti50_to_He4_Ca46_reaclib)*Y(Ti50)) + + (screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(Sc46)*Y(N)*state.rho + -screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(Ca46)*Y(H1)*state.rho) + + (screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + + (screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(Ti49)*Y(N)*state.rho + -screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + + (screened_rates(k_Sc46_to_Ca46_electron_capture_weaktab)*Y(Sc46) + -screened_rates(k_Ca46_to_Sc46_beta_neg_weaktab)*Y(Ca46)); ydot_nuc(Ca47) = - (screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(Ca46)*Y(N)*state.rho + -screened_rates(k_Ca47_to_n_Ca46_reaclib)*Y(Ca47)) + - (-screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(Ca47)*Y(N)*state.rho + screened_rates(k_Ca48_to_n_Ca47_reaclib)*Y(Ca48)) + - (-screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(Ca47)*Y(H1)*state.rho + screened_rates(k_Sc48_to_p_Ca47_reaclib)*Y(Sc48)) + - (-screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(Ca47)*Y(He4)*state.rho + screened_rates(k_Ti51_to_He4_Ca47_reaclib)*Y(Ti51)) + - (-screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(Ca47)*Y(H1)*state.rho + screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(Sc47)*Y(N)*state.rho) + - (-screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(Ca47)*Y(He4)*state.rho + screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(Ti50)*Y(N)*state.rho) + - (-screened_rates(k_Ca47_to_Sc47_weaktab)*Y(Ca47) + screened_rates(k_Sc47_to_Ca47_weaktab)*Y(Sc47)); + (screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(Ca46)*Y(N)*state.rho + -screened_rates(k_Ca47_to_n_Ca46_reaclib)*Y(Ca47)) + + (-screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(Ca47)*Y(N)*state.rho + screened_rates(k_Ca48_to_n_Ca47_reaclib)*Y(Ca48)) + + (-screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(Ca47)*Y(H1)*state.rho + screened_rates(k_Sc48_to_p_Ca47_reaclib)*Y(Sc48)) + + (-screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(Ca47)*Y(He4)*state.rho + screened_rates(k_Ti51_to_He4_Ca47_reaclib)*Y(Ti51)) + + (-screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(Ca47)*Y(H1)*state.rho + screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(Sc47)*Y(N)*state.rho) + + (-screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(Ca47)*Y(He4)*state.rho + screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(Ti50)*Y(N)*state.rho) + + (-screened_rates(k_Ca47_to_Sc47_beta_neg_weaktab)*Y(Ca47) + screened_rates(k_Sc47_to_Ca47_electron_capture_weaktab)*Y(Sc47)); ydot_nuc(Ca48) = - (screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(Ca47)*Y(N)*state.rho + -screened_rates(k_Ca48_to_n_Ca47_reaclib)*Y(Ca48)) + - (-screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(Ca48)*Y(H1)*state.rho + screened_rates(k_Sc49_to_p_Ca48_reaclib)*Y(Sc49)) + - (screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(Sc48)*Y(N)*state.rho + -screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(Ca48)*Y(H1)*state.rho) + - (screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(Ti51)*Y(N)*state.rho + -screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(Ca48)*Y(He4)*state.rho) + - (-screened_rates(k_Ca48_to_Sc48_weaktab)*Y(Ca48) + screened_rates(k_Sc48_to_Ca48_weaktab)*Y(Sc48)); + (screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(Ca47)*Y(N)*state.rho + -screened_rates(k_Ca48_to_n_Ca47_reaclib)*Y(Ca48)) + + (-screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(Ca48)*Y(H1)*state.rho + screened_rates(k_Sc49_to_p_Ca48_reaclib)*Y(Sc49)) + + (screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(Sc48)*Y(N)*state.rho + -screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(Ca48)*Y(H1)*state.rho) + + (screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(Ti51)*Y(N)*state.rho + -screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(Ca48)*Y(He4)*state.rho) + + (-screened_rates(k_Ca48_to_Sc48_beta_neg_weaktab)*Y(Ca48) + screened_rates(k_Sc48_to_Ca48_electron_capture_weaktab)*Y(Sc48)); ydot_nuc(Sc43) = - (screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(He4)*Y(K39)*state.rho + -screened_rates(k_Sc43_to_He4_K39_reaclib)*Y(Sc43)) + - (screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(Ca42)*Y(H1)*state.rho + -screened_rates(k_Sc43_to_p_Ca42_reaclib)*Y(Sc43)) + - (-screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_Sc44_to_n_Sc43_reaclib)*Y(Sc44)) + - (-screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(Sc43)*Y(H1)*state.rho + screened_rates(k_Ti44_to_p_Sc43_reaclib)*Y(Ti44)) + - (-screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(He4)*Y(Sc43)*state.rho + screened_rates(k_V47_to_He4_Sc43_reaclib)*Y(V47)) + - (-screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(Ca43)*Y(H1)*state.rho) + - (-screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(He4)*Y(K40)*state.rho) + - (-screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(Sc43)*Y(H1)*state.rho + screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(Ca40)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(He4)*Y(Sc43)*state.rho + screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(Ti46)*Y(H1)*state.rho) + - (screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(He4)*Y(Sc43)*state.rho) + - (-screened_rates(k_Sc43_to_Ca43_weaktab)*Y(Sc43) + screened_rates(k_Ca43_to_Sc43_weaktab)*Y(Ca43)); + (screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(He4)*Y(K39)*state.rho + -screened_rates(k_Sc43_to_He4_K39_reaclib)*Y(Sc43)) + + (screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(Ca42)*Y(H1)*state.rho + -screened_rates(k_Sc43_to_p_Ca42_reaclib)*Y(Sc43)) + + (-screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_Sc44_to_n_Sc43_reaclib)*Y(Sc44)) + + (-screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(Sc43)*Y(H1)*state.rho + screened_rates(k_Ti44_to_p_Sc43_reaclib)*Y(Ti44)) + + (-screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(He4)*Y(Sc43)*state.rho + screened_rates(k_V47_to_He4_Sc43_reaclib)*Y(V47)) + + (-screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(Ca43)*Y(H1)*state.rho) + + (-screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(Sc43)*Y(N)*state.rho + screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(He4)*Y(K40)*state.rho) + + (-screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(Sc43)*Y(H1)*state.rho + screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(Ca40)*Y(He4)*state.rho) + + (-screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(He4)*Y(Sc43)*state.rho + screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(Ti46)*Y(H1)*state.rho) + + (screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(He4)*Y(Sc43)*state.rho) + + (-screened_rates(k_Sc43_to_Ca43_electron_capture_weaktab)*Y(Sc43) + screened_rates(k_Ca43_to_Sc43_beta_neg_weaktab)*Y(Ca43)); ydot_nuc(Sc44) = - (screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(He4)*Y(K40)*state.rho + -screened_rates(k_Sc44_to_He4_K40_reaclib)*Y(Sc44)) + - (screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(Ca43)*Y(H1)*state.rho + -screened_rates(k_Sc44_to_p_Ca43_reaclib)*Y(Sc44)) + - (screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_Sc44_to_n_Sc43_reaclib)*Y(Sc44)) + - (-screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_Sc45_to_n_Sc44_reaclib)*Y(Sc45)) + - (-screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(Sc44)*Y(H1)*state.rho + screened_rates(k_Ti45_to_p_Sc44_reaclib)*Y(Ti45)) + - (-screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(He4)*Y(Sc44)*state.rho + screened_rates(k_V48_to_He4_Sc44_reaclib)*Y(V48)) + - (-screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(Ca44)*Y(H1)*state.rho) + - (-screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(He4)*Y(K41)*state.rho) + - (-screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(Sc44)*Y(H1)*state.rho + screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(He4)*Y(Sc44)*state.rho + screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(Ti47)*Y(H1)*state.rho) + - (screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(Sc44)*Y(H1)*state.rho) + - (screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(He4)*Y(Sc44)*state.rho) + - (-screened_rates(k_Sc44_to_Ca44_weaktab)*Y(Sc44) + screened_rates(k_Ca44_to_Sc44_weaktab)*Y(Ca44)) + - (screened_rates(k_Ti44_to_Sc44_weaktab)*Y(Ti44) + -screened_rates(k_Sc44_to_Ti44_weaktab)*Y(Sc44)); + (screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(He4)*Y(K40)*state.rho + -screened_rates(k_Sc44_to_He4_K40_reaclib)*Y(Sc44)) + + (screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(Ca43)*Y(H1)*state.rho + -screened_rates(k_Sc44_to_p_Ca43_reaclib)*Y(Sc44)) + + (screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(Sc43)*Y(N)*state.rho + -screened_rates(k_Sc44_to_n_Sc43_reaclib)*Y(Sc44)) + + (-screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_Sc45_to_n_Sc44_reaclib)*Y(Sc45)) + + (-screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(Sc44)*Y(H1)*state.rho + screened_rates(k_Ti45_to_p_Sc44_reaclib)*Y(Ti45)) + + (-screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(He4)*Y(Sc44)*state.rho + screened_rates(k_V48_to_He4_Sc44_reaclib)*Y(V48)) + + (-screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(Ca44)*Y(H1)*state.rho) + + (-screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(Sc44)*Y(N)*state.rho + screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(He4)*Y(K41)*state.rho) + + (-screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(Sc44)*Y(H1)*state.rho + screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + + (-screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(He4)*Y(Sc44)*state.rho + screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(Ti47)*Y(H1)*state.rho) + + (screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(Sc44)*Y(H1)*state.rho) + + (screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(He4)*Y(Sc44)*state.rho) + + (-screened_rates(k_Sc44_to_Ca44_electron_capture_weaktab)*Y(Sc44) + screened_rates(k_Ca44_to_Sc44_beta_neg_weaktab)*Y(Ca44)) + + (screened_rates(k_Ti44_to_Sc44_electron_capture_weaktab)*Y(Ti44) + -screened_rates(k_Sc44_to_Ti44_beta_neg_weaktab)*Y(Sc44)); ydot_nuc(Sc45) = - (screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(He4)*Y(K41)*state.rho + -screened_rates(k_Sc45_to_He4_K41_reaclib)*Y(Sc45)) + - (screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(Ca44)*Y(H1)*state.rho + -screened_rates(k_Sc45_to_p_Ca44_reaclib)*Y(Sc45)) + - (screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_Sc45_to_n_Sc44_reaclib)*Y(Sc45)) + - (-screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(Sc45)*Y(N)*state.rho + screened_rates(k_Sc46_to_n_Sc45_reaclib)*Y(Sc46)) + - (-screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(Sc45)*Y(H1)*state.rho + screened_rates(k_Ti46_to_p_Sc45_reaclib)*Y(Ti46)) + - (-screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(He4)*Y(Sc45)*state.rho + screened_rates(k_V49_to_He4_Sc45_reaclib)*Y(V49)) + - (-screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(Sc45)*Y(N)*state.rho + screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(Ca45)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(Sc45)*Y(H1)*state.rho + screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(He4)*Y(Sc45)*state.rho + screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(Ti48)*Y(H1)*state.rho) + - (screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(Sc45)*Y(H1)*state.rho) + - (screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(He4)*Y(Sc45)*state.rho) + - (screened_rates(k_Ca45_to_Sc45_weaktab)*Y(Ca45) + -screened_rates(k_Sc45_to_Ca45_weaktab)*Y(Sc45)) + - (screened_rates(k_Ti45_to_Sc45_weaktab)*Y(Ti45) + -screened_rates(k_Sc45_to_Ti45_weaktab)*Y(Sc45)); + (screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(He4)*Y(K41)*state.rho + -screened_rates(k_Sc45_to_He4_K41_reaclib)*Y(Sc45)) + + (screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(Ca44)*Y(H1)*state.rho + -screened_rates(k_Sc45_to_p_Ca44_reaclib)*Y(Sc45)) + + (screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(Sc44)*Y(N)*state.rho + -screened_rates(k_Sc45_to_n_Sc44_reaclib)*Y(Sc45)) + + (-screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(Sc45)*Y(N)*state.rho + screened_rates(k_Sc46_to_n_Sc45_reaclib)*Y(Sc46)) + + (-screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(Sc45)*Y(H1)*state.rho + screened_rates(k_Ti46_to_p_Sc45_reaclib)*Y(Ti46)) + + (-screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(He4)*Y(Sc45)*state.rho + screened_rates(k_V49_to_He4_Sc45_reaclib)*Y(V49)) + + (-screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(Sc45)*Y(N)*state.rho + screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(Ca45)*Y(H1)*state.rho) + + (-screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(Sc45)*Y(H1)*state.rho + screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + + (-screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(He4)*Y(Sc45)*state.rho + screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(Ti48)*Y(H1)*state.rho) + + (screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(Sc45)*Y(H1)*state.rho) + + (screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(He4)*Y(Sc45)*state.rho) + + (screened_rates(k_Ca45_to_Sc45_beta_neg_weaktab)*Y(Ca45) + -screened_rates(k_Sc45_to_Ca45_electron_capture_weaktab)*Y(Sc45)) + + (screened_rates(k_Ti45_to_Sc45_electron_capture_weaktab)*Y(Ti45) + -screened_rates(k_Sc45_to_Ti45_beta_neg_weaktab)*Y(Sc45)); ydot_nuc(Sc46) = - (screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(Ca45)*Y(H1)*state.rho + -screened_rates(k_Sc46_to_p_Ca45_reaclib)*Y(Sc46)) + - (screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(Sc45)*Y(N)*state.rho + -screened_rates(k_Sc46_to_n_Sc45_reaclib)*Y(Sc46)) + - (-screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(Sc46)*Y(N)*state.rho + screened_rates(k_Sc47_to_n_Sc46_reaclib)*Y(Sc47)) + - (-screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_Ti47_to_p_Sc46_reaclib)*Y(Ti47)) + - (-screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_V50_to_He4_Sc46_reaclib)*Y(V50)) + - (-screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(Sc46)*Y(N)*state.rho + screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(Ca46)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(Ti46)*Y(N)*state.rho) + - (-screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(Ca43)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(V49)*Y(N)*state.rho) + - (-screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(Ti49)*Y(H1)*state.rho) + - (-screened_rates(k_Sc46_to_Ca46_weaktab)*Y(Sc46) + screened_rates(k_Ca46_to_Sc46_weaktab)*Y(Ca46)) + - (-screened_rates(k_Sc46_to_Ti46_weaktab)*Y(Sc46) + screened_rates(k_Ti46_to_Sc46_weaktab)*Y(Ti46)); + (screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(Ca45)*Y(H1)*state.rho + -screened_rates(k_Sc46_to_p_Ca45_reaclib)*Y(Sc46)) + + (screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(Sc45)*Y(N)*state.rho + -screened_rates(k_Sc46_to_n_Sc45_reaclib)*Y(Sc46)) + + (-screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(Sc46)*Y(N)*state.rho + screened_rates(k_Sc47_to_n_Sc46_reaclib)*Y(Sc47)) + + (-screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_Ti47_to_p_Sc46_reaclib)*Y(Ti47)) + + (-screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_V50_to_He4_Sc46_reaclib)*Y(V50)) + + (-screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(Sc46)*Y(N)*state.rho + screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(Ca46)*Y(H1)*state.rho) + + (-screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(Ti46)*Y(N)*state.rho) + + (-screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(Sc46)*Y(H1)*state.rho + screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(Ca43)*Y(He4)*state.rho) + + (-screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(V49)*Y(N)*state.rho) + + (-screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(He4)*Y(Sc46)*state.rho + screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(Ti49)*Y(H1)*state.rho) + + (-screened_rates(k_Sc46_to_Ca46_electron_capture_weaktab)*Y(Sc46) + screened_rates(k_Ca46_to_Sc46_beta_neg_weaktab)*Y(Ca46)) + + (-screened_rates(k_Sc46_to_Ti46_beta_neg_weaktab)*Y(Sc46) + screened_rates(k_Ti46_to_Sc46_electron_capture_weaktab)*Y(Ti46)); ydot_nuc(Sc47) = - (screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(Ca46)*Y(H1)*state.rho + -screened_rates(k_Sc47_to_p_Ca46_reaclib)*Y(Sc47)) + - (screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(Sc46)*Y(N)*state.rho + -screened_rates(k_Sc47_to_n_Sc46_reaclib)*Y(Sc47)) + - (-screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(Sc47)*Y(N)*state.rho + screened_rates(k_Sc48_to_n_Sc47_reaclib)*Y(Sc48)) + - (-screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(Sc47)*Y(H1)*state.rho + screened_rates(k_Ti48_to_p_Sc47_reaclib)*Y(Ti48)) + - (-screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(He4)*Y(Sc47)*state.rho + screened_rates(k_V51_to_He4_Sc47_reaclib)*Y(V51)) + - (screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(Ca47)*Y(H1)*state.rho + -screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(Sc47)*Y(N)*state.rho) + - (-screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(Sc47)*Y(H1)*state.rho + screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(He4)*Y(Sc47)*state.rho + screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(Ti50)*Y(H1)*state.rho) + - (screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(Sc47)*Y(H1)*state.rho) + - (screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(He4)*Y(Sc47)*state.rho) + - (screened_rates(k_Ca47_to_Sc47_weaktab)*Y(Ca47) + -screened_rates(k_Sc47_to_Ca47_weaktab)*Y(Sc47)) + - (-screened_rates(k_Sc47_to_Ti47_weaktab)*Y(Sc47) + screened_rates(k_Ti47_to_Sc47_weaktab)*Y(Ti47)); + (screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(Ca46)*Y(H1)*state.rho + -screened_rates(k_Sc47_to_p_Ca46_reaclib)*Y(Sc47)) + + (screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(Sc46)*Y(N)*state.rho + -screened_rates(k_Sc47_to_n_Sc46_reaclib)*Y(Sc47)) + + (-screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(Sc47)*Y(N)*state.rho + screened_rates(k_Sc48_to_n_Sc47_reaclib)*Y(Sc48)) + + (-screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(Sc47)*Y(H1)*state.rho + screened_rates(k_Ti48_to_p_Sc47_reaclib)*Y(Ti48)) + + (-screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(He4)*Y(Sc47)*state.rho + screened_rates(k_V51_to_He4_Sc47_reaclib)*Y(V51)) + + (screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(Ca47)*Y(H1)*state.rho + -screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(Sc47)*Y(N)*state.rho) + + (-screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(Sc47)*Y(H1)*state.rho + screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + + (-screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(He4)*Y(Sc47)*state.rho + screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(Ti50)*Y(H1)*state.rho) + + (screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(Sc47)*Y(H1)*state.rho) + + (screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(He4)*Y(Sc47)*state.rho) + + (screened_rates(k_Ca47_to_Sc47_beta_neg_weaktab)*Y(Ca47) + -screened_rates(k_Sc47_to_Ca47_electron_capture_weaktab)*Y(Sc47)) + + (-screened_rates(k_Sc47_to_Ti47_beta_neg_weaktab)*Y(Sc47) + screened_rates(k_Ti47_to_Sc47_electron_capture_weaktab)*Y(Ti47)); ydot_nuc(Sc48) = - (screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(Ca47)*Y(H1)*state.rho + -screened_rates(k_Sc48_to_p_Ca47_reaclib)*Y(Sc48)) + - (screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(Sc47)*Y(N)*state.rho + -screened_rates(k_Sc48_to_n_Sc47_reaclib)*Y(Sc48)) + - (-screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(Sc48)*Y(N)*state.rho + screened_rates(k_Sc49_to_n_Sc48_reaclib)*Y(Sc49)) + - (-screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_Ti49_to_p_Sc48_reaclib)*Y(Ti49)) + - (-screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_V52_to_He4_Sc48_reaclib)*Y(V52)) + - (-screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(Sc48)*Y(N)*state.rho + screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(Ca48)*Y(H1)*state.rho) + - (-screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(Ti48)*Y(N)*state.rho) + - (-screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(Ca45)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(V51)*Y(N)*state.rho) + - (-screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(Ti51)*Y(H1)*state.rho) + - (screened_rates(k_Ca48_to_Sc48_weaktab)*Y(Ca48) + -screened_rates(k_Sc48_to_Ca48_weaktab)*Y(Sc48)) + - (-screened_rates(k_Sc48_to_Ti48_weaktab)*Y(Sc48) + screened_rates(k_Ti48_to_Sc48_weaktab)*Y(Ti48)); + (screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(Ca47)*Y(H1)*state.rho + -screened_rates(k_Sc48_to_p_Ca47_reaclib)*Y(Sc48)) + + (screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(Sc47)*Y(N)*state.rho + -screened_rates(k_Sc48_to_n_Sc47_reaclib)*Y(Sc48)) + + (-screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(Sc48)*Y(N)*state.rho + screened_rates(k_Sc49_to_n_Sc48_reaclib)*Y(Sc49)) + + (-screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_Ti49_to_p_Sc48_reaclib)*Y(Ti49)) + + (-screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_V52_to_He4_Sc48_reaclib)*Y(V52)) + + (-screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(Sc48)*Y(N)*state.rho + screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(Ca48)*Y(H1)*state.rho) + + (-screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(Ti48)*Y(N)*state.rho) + + (-screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(Sc48)*Y(H1)*state.rho + screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(Ca45)*Y(He4)*state.rho) + + (-screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(V51)*Y(N)*state.rho) + + (-screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(He4)*Y(Sc48)*state.rho + screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(Ti51)*Y(H1)*state.rho) + + (screened_rates(k_Ca48_to_Sc48_beta_neg_weaktab)*Y(Ca48) + -screened_rates(k_Sc48_to_Ca48_electron_capture_weaktab)*Y(Sc48)) + + (-screened_rates(k_Sc48_to_Ti48_beta_neg_weaktab)*Y(Sc48) + screened_rates(k_Ti48_to_Sc48_electron_capture_weaktab)*Y(Ti48)); ydot_nuc(Sc49) = - (screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(Ca48)*Y(H1)*state.rho + -screened_rates(k_Sc49_to_p_Ca48_reaclib)*Y(Sc49)) + - (screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(Sc48)*Y(N)*state.rho + -screened_rates(k_Sc49_to_n_Sc48_reaclib)*Y(Sc49)) + - (-screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_Ti50_to_p_Sc49_reaclib)*Y(Ti50)) + - (-screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(Ti49)*Y(N)*state.rho) + - (-screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + - (screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(V52)*Y(N)*state.rho + -screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(He4)*Y(Sc49)*state.rho) + - (-screened_rates(k_Sc49_to_Ti49_weaktab)*Y(Sc49) + screened_rates(k_Ti49_to_Sc49_weaktab)*Y(Ti49)); + (screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(Ca48)*Y(H1)*state.rho + -screened_rates(k_Sc49_to_p_Ca48_reaclib)*Y(Sc49)) + + (screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(Sc48)*Y(N)*state.rho + -screened_rates(k_Sc49_to_n_Sc48_reaclib)*Y(Sc49)) + + (-screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_Ti50_to_p_Sc49_reaclib)*Y(Ti50)) + + (-screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(Ti49)*Y(N)*state.rho) + + (-screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(Sc49)*Y(H1)*state.rho + screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + + (screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(V52)*Y(N)*state.rho + -screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(He4)*Y(Sc49)*state.rho) + + (-screened_rates(k_Sc49_to_Ti49_beta_neg_weaktab)*Y(Sc49) + screened_rates(k_Ti49_to_Sc49_electron_capture_weaktab)*Y(Ti49)); ydot_nuc(Ti44) = - (screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(Ca40)*Y(He4)*state.rho + -screened_rates(k_Ti44_to_He4_Ca40_reaclib)*Y(Ti44)) + - (screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(Sc43)*Y(H1)*state.rho + -screened_rates(k_Ti44_to_p_Sc43_reaclib)*Y(Ti44)) + - (-screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_Ti45_to_n_Ti44_reaclib)*Y(Ti45)) + - (-screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_He4_Ti44_reaclib)*Y(Cr48)) + - (-screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(Sc44)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + - (screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(V47)*Y(H1)*state.rho + -screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(He4)*Y(Ti44)*state.rho) + - (-screened_rates(k_Ti44_to_Sc44_weaktab)*Y(Ti44) + screened_rates(k_Sc44_to_Ti44_weaktab)*Y(Sc44)); + (screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(Ca40)*Y(He4)*state.rho + -screened_rates(k_Ti44_to_He4_Ca40_reaclib)*Y(Ti44)) + + (screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(Sc43)*Y(H1)*state.rho + -screened_rates(k_Ti44_to_p_Sc43_reaclib)*Y(Ti44)) + + (-screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_Ti45_to_n_Ti44_reaclib)*Y(Ti45)) + + (-screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(He4)*Y(Ti44)*state.rho + screened_rates(k_Cr48_to_He4_Ti44_reaclib)*Y(Cr48)) + + (-screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(Sc44)*Y(H1)*state.rho) + + (-screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(Ti44)*Y(N)*state.rho + screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(Ca41)*Y(He4)*state.rho) + + (screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(V47)*Y(H1)*state.rho + -screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(He4)*Y(Ti44)*state.rho) + + (-screened_rates(k_Ti44_to_Sc44_electron_capture_weaktab)*Y(Ti44) + screened_rates(k_Sc44_to_Ti44_beta_neg_weaktab)*Y(Sc44)); ydot_nuc(Ti45) = - (screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(Ca41)*Y(He4)*state.rho + -screened_rates(k_Ti45_to_He4_Ca41_reaclib)*Y(Ti45)) + - (screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(Sc44)*Y(H1)*state.rho + -screened_rates(k_Ti45_to_p_Sc44_reaclib)*Y(Ti45)) + - (screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_Ti45_to_n_Ti44_reaclib)*Y(Ti45)) + - (-screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_Ti46_to_n_Ti45_reaclib)*Y(Ti46)) + - (-screened_rates(k_p_Ti45_to_V46_reaclib)*Y(Ti45)*Y(H1)*state.rho + screened_rates(k_V46_to_p_Ti45_reaclib)*Y(V46)) + - (-screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(He4)*Y(Ti45)*state.rho + screened_rates(k_Cr49_to_He4_Ti45_reaclib)*Y(Cr49)) + - (-screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(Sc45)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(He4)*Y(Ti45)*state.rho + screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(V48)*Y(H1)*state.rho) + - (screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(He4)*Y(Ti45)*state.rho) + - (-screened_rates(k_Ti45_to_Sc45_weaktab)*Y(Ti45) + screened_rates(k_Sc45_to_Ti45_weaktab)*Y(Sc45)); + (screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(Ca41)*Y(He4)*state.rho + -screened_rates(k_Ti45_to_He4_Ca41_reaclib)*Y(Ti45)) + + (screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(Sc44)*Y(H1)*state.rho + -screened_rates(k_Ti45_to_p_Sc44_reaclib)*Y(Ti45)) + + (screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(Ti44)*Y(N)*state.rho + -screened_rates(k_Ti45_to_n_Ti44_reaclib)*Y(Ti45)) + + (-screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_Ti46_to_n_Ti45_reaclib)*Y(Ti46)) + + (-screened_rates(k_Ti45_p_to_V46_reaclib)*Y(Ti45)*Y(H1)*state.rho + screened_rates(k_V46_to_p_Ti45_reaclib)*Y(V46)) + + (-screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(He4)*Y(Ti45)*state.rho + screened_rates(k_Cr49_to_He4_Ti45_reaclib)*Y(Cr49)) + + (-screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(Sc45)*Y(H1)*state.rho) + + (-screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(Ti45)*Y(N)*state.rho + screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(Ca42)*Y(He4)*state.rho) + + (-screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(He4)*Y(Ti45)*state.rho + screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(V48)*Y(H1)*state.rho) + + (screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(He4)*Y(Ti45)*state.rho) + + (-screened_rates(k_Ti45_to_Sc45_electron_capture_weaktab)*Y(Ti45) + screened_rates(k_Sc45_to_Ti45_beta_neg_weaktab)*Y(Sc45)); ydot_nuc(Ti46) = - (screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(Ca42)*Y(He4)*state.rho + -screened_rates(k_Ti46_to_He4_Ca42_reaclib)*Y(Ti46)) + - (screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(Sc45)*Y(H1)*state.rho + -screened_rates(k_Ti46_to_p_Sc45_reaclib)*Y(Ti46)) + - (screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_Ti46_to_n_Ti45_reaclib)*Y(Ti46)) + - (-screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(Ti46)*Y(N)*state.rho + screened_rates(k_Ti47_to_n_Ti46_reaclib)*Y(Ti47)) + - (-screened_rates(k_p_Ti46_to_V47_reaclib)*Y(Ti46)*Y(H1)*state.rho + screened_rates(k_V47_to_p_Ti46_reaclib)*Y(V47)) + - (-screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(He4)*Y(Ti46)*state.rho + screened_rates(k_Cr50_to_He4_Ti46_reaclib)*Y(Cr50)) + - (screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(Ca43)*Y(He4)*state.rho + -screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(Ti46)*Y(N)*state.rho) + - (screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(He4)*Y(Sc43)*state.rho + -screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(Ti46)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(Ti46)*Y(N)*state.rho) + - (screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(Ti46)*Y(H1)*state.rho) + - (screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(V49)*Y(H1)*state.rho + -screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + - (screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + - (screened_rates(k_Sc46_to_Ti46_weaktab)*Y(Sc46) + -screened_rates(k_Ti46_to_Sc46_weaktab)*Y(Ti46)) + - (screened_rates(k_V46_to_Ti46_weaktab)*Y(V46) + -screened_rates(k_Ti46_to_V46_weaktab)*Y(Ti46)); + (screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(Ca42)*Y(He4)*state.rho + -screened_rates(k_Ti46_to_He4_Ca42_reaclib)*Y(Ti46)) + + (screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(Sc45)*Y(H1)*state.rho + -screened_rates(k_Ti46_to_p_Sc45_reaclib)*Y(Ti46)) + + (screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(Ti45)*Y(N)*state.rho + -screened_rates(k_Ti46_to_n_Ti45_reaclib)*Y(Ti46)) + + (-screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(Ti46)*Y(N)*state.rho + screened_rates(k_Ti47_to_n_Ti46_reaclib)*Y(Ti47)) + + (-screened_rates(k_Ti46_p_to_V47_reaclib)*Y(Ti46)*Y(H1)*state.rho + screened_rates(k_V47_to_p_Ti46_reaclib)*Y(V47)) + + (-screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(He4)*Y(Ti46)*state.rho + screened_rates(k_Cr50_to_He4_Ti46_reaclib)*Y(Cr50)) + + (screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(Ca43)*Y(He4)*state.rho + -screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(Ti46)*Y(N)*state.rho) + + (screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(He4)*Y(Sc43)*state.rho + -screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(Ti46)*Y(H1)*state.rho) + + (screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(Ti46)*Y(N)*state.rho) + + (screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(Ti46)*Y(H1)*state.rho) + + (screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(V49)*Y(H1)*state.rho + -screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + + (screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + + (screened_rates(k_Sc46_to_Ti46_beta_neg_weaktab)*Y(Sc46) + -screened_rates(k_Ti46_to_Sc46_electron_capture_weaktab)*Y(Ti46)) + + (screened_rates(k_V46_to_Ti46_electron_capture_weaktab)*Y(V46) + -screened_rates(k_Ti46_to_V46_beta_neg_weaktab)*Y(Ti46)); ydot_nuc(Ti47) = - (screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(Ca43)*Y(He4)*state.rho + -screened_rates(k_Ti47_to_He4_Ca43_reaclib)*Y(Ti47)) + - (screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_Ti47_to_p_Sc46_reaclib)*Y(Ti47)) + - (screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(Ti46)*Y(N)*state.rho + -screened_rates(k_Ti47_to_n_Ti46_reaclib)*Y(Ti47)) + - (-screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_Ti48_to_n_Ti47_reaclib)*Y(Ti48)) + - (-screened_rates(k_p_Ti47_to_V48_reaclib)*Y(Ti47)*Y(H1)*state.rho + screened_rates(k_V48_to_p_Ti47_reaclib)*Y(V48)) + - (-screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(He4)*Y(Ti47)*state.rho + screened_rates(k_Cr51_to_He4_Ti47_reaclib)*Y(Cr51)) + - (screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(He4)*Y(Sc44)*state.rho + -screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(Ti47)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(Sc47)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + - (screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(Ti47)*Y(H1)*state.rho) + - (screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + - (screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(Cr50)*Y(N)*state.rho + -screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + - (screened_rates(k_Sc47_to_Ti47_weaktab)*Y(Sc47) + -screened_rates(k_Ti47_to_Sc47_weaktab)*Y(Ti47)) + - (screened_rates(k_V47_to_Ti47_weaktab)*Y(V47) + -screened_rates(k_Ti47_to_V47_weaktab)*Y(Ti47)); + (screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(Ca43)*Y(He4)*state.rho + -screened_rates(k_Ti47_to_He4_Ca43_reaclib)*Y(Ti47)) + + (screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(Sc46)*Y(H1)*state.rho + -screened_rates(k_Ti47_to_p_Sc46_reaclib)*Y(Ti47)) + + (screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(Ti46)*Y(N)*state.rho + -screened_rates(k_Ti47_to_n_Ti46_reaclib)*Y(Ti47)) + + (-screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_Ti48_to_n_Ti47_reaclib)*Y(Ti48)) + + (-screened_rates(k_Ti47_p_to_V48_reaclib)*Y(Ti47)*Y(H1)*state.rho + screened_rates(k_V48_to_p_Ti47_reaclib)*Y(V48)) + + (-screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(He4)*Y(Ti47)*state.rho + screened_rates(k_Cr51_to_He4_Ti47_reaclib)*Y(Cr51)) + + (screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(He4)*Y(Sc44)*state.rho + -screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(Ti47)*Y(H1)*state.rho) + + (-screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(Sc47)*Y(H1)*state.rho) + + (-screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(Ti47)*Y(N)*state.rho + screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(Ca44)*Y(He4)*state.rho) + + (screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(Ti47)*Y(H1)*state.rho) + + (screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + + (screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(Cr50)*Y(N)*state.rho + -screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + + (screened_rates(k_Sc47_to_Ti47_beta_neg_weaktab)*Y(Sc47) + -screened_rates(k_Ti47_to_Sc47_electron_capture_weaktab)*Y(Ti47)) + + (screened_rates(k_V47_to_Ti47_electron_capture_weaktab)*Y(V47) + -screened_rates(k_Ti47_to_V47_beta_neg_weaktab)*Y(Ti47)); ydot_nuc(Ti48) = - (screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(Ca44)*Y(He4)*state.rho + -screened_rates(k_Ti48_to_He4_Ca44_reaclib)*Y(Ti48)) + - (screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(Sc47)*Y(H1)*state.rho + -screened_rates(k_Ti48_to_p_Sc47_reaclib)*Y(Ti48)) + - (screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_Ti48_to_n_Ti47_reaclib)*Y(Ti48)) + - (-screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(Ti48)*Y(N)*state.rho + screened_rates(k_Ti49_to_n_Ti48_reaclib)*Y(Ti49)) + - (-screened_rates(k_p_Ti48_to_V49_reaclib)*Y(Ti48)*Y(H1)*state.rho + screened_rates(k_V49_to_p_Ti48_reaclib)*Y(V49)) + - (-screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(He4)*Y(Ti48)*state.rho + screened_rates(k_Cr52_to_He4_Ti48_reaclib)*Y(Cr52)) + - (screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(Ca45)*Y(He4)*state.rho + -screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(Ti48)*Y(N)*state.rho) + - (screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(He4)*Y(Sc45)*state.rho + -screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(Ti48)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(Ti48)*Y(N)*state.rho) + - (screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(Ti48)*Y(H1)*state.rho) + - (screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(V51)*Y(H1)*state.rho + -screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + - (screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + - (screened_rates(k_Sc48_to_Ti48_weaktab)*Y(Sc48) + -screened_rates(k_Ti48_to_Sc48_weaktab)*Y(Ti48)) + - (screened_rates(k_V48_to_Ti48_weaktab)*Y(V48) + -screened_rates(k_Ti48_to_V48_weaktab)*Y(Ti48)); + (screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(Ca44)*Y(He4)*state.rho + -screened_rates(k_Ti48_to_He4_Ca44_reaclib)*Y(Ti48)) + + (screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(Sc47)*Y(H1)*state.rho + -screened_rates(k_Ti48_to_p_Sc47_reaclib)*Y(Ti48)) + + (screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(Ti47)*Y(N)*state.rho + -screened_rates(k_Ti48_to_n_Ti47_reaclib)*Y(Ti48)) + + (-screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(Ti48)*Y(N)*state.rho + screened_rates(k_Ti49_to_n_Ti48_reaclib)*Y(Ti49)) + + (-screened_rates(k_Ti48_p_to_V49_reaclib)*Y(Ti48)*Y(H1)*state.rho + screened_rates(k_V49_to_p_Ti48_reaclib)*Y(V49)) + + (-screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(He4)*Y(Ti48)*state.rho + screened_rates(k_Cr52_to_He4_Ti48_reaclib)*Y(Cr52)) + + (screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(Ca45)*Y(He4)*state.rho + -screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(Ti48)*Y(N)*state.rho) + + (screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(He4)*Y(Sc45)*state.rho + -screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(Ti48)*Y(H1)*state.rho) + + (screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(Ti48)*Y(N)*state.rho) + + (screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(Ti48)*Y(H1)*state.rho) + + (screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(V51)*Y(H1)*state.rho + -screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + + (screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + + (screened_rates(k_Sc48_to_Ti48_beta_neg_weaktab)*Y(Sc48) + -screened_rates(k_Ti48_to_Sc48_electron_capture_weaktab)*Y(Ti48)) + + (screened_rates(k_V48_to_Ti48_electron_capture_weaktab)*Y(V48) + -screened_rates(k_Ti48_to_V48_beta_neg_weaktab)*Y(Ti48)); ydot_nuc(Ti49) = - (screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(Ca45)*Y(He4)*state.rho + -screened_rates(k_Ti49_to_He4_Ca45_reaclib)*Y(Ti49)) + - (screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_Ti49_to_p_Sc48_reaclib)*Y(Ti49)) + - (screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(Ti48)*Y(N)*state.rho + -screened_rates(k_Ti49_to_n_Ti48_reaclib)*Y(Ti49)) + - (-screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(Ti49)*Y(N)*state.rho + screened_rates(k_Ti50_to_n_Ti49_reaclib)*Y(Ti50)) + - (-screened_rates(k_p_Ti49_to_V50_reaclib)*Y(Ti49)*Y(H1)*state.rho + screened_rates(k_V50_to_p_Ti49_reaclib)*Y(V50)) + - (-screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(He4)*Y(Ti49)*state.rho + screened_rates(k_Cr53_to_He4_Ti49_reaclib)*Y(Cr53)) + - (screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(Ti49)*Y(H1)*state.rho) + - (screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(Ti49)*Y(N)*state.rho) + - (-screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(Ti49)*Y(N)*state.rho + screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(He4)*Y(Ti49)*state.rho + screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(Cr52)*Y(N)*state.rho) + - (screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(V49)*Y(N)*state.rho + -screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(Ti49)*Y(H1)*state.rho) + - (screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(He4)*Y(Ti49)*state.rho) + - (screened_rates(k_Sc49_to_Ti49_weaktab)*Y(Sc49) + -screened_rates(k_Ti49_to_Sc49_weaktab)*Y(Ti49)) + - (screened_rates(k_V49_to_Ti49_weaktab)*Y(V49) + -screened_rates(k_Ti49_to_V49_weaktab)*Y(Ti49)); + (screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(Ca45)*Y(He4)*state.rho + -screened_rates(k_Ti49_to_He4_Ca45_reaclib)*Y(Ti49)) + + (screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(Sc48)*Y(H1)*state.rho + -screened_rates(k_Ti49_to_p_Sc48_reaclib)*Y(Ti49)) + + (screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(Ti48)*Y(N)*state.rho + -screened_rates(k_Ti49_to_n_Ti48_reaclib)*Y(Ti49)) + + (-screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(Ti49)*Y(N)*state.rho + screened_rates(k_Ti50_to_n_Ti49_reaclib)*Y(Ti50)) + + (-screened_rates(k_Ti49_p_to_V50_reaclib)*Y(Ti49)*Y(H1)*state.rho + screened_rates(k_V50_to_p_Ti49_reaclib)*Y(V50)) + + (-screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(He4)*Y(Ti49)*state.rho + screened_rates(k_Cr53_to_He4_Ti49_reaclib)*Y(Cr53)) + + (screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(Ti49)*Y(H1)*state.rho) + + (screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(Ti49)*Y(N)*state.rho) + + (-screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(Ti49)*Y(N)*state.rho + screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(Ca46)*Y(He4)*state.rho) + + (-screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(He4)*Y(Ti49)*state.rho + screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(Cr52)*Y(N)*state.rho) + + (screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(V49)*Y(N)*state.rho + -screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(Ti49)*Y(H1)*state.rho) + + (screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(He4)*Y(Ti49)*state.rho) + + (screened_rates(k_Sc49_to_Ti49_beta_neg_weaktab)*Y(Sc49) + -screened_rates(k_Ti49_to_Sc49_electron_capture_weaktab)*Y(Ti49)) + + (screened_rates(k_V49_to_Ti49_electron_capture_weaktab)*Y(V49) + -screened_rates(k_Ti49_to_V49_beta_neg_weaktab)*Y(Ti49)); ydot_nuc(Ti50) = - (screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(Ca46)*Y(He4)*state.rho + -screened_rates(k_Ti50_to_He4_Ca46_reaclib)*Y(Ti50)) + - (screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_Ti50_to_p_Sc49_reaclib)*Y(Ti50)) + - (screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(Ti49)*Y(N)*state.rho + -screened_rates(k_Ti50_to_n_Ti49_reaclib)*Y(Ti50)) + - (-screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(Ti50)*Y(N)*state.rho + screened_rates(k_Ti51_to_n_Ti50_reaclib)*Y(Ti51)) + - (-screened_rates(k_p_Ti50_to_V51_reaclib)*Y(Ti50)*Y(H1)*state.rho + screened_rates(k_V51_to_p_Ti50_reaclib)*Y(V51)) + - (-screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(He4)*Y(Ti50)*state.rho + screened_rates(k_Cr54_to_He4_Ti50_reaclib)*Y(Cr54)) + - (screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(Ca47)*Y(He4)*state.rho + -screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(Ti50)*Y(N)*state.rho) + - (screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(He4)*Y(Sc47)*state.rho + -screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(Ti50)*Y(H1)*state.rho) + - (screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(Ti50)*Y(H1)*state.rho) + - (screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(Cr53)*Y(N)*state.rho + -screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(He4)*Y(Ti50)*state.rho) + - (screened_rates(k_V50_to_Ti50_weaktab)*Y(V50) + -screened_rates(k_Ti50_to_V50_weaktab)*Y(Ti50)); + (screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(Ca46)*Y(He4)*state.rho + -screened_rates(k_Ti50_to_He4_Ca46_reaclib)*Y(Ti50)) + + (screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(Sc49)*Y(H1)*state.rho + -screened_rates(k_Ti50_to_p_Sc49_reaclib)*Y(Ti50)) + + (screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(Ti49)*Y(N)*state.rho + -screened_rates(k_Ti50_to_n_Ti49_reaclib)*Y(Ti50)) + + (-screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(Ti50)*Y(N)*state.rho + screened_rates(k_Ti51_to_n_Ti50_reaclib)*Y(Ti51)) + + (-screened_rates(k_Ti50_p_to_V51_reaclib)*Y(Ti50)*Y(H1)*state.rho + screened_rates(k_V51_to_p_Ti50_reaclib)*Y(V51)) + + (-screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(He4)*Y(Ti50)*state.rho + screened_rates(k_Cr54_to_He4_Ti50_reaclib)*Y(Cr54)) + + (screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(Ca47)*Y(He4)*state.rho + -screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(Ti50)*Y(N)*state.rho) + + (screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(He4)*Y(Sc47)*state.rho + -screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(Ti50)*Y(H1)*state.rho) + + (screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(Ti50)*Y(H1)*state.rho) + + (screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(Cr53)*Y(N)*state.rho + -screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(He4)*Y(Ti50)*state.rho) + + (screened_rates(k_V50_to_Ti50_electron_capture_weaktab)*Y(V50) + -screened_rates(k_Ti50_to_V50_beta_neg_weaktab)*Y(Ti50)); ydot_nuc(Ti51) = - (screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(Ca47)*Y(He4)*state.rho + -screened_rates(k_Ti51_to_He4_Ca47_reaclib)*Y(Ti51)) + - (screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(Ti50)*Y(N)*state.rho + -screened_rates(k_Ti51_to_n_Ti50_reaclib)*Y(Ti51)) + - (-screened_rates(k_p_Ti51_to_V52_reaclib)*Y(Ti51)*Y(H1)*state.rho + screened_rates(k_V52_to_p_Ti51_reaclib)*Y(V52)) + - (screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(Ti51)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(Ti51)*Y(N)*state.rho + screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(Ca48)*Y(He4)*state.rho) + - (-screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(Ti51)*Y(H1)*state.rho + screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(V51)*Y(N)*state.rho) + - (-screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(He4)*Y(Ti51)*state.rho + screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(Cr54)*Y(N)*state.rho) + - (-screened_rates(k_Ti51_to_V51_weaktab)*Y(Ti51) + screened_rates(k_V51_to_Ti51_weaktab)*Y(V51)); + (screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(Ca47)*Y(He4)*state.rho + -screened_rates(k_Ti51_to_He4_Ca47_reaclib)*Y(Ti51)) + + (screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(Ti50)*Y(N)*state.rho + -screened_rates(k_Ti51_to_n_Ti50_reaclib)*Y(Ti51)) + + (-screened_rates(k_Ti51_p_to_V52_reaclib)*Y(Ti51)*Y(H1)*state.rho + screened_rates(k_V52_to_p_Ti51_reaclib)*Y(V52)) + + (screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(Ti51)*Y(H1)*state.rho) + + (-screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(Ti51)*Y(N)*state.rho + screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(Ca48)*Y(He4)*state.rho) + + (-screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(Ti51)*Y(H1)*state.rho + screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(V51)*Y(N)*state.rho) + + (-screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(He4)*Y(Ti51)*state.rho + screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(Cr54)*Y(N)*state.rho) + + (-screened_rates(k_Ti51_to_V51_beta_neg_weaktab)*Y(Ti51) + screened_rates(k_V51_to_Ti51_electron_capture_weaktab)*Y(V51)); ydot_nuc(V46) = - (screened_rates(k_p_Ti45_to_V46_reaclib)*Y(Ti45)*Y(H1)*state.rho + -screened_rates(k_V46_to_p_Ti45_reaclib)*Y(V46)) + - (-screened_rates(k_n_V46_to_V47_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_V47_to_n_V46_reaclib)*Y(V47)) + - (-screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(He4)*Y(V46)*state.rho + screened_rates(k_Mn50_to_He4_V46_reaclib)*Y(Mn50)) + - (-screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(Ti46)*Y(H1)*state.rho) + - (-screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(He4)*Y(Sc43)*state.rho) + - (-screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(He4)*Y(V46)*state.rho + screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(Cr49)*Y(H1)*state.rho) + - (-screened_rates(k_V46_to_Ti46_weaktab)*Y(V46) + screened_rates(k_Ti46_to_V46_weaktab)*Y(Ti46)); + (screened_rates(k_Ti45_p_to_V46_reaclib)*Y(Ti45)*Y(H1)*state.rho + -screened_rates(k_V46_to_p_Ti45_reaclib)*Y(V46)) + + (-screened_rates(k_V46_n_to_V47_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_V47_to_n_V46_reaclib)*Y(V47)) + + (-screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(He4)*Y(V46)*state.rho + screened_rates(k_Mn50_to_He4_V46_reaclib)*Y(Mn50)) + + (-screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(Ti46)*Y(H1)*state.rho) + + (-screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(V46)*Y(N)*state.rho + screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(He4)*Y(Sc43)*state.rho) + + (-screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(He4)*Y(V46)*state.rho + screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(Cr49)*Y(H1)*state.rho) + + (-screened_rates(k_V46_to_Ti46_electron_capture_weaktab)*Y(V46) + screened_rates(k_Ti46_to_V46_beta_neg_weaktab)*Y(Ti46)); ydot_nuc(V47) = - (screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(He4)*Y(Sc43)*state.rho + -screened_rates(k_V47_to_He4_Sc43_reaclib)*Y(V47)) + - (screened_rates(k_p_Ti46_to_V47_reaclib)*Y(Ti46)*Y(H1)*state.rho + -screened_rates(k_V47_to_p_Ti46_reaclib)*Y(V47)) + - (screened_rates(k_n_V46_to_V47_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_V47_to_n_V46_reaclib)*Y(V47)) + - (-screened_rates(k_n_V47_to_V48_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_V48_to_n_V47_reaclib)*Y(V48)) + - (-screened_rates(k_p_V47_to_Cr48_reaclib)*Y(V47)*Y(H1)*state.rho + screened_rates(k_Cr48_to_p_V47_reaclib)*Y(Cr48)) + - (-screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(He4)*Y(V47)*state.rho + screened_rates(k_Mn51_to_He4_V47_reaclib)*Y(Mn51)) + - (-screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(Ti47)*Y(H1)*state.rho) + - (-screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(He4)*Y(Sc44)*state.rho) + - (-screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(V47)*Y(H1)*state.rho + screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(He4)*Y(Ti44)*state.rho) + - (-screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(He4)*Y(V47)*state.rho + screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(Cr50)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(He4)*Y(V47)*state.rho) + - (-screened_rates(k_V47_to_Ti47_weaktab)*Y(V47) + screened_rates(k_Ti47_to_V47_weaktab)*Y(Ti47)); + (screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(He4)*Y(Sc43)*state.rho + -screened_rates(k_V47_to_He4_Sc43_reaclib)*Y(V47)) + + (screened_rates(k_Ti46_p_to_V47_reaclib)*Y(Ti46)*Y(H1)*state.rho + -screened_rates(k_V47_to_p_Ti46_reaclib)*Y(V47)) + + (screened_rates(k_V46_n_to_V47_reaclib)*Y(V46)*Y(N)*state.rho + -screened_rates(k_V47_to_n_V46_reaclib)*Y(V47)) + + (-screened_rates(k_V47_n_to_V48_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_V48_to_n_V47_reaclib)*Y(V48)) + + (-screened_rates(k_V47_p_to_Cr48_reaclib)*Y(V47)*Y(H1)*state.rho + screened_rates(k_Cr48_to_p_V47_reaclib)*Y(Cr48)) + + (-screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(He4)*Y(V47)*state.rho + screened_rates(k_Mn51_to_He4_V47_reaclib)*Y(Mn51)) + + (-screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(Ti47)*Y(H1)*state.rho) + + (-screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(V47)*Y(N)*state.rho + screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(He4)*Y(Sc44)*state.rho) + + (-screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(V47)*Y(H1)*state.rho + screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(He4)*Y(Ti44)*state.rho) + + (-screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(He4)*Y(V47)*state.rho + screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(Cr50)*Y(H1)*state.rho) + + (screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(He4)*Y(V47)*state.rho) + + (-screened_rates(k_V47_to_Ti47_electron_capture_weaktab)*Y(V47) + screened_rates(k_Ti47_to_V47_beta_neg_weaktab)*Y(Ti47)); ydot_nuc(V48) = - (screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(He4)*Y(Sc44)*state.rho + -screened_rates(k_V48_to_He4_Sc44_reaclib)*Y(V48)) + - (screened_rates(k_p_Ti47_to_V48_reaclib)*Y(Ti47)*Y(H1)*state.rho + -screened_rates(k_V48_to_p_Ti47_reaclib)*Y(V48)) + - (screened_rates(k_n_V47_to_V48_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_V48_to_n_V47_reaclib)*Y(V48)) + - (-screened_rates(k_n_V48_to_V49_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_V49_to_n_V48_reaclib)*Y(V49)) + - (-screened_rates(k_p_V48_to_Cr49_reaclib)*Y(V48)*Y(H1)*state.rho + screened_rates(k_Cr49_to_p_V48_reaclib)*Y(Cr49)) + - (-screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(He4)*Y(V48)*state.rho + screened_rates(k_Mn52_to_He4_V48_reaclib)*Y(Mn52)) + - (screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(He4)*Y(Ti45)*state.rho + -screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(V48)*Y(H1)*state.rho) + - (-screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(Ti48)*Y(H1)*state.rho) + - (-screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(He4)*Y(Sc45)*state.rho) + - (-screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(He4)*Y(V48)*state.rho + screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(Cr51)*Y(H1)*state.rho) + - (screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(V48)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(He4)*Y(V48)*state.rho) + - (screened_rates(k_Cr48_to_V48_weaktab)*Y(Cr48) + -screened_rates(k_V48_to_Cr48_weaktab)*Y(V48)) + - (-screened_rates(k_V48_to_Ti48_weaktab)*Y(V48) + screened_rates(k_Ti48_to_V48_weaktab)*Y(Ti48)); + (screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(He4)*Y(Sc44)*state.rho + -screened_rates(k_V48_to_He4_Sc44_reaclib)*Y(V48)) + + (screened_rates(k_Ti47_p_to_V48_reaclib)*Y(Ti47)*Y(H1)*state.rho + -screened_rates(k_V48_to_p_Ti47_reaclib)*Y(V48)) + + (screened_rates(k_V47_n_to_V48_reaclib)*Y(V47)*Y(N)*state.rho + -screened_rates(k_V48_to_n_V47_reaclib)*Y(V48)) + + (-screened_rates(k_V48_n_to_V49_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_V49_to_n_V48_reaclib)*Y(V49)) + + (-screened_rates(k_V48_p_to_Cr49_reaclib)*Y(V48)*Y(H1)*state.rho + screened_rates(k_Cr49_to_p_V48_reaclib)*Y(Cr49)) + + (-screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(He4)*Y(V48)*state.rho + screened_rates(k_Mn52_to_He4_V48_reaclib)*Y(Mn52)) + + (screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(He4)*Y(Ti45)*state.rho + -screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(V48)*Y(H1)*state.rho) + + (-screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(Ti48)*Y(H1)*state.rho) + + (-screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(V48)*Y(N)*state.rho + screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(He4)*Y(Sc45)*state.rho) + + (-screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(He4)*Y(V48)*state.rho + screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(Cr51)*Y(H1)*state.rho) + + (screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(V48)*Y(H1)*state.rho) + + (screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(He4)*Y(V48)*state.rho) + + (screened_rates(k_Cr48_to_V48_electron_capture_weaktab)*Y(Cr48) + -screened_rates(k_V48_to_Cr48_beta_neg_weaktab)*Y(V48)) + + (-screened_rates(k_V48_to_Ti48_electron_capture_weaktab)*Y(V48) + screened_rates(k_Ti48_to_V48_beta_neg_weaktab)*Y(Ti48)); ydot_nuc(V49) = - (screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(He4)*Y(Sc45)*state.rho + -screened_rates(k_V49_to_He4_Sc45_reaclib)*Y(V49)) + - (screened_rates(k_p_Ti48_to_V49_reaclib)*Y(Ti48)*Y(H1)*state.rho + -screened_rates(k_V49_to_p_Ti48_reaclib)*Y(V49)) + - (screened_rates(k_n_V48_to_V49_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_V49_to_n_V48_reaclib)*Y(V49)) + - (-screened_rates(k_n_V49_to_V50_reaclib)*Y(V49)*Y(N)*state.rho + screened_rates(k_V50_to_n_V49_reaclib)*Y(V50)) + - (-screened_rates(k_p_V49_to_Cr50_reaclib)*Y(V49)*Y(H1)*state.rho + screened_rates(k_Cr50_to_p_V49_reaclib)*Y(Cr50)) + - (-screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(He4)*Y(V49)*state.rho + screened_rates(k_Mn53_to_He4_V49_reaclib)*Y(Mn53)) + - (screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(V49)*Y(N)*state.rho) + - (-screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(V49)*Y(N)*state.rho + screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(Ti49)*Y(H1)*state.rho) + - (-screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(V49)*Y(H1)*state.rho + screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + - (-screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(He4)*Y(V49)*state.rho + screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(Cr52)*Y(H1)*state.rho) + - (screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(V49)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(He4)*Y(V49)*state.rho) + - (screened_rates(k_Cr49_to_V49_weaktab)*Y(Cr49) + -screened_rates(k_V49_to_Cr49_weaktab)*Y(V49)) + - (-screened_rates(k_V49_to_Ti49_weaktab)*Y(V49) + screened_rates(k_Ti49_to_V49_weaktab)*Y(Ti49)); + (screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(He4)*Y(Sc45)*state.rho + -screened_rates(k_V49_to_He4_Sc45_reaclib)*Y(V49)) + + (screened_rates(k_Ti48_p_to_V49_reaclib)*Y(Ti48)*Y(H1)*state.rho + -screened_rates(k_V49_to_p_Ti48_reaclib)*Y(V49)) + + (screened_rates(k_V48_n_to_V49_reaclib)*Y(V48)*Y(N)*state.rho + -screened_rates(k_V49_to_n_V48_reaclib)*Y(V49)) + + (-screened_rates(k_V49_n_to_V50_reaclib)*Y(V49)*Y(N)*state.rho + screened_rates(k_V50_to_n_V49_reaclib)*Y(V50)) + + (-screened_rates(k_V49_p_to_Cr50_reaclib)*Y(V49)*Y(H1)*state.rho + screened_rates(k_Cr50_to_p_V49_reaclib)*Y(Cr50)) + + (-screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(He4)*Y(V49)*state.rho + screened_rates(k_Mn53_to_He4_V49_reaclib)*Y(Mn53)) + + (screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(V49)*Y(N)*state.rho) + + (-screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(V49)*Y(N)*state.rho + screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(Ti49)*Y(H1)*state.rho) + + (-screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(V49)*Y(H1)*state.rho + screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + + (-screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(He4)*Y(V49)*state.rho + screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(Cr52)*Y(H1)*state.rho) + + (screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(V49)*Y(H1)*state.rho) + + (screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(He4)*Y(V49)*state.rho) + + (screened_rates(k_Cr49_to_V49_electron_capture_weaktab)*Y(Cr49) + -screened_rates(k_V49_to_Cr49_beta_neg_weaktab)*Y(V49)) + + (-screened_rates(k_V49_to_Ti49_electron_capture_weaktab)*Y(V49) + screened_rates(k_Ti49_to_V49_beta_neg_weaktab)*Y(Ti49)); ydot_nuc(V50) = - (screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_V50_to_He4_Sc46_reaclib)*Y(V50)) + - (screened_rates(k_p_Ti49_to_V50_reaclib)*Y(Ti49)*Y(H1)*state.rho + -screened_rates(k_V50_to_p_Ti49_reaclib)*Y(V50)) + - (screened_rates(k_n_V49_to_V50_reaclib)*Y(V49)*Y(N)*state.rho + -screened_rates(k_V50_to_n_V49_reaclib)*Y(V50)) + - (-screened_rates(k_n_V50_to_V51_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_V51_to_n_V50_reaclib)*Y(V51)) + - (-screened_rates(k_p_V50_to_Cr51_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_Cr51_to_p_V50_reaclib)*Y(Cr51)) + - (-screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(He4)*Y(V50)*state.rho + screened_rates(k_Mn54_to_He4_V50_reaclib)*Y(Mn54)) + - (-screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(Ti50)*Y(H1)*state.rho) + - (-screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(He4)*Y(Sc47)*state.rho) + - (-screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(Cr50)*Y(N)*state.rho) + - (-screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + - (-screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(He4)*Y(V50)*state.rho + screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(Cr53)*Y(H1)*state.rho) + - (screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(He4)*Y(V50)*state.rho) + - (-screened_rates(k_V50_to_Cr50_weaktab)*Y(V50) + screened_rates(k_Cr50_to_V50_weaktab)*Y(Cr50)) + - (-screened_rates(k_V50_to_Ti50_weaktab)*Y(V50) + screened_rates(k_Ti50_to_V50_weaktab)*Y(Ti50)); + (screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(He4)*Y(Sc46)*state.rho + -screened_rates(k_V50_to_He4_Sc46_reaclib)*Y(V50)) + + (screened_rates(k_Ti49_p_to_V50_reaclib)*Y(Ti49)*Y(H1)*state.rho + -screened_rates(k_V50_to_p_Ti49_reaclib)*Y(V50)) + + (screened_rates(k_V49_n_to_V50_reaclib)*Y(V49)*Y(N)*state.rho + -screened_rates(k_V50_to_n_V49_reaclib)*Y(V50)) + + (-screened_rates(k_V50_n_to_V51_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_V51_to_n_V50_reaclib)*Y(V51)) + + (-screened_rates(k_V50_p_to_Cr51_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_Cr51_to_p_V50_reaclib)*Y(Cr51)) + + (-screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(He4)*Y(V50)*state.rho + screened_rates(k_Mn54_to_He4_V50_reaclib)*Y(Mn54)) + + (-screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(Ti50)*Y(H1)*state.rho) + + (-screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(V50)*Y(N)*state.rho + screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(He4)*Y(Sc47)*state.rho) + + (-screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(Cr50)*Y(N)*state.rho) + + (-screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(V50)*Y(H1)*state.rho + screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + + (-screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(He4)*Y(V50)*state.rho + screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(Cr53)*Y(H1)*state.rho) + + (screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(He4)*Y(V50)*state.rho) + + (-screened_rates(k_V50_to_Cr50_beta_neg_weaktab)*Y(V50) + screened_rates(k_Cr50_to_V50_electron_capture_weaktab)*Y(Cr50)) + + (-screened_rates(k_V50_to_Ti50_electron_capture_weaktab)*Y(V50) + screened_rates(k_Ti50_to_V50_beta_neg_weaktab)*Y(Ti50)); ydot_nuc(V51) = - (screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(He4)*Y(Sc47)*state.rho + -screened_rates(k_V51_to_He4_Sc47_reaclib)*Y(V51)) + - (screened_rates(k_p_Ti50_to_V51_reaclib)*Y(Ti50)*Y(H1)*state.rho + -screened_rates(k_V51_to_p_Ti50_reaclib)*Y(V51)) + - (screened_rates(k_n_V50_to_V51_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_V51_to_n_V50_reaclib)*Y(V51)) + - (-screened_rates(k_n_V51_to_V52_reaclib)*Y(V51)*Y(N)*state.rho + screened_rates(k_V52_to_n_V51_reaclib)*Y(V52)) + - (-screened_rates(k_p_V51_to_Cr52_reaclib)*Y(V51)*Y(H1)*state.rho + screened_rates(k_Cr52_to_p_V51_reaclib)*Y(Cr52)) + - (-screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(He4)*Y(V51)*state.rho + screened_rates(k_Mn55_to_He4_V51_reaclib)*Y(Mn55)) + - (screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(V51)*Y(N)*state.rho) + - (screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(Ti51)*Y(H1)*state.rho + -screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(V51)*Y(N)*state.rho) + - (-screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(V51)*Y(H1)*state.rho + screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + - (screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(V51)*Y(H1)*state.rho) + - (screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(Cr54)*Y(H1)*state.rho + -screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(He4)*Y(V51)*state.rho) + - (screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(He4)*Y(V51)*state.rho) + - (screened_rates(k_Cr51_to_V51_weaktab)*Y(Cr51) + -screened_rates(k_V51_to_Cr51_weaktab)*Y(V51)) + - (screened_rates(k_Ti51_to_V51_weaktab)*Y(Ti51) + -screened_rates(k_V51_to_Ti51_weaktab)*Y(V51)); + (screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(He4)*Y(Sc47)*state.rho + -screened_rates(k_V51_to_He4_Sc47_reaclib)*Y(V51)) + + (screened_rates(k_Ti50_p_to_V51_reaclib)*Y(Ti50)*Y(H1)*state.rho + -screened_rates(k_V51_to_p_Ti50_reaclib)*Y(V51)) + + (screened_rates(k_V50_n_to_V51_reaclib)*Y(V50)*Y(N)*state.rho + -screened_rates(k_V51_to_n_V50_reaclib)*Y(V51)) + + (-screened_rates(k_V51_n_to_V52_reaclib)*Y(V51)*Y(N)*state.rho + screened_rates(k_V52_to_n_V51_reaclib)*Y(V52)) + + (-screened_rates(k_V51_p_to_Cr52_reaclib)*Y(V51)*Y(H1)*state.rho + screened_rates(k_Cr52_to_p_V51_reaclib)*Y(Cr52)) + + (-screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(He4)*Y(V51)*state.rho + screened_rates(k_Mn55_to_He4_V51_reaclib)*Y(Mn55)) + + (screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(V51)*Y(N)*state.rho) + + (screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(Ti51)*Y(H1)*state.rho + -screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(V51)*Y(N)*state.rho) + + (-screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(V51)*Y(H1)*state.rho + screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + + (screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(V51)*Y(H1)*state.rho) + + (screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(Cr54)*Y(H1)*state.rho + -screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(He4)*Y(V51)*state.rho) + + (screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(He4)*Y(V51)*state.rho) + + (screened_rates(k_Cr51_to_V51_electron_capture_weaktab)*Y(Cr51) + -screened_rates(k_V51_to_Cr51_beta_neg_weaktab)*Y(V51)) + + (screened_rates(k_Ti51_to_V51_beta_neg_weaktab)*Y(Ti51) + -screened_rates(k_V51_to_Ti51_electron_capture_weaktab)*Y(V51)); ydot_nuc(V52) = - (screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_V52_to_He4_Sc48_reaclib)*Y(V52)) + - (screened_rates(k_p_Ti51_to_V52_reaclib)*Y(Ti51)*Y(H1)*state.rho + -screened_rates(k_V52_to_p_Ti51_reaclib)*Y(V52)) + - (screened_rates(k_n_V51_to_V52_reaclib)*Y(V51)*Y(N)*state.rho + -screened_rates(k_V52_to_n_V51_reaclib)*Y(V52)) + - (-screened_rates(k_p_V52_to_Cr53_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_Cr53_to_p_V52_reaclib)*Y(Cr53)) + - (-screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(V52)*Y(N)*state.rho + screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(He4)*Y(Sc49)*state.rho) + - (-screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(Cr52)*Y(N)*state.rho) + - (-screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(He4)*Y(Ti49)*state.rho) + - (-screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(He4)*Y(V52)*state.rho + screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(Mn55)*Y(N)*state.rho) + - (-screened_rates(k_V52_to_Cr52_weaktab)*Y(V52) + screened_rates(k_Cr52_to_V52_weaktab)*Y(Cr52)); + (screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(He4)*Y(Sc48)*state.rho + -screened_rates(k_V52_to_He4_Sc48_reaclib)*Y(V52)) + + (screened_rates(k_Ti51_p_to_V52_reaclib)*Y(Ti51)*Y(H1)*state.rho + -screened_rates(k_V52_to_p_Ti51_reaclib)*Y(V52)) + + (screened_rates(k_V51_n_to_V52_reaclib)*Y(V51)*Y(N)*state.rho + -screened_rates(k_V52_to_n_V51_reaclib)*Y(V52)) + + (-screened_rates(k_V52_p_to_Cr53_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_Cr53_to_p_V52_reaclib)*Y(Cr53)) + + (-screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(V52)*Y(N)*state.rho + screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(He4)*Y(Sc49)*state.rho) + + (-screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(Cr52)*Y(N)*state.rho) + + (-screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(V52)*Y(H1)*state.rho + screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(He4)*Y(Ti49)*state.rho) + + (-screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(He4)*Y(V52)*state.rho + screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(Mn55)*Y(N)*state.rho) + + (-screened_rates(k_V52_to_Cr52_beta_neg_weaktab)*Y(V52) + screened_rates(k_Cr52_to_V52_electron_capture_weaktab)*Y(Cr52)); ydot_nuc(Cr48) = - (screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(He4)*Y(Ti44)*state.rho + -screened_rates(k_Cr48_to_He4_Ti44_reaclib)*Y(Cr48)) + - (screened_rates(k_p_V47_to_Cr48_reaclib)*Y(V47)*Y(H1)*state.rho + -screened_rates(k_Cr48_to_p_V47_reaclib)*Y(Cr48)) + - (-screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_Cr49_to_n_Cr48_reaclib)*Y(Cr49)) + - (-screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_reaclib)*Y(Fe52)) + - (-screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(V48)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(He4)*Y(Ti45)*state.rho) + - (-screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_Cr48_to_V48_weaktab)*Y(Cr48) + screened_rates(k_V48_to_Cr48_weaktab)*Y(V48)); + (screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(He4)*Y(Ti44)*state.rho + -screened_rates(k_Cr48_to_He4_Ti44_reaclib)*Y(Cr48)) + + (screened_rates(k_V47_p_to_Cr48_reaclib)*Y(V47)*Y(H1)*state.rho + -screened_rates(k_Cr48_to_p_V47_reaclib)*Y(Cr48)) + + (-screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_Cr49_to_n_Cr48_reaclib)*Y(Cr49)) + + (-screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_reaclib)*Y(Fe52)) + + (-screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(V48)*Y(H1)*state.rho) + + (-screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(Cr48)*Y(N)*state.rho + screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(He4)*Y(Ti45)*state.rho) + + (-screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr48_to_V48_electron_capture_weaktab)*Y(Cr48) + screened_rates(k_V48_to_Cr48_beta_neg_weaktab)*Y(V48)); ydot_nuc(Cr49) = - (screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(He4)*Y(Ti45)*state.rho + -screened_rates(k_Cr49_to_He4_Ti45_reaclib)*Y(Cr49)) + - (screened_rates(k_p_V48_to_Cr49_reaclib)*Y(V48)*Y(H1)*state.rho + -screened_rates(k_Cr49_to_p_V48_reaclib)*Y(Cr49)) + - (screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_Cr49_to_n_Cr48_reaclib)*Y(Cr49)) + - (-screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_Cr50_to_n_Cr49_reaclib)*Y(Cr50)) + - (-screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(Cr49)*Y(H1)*state.rho + screened_rates(k_Mn50_to_p_Cr49_reaclib)*Y(Mn50)) + - (-screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(Cr49)*Y(He4)*state.rho + screened_rates(k_Fe53_to_He4_Cr49_reaclib)*Y(Fe53)) + - (screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(He4)*Y(V46)*state.rho + -screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(Cr49)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(V49)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + - (-screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(Cr49)*Y(He4)*state.rho + screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(Mn52)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(Cr49)*Y(He4)*state.rho) + - (-screened_rates(k_Cr49_to_V49_weaktab)*Y(Cr49) + screened_rates(k_V49_to_Cr49_weaktab)*Y(V49)); + (screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(He4)*Y(Ti45)*state.rho + -screened_rates(k_Cr49_to_He4_Ti45_reaclib)*Y(Cr49)) + + (screened_rates(k_V48_p_to_Cr49_reaclib)*Y(V48)*Y(H1)*state.rho + -screened_rates(k_Cr49_to_p_V48_reaclib)*Y(Cr49)) + + (screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(Cr48)*Y(N)*state.rho + -screened_rates(k_Cr49_to_n_Cr48_reaclib)*Y(Cr49)) + + (-screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_Cr50_to_n_Cr49_reaclib)*Y(Cr50)) + + (-screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(Cr49)*Y(H1)*state.rho + screened_rates(k_Mn50_to_p_Cr49_reaclib)*Y(Mn50)) + + (-screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(Cr49)*Y(He4)*state.rho + screened_rates(k_Fe53_to_He4_Cr49_reaclib)*Y(Fe53)) + + (screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(He4)*Y(V46)*state.rho + -screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(Cr49)*Y(H1)*state.rho) + + (-screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(V49)*Y(H1)*state.rho) + + (-screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(Cr49)*Y(N)*state.rho + screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(He4)*Y(Ti46)*state.rho) + + (-screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(Cr49)*Y(He4)*state.rho + screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(Mn52)*Y(H1)*state.rho) + + (screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(Cr49)*Y(He4)*state.rho) + + (-screened_rates(k_Cr49_to_V49_electron_capture_weaktab)*Y(Cr49) + screened_rates(k_V49_to_Cr49_beta_neg_weaktab)*Y(V49)); ydot_nuc(Cr50) = - (screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(He4)*Y(Ti46)*state.rho + -screened_rates(k_Cr50_to_He4_Ti46_reaclib)*Y(Cr50)) + - (screened_rates(k_p_V49_to_Cr50_reaclib)*Y(V49)*Y(H1)*state.rho + -screened_rates(k_Cr50_to_p_V49_reaclib)*Y(Cr50)) + - (screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_Cr50_to_n_Cr49_reaclib)*Y(Cr50)) + - (-screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(Cr50)*Y(N)*state.rho + screened_rates(k_Cr51_to_n_Cr50_reaclib)*Y(Cr51)) + - (-screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(Cr50)*Y(H1)*state.rho + screened_rates(k_Mn51_to_p_Cr50_reaclib)*Y(Mn51)) + - (-screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(Cr50)*Y(He4)*state.rho + screened_rates(k_Fe54_to_He4_Cr50_reaclib)*Y(Fe54)) + - (screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(He4)*Y(V47)*state.rho + -screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(Cr50)*Y(H1)*state.rho) + - (screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(Cr50)*Y(N)*state.rho) + - (-screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(Cr50)*Y(N)*state.rho + screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + - (screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(Cr50)*Y(H1)*state.rho) + - (screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(Mn53)*Y(H1)*state.rho + -screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + - (screened_rates(k_Mn50_to_Cr50_weaktab)*Y(Mn50) + -screened_rates(k_Cr50_to_Mn50_weaktab)*Y(Cr50)) + - (screened_rates(k_V50_to_Cr50_weaktab)*Y(V50) + -screened_rates(k_Cr50_to_V50_weaktab)*Y(Cr50)); + (screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(He4)*Y(Ti46)*state.rho + -screened_rates(k_Cr50_to_He4_Ti46_reaclib)*Y(Cr50)) + + (screened_rates(k_V49_p_to_Cr50_reaclib)*Y(V49)*Y(H1)*state.rho + -screened_rates(k_Cr50_to_p_V49_reaclib)*Y(Cr50)) + + (screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(Cr49)*Y(N)*state.rho + -screened_rates(k_Cr50_to_n_Cr49_reaclib)*Y(Cr50)) + + (-screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(Cr50)*Y(N)*state.rho + screened_rates(k_Cr51_to_n_Cr50_reaclib)*Y(Cr51)) + + (-screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(Cr50)*Y(H1)*state.rho + screened_rates(k_Mn51_to_p_Cr50_reaclib)*Y(Mn51)) + + (-screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(Cr50)*Y(He4)*state.rho + screened_rates(k_Fe54_to_He4_Cr50_reaclib)*Y(Fe54)) + + (screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(He4)*Y(V47)*state.rho + -screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(Cr50)*Y(H1)*state.rho) + + (screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(Cr50)*Y(N)*state.rho) + + (-screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(Cr50)*Y(N)*state.rho + screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(He4)*Y(Ti47)*state.rho) + + (screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(Cr50)*Y(H1)*state.rho) + + (screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(Mn53)*Y(H1)*state.rho + -screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + + (screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + + (screened_rates(k_Mn50_to_Cr50_electron_capture_weaktab)*Y(Mn50) + -screened_rates(k_Cr50_to_Mn50_beta_neg_weaktab)*Y(Cr50)) + + (screened_rates(k_V50_to_Cr50_beta_neg_weaktab)*Y(V50) + -screened_rates(k_Cr50_to_V50_electron_capture_weaktab)*Y(Cr50)); ydot_nuc(Cr51) = - (screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(He4)*Y(Ti47)*state.rho + -screened_rates(k_Cr51_to_He4_Ti47_reaclib)*Y(Cr51)) + - (screened_rates(k_p_V50_to_Cr51_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_Cr51_to_p_V50_reaclib)*Y(Cr51)) + - (screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(Cr50)*Y(N)*state.rho + -screened_rates(k_Cr51_to_n_Cr50_reaclib)*Y(Cr51)) + - (-screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_Cr52_to_n_Cr51_reaclib)*Y(Cr52)) + - (-screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(Cr51)*Y(H1)*state.rho + screened_rates(k_Mn52_to_p_Cr51_reaclib)*Y(Mn52)) + - (-screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(Cr51)*Y(He4)*state.rho + screened_rates(k_Fe55_to_He4_Cr51_reaclib)*Y(Fe55)) + - (screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(He4)*Y(V48)*state.rho + -screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(Cr51)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(V51)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + - (screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(Cr51)*Y(H1)*state.rho) + - (screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(Mn54)*Y(H1)*state.rho + -screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + - (-screened_rates(k_Cr51_to_V51_weaktab)*Y(Cr51) + screened_rates(k_V51_to_Cr51_weaktab)*Y(V51)) + - (screened_rates(k_Mn51_to_Cr51_weaktab)*Y(Mn51) + -screened_rates(k_Cr51_to_Mn51_weaktab)*Y(Cr51)); + (screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(He4)*Y(Ti47)*state.rho + -screened_rates(k_Cr51_to_He4_Ti47_reaclib)*Y(Cr51)) + + (screened_rates(k_V50_p_to_Cr51_reaclib)*Y(V50)*Y(H1)*state.rho + -screened_rates(k_Cr51_to_p_V50_reaclib)*Y(Cr51)) + + (screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(Cr50)*Y(N)*state.rho + -screened_rates(k_Cr51_to_n_Cr50_reaclib)*Y(Cr51)) + + (-screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_Cr52_to_n_Cr51_reaclib)*Y(Cr52)) + + (-screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(Cr51)*Y(H1)*state.rho + screened_rates(k_Mn52_to_p_Cr51_reaclib)*Y(Mn52)) + + (-screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(Cr51)*Y(He4)*state.rho + screened_rates(k_Fe55_to_He4_Cr51_reaclib)*Y(Fe55)) + + (screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(He4)*Y(V48)*state.rho + -screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(Cr51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(V51)*Y(H1)*state.rho) + + (-screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(Cr51)*Y(N)*state.rho + screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(He4)*Y(Ti48)*state.rho) + + (screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(Cr51)*Y(H1)*state.rho) + + (screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(Mn54)*Y(H1)*state.rho + -screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + + (screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + + (-screened_rates(k_Cr51_to_V51_electron_capture_weaktab)*Y(Cr51) + screened_rates(k_V51_to_Cr51_beta_neg_weaktab)*Y(V51)) + + (screened_rates(k_Mn51_to_Cr51_electron_capture_weaktab)*Y(Mn51) + -screened_rates(k_Cr51_to_Mn51_beta_neg_weaktab)*Y(Cr51)); ydot_nuc(Cr52) = - (screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(He4)*Y(Ti48)*state.rho + -screened_rates(k_Cr52_to_He4_Ti48_reaclib)*Y(Cr52)) + - (screened_rates(k_p_V51_to_Cr52_reaclib)*Y(V51)*Y(H1)*state.rho + -screened_rates(k_Cr52_to_p_V51_reaclib)*Y(Cr52)) + - (screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_Cr52_to_n_Cr51_reaclib)*Y(Cr52)) + - (-screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(Cr52)*Y(N)*state.rho + screened_rates(k_Cr53_to_n_Cr52_reaclib)*Y(Cr53)) + - (-screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(Cr52)*Y(H1)*state.rho + screened_rates(k_Mn53_to_p_Cr52_reaclib)*Y(Mn53)) + - (-screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(Cr52)*Y(He4)*state.rho + screened_rates(k_Fe56_to_He4_Cr52_reaclib)*Y(Fe56)) + - (screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(He4)*Y(Ti49)*state.rho + -screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(Cr52)*Y(N)*state.rho) + - (screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(He4)*Y(V49)*state.rho + -screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(Cr52)*Y(H1)*state.rho) + - (screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(Cr52)*Y(N)*state.rho) + - (screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(Cr52)*Y(H1)*state.rho) + - (screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(Mn55)*Y(H1)*state.rho + -screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + - (screened_rates(k_Mn52_to_Cr52_weaktab)*Y(Mn52) + -screened_rates(k_Cr52_to_Mn52_weaktab)*Y(Cr52)) + - (screened_rates(k_V52_to_Cr52_weaktab)*Y(V52) + -screened_rates(k_Cr52_to_V52_weaktab)*Y(Cr52)); + (screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(He4)*Y(Ti48)*state.rho + -screened_rates(k_Cr52_to_He4_Ti48_reaclib)*Y(Cr52)) + + (screened_rates(k_V51_p_to_Cr52_reaclib)*Y(V51)*Y(H1)*state.rho + -screened_rates(k_Cr52_to_p_V51_reaclib)*Y(Cr52)) + + (screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(Cr51)*Y(N)*state.rho + -screened_rates(k_Cr52_to_n_Cr51_reaclib)*Y(Cr52)) + + (-screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(Cr52)*Y(N)*state.rho + screened_rates(k_Cr53_to_n_Cr52_reaclib)*Y(Cr53)) + + (-screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(Cr52)*Y(H1)*state.rho + screened_rates(k_Mn53_to_p_Cr52_reaclib)*Y(Mn53)) + + (-screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(Cr52)*Y(He4)*state.rho + screened_rates(k_Fe56_to_He4_Cr52_reaclib)*Y(Fe56)) + + (screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(He4)*Y(Ti49)*state.rho + -screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(Cr52)*Y(N)*state.rho) + + (screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(He4)*Y(V49)*state.rho + -screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(Cr52)*Y(H1)*state.rho) + + (screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(Cr52)*Y(N)*state.rho) + + (screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(Cr52)*Y(H1)*state.rho) + + (screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(Mn55)*Y(H1)*state.rho + -screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + + (screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + + (screened_rates(k_Mn52_to_Cr52_electron_capture_weaktab)*Y(Mn52) + -screened_rates(k_Cr52_to_Mn52_beta_neg_weaktab)*Y(Cr52)) + + (screened_rates(k_V52_to_Cr52_beta_neg_weaktab)*Y(V52) + -screened_rates(k_Cr52_to_V52_electron_capture_weaktab)*Y(Cr52)); ydot_nuc(Cr53) = - (screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(He4)*Y(Ti49)*state.rho + -screened_rates(k_Cr53_to_He4_Ti49_reaclib)*Y(Cr53)) + - (screened_rates(k_p_V52_to_Cr53_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_Cr53_to_p_V52_reaclib)*Y(Cr53)) + - (screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(Cr52)*Y(N)*state.rho + -screened_rates(k_Cr53_to_n_Cr52_reaclib)*Y(Cr53)) + - (-screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(Cr53)*Y(N)*state.rho + screened_rates(k_Cr54_to_n_Cr53_reaclib)*Y(Cr54)) + - (-screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(Cr53)*Y(H1)*state.rho + screened_rates(k_Mn54_to_p_Cr53_reaclib)*Y(Mn54)) + - (-screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(Cr53)*Y(He4)*state.rho + screened_rates(k_Fe57_to_He4_Cr53_reaclib)*Y(Fe57)) + - (screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(He4)*Y(V50)*state.rho + -screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(Cr53)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(Cr53)*Y(N)*state.rho + screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(He4)*Y(Ti50)*state.rho) + - (screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(Cr53)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(Fe56)*Y(N)*state.rho + -screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(Cr53)*Y(He4)*state.rho) + - (screened_rates(k_Mn53_to_Cr53_weaktab)*Y(Mn53) + -screened_rates(k_Cr53_to_Mn53_weaktab)*Y(Cr53)); + (screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(He4)*Y(Ti49)*state.rho + -screened_rates(k_Cr53_to_He4_Ti49_reaclib)*Y(Cr53)) + + (screened_rates(k_V52_p_to_Cr53_reaclib)*Y(V52)*Y(H1)*state.rho + -screened_rates(k_Cr53_to_p_V52_reaclib)*Y(Cr53)) + + (screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(Cr52)*Y(N)*state.rho + -screened_rates(k_Cr53_to_n_Cr52_reaclib)*Y(Cr53)) + + (-screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(Cr53)*Y(N)*state.rho + screened_rates(k_Cr54_to_n_Cr53_reaclib)*Y(Cr54)) + + (-screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(Cr53)*Y(H1)*state.rho + screened_rates(k_Mn54_to_p_Cr53_reaclib)*Y(Mn54)) + + (-screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(Cr53)*Y(He4)*state.rho + screened_rates(k_Fe57_to_He4_Cr53_reaclib)*Y(Fe57)) + + (screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(He4)*Y(V50)*state.rho + -screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(Cr53)*Y(H1)*state.rho) + + (-screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(Cr53)*Y(N)*state.rho + screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(He4)*Y(Ti50)*state.rho) + + (screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(Cr53)*Y(H1)*state.rho) + + (screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(Fe56)*Y(N)*state.rho + -screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(Cr53)*Y(He4)*state.rho) + + (screened_rates(k_Mn53_to_Cr53_electron_capture_weaktab)*Y(Mn53) + -screened_rates(k_Cr53_to_Mn53_beta_neg_weaktab)*Y(Cr53)); ydot_nuc(Cr54) = - (screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(He4)*Y(Ti50)*state.rho + -screened_rates(k_Cr54_to_He4_Ti50_reaclib)*Y(Cr54)) + - (screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(Cr53)*Y(N)*state.rho + -screened_rates(k_Cr54_to_n_Cr53_reaclib)*Y(Cr54)) + - (-screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(Cr54)*Y(H1)*state.rho + screened_rates(k_Mn55_to_p_Cr54_reaclib)*Y(Mn55)) + - (-screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(Cr54)*Y(He4)*state.rho + screened_rates(k_Fe58_to_He4_Cr54_reaclib)*Y(Fe58)) + - (screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(He4)*Y(Ti51)*state.rho + -screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(Cr54)*Y(N)*state.rho) + - (-screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(Cr54)*Y(H1)*state.rho + screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(He4)*Y(V51)*state.rho) + - (screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(Cr54)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(Fe57)*Y(N)*state.rho + -screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(Cr54)*Y(He4)*state.rho) + - (screened_rates(k_Mn54_to_Cr54_weaktab)*Y(Mn54) + -screened_rates(k_Cr54_to_Mn54_weaktab)*Y(Cr54)); + (screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(He4)*Y(Ti50)*state.rho + -screened_rates(k_Cr54_to_He4_Ti50_reaclib)*Y(Cr54)) + + (screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(Cr53)*Y(N)*state.rho + -screened_rates(k_Cr54_to_n_Cr53_reaclib)*Y(Cr54)) + + (-screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(Cr54)*Y(H1)*state.rho + screened_rates(k_Mn55_to_p_Cr54_reaclib)*Y(Mn55)) + + (-screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(Cr54)*Y(He4)*state.rho + screened_rates(k_Fe58_to_He4_Cr54_reaclib)*Y(Fe58)) + + (screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(He4)*Y(Ti51)*state.rho + -screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(Cr54)*Y(N)*state.rho) + + (-screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(Cr54)*Y(H1)*state.rho + screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(He4)*Y(V51)*state.rho) + + (screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(Cr54)*Y(H1)*state.rho) + + (screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(Fe57)*Y(N)*state.rho + -screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(Cr54)*Y(He4)*state.rho) + + (screened_rates(k_Mn54_to_Cr54_electron_capture_weaktab)*Y(Mn54) + -screened_rates(k_Cr54_to_Mn54_beta_neg_weaktab)*Y(Cr54)); ydot_nuc(Mn50) = - (screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(He4)*Y(V46)*state.rho + -screened_rates(k_Mn50_to_He4_V46_reaclib)*Y(Mn50)) + - (screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(Cr49)*Y(H1)*state.rho + -screened_rates(k_Mn50_to_p_Cr49_reaclib)*Y(Mn50)) + - (-screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_Mn51_to_n_Mn50_reaclib)*Y(Mn51)) + - (-screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(He4)*Y(Mn50)*state.rho + screened_rates(k_Co54_to_He4_Mn50_reaclib)*Y(Co54)) + - (-screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(Cr50)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(He4)*Y(V47)*state.rho) + - (-screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(He4)*Y(Mn50)*state.rho + screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(Fe53)*Y(H1)*state.rho) + - (screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(He4)*Y(Mn50)*state.rho) + - (-screened_rates(k_Mn50_to_Cr50_weaktab)*Y(Mn50) + screened_rates(k_Cr50_to_Mn50_weaktab)*Y(Cr50)); + (screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(He4)*Y(V46)*state.rho + -screened_rates(k_Mn50_to_He4_V46_reaclib)*Y(Mn50)) + + (screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(Cr49)*Y(H1)*state.rho + -screened_rates(k_Mn50_to_p_Cr49_reaclib)*Y(Mn50)) + + (-screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_Mn51_to_n_Mn50_reaclib)*Y(Mn51)) + + (-screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(He4)*Y(Mn50)*state.rho + screened_rates(k_Co54_to_He4_Mn50_reaclib)*Y(Co54)) + + (-screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(Cr50)*Y(H1)*state.rho) + + (-screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(Mn50)*Y(N)*state.rho + screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(He4)*Y(V47)*state.rho) + + (-screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(He4)*Y(Mn50)*state.rho + screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(Fe53)*Y(H1)*state.rho) + + (screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(He4)*Y(Mn50)*state.rho) + + (-screened_rates(k_Mn50_to_Cr50_electron_capture_weaktab)*Y(Mn50) + screened_rates(k_Cr50_to_Mn50_beta_neg_weaktab)*Y(Cr50)); ydot_nuc(Mn51) = - (screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(He4)*Y(V47)*state.rho + -screened_rates(k_Mn51_to_He4_V47_reaclib)*Y(Mn51)) + - (screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(Cr50)*Y(H1)*state.rho + -screened_rates(k_Mn51_to_p_Cr50_reaclib)*Y(Mn51)) + - (screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_Mn51_to_n_Mn50_reaclib)*Y(Mn51)) + - (-screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_Mn52_to_n_Mn51_reaclib)*Y(Mn52)) + - (-screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_reaclib)*Y(Fe52)) + - (-screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_reaclib)*Y(Co55)) + - (screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(Mn51)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(Cr51)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(He4)*Y(V48)*state.rho) + - (-screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(He4)*Y(Mn51)*state.rho) + - (-screened_rates(k_Mn51_to_Cr51_weaktab)*Y(Mn51) + screened_rates(k_Cr51_to_Mn51_weaktab)*Y(Cr51)); + (screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(He4)*Y(V47)*state.rho + -screened_rates(k_Mn51_to_He4_V47_reaclib)*Y(Mn51)) + + (screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(Cr50)*Y(H1)*state.rho + -screened_rates(k_Mn51_to_p_Cr50_reaclib)*Y(Mn51)) + + (screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(Mn50)*Y(N)*state.rho + -screened_rates(k_Mn51_to_n_Mn50_reaclib)*Y(Mn51)) + + (-screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_Mn52_to_n_Mn51_reaclib)*Y(Mn52)) + + (-screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_reaclib)*Y(Fe52)) + + (-screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Co55_to_He4_Mn51_reaclib)*Y(Co55)) + + (screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(Mn51)*Y(H1)*state.rho) + + (-screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(Cr51)*Y(H1)*state.rho) + + (-screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(Mn51)*Y(N)*state.rho + screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(He4)*Y(V48)*state.rho) + + (-screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(He4)*Y(Mn51)*state.rho) + + (-screened_rates(k_Mn51_to_Cr51_electron_capture_weaktab)*Y(Mn51) + screened_rates(k_Cr51_to_Mn51_beta_neg_weaktab)*Y(Cr51)); ydot_nuc(Mn52) = - (screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(He4)*Y(V48)*state.rho + -screened_rates(k_Mn52_to_He4_V48_reaclib)*Y(Mn52)) + - (screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(Cr51)*Y(H1)*state.rho + -screened_rates(k_Mn52_to_p_Cr51_reaclib)*Y(Mn52)) + - (screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_Mn52_to_n_Mn51_reaclib)*Y(Mn52)) + - (-screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_Mn53_to_n_Mn52_reaclib)*Y(Mn53)) + - (-screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(Mn52)*Y(H1)*state.rho + screened_rates(k_Fe53_to_p_Mn52_reaclib)*Y(Fe53)) + - (-screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(He4)*Y(Mn52)*state.rho + screened_rates(k_Co56_to_He4_Mn52_reaclib)*Y(Co56)) + - (screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(Cr49)*Y(He4)*state.rho + -screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(Mn52)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(Cr52)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(He4)*Y(V49)*state.rho) + - (-screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(He4)*Y(Mn52)*state.rho + screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(Fe55)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(Mn52)*Y(H1)*state.rho) + - (screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(He4)*Y(Mn52)*state.rho) + - (screened_rates(k_Fe52_to_Mn52_weaktab)*Y(Fe52) + -screened_rates(k_Mn52_to_Fe52_weaktab)*Y(Mn52)) + - (-screened_rates(k_Mn52_to_Cr52_weaktab)*Y(Mn52) + screened_rates(k_Cr52_to_Mn52_weaktab)*Y(Cr52)); + (screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(He4)*Y(V48)*state.rho + -screened_rates(k_Mn52_to_He4_V48_reaclib)*Y(Mn52)) + + (screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(Cr51)*Y(H1)*state.rho + -screened_rates(k_Mn52_to_p_Cr51_reaclib)*Y(Mn52)) + + (screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(Mn51)*Y(N)*state.rho + -screened_rates(k_Mn52_to_n_Mn51_reaclib)*Y(Mn52)) + + (-screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_Mn53_to_n_Mn52_reaclib)*Y(Mn53)) + + (-screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(Mn52)*Y(H1)*state.rho + screened_rates(k_Fe53_to_p_Mn52_reaclib)*Y(Fe53)) + + (-screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(He4)*Y(Mn52)*state.rho + screened_rates(k_Co56_to_He4_Mn52_reaclib)*Y(Co56)) + + (screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(Cr49)*Y(He4)*state.rho + -screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(Mn52)*Y(H1)*state.rho) + + (-screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(Cr52)*Y(H1)*state.rho) + + (-screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(Mn52)*Y(N)*state.rho + screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(He4)*Y(V49)*state.rho) + + (-screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(He4)*Y(Mn52)*state.rho + screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(Fe55)*Y(H1)*state.rho) + + (screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(Mn52)*Y(H1)*state.rho) + + (screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(He4)*Y(Mn52)*state.rho) + + (screened_rates(k_Fe52_to_Mn52_electron_capture_weaktab)*Y(Fe52) + -screened_rates(k_Mn52_to_Fe52_beta_neg_weaktab)*Y(Mn52)) + + (-screened_rates(k_Mn52_to_Cr52_electron_capture_weaktab)*Y(Mn52) + screened_rates(k_Cr52_to_Mn52_beta_neg_weaktab)*Y(Cr52)); ydot_nuc(Mn53) = - (screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(He4)*Y(V49)*state.rho + -screened_rates(k_Mn53_to_He4_V49_reaclib)*Y(Mn53)) + - (screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(Cr52)*Y(H1)*state.rho + -screened_rates(k_Mn53_to_p_Cr52_reaclib)*Y(Mn53)) + - (screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_Mn53_to_n_Mn52_reaclib)*Y(Mn53)) + - (-screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_Mn54_to_n_Mn53_reaclib)*Y(Mn54)) + - (-screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(Mn53)*Y(H1)*state.rho + screened_rates(k_Fe54_to_p_Mn53_reaclib)*Y(Fe54)) + - (-screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(He4)*Y(Mn53)*state.rho + screened_rates(k_Co57_to_He4_Mn53_reaclib)*Y(Co57)) + - (-screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(Cr53)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(He4)*Y(V50)*state.rho) + - (-screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(Mn53)*Y(H1)*state.rho + screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(He4)*Y(Mn53)*state.rho + screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(Mn53)*Y(H1)*state.rho) + - (screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(He4)*Y(Mn53)*state.rho) + - (screened_rates(k_Fe53_to_Mn53_weaktab)*Y(Fe53) + -screened_rates(k_Mn53_to_Fe53_weaktab)*Y(Mn53)) + - (-screened_rates(k_Mn53_to_Cr53_weaktab)*Y(Mn53) + screened_rates(k_Cr53_to_Mn53_weaktab)*Y(Cr53)); + (screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(He4)*Y(V49)*state.rho + -screened_rates(k_Mn53_to_He4_V49_reaclib)*Y(Mn53)) + + (screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(Cr52)*Y(H1)*state.rho + -screened_rates(k_Mn53_to_p_Cr52_reaclib)*Y(Mn53)) + + (screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(Mn52)*Y(N)*state.rho + -screened_rates(k_Mn53_to_n_Mn52_reaclib)*Y(Mn53)) + + (-screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_Mn54_to_n_Mn53_reaclib)*Y(Mn54)) + + (-screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(Mn53)*Y(H1)*state.rho + screened_rates(k_Fe54_to_p_Mn53_reaclib)*Y(Fe54)) + + (-screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(He4)*Y(Mn53)*state.rho + screened_rates(k_Co57_to_He4_Mn53_reaclib)*Y(Co57)) + + (-screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(Cr53)*Y(H1)*state.rho) + + (-screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(Mn53)*Y(N)*state.rho + screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(He4)*Y(V50)*state.rho) + + (-screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(Mn53)*Y(H1)*state.rho + screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + + (-screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(He4)*Y(Mn53)*state.rho + screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(Mn53)*Y(H1)*state.rho) + + (screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(He4)*Y(Mn53)*state.rho) + + (screened_rates(k_Fe53_to_Mn53_electron_capture_weaktab)*Y(Fe53) + -screened_rates(k_Mn53_to_Fe53_beta_neg_weaktab)*Y(Mn53)) + + (-screened_rates(k_Mn53_to_Cr53_electron_capture_weaktab)*Y(Mn53) + screened_rates(k_Cr53_to_Mn53_beta_neg_weaktab)*Y(Cr53)); ydot_nuc(Mn54) = - (screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(He4)*Y(V50)*state.rho + -screened_rates(k_Mn54_to_He4_V50_reaclib)*Y(Mn54)) + - (screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(Cr53)*Y(H1)*state.rho + -screened_rates(k_Mn54_to_p_Cr53_reaclib)*Y(Mn54)) + - (screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_Mn54_to_n_Mn53_reaclib)*Y(Mn54)) + - (-screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_Mn55_to_n_Mn54_reaclib)*Y(Mn55)) + - (-screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(Mn54)*Y(H1)*state.rho + screened_rates(k_Fe55_to_p_Mn54_reaclib)*Y(Fe55)) + - (-screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(He4)*Y(Mn54)*state.rho + screened_rates(k_Co58_to_He4_Mn54_reaclib)*Y(Co58)) + - (-screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(Cr54)*Y(H1)*state.rho) + - (-screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(He4)*Y(V51)*state.rho) + - (-screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(Mn54)*Y(H1)*state.rho + screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(Mn54)*Y(H1)*state.rho) + - (screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(Fe57)*Y(H1)*state.rho + -screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + - (screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + - (-screened_rates(k_Mn54_to_Cr54_weaktab)*Y(Mn54) + screened_rates(k_Cr54_to_Mn54_weaktab)*Y(Cr54)) + - (-screened_rates(k_Mn54_to_Fe54_weaktab)*Y(Mn54) + screened_rates(k_Fe54_to_Mn54_weaktab)*Y(Fe54)); + (screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(He4)*Y(V50)*state.rho + -screened_rates(k_Mn54_to_He4_V50_reaclib)*Y(Mn54)) + + (screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(Cr53)*Y(H1)*state.rho + -screened_rates(k_Mn54_to_p_Cr53_reaclib)*Y(Mn54)) + + (screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(Mn53)*Y(N)*state.rho + -screened_rates(k_Mn54_to_n_Mn53_reaclib)*Y(Mn54)) + + (-screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_Mn55_to_n_Mn54_reaclib)*Y(Mn55)) + + (-screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(Mn54)*Y(H1)*state.rho + screened_rates(k_Fe55_to_p_Mn54_reaclib)*Y(Fe55)) + + (-screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(He4)*Y(Mn54)*state.rho + screened_rates(k_Co58_to_He4_Mn54_reaclib)*Y(Co58)) + + (-screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(Cr54)*Y(H1)*state.rho) + + (-screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(Mn54)*Y(N)*state.rho + screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(He4)*Y(V51)*state.rho) + + (-screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(Mn54)*Y(H1)*state.rho + screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + + (screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(Mn54)*Y(H1)*state.rho) + + (screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(Fe57)*Y(H1)*state.rho + -screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + + (screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + + (-screened_rates(k_Mn54_to_Cr54_electron_capture_weaktab)*Y(Mn54) + screened_rates(k_Cr54_to_Mn54_beta_neg_weaktab)*Y(Cr54)) + + (-screened_rates(k_Mn54_to_Fe54_beta_neg_weaktab)*Y(Mn54) + screened_rates(k_Fe54_to_Mn54_electron_capture_weaktab)*Y(Fe54)); ydot_nuc(Mn55) = - (screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(He4)*Y(V51)*state.rho + -screened_rates(k_Mn55_to_He4_V51_reaclib)*Y(Mn55)) + - (screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(Cr54)*Y(H1)*state.rho + -screened_rates(k_Mn55_to_p_Cr54_reaclib)*Y(Mn55)) + - (screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_Mn55_to_n_Mn54_reaclib)*Y(Mn55)) + - (-screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_reaclib)*Y(Fe56)) + - (-screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(He4)*Y(Mn55)*state.rho + screened_rates(k_Co59_to_He4_Mn55_reaclib)*Y(Co59)) + - (screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(He4)*Y(V52)*state.rho + -screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(Mn55)*Y(N)*state.rho) + - (-screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + - (screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(Mn55)*Y(H1)*state.rho) + - (screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(Fe58)*Y(H1)*state.rho + -screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + - (screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + - (screened_rates(k_Fe55_to_Mn55_weaktab)*Y(Fe55) + -screened_rates(k_Mn55_to_Fe55_weaktab)*Y(Mn55)); + (screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(He4)*Y(V51)*state.rho + -screened_rates(k_Mn55_to_He4_V51_reaclib)*Y(Mn55)) + + (screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(Cr54)*Y(H1)*state.rho + -screened_rates(k_Mn55_to_p_Cr54_reaclib)*Y(Mn55)) + + (screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(Mn54)*Y(N)*state.rho + -screened_rates(k_Mn55_to_n_Mn54_reaclib)*Y(Mn55)) + + (-screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_reaclib)*Y(Fe56)) + + (-screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(He4)*Y(Mn55)*state.rho + screened_rates(k_Co59_to_He4_Mn55_reaclib)*Y(Co59)) + + (screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(He4)*Y(V52)*state.rho + -screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(Mn55)*Y(N)*state.rho) + + (-screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(Mn55)*Y(H1)*state.rho + screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + + (screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(Mn55)*Y(H1)*state.rho) + + (screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(Fe58)*Y(H1)*state.rho + -screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + + (screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + + (screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab)*Y(Fe55) + -screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab)*Y(Mn55)); ydot_nuc(Fe52) = - (screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_reaclib)*Y(Fe52)) + - (screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_reaclib)*Y(Fe52)) + - (-screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_reaclib)*Y(Fe53)) + - (-screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(Fe52)*Y(H1)*state.rho + screened_rates(k_Co53_to_p_Fe52_reaclib)*Y(Co53)) + - (-screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_reaclib)*Y(Ni56)) + - (-screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(Mn52)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(Cr49)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_Fe52_to_Mn52_weaktab)*Y(Fe52) + screened_rates(k_Mn52_to_Fe52_weaktab)*Y(Mn52)); + (screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*Y(He4)*state.rho + -screened_rates(k_Fe52_to_He4_Cr48_reaclib)*Y(Fe52)) + + (screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*Y(H1)*state.rho + -screened_rates(k_Fe52_to_p_Mn51_reaclib)*Y(Fe52)) + + (-screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Fe53_to_n_Fe52_reaclib)*Y(Fe53)) + + (-screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(Fe52)*Y(H1)*state.rho + screened_rates(k_Co53_to_p_Fe52_reaclib)*Y(Co53)) + + (-screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_reaclib)*Y(Ni56)) + + (-screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(Mn52)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(Fe52)*Y(N)*state.rho + screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(Cr49)*Y(He4)*state.rho) + + (-screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe52_to_Mn52_electron_capture_weaktab)*Y(Fe52) + screened_rates(k_Mn52_to_Fe52_beta_neg_weaktab)*Y(Mn52)); ydot_nuc(Fe53) = - (screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(Cr49)*Y(He4)*state.rho + -screened_rates(k_Fe53_to_He4_Cr49_reaclib)*Y(Fe53)) + - (screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(Mn52)*Y(H1)*state.rho + -screened_rates(k_Fe53_to_p_Mn52_reaclib)*Y(Fe53)) + - (screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_Fe53_to_n_Fe52_reaclib)*Y(Fe53)) + - (-screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_reaclib)*Y(Fe54)) + - (-screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(Fe53)*Y(H1)*state.rho + screened_rates(k_Co54_to_p_Fe53_reaclib)*Y(Co54)) + - (-screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_reaclib)*Y(Ni57)) + - (screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(He4)*Y(Mn50)*state.rho + -screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(Fe53)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(Mn53)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(Fe53)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(Fe53)*Y(He4)*state.rho) + - (screened_rates(k_Co53_to_Fe53_weaktab)*Y(Co53) + -screened_rates(k_Fe53_to_Co53_weaktab)*Y(Fe53)) + - (-screened_rates(k_Fe53_to_Mn53_weaktab)*Y(Fe53) + screened_rates(k_Mn53_to_Fe53_weaktab)*Y(Mn53)); + (screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(Cr49)*Y(He4)*state.rho + -screened_rates(k_Fe53_to_He4_Cr49_reaclib)*Y(Fe53)) + + (screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(Mn52)*Y(H1)*state.rho + -screened_rates(k_Fe53_to_p_Mn52_reaclib)*Y(Fe53)) + + (screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*Y(N)*state.rho + -screened_rates(k_Fe53_to_n_Fe52_reaclib)*Y(Fe53)) + + (-screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Fe54_to_n_Fe53_reaclib)*Y(Fe54)) + + (-screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(Fe53)*Y(H1)*state.rho + screened_rates(k_Co54_to_p_Fe53_reaclib)*Y(Co54)) + + (-screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_reaclib)*Y(Ni57)) + + (screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(He4)*Y(Mn50)*state.rho + -screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(Fe53)*Y(H1)*state.rho) + + (-screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(Mn53)*Y(H1)*state.rho) + + (-screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(Fe53)*Y(N)*state.rho + screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(Cr50)*Y(He4)*state.rho) + + (-screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(Fe53)*Y(H1)*state.rho) + + (screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(Fe53)*Y(He4)*state.rho) + + (screened_rates(k_Co53_to_Fe53_electron_capture_weaktab)*Y(Co53) + -screened_rates(k_Fe53_to_Co53_beta_neg_weaktab)*Y(Fe53)) + + (-screened_rates(k_Fe53_to_Mn53_electron_capture_weaktab)*Y(Fe53) + screened_rates(k_Mn53_to_Fe53_beta_neg_weaktab)*Y(Mn53)); ydot_nuc(Fe54) = - (screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(Cr50)*Y(He4)*state.rho + -screened_rates(k_Fe54_to_He4_Cr50_reaclib)*Y(Fe54)) + - (screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(Mn53)*Y(H1)*state.rho + -screened_rates(k_Fe54_to_p_Mn53_reaclib)*Y(Fe54)) + - (screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_Fe54_to_n_Fe53_reaclib)*Y(Fe54)) + - (-screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Fe55_to_n_Fe54_reaclib)*Y(Fe55)) + - (-screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_reaclib)*Y(Co55)) + - (-screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_reaclib)*Y(Ni58)) + - (screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(Fe54)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(Mn54)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + - (screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(Fe54)*Y(H1)*state.rho) + - (screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_Co54_to_Fe54_weaktab)*Y(Co54) + -screened_rates(k_Fe54_to_Co54_weaktab)*Y(Fe54)) + - (screened_rates(k_Mn54_to_Fe54_weaktab)*Y(Mn54) + -screened_rates(k_Fe54_to_Mn54_weaktab)*Y(Fe54)); + (screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(Cr50)*Y(He4)*state.rho + -screened_rates(k_Fe54_to_He4_Cr50_reaclib)*Y(Fe54)) + + (screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(Mn53)*Y(H1)*state.rho + -screened_rates(k_Fe54_to_p_Mn53_reaclib)*Y(Fe54)) + + (screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*Y(N)*state.rho + -screened_rates(k_Fe54_to_n_Fe53_reaclib)*Y(Fe54)) + + (-screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Fe55_to_n_Fe54_reaclib)*Y(Fe55)) + + (-screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_reaclib)*Y(Co55)) + + (-screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_reaclib)*Y(Ni58)) + + (screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(Mn54)*Y(H1)*state.rho) + + (-screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(Fe54)*Y(N)*state.rho + screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(Cr51)*Y(He4)*state.rho) + + (screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(Fe54)*Y(H1)*state.rho) + + (screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Co54_to_Fe54_electron_capture_weaktab)*Y(Co54) + -screened_rates(k_Fe54_to_Co54_beta_neg_weaktab)*Y(Fe54)) + + (screened_rates(k_Mn54_to_Fe54_beta_neg_weaktab)*Y(Mn54) + -screened_rates(k_Fe54_to_Mn54_electron_capture_weaktab)*Y(Fe54)); ydot_nuc(Fe55) = - (screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(Cr51)*Y(He4)*state.rho + -screened_rates(k_Fe55_to_He4_Cr51_reaclib)*Y(Fe55)) + - (screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(Mn54)*Y(H1)*state.rho + -screened_rates(k_Fe55_to_p_Mn54_reaclib)*Y(Fe55)) + - (screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_Fe55_to_n_Fe54_reaclib)*Y(Fe55)) + - (-screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Fe56_to_n_Fe55_reaclib)*Y(Fe56)) + - (-screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_reaclib)*Y(Co56)) + - (-screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(Fe55)*Y(He4)*state.rho + screened_rates(k_Ni59_to_He4_Fe55_reaclib)*Y(Ni59)) + - (screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(He4)*Y(Mn52)*state.rho + -screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(Fe55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(Mn55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + - (screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(Fe55)*Y(H1)*state.rho) + - (screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(Co58)*Y(H1)*state.rho + -screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + - (screened_rates(k_Co55_to_Fe55_weaktab)*Y(Co55) + -screened_rates(k_Fe55_to_Co55_weaktab)*Y(Fe55)) + - (-screened_rates(k_Fe55_to_Mn55_weaktab)*Y(Fe55) + screened_rates(k_Mn55_to_Fe55_weaktab)*Y(Mn55)); + (screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(Cr51)*Y(He4)*state.rho + -screened_rates(k_Fe55_to_He4_Cr51_reaclib)*Y(Fe55)) + + (screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(Mn54)*Y(H1)*state.rho + -screened_rates(k_Fe55_to_p_Mn54_reaclib)*Y(Fe55)) + + (screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*Y(N)*state.rho + -screened_rates(k_Fe55_to_n_Fe54_reaclib)*Y(Fe55)) + + (-screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Fe56_to_n_Fe55_reaclib)*Y(Fe56)) + + (-screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_reaclib)*Y(Co56)) + + (-screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(Fe55)*Y(He4)*state.rho + screened_rates(k_Ni59_to_He4_Fe55_reaclib)*Y(Ni59)) + + (screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(He4)*Y(Mn52)*state.rho + -screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(Fe55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(Mn55)*Y(H1)*state.rho) + + (-screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(Fe55)*Y(N)*state.rho + screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(Cr52)*Y(He4)*state.rho) + + (screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(Fe55)*Y(H1)*state.rho) + + (screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(Co58)*Y(H1)*state.rho + -screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + + (screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + + (screened_rates(k_Co55_to_Fe55_electron_capture_weaktab)*Y(Co55) + -screened_rates(k_Fe55_to_Co55_beta_neg_weaktab)*Y(Fe55)) + + (-screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab)*Y(Fe55) + screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab)*Y(Mn55)); ydot_nuc(Fe56) = - (screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(Cr52)*Y(He4)*state.rho + -screened_rates(k_Fe56_to_He4_Cr52_reaclib)*Y(Fe56)) + - (screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + -screened_rates(k_Fe56_to_p_Mn55_reaclib)*Y(Fe56)) + - (screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Fe56_to_n_Fe55_reaclib)*Y(Fe56)) + - (-screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(Fe56)*Y(N)*state.rho + screened_rates(k_Fe57_to_n_Fe56_reaclib)*Y(Fe57)) + - (-screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_reaclib)*Y(Co57)) + - (-screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(Fe56)*Y(He4)*state.rho + screened_rates(k_Ni60_to_He4_Fe56_reaclib)*Y(Ni60)) + - (screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(He4)*Y(Mn53)*state.rho + -screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(Fe56)*Y(N)*state.rho + screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(Cr53)*Y(He4)*state.rho) + - (screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(Fe56)*Y(H1)*state.rho) + - (screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(Co59)*Y(H1)*state.rho + -screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + - (screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)); + (screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(Cr52)*Y(He4)*state.rho + -screened_rates(k_Fe56_to_He4_Cr52_reaclib)*Y(Fe56)) + + (screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*Y(H1)*state.rho + -screened_rates(k_Fe56_to_p_Mn55_reaclib)*Y(Fe56)) + + (screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*Y(N)*state.rho + -screened_rates(k_Fe56_to_n_Fe55_reaclib)*Y(Fe56)) + + (-screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(Fe56)*Y(N)*state.rho + screened_rates(k_Fe57_to_n_Fe56_reaclib)*Y(Fe57)) + + (-screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_reaclib)*Y(Co57)) + + (-screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(Fe56)*Y(He4)*state.rho + screened_rates(k_Ni60_to_He4_Fe56_reaclib)*Y(Ni60)) + + (screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(He4)*Y(Mn53)*state.rho + -screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(Fe56)*Y(N)*state.rho + screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(Cr53)*Y(He4)*state.rho) + + (screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(Fe56)*Y(H1)*state.rho) + + (screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(Co59)*Y(H1)*state.rho + -screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + + (screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + + (screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + -screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)); ydot_nuc(Fe57) = - (screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(Cr53)*Y(He4)*state.rho + -screened_rates(k_Fe57_to_He4_Cr53_reaclib)*Y(Fe57)) + - (screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(Fe56)*Y(N)*state.rho + -screened_rates(k_Fe57_to_n_Fe56_reaclib)*Y(Fe57)) + - (-screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(Fe57)*Y(N)*state.rho + screened_rates(k_Fe58_to_n_Fe57_reaclib)*Y(Fe58)) + - (-screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(Fe57)*Y(H1)*state.rho + screened_rates(k_Co58_to_p_Fe57_reaclib)*Y(Co58)) + - (-screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(Fe57)*Y(He4)*state.rho + screened_rates(k_Ni61_to_He4_Fe57_reaclib)*Y(Ni61)) + - (-screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(Fe57)*Y(N)*state.rho + screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(Cr54)*Y(He4)*state.rho) + - (-screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(Fe57)*Y(H1)*state.rho + screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + - (screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(Fe57)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(Ni60)*Y(N)*state.rho + -screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(Fe57)*Y(He4)*state.rho) + - (screened_rates(k_Co57_to_Fe57_weaktab)*Y(Co57) + -screened_rates(k_Fe57_to_Co57_weaktab)*Y(Fe57)); + (screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(Cr53)*Y(He4)*state.rho + -screened_rates(k_Fe57_to_He4_Cr53_reaclib)*Y(Fe57)) + + (screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(Fe56)*Y(N)*state.rho + -screened_rates(k_Fe57_to_n_Fe56_reaclib)*Y(Fe57)) + + (-screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(Fe57)*Y(N)*state.rho + screened_rates(k_Fe58_to_n_Fe57_reaclib)*Y(Fe58)) + + (-screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(Fe57)*Y(H1)*state.rho + screened_rates(k_Co58_to_p_Fe57_reaclib)*Y(Co58)) + + (-screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(Fe57)*Y(He4)*state.rho + screened_rates(k_Ni61_to_He4_Fe57_reaclib)*Y(Ni61)) + + (-screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(Fe57)*Y(N)*state.rho + screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(Cr54)*Y(He4)*state.rho) + + (-screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(Fe57)*Y(H1)*state.rho + screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + + (screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(Fe57)*Y(H1)*state.rho) + + (screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(Ni60)*Y(N)*state.rho + -screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(Fe57)*Y(He4)*state.rho) + + (screened_rates(k_Co57_to_Fe57_electron_capture_weaktab)*Y(Co57) + -screened_rates(k_Fe57_to_Co57_beta_neg_weaktab)*Y(Fe57)); ydot_nuc(Fe58) = - (screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(Cr54)*Y(He4)*state.rho + -screened_rates(k_Fe58_to_He4_Cr54_reaclib)*Y(Fe58)) + - (screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(Fe57)*Y(N)*state.rho + -screened_rates(k_Fe58_to_n_Fe57_reaclib)*Y(Fe58)) + - (-screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(Fe58)*Y(H1)*state.rho + screened_rates(k_Co59_to_p_Fe58_reaclib)*Y(Co59)) + - (-screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(Fe58)*Y(He4)*state.rho + screened_rates(k_Ni62_to_He4_Fe58_reaclib)*Y(Ni62)) + - (-screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(Fe58)*Y(H1)*state.rho + screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + - (screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(Fe58)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(Ni61)*Y(N)*state.rho + -screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(Fe58)*Y(He4)*state.rho) + - (screened_rates(k_Co58_to_Fe58_weaktab)*Y(Co58) + -screened_rates(k_Fe58_to_Co58_weaktab)*Y(Fe58)); + (screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(Cr54)*Y(He4)*state.rho + -screened_rates(k_Fe58_to_He4_Cr54_reaclib)*Y(Fe58)) + + (screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(Fe57)*Y(N)*state.rho + -screened_rates(k_Fe58_to_n_Fe57_reaclib)*Y(Fe58)) + + (-screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(Fe58)*Y(H1)*state.rho + screened_rates(k_Co59_to_p_Fe58_reaclib)*Y(Co59)) + + (-screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(Fe58)*Y(He4)*state.rho + screened_rates(k_Ni62_to_He4_Fe58_reaclib)*Y(Ni62)) + + (-screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(Fe58)*Y(H1)*state.rho + screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + + (screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(Fe58)*Y(H1)*state.rho) + + (screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(Ni61)*Y(N)*state.rho + -screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(Fe58)*Y(He4)*state.rho) + + (screened_rates(k_Co58_to_Fe58_electron_capture_weaktab)*Y(Co58) + -screened_rates(k_Fe58_to_Co58_beta_neg_weaktab)*Y(Fe58)); ydot_nuc(Co53) = - (screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(Fe52)*Y(H1)*state.rho + -screened_rates(k_Co53_to_p_Fe52_reaclib)*Y(Co53)) + - (-screened_rates(k_n_Co53_to_Co54_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_Co54_to_n_Co53_reaclib)*Y(Co54)) + - (-screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(Co53)*Y(He4)*state.rho + screened_rates(k_Cu57_to_He4_Co53_reaclib)*Y(Cu57)) + - (-screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(Fe53)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(He4)*Y(Mn50)*state.rho) + - (-screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(Co53)*Y(He4)*state.rho + screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(Ni56)*Y(H1)*state.rho) + - (-screened_rates(k_Co53_to_Fe53_weaktab)*Y(Co53) + screened_rates(k_Fe53_to_Co53_weaktab)*Y(Fe53)); + (screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(Fe52)*Y(H1)*state.rho + -screened_rates(k_Co53_to_p_Fe52_reaclib)*Y(Co53)) + + (-screened_rates(k_Co53_n_to_Co54_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_Co54_to_n_Co53_reaclib)*Y(Co54)) + + (-screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(Co53)*Y(He4)*state.rho + screened_rates(k_Cu57_to_He4_Co53_reaclib)*Y(Cu57)) + + (-screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(Fe53)*Y(H1)*state.rho) + + (-screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(Co53)*Y(N)*state.rho + screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(He4)*Y(Mn50)*state.rho) + + (-screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(Co53)*Y(He4)*state.rho + screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(Ni56)*Y(H1)*state.rho) + + (-screened_rates(k_Co53_to_Fe53_electron_capture_weaktab)*Y(Co53) + screened_rates(k_Fe53_to_Co53_beta_neg_weaktab)*Y(Fe53)); ydot_nuc(Co54) = - (screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(He4)*Y(Mn50)*state.rho + -screened_rates(k_Co54_to_He4_Mn50_reaclib)*Y(Co54)) + - (screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(Fe53)*Y(H1)*state.rho + -screened_rates(k_Co54_to_p_Fe53_reaclib)*Y(Co54)) + - (screened_rates(k_n_Co53_to_Co54_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_Co54_to_n_Co53_reaclib)*Y(Co54)) + - (-screened_rates(k_n_Co54_to_Co55_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_Co55_to_n_Co54_reaclib)*Y(Co55)) + - (-screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(Co54)*Y(He4)*state.rho + screened_rates(k_Cu58_to_He4_Co54_reaclib)*Y(Cu58)) + - (-screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(Fe54)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(He4)*Y(Mn51)*state.rho) + - (-screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(Co54)*Y(He4)*state.rho + screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(Ni57)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(Co54)*Y(He4)*state.rho) + - (-screened_rates(k_Co54_to_Fe54_weaktab)*Y(Co54) + screened_rates(k_Fe54_to_Co54_weaktab)*Y(Fe54)); + (screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(He4)*Y(Mn50)*state.rho + -screened_rates(k_Co54_to_He4_Mn50_reaclib)*Y(Co54)) + + (screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(Fe53)*Y(H1)*state.rho + -screened_rates(k_Co54_to_p_Fe53_reaclib)*Y(Co54)) + + (screened_rates(k_Co53_n_to_Co54_reaclib)*Y(Co53)*Y(N)*state.rho + -screened_rates(k_Co54_to_n_Co53_reaclib)*Y(Co54)) + + (-screened_rates(k_Co54_n_to_Co55_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_Co55_to_n_Co54_reaclib)*Y(Co55)) + + (-screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(Co54)*Y(He4)*state.rho + screened_rates(k_Cu58_to_He4_Co54_reaclib)*Y(Cu58)) + + (-screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(Fe54)*Y(H1)*state.rho) + + (-screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(Co54)*Y(N)*state.rho + screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(He4)*Y(Mn51)*state.rho) + + (-screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(Co54)*Y(He4)*state.rho + screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(Ni57)*Y(H1)*state.rho) + + (screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(Co54)*Y(He4)*state.rho) + + (-screened_rates(k_Co54_to_Fe54_electron_capture_weaktab)*Y(Co54) + screened_rates(k_Fe54_to_Co54_beta_neg_weaktab)*Y(Fe54)); ydot_nuc(Co55) = - (screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_reaclib)*Y(Co55)) + - (screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_reaclib)*Y(Co55)) + - (screened_rates(k_n_Co54_to_Co55_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_Co55_to_n_Co54_reaclib)*Y(Co55)) + - (-screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_reaclib)*Y(Co56)) + - (-screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_reaclib)*Y(Ni56)) + - (-screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_reaclib)*Y(Cu59)) + - (screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(Co55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(Fe55)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(He4)*Y(Mn52)*state.rho) + - (-screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(Co55)*Y(He4)*state.rho) + - (-screened_rates(k_Co55_to_Fe55_weaktab)*Y(Co55) + screened_rates(k_Fe55_to_Co55_weaktab)*Y(Fe55)); + (screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*Y(Mn51)*state.rho + -screened_rates(k_Co55_to_He4_Mn51_reaclib)*Y(Co55)) + + (screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*Y(H1)*state.rho + -screened_rates(k_Co55_to_p_Fe54_reaclib)*Y(Co55)) + + (screened_rates(k_Co54_n_to_Co55_reaclib)*Y(Co54)*Y(N)*state.rho + -screened_rates(k_Co55_to_n_Co54_reaclib)*Y(Co55)) + + (-screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Co56_to_n_Co55_reaclib)*Y(Co56)) + + (-screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_reaclib)*Y(Ni56)) + + (-screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Cu59_to_He4_Co55_reaclib)*Y(Cu59)) + + (screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(Co55)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(Fe55)*Y(H1)*state.rho) + + (-screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(Co55)*Y(N)*state.rho + screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(He4)*Y(Mn52)*state.rho) + + (-screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(Co55)*Y(He4)*state.rho) + + (-screened_rates(k_Co55_to_Fe55_electron_capture_weaktab)*Y(Co55) + screened_rates(k_Fe55_to_Co55_beta_neg_weaktab)*Y(Fe55)); ydot_nuc(Co56) = - (screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(He4)*Y(Mn52)*state.rho + -screened_rates(k_Co56_to_He4_Mn52_reaclib)*Y(Co56)) + - (screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + -screened_rates(k_Co56_to_p_Fe55_reaclib)*Y(Co56)) + - (screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_reaclib)*Y(Co56)) + - (-screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_reaclib)*Y(Co57)) + - (-screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_reaclib)*Y(Ni57)) + - (-screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(Co56)*Y(He4)*state.rho + screened_rates(k_Cu60_to_He4_Co56_reaclib)*Y(Cu60)) + - (screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(Fe56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(He4)*Y(Mn53)*state.rho) + - (-screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(Co56)*Y(He4)*state.rho + screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(Ni59)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(Co56)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(Co56)*Y(He4)*state.rho) + - (-screened_rates(k_Co56_to_Fe56_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_weaktab)*Y(Fe56)) + - (screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(He4)*Y(Mn52)*state.rho + -screened_rates(k_Co56_to_He4_Mn52_reaclib)*Y(Co56)) + + (screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*Y(H1)*state.rho + -screened_rates(k_Co56_to_p_Fe55_reaclib)*Y(Co56)) + + (screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*Y(N)*state.rho + -screened_rates(k_Co56_to_n_Co55_reaclib)*Y(Co56)) + + (-screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Co57_to_n_Co56_reaclib)*Y(Co57)) + + (-screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_reaclib)*Y(Ni57)) + + (-screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(Co56)*Y(He4)*state.rho + screened_rates(k_Cu60_to_He4_Co56_reaclib)*Y(Cu60)) + + (screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(Fe56)*Y(H1)*state.rho) + + (-screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(Co56)*Y(N)*state.rho + screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(He4)*Y(Mn53)*state.rho) + + (-screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(Co56)*Y(He4)*state.rho + screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(Ni59)*Y(H1)*state.rho) + + (screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(Co56)*Y(H1)*state.rho) + + (screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Co56_to_Fe56_electron_capture_weaktab)*Y(Co56) + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab)*Y(Fe56)) + + (screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + -screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Co57) = - (screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(He4)*Y(Mn53)*state.rho + -screened_rates(k_Co57_to_He4_Mn53_reaclib)*Y(Co57)) + - (screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_reaclib)*Y(Co57)) + - (screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_reaclib)*Y(Co57)) + - (-screened_rates(k_n_Co57_to_Co58_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_Co58_to_n_Co57_reaclib)*Y(Co58)) + - (-screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_reaclib)*Y(Ni58)) + - (-screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(Co57)*Y(He4)*state.rho + screened_rates(k_Cu61_to_He4_Co57_reaclib)*Y(Cu61)) + - (-screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(Fe57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + - (-screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(Co57)*Y(He4)*state.rho + screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(Ni60)*Y(H1)*state.rho) + - (screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(Co57)*Y(H1)*state.rho) + - (screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(Co57)*Y(He4)*state.rho) + - (-screened_rates(k_Co57_to_Fe57_weaktab)*Y(Co57) + screened_rates(k_Fe57_to_Co57_weaktab)*Y(Fe57)) + - (screened_rates(k_Ni57_to_Co57_weaktab)*Y(Ni57) + -screened_rates(k_Co57_to_Ni57_weaktab)*Y(Co57)); + (screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(He4)*Y(Mn53)*state.rho + -screened_rates(k_Co57_to_He4_Mn53_reaclib)*Y(Co57)) + + (screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*Y(H1)*state.rho + -screened_rates(k_Co57_to_p_Fe56_reaclib)*Y(Co57)) + + (screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*Y(N)*state.rho + -screened_rates(k_Co57_to_n_Co56_reaclib)*Y(Co57)) + + (-screened_rates(k_Co57_n_to_Co58_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_Co58_to_n_Co57_reaclib)*Y(Co58)) + + (-screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_reaclib)*Y(Ni58)) + + (-screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(Co57)*Y(He4)*state.rho + screened_rates(k_Cu61_to_He4_Co57_reaclib)*Y(Cu61)) + + (-screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(Fe57)*Y(H1)*state.rho) + + (-screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(Co57)*Y(N)*state.rho + screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(He4)*Y(Mn54)*state.rho) + + (-screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*Y(H1)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + + (-screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(Co57)*Y(He4)*state.rho + screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(Ni60)*Y(H1)*state.rho) + + (screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(Co57)*Y(H1)*state.rho) + + (screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(Co57)*Y(He4)*state.rho) + + (-screened_rates(k_Co57_to_Fe57_electron_capture_weaktab)*Y(Co57) + screened_rates(k_Fe57_to_Co57_beta_neg_weaktab)*Y(Fe57)) + + (screened_rates(k_Ni57_to_Co57_electron_capture_weaktab)*Y(Ni57) + -screened_rates(k_Co57_to_Ni57_beta_neg_weaktab)*Y(Co57)); ydot_nuc(Co58) = - (screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(He4)*Y(Mn54)*state.rho + -screened_rates(k_Co58_to_He4_Mn54_reaclib)*Y(Co58)) + - (screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(Fe57)*Y(H1)*state.rho + -screened_rates(k_Co58_to_p_Fe57_reaclib)*Y(Co58)) + - (screened_rates(k_n_Co57_to_Co58_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_Co58_to_n_Co57_reaclib)*Y(Co58)) + - (-screened_rates(k_n_Co58_to_Co59_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_Co59_to_n_Co58_reaclib)*Y(Co59)) + - (-screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(Co58)*Y(H1)*state.rho + screened_rates(k_Ni59_to_p_Co58_reaclib)*Y(Ni59)) + - (-screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(Co58)*Y(He4)*state.rho + screened_rates(k_Cu62_to_He4_Co58_reaclib)*Y(Cu62)) + - (-screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(Fe58)*Y(H1)*state.rho) + - (-screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + - (-screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(Co58)*Y(H1)*state.rho + screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(Co58)*Y(H1)*state.rho) + - (screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(Ni61)*Y(H1)*state.rho + -screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(Co58)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(Co58)*Y(He4)*state.rho) + - (-screened_rates(k_Co58_to_Fe58_weaktab)*Y(Co58) + screened_rates(k_Fe58_to_Co58_weaktab)*Y(Fe58)) + - (-screened_rates(k_Co58_to_Ni58_weaktab)*Y(Co58) + screened_rates(k_Ni58_to_Co58_weaktab)*Y(Ni58)); + (screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(He4)*Y(Mn54)*state.rho + -screened_rates(k_Co58_to_He4_Mn54_reaclib)*Y(Co58)) + + (screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(Fe57)*Y(H1)*state.rho + -screened_rates(k_Co58_to_p_Fe57_reaclib)*Y(Co58)) + + (screened_rates(k_Co57_n_to_Co58_reaclib)*Y(Co57)*Y(N)*state.rho + -screened_rates(k_Co58_to_n_Co57_reaclib)*Y(Co58)) + + (-screened_rates(k_Co58_n_to_Co59_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_Co59_to_n_Co58_reaclib)*Y(Co59)) + + (-screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(Co58)*Y(H1)*state.rho + screened_rates(k_Ni59_to_p_Co58_reaclib)*Y(Ni59)) + + (-screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(Co58)*Y(He4)*state.rho + screened_rates(k_Cu62_to_He4_Co58_reaclib)*Y(Cu62)) + + (-screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(Fe58)*Y(H1)*state.rho) + + (-screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(Co58)*Y(N)*state.rho + screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(He4)*Y(Mn55)*state.rho) + + (-screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(Co58)*Y(H1)*state.rho + screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + + (screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(Co58)*Y(H1)*state.rho) + + (screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(Ni61)*Y(H1)*state.rho + -screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(Co58)*Y(He4)*state.rho) + + (screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(Co58)*Y(He4)*state.rho) + + (-screened_rates(k_Co58_to_Fe58_electron_capture_weaktab)*Y(Co58) + screened_rates(k_Fe58_to_Co58_beta_neg_weaktab)*Y(Fe58)) + + (-screened_rates(k_Co58_to_Ni58_beta_neg_weaktab)*Y(Co58) + screened_rates(k_Ni58_to_Co58_electron_capture_weaktab)*Y(Ni58)); ydot_nuc(Co59) = - (screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(He4)*Y(Mn55)*state.rho + -screened_rates(k_Co59_to_He4_Mn55_reaclib)*Y(Co59)) + - (screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(Fe58)*Y(H1)*state.rho + -screened_rates(k_Co59_to_p_Fe58_reaclib)*Y(Co59)) + - (screened_rates(k_n_Co58_to_Co59_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_Co59_to_n_Co58_reaclib)*Y(Co59)) + - (-screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(Co59)*Y(H1)*state.rho + screened_rates(k_Ni60_to_p_Co59_reaclib)*Y(Ni60)) + - (-screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(Co59)*Y(He4)*state.rho + screened_rates(k_Cu63_to_He4_Co59_reaclib)*Y(Cu63)) + - (-screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(Co59)*Y(H1)*state.rho + screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + - (screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(Co59)*Y(H1)*state.rho) + - (screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(Ni62)*Y(H1)*state.rho + -screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(Co59)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(Co59)*Y(He4)*state.rho) + - (screened_rates(k_Ni59_to_Co59_weaktab)*Y(Ni59) + -screened_rates(k_Co59_to_Ni59_weaktab)*Y(Co59)); + (screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(He4)*Y(Mn55)*state.rho + -screened_rates(k_Co59_to_He4_Mn55_reaclib)*Y(Co59)) + + (screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(Fe58)*Y(H1)*state.rho + -screened_rates(k_Co59_to_p_Fe58_reaclib)*Y(Co59)) + + (screened_rates(k_Co58_n_to_Co59_reaclib)*Y(Co58)*Y(N)*state.rho + -screened_rates(k_Co59_to_n_Co58_reaclib)*Y(Co59)) + + (-screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(Co59)*Y(H1)*state.rho + screened_rates(k_Ni60_to_p_Co59_reaclib)*Y(Ni60)) + + (-screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(Co59)*Y(He4)*state.rho + screened_rates(k_Cu63_to_He4_Co59_reaclib)*Y(Cu63)) + + (-screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(Co59)*Y(H1)*state.rho + screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + + (screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(Co59)*Y(H1)*state.rho) + + (screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(Ni62)*Y(H1)*state.rho + -screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(Co59)*Y(He4)*state.rho) + + (screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(Co59)*Y(He4)*state.rho) + + (screened_rates(k_Ni59_to_Co59_electron_capture_weaktab)*Y(Ni59) + -screened_rates(k_Co59_to_Ni59_beta_neg_weaktab)*Y(Co59)); ydot_nuc(Ni56) = - (screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_reaclib)*Y(Ni56)) + - (screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_reaclib)*Y(Ni56)) + - (-screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_reaclib)*Y(Ni57)) + - (-screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(Ni56)*Y(H1)*state.rho + screened_rates(k_Cu57_to_p_Ni56_reaclib)*Y(Cu57)) + - (-screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_reaclib)*Y(Zn60)) + - (screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(Co53)*Y(He4)*state.rho + -screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(Ni56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(Co56)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(Fe53)*Y(He4)*state.rho) + - (screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + - (screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + - (-screened_rates(k_Ni56_to_Co56_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_weaktab)*Y(Co56)); + (screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*Y(He4)*state.rho + -screened_rates(k_Ni56_to_He4_Fe52_reaclib)*Y(Ni56)) + + (screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*Y(H1)*state.rho + -screened_rates(k_Ni56_to_p_Co55_reaclib)*Y(Ni56)) + + (-screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Ni57_to_n_Ni56_reaclib)*Y(Ni57)) + + (-screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(Ni56)*Y(H1)*state.rho + screened_rates(k_Cu57_to_p_Ni56_reaclib)*Y(Cu57)) + + (-screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_reaclib)*Y(Zn60)) + + (screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(Co53)*Y(He4)*state.rho + -screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(Ni56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(Co56)*Y(H1)*state.rho) + + (-screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*Y(N)*state.rho + screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(Fe53)*Y(He4)*state.rho) + + (screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + + (screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + + (-screened_rates(k_Ni56_to_Co56_electron_capture_weaktab)*Y(Ni56) + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab)*Y(Co56)); ydot_nuc(Ni57) = - (screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_Ni57_to_He4_Fe53_reaclib)*Y(Ni57)) + - (screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + -screened_rates(k_Ni57_to_p_Co56_reaclib)*Y(Ni57)) + - (screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Ni57_to_n_Ni56_reaclib)*Y(Ni57)) + - (-screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_reaclib)*Y(Ni58)) + - (-screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(Ni57)*Y(H1)*state.rho + screened_rates(k_Cu58_to_p_Ni57_reaclib)*Y(Cu58)) + - (-screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(He4)*Y(Ni57)*state.rho + screened_rates(k_Zn61_to_He4_Ni57_reaclib)*Y(Zn61)) + - (screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(Co54)*Y(He4)*state.rho + -screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(Ni57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(Co57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(Ni57)*Y(H1)*state.rho) + - (screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(Cu60)*Y(H1)*state.rho + -screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + - (screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + - (screened_rates(k_Cu57_to_Ni57_weaktab)*Y(Cu57) + -screened_rates(k_Ni57_to_Cu57_weaktab)*Y(Ni57)) + - (-screened_rates(k_Ni57_to_Co57_weaktab)*Y(Ni57) + screened_rates(k_Co57_to_Ni57_weaktab)*Y(Co57)); + (screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*Y(He4)*state.rho + -screened_rates(k_Ni57_to_He4_Fe53_reaclib)*Y(Ni57)) + + (screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*Y(H1)*state.rho + -screened_rates(k_Ni57_to_p_Co56_reaclib)*Y(Ni57)) + + (screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*Y(N)*state.rho + -screened_rates(k_Ni57_to_n_Ni56_reaclib)*Y(Ni57)) + + (-screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Ni58_to_n_Ni57_reaclib)*Y(Ni58)) + + (-screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(Ni57)*Y(H1)*state.rho + screened_rates(k_Cu58_to_p_Ni57_reaclib)*Y(Cu58)) + + (-screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(He4)*Y(Ni57)*state.rho + screened_rates(k_Zn61_to_He4_Ni57_reaclib)*Y(Zn61)) + + (screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(Co54)*Y(He4)*state.rho + -screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(Ni57)*Y(H1)*state.rho) + + (-screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(Co57)*Y(H1)*state.rho) + + (-screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*Y(N)*state.rho + screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(Fe54)*Y(He4)*state.rho) + + (screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(Ni57)*Y(H1)*state.rho) + + (screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(Cu60)*Y(H1)*state.rho + -screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + + (screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + + (screened_rates(k_Cu57_to_Ni57_electron_capture_weaktab)*Y(Cu57) + -screened_rates(k_Ni57_to_Cu57_beta_neg_weaktab)*Y(Ni57)) + + (-screened_rates(k_Ni57_to_Co57_electron_capture_weaktab)*Y(Ni57) + screened_rates(k_Co57_to_Ni57_beta_neg_weaktab)*Y(Co57)); ydot_nuc(Ni58) = - screened_rates(k_Zn59_to_p_Ni58_reaclib)*Y(Zn59) + - (screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_reaclib)*Y(Ni58)) + - (screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_reaclib)*Y(Ni58)) + - (screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Ni58_to_n_Ni57_reaclib)*Y(Ni58)) + - (-screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Ni59_to_n_Ni58_reaclib)*Y(Ni59)) + - (-screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_reaclib)*Y(Cu59)) + - (-screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(He4)*Y(Ni58)*state.rho + screened_rates(k_Zn62_to_He4_Ni58_reaclib)*Y(Zn62)) + - (screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(Ni58)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(Co58)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(Ni58)*Y(H1)*state.rho) + - (screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(Cu61)*Y(H1)*state.rho + -screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + - (screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + - (screened_rates(k_Co58_to_Ni58_weaktab)*Y(Co58) + -screened_rates(k_Ni58_to_Co58_weaktab)*Y(Ni58)) + - (screened_rates(k_Cu58_to_Ni58_weaktab)*Y(Cu58) + -screened_rates(k_Ni58_to_Cu58_weaktab)*Y(Ni58)); + screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib)*Y(Zn59) + + (screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*Y(He4)*state.rho + -screened_rates(k_Ni58_to_He4_Fe54_reaclib)*Y(Ni58)) + + (screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*Y(H1)*state.rho + -screened_rates(k_Ni58_to_p_Co57_reaclib)*Y(Ni58)) + + (screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*Y(N)*state.rho + -screened_rates(k_Ni58_to_n_Ni57_reaclib)*Y(Ni58)) + + (-screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Ni59_to_n_Ni58_reaclib)*Y(Ni59)) + + (-screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_reaclib)*Y(Cu59)) + + (-screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(He4)*Y(Ni58)*state.rho + screened_rates(k_Zn62_to_He4_Ni58_reaclib)*Y(Zn62)) + + (screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(Ni58)*Y(H1)*state.rho) + + (-screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(Co58)*Y(H1)*state.rho) + + (-screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*Y(N)*state.rho + screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(Fe55)*Y(He4)*state.rho) + + (screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(Ni58)*Y(H1)*state.rho) + + (screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(Cu61)*Y(H1)*state.rho + -screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + + (screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + + (screened_rates(k_Co58_to_Ni58_beta_neg_weaktab)*Y(Co58) + -screened_rates(k_Ni58_to_Co58_electron_capture_weaktab)*Y(Ni58)) + + (screened_rates(k_Cu58_to_Ni58_electron_capture_weaktab)*Y(Cu58) + -screened_rates(k_Ni58_to_Cu58_beta_neg_weaktab)*Y(Ni58)); ydot_nuc(Ni59) = - (screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(Fe55)*Y(He4)*state.rho + -screened_rates(k_Ni59_to_He4_Fe55_reaclib)*Y(Ni59)) + - (screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(Co58)*Y(H1)*state.rho + -screened_rates(k_Ni59_to_p_Co58_reaclib)*Y(Ni59)) + - (screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_Ni59_to_n_Ni58_reaclib)*Y(Ni59)) + - (-screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_Ni60_to_n_Ni59_reaclib)*Y(Ni60)) + - (-screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(Ni59)*Y(H1)*state.rho + screened_rates(k_Cu60_to_p_Ni59_reaclib)*Y(Cu60)) + - (-screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(He4)*Y(Ni59)*state.rho + screened_rates(k_Zn63_to_He4_Ni59_reaclib)*Y(Zn63)) + - (screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(Co56)*Y(He4)*state.rho + -screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(Ni59)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(Co59)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(Ni59)*Y(H1)*state.rho) + - (screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(Cu62)*Y(H1)*state.rho + -screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + - (screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + - (screened_rates(k_Cu59_to_Ni59_weaktab)*Y(Cu59) + -screened_rates(k_Ni59_to_Cu59_weaktab)*Y(Ni59)) + - (-screened_rates(k_Ni59_to_Co59_weaktab)*Y(Ni59) + screened_rates(k_Co59_to_Ni59_weaktab)*Y(Co59)); + (screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(Fe55)*Y(He4)*state.rho + -screened_rates(k_Ni59_to_He4_Fe55_reaclib)*Y(Ni59)) + + (screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(Co58)*Y(H1)*state.rho + -screened_rates(k_Ni59_to_p_Co58_reaclib)*Y(Ni59)) + + (screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(Ni58)*Y(N)*state.rho + -screened_rates(k_Ni59_to_n_Ni58_reaclib)*Y(Ni59)) + + (-screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_Ni60_to_n_Ni59_reaclib)*Y(Ni60)) + + (-screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(Ni59)*Y(H1)*state.rho + screened_rates(k_Cu60_to_p_Ni59_reaclib)*Y(Cu60)) + + (-screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(He4)*Y(Ni59)*state.rho + screened_rates(k_Zn63_to_He4_Ni59_reaclib)*Y(Zn63)) + + (screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(Co56)*Y(He4)*state.rho + -screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(Ni59)*Y(H1)*state.rho) + + (-screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(Co59)*Y(H1)*state.rho) + + (-screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(Ni59)*Y(N)*state.rho + screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(Fe56)*Y(He4)*state.rho) + + (screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(Ni59)*Y(H1)*state.rho) + + (screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(Cu62)*Y(H1)*state.rho + -screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + + (screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + + (screened_rates(k_Cu59_to_Ni59_electron_capture_weaktab)*Y(Cu59) + -screened_rates(k_Ni59_to_Cu59_beta_neg_weaktab)*Y(Ni59)) + + (-screened_rates(k_Ni59_to_Co59_electron_capture_weaktab)*Y(Ni59) + screened_rates(k_Co59_to_Ni59_beta_neg_weaktab)*Y(Co59)); ydot_nuc(Ni60) = - (screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(Fe56)*Y(He4)*state.rho + -screened_rates(k_Ni60_to_He4_Fe56_reaclib)*Y(Ni60)) + - (screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(Co59)*Y(H1)*state.rho + -screened_rates(k_Ni60_to_p_Co59_reaclib)*Y(Ni60)) + - (screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_Ni60_to_n_Ni59_reaclib)*Y(Ni60)) + - (-screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(Ni60)*Y(N)*state.rho + screened_rates(k_Ni61_to_n_Ni60_reaclib)*Y(Ni61)) + - (-screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(Ni60)*Y(H1)*state.rho + screened_rates(k_Cu61_to_p_Ni60_reaclib)*Y(Cu61)) + - (-screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(He4)*Y(Ni60)*state.rho + screened_rates(k_Zn64_to_He4_Ni60_reaclib)*Y(Zn64)) + - (screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(Co57)*Y(He4)*state.rho + -screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(Ni60)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(Ni60)*Y(N)*state.rho + screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(Fe57)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(Ni60)*Y(H1)*state.rho) + - (screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(Cu63)*Y(H1)*state.rho + -screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + - (screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + - (screened_rates(k_Cu60_to_Ni60_weaktab)*Y(Cu60) + -screened_rates(k_Ni60_to_Cu60_weaktab)*Y(Ni60)); + (screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(Fe56)*Y(He4)*state.rho + -screened_rates(k_Ni60_to_He4_Fe56_reaclib)*Y(Ni60)) + + (screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(Co59)*Y(H1)*state.rho + -screened_rates(k_Ni60_to_p_Co59_reaclib)*Y(Ni60)) + + (screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(Ni59)*Y(N)*state.rho + -screened_rates(k_Ni60_to_n_Ni59_reaclib)*Y(Ni60)) + + (-screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(Ni60)*Y(N)*state.rho + screened_rates(k_Ni61_to_n_Ni60_reaclib)*Y(Ni61)) + + (-screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(Ni60)*Y(H1)*state.rho + screened_rates(k_Cu61_to_p_Ni60_reaclib)*Y(Cu61)) + + (-screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(He4)*Y(Ni60)*state.rho + screened_rates(k_Zn64_to_He4_Ni60_reaclib)*Y(Zn64)) + + (screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(Co57)*Y(He4)*state.rho + -screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(Ni60)*Y(H1)*state.rho) + + (-screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(Ni60)*Y(N)*state.rho + screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(Fe57)*Y(He4)*state.rho) + + (screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(Ni60)*Y(H1)*state.rho) + + (screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(Cu63)*Y(H1)*state.rho + -screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + + (screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + + (screened_rates(k_Cu60_to_Ni60_electron_capture_weaktab)*Y(Cu60) + -screened_rates(k_Ni60_to_Cu60_beta_neg_weaktab)*Y(Ni60)); ydot_nuc(Ni61) = - (screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(Fe57)*Y(He4)*state.rho + -screened_rates(k_Ni61_to_He4_Fe57_reaclib)*Y(Ni61)) + - (screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(Ni60)*Y(N)*state.rho + -screened_rates(k_Ni61_to_n_Ni60_reaclib)*Y(Ni61)) + - (-screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(Ni61)*Y(N)*state.rho + screened_rates(k_Ni62_to_n_Ni61_reaclib)*Y(Ni62)) + - (-screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(Ni61)*Y(H1)*state.rho + screened_rates(k_Cu62_to_p_Ni61_reaclib)*Y(Cu62)) + - (-screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(He4)*Y(Ni61)*state.rho + screened_rates(k_Zn65_to_He4_Ni61_reaclib)*Y(Zn65)) + - (-screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(Ni61)*Y(N)*state.rho + screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(Fe58)*Y(He4)*state.rho) + - (-screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(Ni61)*Y(H1)*state.rho + screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(Co58)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(Ni61)*Y(H1)*state.rho) + - (screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(Cu64)*Y(H1)*state.rho + -screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + - (screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + - (screened_rates(k_Cu61_to_Ni61_weaktab)*Y(Cu61) + -screened_rates(k_Ni61_to_Cu61_weaktab)*Y(Ni61)); + (screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(Fe57)*Y(He4)*state.rho + -screened_rates(k_Ni61_to_He4_Fe57_reaclib)*Y(Ni61)) + + (screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(Ni60)*Y(N)*state.rho + -screened_rates(k_Ni61_to_n_Ni60_reaclib)*Y(Ni61)) + + (-screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(Ni61)*Y(N)*state.rho + screened_rates(k_Ni62_to_n_Ni61_reaclib)*Y(Ni62)) + + (-screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(Ni61)*Y(H1)*state.rho + screened_rates(k_Cu62_to_p_Ni61_reaclib)*Y(Cu62)) + + (-screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(He4)*Y(Ni61)*state.rho + screened_rates(k_Zn65_to_He4_Ni61_reaclib)*Y(Zn65)) + + (-screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(Ni61)*Y(N)*state.rho + screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(Fe58)*Y(He4)*state.rho) + + (-screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(Ni61)*Y(H1)*state.rho + screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(Co58)*Y(He4)*state.rho) + + (screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(Ni61)*Y(H1)*state.rho) + + (screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(Cu64)*Y(H1)*state.rho + -screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + + (screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + + (screened_rates(k_Cu61_to_Ni61_electron_capture_weaktab)*Y(Cu61) + -screened_rates(k_Ni61_to_Cu61_beta_neg_weaktab)*Y(Ni61)); ydot_nuc(Ni62) = - (screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(Fe58)*Y(He4)*state.rho + -screened_rates(k_Ni62_to_He4_Fe58_reaclib)*Y(Ni62)) + - (screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(Ni61)*Y(N)*state.rho + -screened_rates(k_Ni62_to_n_Ni61_reaclib)*Y(Ni62)) + - (-screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(Ni62)*Y(N)*state.rho + screened_rates(k_Ni63_to_n_Ni62_reaclib)*Y(Ni63)) + - (-screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(Ni62)*Y(H1)*state.rho + screened_rates(k_Cu63_to_p_Ni62_reaclib)*Y(Cu63)) + - (-screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(He4)*Y(Ni62)*state.rho + screened_rates(k_Zn66_to_He4_Ni62_reaclib)*Y(Zn66)) + - (-screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(Ni62)*Y(H1)*state.rho + screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(Co59)*Y(He4)*state.rho) + - (screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(Ni62)*Y(H1)*state.rho) + - (screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(Cu65)*Y(H1)*state.rho + -screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + - (screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + - (screened_rates(k_Cu62_to_Ni62_weaktab)*Y(Cu62) + -screened_rates(k_Ni62_to_Cu62_weaktab)*Y(Ni62)); + (screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(Fe58)*Y(He4)*state.rho + -screened_rates(k_Ni62_to_He4_Fe58_reaclib)*Y(Ni62)) + + (screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(Ni61)*Y(N)*state.rho + -screened_rates(k_Ni62_to_n_Ni61_reaclib)*Y(Ni62)) + + (-screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(Ni62)*Y(N)*state.rho + screened_rates(k_Ni63_to_n_Ni62_reaclib)*Y(Ni63)) + + (-screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(Ni62)*Y(H1)*state.rho + screened_rates(k_Cu63_to_p_Ni62_reaclib)*Y(Cu63)) + + (-screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(He4)*Y(Ni62)*state.rho + screened_rates(k_Zn66_to_He4_Ni62_reaclib)*Y(Zn66)) + + (-screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(Ni62)*Y(H1)*state.rho + screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(Co59)*Y(He4)*state.rho) + + (screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(Ni62)*Y(H1)*state.rho) + + (screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(Cu65)*Y(H1)*state.rho + -screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + + (screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + + (screened_rates(k_Cu62_to_Ni62_electron_capture_weaktab)*Y(Cu62) + -screened_rates(k_Ni62_to_Cu62_beta_neg_weaktab)*Y(Ni62)); ydot_nuc(Ni63) = - (screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(Ni62)*Y(N)*state.rho + -screened_rates(k_Ni63_to_n_Ni62_reaclib)*Y(Ni63)) + - (-screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(Ni63)*Y(N)*state.rho + screened_rates(k_Ni64_to_n_Ni63_reaclib)*Y(Ni64)) + - (-screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(Ni63)*Y(H1)*state.rho + screened_rates(k_Cu64_to_p_Ni63_reaclib)*Y(Cu64)) + - (screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(Cu63)*Y(N)*state.rho + -screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(Ni63)*Y(H1)*state.rho) + - (screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(Zn66)*Y(N)*state.rho + -screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(He4)*Y(Ni63)*state.rho) + - (-screened_rates(k_Ni63_to_Cu63_weaktab)*Y(Ni63) + screened_rates(k_Cu63_to_Ni63_weaktab)*Y(Cu63)); + (screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(Ni62)*Y(N)*state.rho + -screened_rates(k_Ni63_to_n_Ni62_reaclib)*Y(Ni63)) + + (-screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(Ni63)*Y(N)*state.rho + screened_rates(k_Ni64_to_n_Ni63_reaclib)*Y(Ni64)) + + (-screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(Ni63)*Y(H1)*state.rho + screened_rates(k_Cu64_to_p_Ni63_reaclib)*Y(Cu64)) + + (screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(Cu63)*Y(N)*state.rho + -screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(Ni63)*Y(H1)*state.rho) + + (screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(Zn66)*Y(N)*state.rho + -screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(He4)*Y(Ni63)*state.rho) + + (-screened_rates(k_Ni63_to_Cu63_beta_neg_weaktab)*Y(Ni63) + screened_rates(k_Cu63_to_Ni63_electron_capture_weaktab)*Y(Cu63)); ydot_nuc(Ni64) = - (screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(Ni63)*Y(N)*state.rho + -screened_rates(k_Ni64_to_n_Ni63_reaclib)*Y(Ni64)) + - (-screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(Ni64)*Y(H1)*state.rho + screened_rates(k_Cu65_to_p_Ni64_reaclib)*Y(Cu65)) + - (screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(Cu64)*Y(N)*state.rho + -screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(Ni64)*Y(H1)*state.rho) + - (screened_rates(k_Cu64_to_Ni64_weaktab)*Y(Cu64) + -screened_rates(k_Ni64_to_Cu64_weaktab)*Y(Ni64)); + (screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(Ni63)*Y(N)*state.rho + -screened_rates(k_Ni64_to_n_Ni63_reaclib)*Y(Ni64)) + + (-screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(Ni64)*Y(H1)*state.rho + screened_rates(k_Cu65_to_p_Ni64_reaclib)*Y(Cu65)) + + (screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(Cu64)*Y(N)*state.rho + -screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(Ni64)*Y(H1)*state.rho) + + (screened_rates(k_Cu64_to_Ni64_electron_capture_weaktab)*Y(Cu64) + -screened_rates(k_Ni64_to_Cu64_beta_neg_weaktab)*Y(Ni64)); ydot_nuc(Cu57) = - (screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(Co53)*Y(He4)*state.rho + -screened_rates(k_Cu57_to_He4_Co53_reaclib)*Y(Cu57)) + - (screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(Ni56)*Y(H1)*state.rho + -screened_rates(k_Cu57_to_p_Ni56_reaclib)*Y(Cu57)) + - (-screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_Cu58_to_n_Cu57_reaclib)*Y(Cu58)) + - (-screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(Ni57)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(Co54)*Y(He4)*state.rho) + - (-screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(Cu57)*Y(He4)*state.rho + screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(Zn60)*Y(H1)*state.rho) + - (-screened_rates(k_Cu57_to_Ni57_weaktab)*Y(Cu57) + screened_rates(k_Ni57_to_Cu57_weaktab)*Y(Ni57)); + (screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(Co53)*Y(He4)*state.rho + -screened_rates(k_Cu57_to_He4_Co53_reaclib)*Y(Cu57)) + + (screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(Ni56)*Y(H1)*state.rho + -screened_rates(k_Cu57_to_p_Ni56_reaclib)*Y(Cu57)) + + (-screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_Cu58_to_n_Cu57_reaclib)*Y(Cu58)) + + (-screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(Ni57)*Y(H1)*state.rho) + + (-screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(Cu57)*Y(N)*state.rho + screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(Co54)*Y(He4)*state.rho) + + (-screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(Cu57)*Y(He4)*state.rho + screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(Zn60)*Y(H1)*state.rho) + + (-screened_rates(k_Cu57_to_Ni57_electron_capture_weaktab)*Y(Cu57) + screened_rates(k_Ni57_to_Cu57_beta_neg_weaktab)*Y(Ni57)); ydot_nuc(Cu58) = - (screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(Co54)*Y(He4)*state.rho + -screened_rates(k_Cu58_to_He4_Co54_reaclib)*Y(Cu58)) + - (screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(Ni57)*Y(H1)*state.rho + -screened_rates(k_Cu58_to_p_Ni57_reaclib)*Y(Cu58)) + - (screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_Cu58_to_n_Cu57_reaclib)*Y(Cu58)) + - (-screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_Cu59_to_n_Cu58_reaclib)*Y(Cu59)) + - (-screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(Cu58)*Y(H1)*state.rho + screened_rates(k_Zn59_to_p_Cu58_reaclib)*Y(Zn59)) + - (-screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(Cu58)*Y(He4)*state.rho + screened_rates(k_Ga62_to_He4_Cu58_reaclib)*Y(Ga62)) + - (-screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(Ni58)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(Co55)*Y(He4)*state.rho) + - (screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(Zn61)*Y(H1)*state.rho + -screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(Cu58)*Y(He4)*state.rho) + - (-screened_rates(k_Cu58_to_Ni58_weaktab)*Y(Cu58) + screened_rates(k_Ni58_to_Cu58_weaktab)*Y(Ni58)); + (screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(Co54)*Y(He4)*state.rho + -screened_rates(k_Cu58_to_He4_Co54_reaclib)*Y(Cu58)) + + (screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(Ni57)*Y(H1)*state.rho + -screened_rates(k_Cu58_to_p_Ni57_reaclib)*Y(Cu58)) + + (screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(Cu57)*Y(N)*state.rho + -screened_rates(k_Cu58_to_n_Cu57_reaclib)*Y(Cu58)) + + (-screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_Cu59_to_n_Cu58_reaclib)*Y(Cu59)) + + (-screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(Cu58)*Y(H1)*state.rho + screened_rates(k_Zn59_to_p_Cu58_reaclib)*Y(Zn59)) + + (-screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(Cu58)*Y(He4)*state.rho + screened_rates(k_Ga62_to_He4_Cu58_reaclib)*Y(Ga62)) + + (-screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(Ni58)*Y(H1)*state.rho) + + (-screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(Cu58)*Y(N)*state.rho + screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(Co55)*Y(He4)*state.rho) + + (screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(Zn61)*Y(H1)*state.rho + -screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(Cu58)*Y(He4)*state.rho) + + (-screened_rates(k_Cu58_to_Ni58_electron_capture_weaktab)*Y(Cu58) + screened_rates(k_Ni58_to_Cu58_beta_neg_weaktab)*Y(Ni58)); ydot_nuc(Cu59) = - screened_rates(k_Zn59_to_Cu59_reaclib)*Y(Zn59) + - (screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Cu59_to_He4_Co55_reaclib)*Y(Cu59)) + - (screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + -screened_rates(k_Cu59_to_p_Ni58_reaclib)*Y(Cu59)) + - (screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_Cu59_to_n_Cu58_reaclib)*Y(Cu59)) + - (-screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Cu60_to_n_Cu59_reaclib)*Y(Cu60)) + - (-screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_reaclib)*Y(Zn60)) + - (-screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(Cu59)*Y(He4)*state.rho + screened_rates(k_Ga63_to_He4_Cu59_reaclib)*Y(Ga63)) + - (-screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(Ni59)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(Co56)*Y(He4)*state.rho) + - (-screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + - (screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(Cu59)*Y(H1)*state.rho) + - (screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(Zn62)*Y(H1)*state.rho + -screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + - (screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + - (-screened_rates(k_Cu59_to_Ni59_weaktab)*Y(Cu59) + screened_rates(k_Ni59_to_Cu59_weaktab)*Y(Ni59)); + screened_rates(k_Zn59_to_Cu59_beta_pos_reaclib)*Y(Zn59) + + (screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*Y(He4)*state.rho + -screened_rates(k_Cu59_to_He4_Co55_reaclib)*Y(Cu59)) + + (screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*Y(H1)*state.rho + -screened_rates(k_Cu59_to_p_Ni58_reaclib)*Y(Cu59)) + + (screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(Cu58)*Y(N)*state.rho + -screened_rates(k_Cu59_to_n_Cu58_reaclib)*Y(Cu59)) + + (-screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Cu60_to_n_Cu59_reaclib)*Y(Cu60)) + + (-screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_reaclib)*Y(Zn60)) + + (-screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(Cu59)*Y(He4)*state.rho + screened_rates(k_Ga63_to_He4_Cu59_reaclib)*Y(Ga63)) + + (-screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(Ni59)*Y(H1)*state.rho) + + (-screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*Y(N)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(Co56)*Y(He4)*state.rho) + + (-screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*Y(H1)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + + (screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(Cu59)*Y(H1)*state.rho) + + (screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(Zn62)*Y(H1)*state.rho + -screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + + (screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + + (-screened_rates(k_Cu59_to_Ni59_electron_capture_weaktab)*Y(Cu59) + screened_rates(k_Ni59_to_Cu59_beta_neg_weaktab)*Y(Ni59)); ydot_nuc(Cu60) = - (screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(Co56)*Y(He4)*state.rho + -screened_rates(k_Cu60_to_He4_Co56_reaclib)*Y(Cu60)) + - (screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(Ni59)*Y(H1)*state.rho + -screened_rates(k_Cu60_to_p_Ni59_reaclib)*Y(Cu60)) + - (screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Cu60_to_n_Cu59_reaclib)*Y(Cu60)) + - (-screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_Cu61_to_n_Cu60_reaclib)*Y(Cu61)) + - (-screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(Cu60)*Y(H1)*state.rho + screened_rates(k_Zn61_to_p_Cu60_reaclib)*Y(Zn61)) + - (-screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(Cu60)*Y(He4)*state.rho + screened_rates(k_Ga64_to_He4_Cu60_reaclib)*Y(Ga64)) + - (-screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(Ni60)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(Co57)*Y(He4)*state.rho) + - (-screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(Cu60)*Y(H1)*state.rho + screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + - (screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(Cu60)*Y(H1)*state.rho) + - (screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(Zn63)*Y(H1)*state.rho + -screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + - (screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + - (-screened_rates(k_Cu60_to_Ni60_weaktab)*Y(Cu60) + screened_rates(k_Ni60_to_Cu60_weaktab)*Y(Ni60)) + - (screened_rates(k_Zn60_to_Cu60_weaktab)*Y(Zn60) + -screened_rates(k_Cu60_to_Zn60_weaktab)*Y(Cu60)); + (screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(Co56)*Y(He4)*state.rho + -screened_rates(k_Cu60_to_He4_Co56_reaclib)*Y(Cu60)) + + (screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(Ni59)*Y(H1)*state.rho + -screened_rates(k_Cu60_to_p_Ni59_reaclib)*Y(Cu60)) + + (screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(Cu59)*Y(N)*state.rho + -screened_rates(k_Cu60_to_n_Cu59_reaclib)*Y(Cu60)) + + (-screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_Cu61_to_n_Cu60_reaclib)*Y(Cu61)) + + (-screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(Cu60)*Y(H1)*state.rho + screened_rates(k_Zn61_to_p_Cu60_reaclib)*Y(Zn61)) + + (-screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(Cu60)*Y(He4)*state.rho + screened_rates(k_Ga64_to_He4_Cu60_reaclib)*Y(Ga64)) + + (-screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(Ni60)*Y(H1)*state.rho) + + (-screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(Cu60)*Y(N)*state.rho + screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(Co57)*Y(He4)*state.rho) + + (-screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(Cu60)*Y(H1)*state.rho + screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + + (screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(Cu60)*Y(H1)*state.rho) + + (screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(Zn63)*Y(H1)*state.rho + -screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + + (screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + + (-screened_rates(k_Cu60_to_Ni60_electron_capture_weaktab)*Y(Cu60) + screened_rates(k_Ni60_to_Cu60_beta_neg_weaktab)*Y(Ni60)) + + (screened_rates(k_Zn60_to_Cu60_electron_capture_weaktab)*Y(Zn60) + -screened_rates(k_Cu60_to_Zn60_beta_neg_weaktab)*Y(Cu60)); ydot_nuc(Cu61) = - (screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(Co57)*Y(He4)*state.rho + -screened_rates(k_Cu61_to_He4_Co57_reaclib)*Y(Cu61)) + - (screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(Ni60)*Y(H1)*state.rho + -screened_rates(k_Cu61_to_p_Ni60_reaclib)*Y(Cu61)) + - (screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_Cu61_to_n_Cu60_reaclib)*Y(Cu61)) + - (-screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_Cu62_to_n_Cu61_reaclib)*Y(Cu62)) + - (-screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(Cu61)*Y(H1)*state.rho + screened_rates(k_Zn62_to_p_Cu61_reaclib)*Y(Zn62)) + - (-screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(Ni61)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(Co58)*Y(He4)*state.rho) + - (-screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(Cu61)*Y(H1)*state.rho + screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + - (screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(Cu61)*Y(H1)*state.rho) + - (screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(Zn64)*Y(H1)*state.rho + -screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + - (screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(Ga64)*Y(N)*state.rho + -screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + - (-screened_rates(k_Cu61_to_Ni61_weaktab)*Y(Cu61) + screened_rates(k_Ni61_to_Cu61_weaktab)*Y(Ni61)) + - (screened_rates(k_Zn61_to_Cu61_weaktab)*Y(Zn61) + -screened_rates(k_Cu61_to_Zn61_weaktab)*Y(Cu61)); + (screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(Co57)*Y(He4)*state.rho + -screened_rates(k_Cu61_to_He4_Co57_reaclib)*Y(Cu61)) + + (screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(Ni60)*Y(H1)*state.rho + -screened_rates(k_Cu61_to_p_Ni60_reaclib)*Y(Cu61)) + + (screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(Cu60)*Y(N)*state.rho + -screened_rates(k_Cu61_to_n_Cu60_reaclib)*Y(Cu61)) + + (-screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_Cu62_to_n_Cu61_reaclib)*Y(Cu62)) + + (-screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(Cu61)*Y(H1)*state.rho + screened_rates(k_Zn62_to_p_Cu61_reaclib)*Y(Zn62)) + + (-screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(Ni61)*Y(H1)*state.rho) + + (-screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(Cu61)*Y(N)*state.rho + screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(Co58)*Y(He4)*state.rho) + + (-screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(Cu61)*Y(H1)*state.rho + screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + + (screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(Cu61)*Y(H1)*state.rho) + + (screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(Zn64)*Y(H1)*state.rho + -screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + + (screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(Ga64)*Y(N)*state.rho + -screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + + (-screened_rates(k_Cu61_to_Ni61_electron_capture_weaktab)*Y(Cu61) + screened_rates(k_Ni61_to_Cu61_beta_neg_weaktab)*Y(Ni61)) + + (screened_rates(k_Zn61_to_Cu61_electron_capture_weaktab)*Y(Zn61) + -screened_rates(k_Cu61_to_Zn61_beta_neg_weaktab)*Y(Cu61)); ydot_nuc(Cu62) = - (screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(Co58)*Y(He4)*state.rho + -screened_rates(k_Cu62_to_He4_Co58_reaclib)*Y(Cu62)) + - (screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(Ni61)*Y(H1)*state.rho + -screened_rates(k_Cu62_to_p_Ni61_reaclib)*Y(Cu62)) + - (screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_Cu62_to_n_Cu61_reaclib)*Y(Cu62)) + - (-screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_Cu63_to_n_Cu62_reaclib)*Y(Cu63)) + - (-screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(Cu62)*Y(H1)*state.rho + screened_rates(k_Zn63_to_p_Cu62_reaclib)*Y(Zn63)) + - (-screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(Ni62)*Y(H1)*state.rho) + - (-screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(Co59)*Y(He4)*state.rho) + - (-screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(Cu62)*Y(H1)*state.rho + screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + - (screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(Cu62)*Y(H1)*state.rho) + - (screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(Zn65)*Y(H1)*state.rho + -screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(Cu62)*Y(He4)*state.rho) + - (-screened_rates(k_Cu62_to_Ni62_weaktab)*Y(Cu62) + screened_rates(k_Ni62_to_Cu62_weaktab)*Y(Ni62)) + - (screened_rates(k_Zn62_to_Cu62_weaktab)*Y(Zn62) + -screened_rates(k_Cu62_to_Zn62_weaktab)*Y(Cu62)); + (screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(Co58)*Y(He4)*state.rho + -screened_rates(k_Cu62_to_He4_Co58_reaclib)*Y(Cu62)) + + (screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(Ni61)*Y(H1)*state.rho + -screened_rates(k_Cu62_to_p_Ni61_reaclib)*Y(Cu62)) + + (screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(Cu61)*Y(N)*state.rho + -screened_rates(k_Cu62_to_n_Cu61_reaclib)*Y(Cu62)) + + (-screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_Cu63_to_n_Cu62_reaclib)*Y(Cu63)) + + (-screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(Cu62)*Y(H1)*state.rho + screened_rates(k_Zn63_to_p_Cu62_reaclib)*Y(Zn63)) + + (-screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(Ni62)*Y(H1)*state.rho) + + (-screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(Cu62)*Y(N)*state.rho + screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(Co59)*Y(He4)*state.rho) + + (-screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(Cu62)*Y(H1)*state.rho + screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + + (screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(Cu62)*Y(H1)*state.rho) + + (screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(Zn65)*Y(H1)*state.rho + -screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(Cu62)*Y(He4)*state.rho) + + (-screened_rates(k_Cu62_to_Ni62_electron_capture_weaktab)*Y(Cu62) + screened_rates(k_Ni62_to_Cu62_beta_neg_weaktab)*Y(Ni62)) + + (screened_rates(k_Zn62_to_Cu62_electron_capture_weaktab)*Y(Zn62) + -screened_rates(k_Cu62_to_Zn62_beta_neg_weaktab)*Y(Cu62)); ydot_nuc(Cu63) = - (screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(Co59)*Y(He4)*state.rho + -screened_rates(k_Cu63_to_He4_Co59_reaclib)*Y(Cu63)) + - (screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(Ni62)*Y(H1)*state.rho + -screened_rates(k_Cu63_to_p_Ni62_reaclib)*Y(Cu63)) + - (screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_Cu63_to_n_Cu62_reaclib)*Y(Cu63)) + - (-screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(Cu63)*Y(N)*state.rho + screened_rates(k_Cu64_to_n_Cu63_reaclib)*Y(Cu64)) + - (-screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(Cu63)*Y(H1)*state.rho + screened_rates(k_Zn64_to_p_Cu63_reaclib)*Y(Zn64)) + - (-screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(Cu63)*Y(N)*state.rho + screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(Ni63)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(Cu63)*Y(H1)*state.rho + screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + - (screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(Cu63)*Y(H1)*state.rho) + - (screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(Zn66)*Y(H1)*state.rho + -screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(Cu63)*Y(He4)*state.rho) + - (screened_rates(k_Ni63_to_Cu63_weaktab)*Y(Ni63) + -screened_rates(k_Cu63_to_Ni63_weaktab)*Y(Cu63)) + - (screened_rates(k_Zn63_to_Cu63_weaktab)*Y(Zn63) + -screened_rates(k_Cu63_to_Zn63_weaktab)*Y(Cu63)); + (screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(Co59)*Y(He4)*state.rho + -screened_rates(k_Cu63_to_He4_Co59_reaclib)*Y(Cu63)) + + (screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(Ni62)*Y(H1)*state.rho + -screened_rates(k_Cu63_to_p_Ni62_reaclib)*Y(Cu63)) + + (screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(Cu62)*Y(N)*state.rho + -screened_rates(k_Cu63_to_n_Cu62_reaclib)*Y(Cu63)) + + (-screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(Cu63)*Y(N)*state.rho + screened_rates(k_Cu64_to_n_Cu63_reaclib)*Y(Cu64)) + + (-screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(Cu63)*Y(H1)*state.rho + screened_rates(k_Zn64_to_p_Cu63_reaclib)*Y(Zn64)) + + (-screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(Cu63)*Y(N)*state.rho + screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(Ni63)*Y(H1)*state.rho) + + (-screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(Cu63)*Y(H1)*state.rho + screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + + (screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(Cu63)*Y(H1)*state.rho) + + (screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(Zn66)*Y(H1)*state.rho + -screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(Cu63)*Y(He4)*state.rho) + + (screened_rates(k_Ni63_to_Cu63_beta_neg_weaktab)*Y(Ni63) + -screened_rates(k_Cu63_to_Ni63_electron_capture_weaktab)*Y(Cu63)) + + (screened_rates(k_Zn63_to_Cu63_electron_capture_weaktab)*Y(Zn63) + -screened_rates(k_Cu63_to_Zn63_beta_neg_weaktab)*Y(Cu63)); ydot_nuc(Cu64) = - (screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(Ni63)*Y(H1)*state.rho + -screened_rates(k_Cu64_to_p_Ni63_reaclib)*Y(Cu64)) + - (screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(Cu63)*Y(N)*state.rho + -screened_rates(k_Cu64_to_n_Cu63_reaclib)*Y(Cu64)) + - (-screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(Cu64)*Y(N)*state.rho + screened_rates(k_Cu65_to_n_Cu64_reaclib)*Y(Cu65)) + - (-screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(Cu64)*Y(H1)*state.rho + screened_rates(k_Zn65_to_p_Cu64_reaclib)*Y(Zn65)) + - (-screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(Cu64)*Y(N)*state.rho + screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(Ni64)*Y(H1)*state.rho) + - (-screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(Cu64)*Y(H1)*state.rho + screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + - (screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(Cu64)*Y(H1)*state.rho) + - (-screened_rates(k_Cu64_to_Ni64_weaktab)*Y(Cu64) + screened_rates(k_Ni64_to_Cu64_weaktab)*Y(Ni64)) + - (-screened_rates(k_Cu64_to_Zn64_weaktab)*Y(Cu64) + screened_rates(k_Zn64_to_Cu64_weaktab)*Y(Zn64)); + (screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(Ni63)*Y(H1)*state.rho + -screened_rates(k_Cu64_to_p_Ni63_reaclib)*Y(Cu64)) + + (screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(Cu63)*Y(N)*state.rho + -screened_rates(k_Cu64_to_n_Cu63_reaclib)*Y(Cu64)) + + (-screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(Cu64)*Y(N)*state.rho + screened_rates(k_Cu65_to_n_Cu64_reaclib)*Y(Cu65)) + + (-screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(Cu64)*Y(H1)*state.rho + screened_rates(k_Zn65_to_p_Cu64_reaclib)*Y(Zn65)) + + (-screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(Cu64)*Y(N)*state.rho + screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(Ni64)*Y(H1)*state.rho) + + (-screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(Cu64)*Y(H1)*state.rho + screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + + (screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(Cu64)*Y(H1)*state.rho) + + (-screened_rates(k_Cu64_to_Ni64_electron_capture_weaktab)*Y(Cu64) + screened_rates(k_Ni64_to_Cu64_beta_neg_weaktab)*Y(Ni64)) + + (-screened_rates(k_Cu64_to_Zn64_beta_neg_weaktab)*Y(Cu64) + screened_rates(k_Zn64_to_Cu64_electron_capture_weaktab)*Y(Zn64)); ydot_nuc(Cu65) = - (screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(Ni64)*Y(H1)*state.rho + -screened_rates(k_Cu65_to_p_Ni64_reaclib)*Y(Cu65)) + - (screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(Cu64)*Y(N)*state.rho + -screened_rates(k_Cu65_to_n_Cu64_reaclib)*Y(Cu65)) + - (-screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(Cu65)*Y(H1)*state.rho + screened_rates(k_Zn66_to_p_Cu65_reaclib)*Y(Zn66)) + - (-screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(Cu65)*Y(H1)*state.rho + screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + - (screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(Cu65)*Y(H1)*state.rho) + - (screened_rates(k_Zn65_to_Cu65_weaktab)*Y(Zn65) + -screened_rates(k_Cu65_to_Zn65_weaktab)*Y(Cu65)); + (screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(Ni64)*Y(H1)*state.rho + -screened_rates(k_Cu65_to_p_Ni64_reaclib)*Y(Cu65)) + + (screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(Cu64)*Y(N)*state.rho + -screened_rates(k_Cu65_to_n_Cu64_reaclib)*Y(Cu65)) + + (-screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(Cu65)*Y(H1)*state.rho + screened_rates(k_Zn66_to_p_Cu65_reaclib)*Y(Zn66)) + + (-screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(Cu65)*Y(H1)*state.rho + screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + + (screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(Cu65)*Y(H1)*state.rho) + + (screened_rates(k_Zn65_to_Cu65_electron_capture_weaktab)*Y(Zn65) + -screened_rates(k_Cu65_to_Zn65_beta_neg_weaktab)*Y(Cu65)); ydot_nuc(Zn59) = - -screened_rates(k_Zn59_to_Cu59_reaclib)*Y(Zn59) + - -screened_rates(k_Zn59_to_p_Ni58_reaclib)*Y(Zn59) + - (screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(Cu58)*Y(H1)*state.rho + -screened_rates(k_Zn59_to_p_Cu58_reaclib)*Y(Zn59)) + - (-screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_Zn60_to_n_Zn59_reaclib)*Y(Zn60)) + - (-screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(He4)*Y(Zn59)*state.rho + screened_rates(k_Ge63_to_He4_Zn59_reaclib)*Y(Ge63)) + - (-screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(Cu59)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + - (screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(Ga62)*Y(H1)*state.rho + -screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(He4)*Y(Zn59)*state.rho); + -screened_rates(k_Zn59_to_Cu59_beta_pos_reaclib)*Y(Zn59) + + -screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib)*Y(Zn59) + + (screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(Cu58)*Y(H1)*state.rho + -screened_rates(k_Zn59_to_p_Cu58_reaclib)*Y(Zn59)) + + (-screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_Zn60_to_n_Zn59_reaclib)*Y(Zn60)) + + (-screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(He4)*Y(Zn59)*state.rho + screened_rates(k_Ge63_to_He4_Zn59_reaclib)*Y(Ge63)) + + (-screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(Cu59)*Y(H1)*state.rho) + + (-screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(Zn59)*Y(N)*state.rho + screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(He4)*Y(Ni56)*state.rho) + + (screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(Ga62)*Y(H1)*state.rho + -screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(He4)*Y(Zn59)*state.rho); ydot_nuc(Zn60) = - (screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + -screened_rates(k_Zn60_to_He4_Ni56_reaclib)*Y(Zn60)) + - (screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Zn60_to_p_Cu59_reaclib)*Y(Zn60)) + - (screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_Zn60_to_n_Zn59_reaclib)*Y(Zn60)) + - (-screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Zn61_to_n_Zn60_reaclib)*Y(Zn61)) + - (-screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(He4)*Y(Zn60)*state.rho + screened_rates(k_Ge64_to_He4_Zn60_reaclib)*Y(Ge64)) + - (screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(Cu57)*Y(He4)*state.rho + -screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(Zn60)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(Cu60)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + - (screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(Ga63)*Y(H1)*state.rho + -screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + - (screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + - (-screened_rates(k_Zn60_to_Cu60_weaktab)*Y(Zn60) + screened_rates(k_Cu60_to_Zn60_weaktab)*Y(Cu60)); + (screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*Y(Ni56)*state.rho + -screened_rates(k_Zn60_to_He4_Ni56_reaclib)*Y(Zn60)) + + (screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*Y(H1)*state.rho + -screened_rates(k_Zn60_to_p_Cu59_reaclib)*Y(Zn60)) + + (screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(Zn59)*Y(N)*state.rho + -screened_rates(k_Zn60_to_n_Zn59_reaclib)*Y(Zn60)) + + (-screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Zn61_to_n_Zn60_reaclib)*Y(Zn61)) + + (-screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(He4)*Y(Zn60)*state.rho + screened_rates(k_Ge64_to_He4_Zn60_reaclib)*Y(Ge64)) + + (screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(Cu57)*Y(He4)*state.rho + -screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(Zn60)*Y(H1)*state.rho) + + (-screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(Cu60)*Y(H1)*state.rho) + + (-screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*Y(N)*state.rho + screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(He4)*Y(Ni57)*state.rho) + + (screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(Ga63)*Y(H1)*state.rho + -screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + + (screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + + (-screened_rates(k_Zn60_to_Cu60_electron_capture_weaktab)*Y(Zn60) + screened_rates(k_Cu60_to_Zn60_beta_neg_weaktab)*Y(Cu60)); ydot_nuc(Zn61) = - (screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(He4)*Y(Ni57)*state.rho + -screened_rates(k_Zn61_to_He4_Ni57_reaclib)*Y(Zn61)) + - (screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(Cu60)*Y(H1)*state.rho + -screened_rates(k_Zn61_to_p_Cu60_reaclib)*Y(Zn61)) + - (screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_Zn61_to_n_Zn60_reaclib)*Y(Zn61)) + - (-screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_Zn62_to_n_Zn61_reaclib)*Y(Zn62)) + - (-screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(Zn61)*Y(H1)*state.rho + screened_rates(k_Ga62_to_p_Zn61_reaclib)*Y(Ga62)) + - (-screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(Cu61)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + - (-screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(Zn61)*Y(H1)*state.rho + screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(Cu58)*Y(He4)*state.rho) + - (screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(Ga64)*Y(H1)*state.rho + -screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + - (screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(Ge64)*Y(N)*state.rho + -screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + - (-screened_rates(k_Zn61_to_Cu61_weaktab)*Y(Zn61) + screened_rates(k_Cu61_to_Zn61_weaktab)*Y(Cu61)); + (screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(He4)*Y(Ni57)*state.rho + -screened_rates(k_Zn61_to_He4_Ni57_reaclib)*Y(Zn61)) + + (screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(Cu60)*Y(H1)*state.rho + -screened_rates(k_Zn61_to_p_Cu60_reaclib)*Y(Zn61)) + + (screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(Zn60)*Y(N)*state.rho + -screened_rates(k_Zn61_to_n_Zn60_reaclib)*Y(Zn61)) + + (-screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_Zn62_to_n_Zn61_reaclib)*Y(Zn62)) + + (-screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(Zn61)*Y(H1)*state.rho + screened_rates(k_Ga62_to_p_Zn61_reaclib)*Y(Ga62)) + + (-screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(Cu61)*Y(H1)*state.rho) + + (-screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(Zn61)*Y(N)*state.rho + screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(He4)*Y(Ni58)*state.rho) + + (-screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(Zn61)*Y(H1)*state.rho + screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(Cu58)*Y(He4)*state.rho) + + (screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(Ga64)*Y(H1)*state.rho + -screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + + (screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(Ge64)*Y(N)*state.rho + -screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + + (-screened_rates(k_Zn61_to_Cu61_electron_capture_weaktab)*Y(Zn61) + screened_rates(k_Cu61_to_Zn61_beta_neg_weaktab)*Y(Cu61)); ydot_nuc(Zn62) = - (screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(He4)*Y(Ni58)*state.rho + -screened_rates(k_Zn62_to_He4_Ni58_reaclib)*Y(Zn62)) + - (screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(Cu61)*Y(H1)*state.rho + -screened_rates(k_Zn62_to_p_Cu61_reaclib)*Y(Zn62)) + - (screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_Zn62_to_n_Zn61_reaclib)*Y(Zn62)) + - (-screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_Zn63_to_n_Zn62_reaclib)*Y(Zn63)) + - (-screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(Zn62)*Y(H1)*state.rho + screened_rates(k_Ga63_to_p_Zn62_reaclib)*Y(Ga63)) + - (-screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(Cu62)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + - (-screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(Zn62)*Y(H1)*state.rho + screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + - (screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(Zn62)*Y(H1)*state.rho) + - (screened_rates(k_Ga62_to_Zn62_weaktab)*Y(Ga62) + -screened_rates(k_Zn62_to_Ga62_weaktab)*Y(Zn62)) + - (-screened_rates(k_Zn62_to_Cu62_weaktab)*Y(Zn62) + screened_rates(k_Cu62_to_Zn62_weaktab)*Y(Cu62)); + (screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(He4)*Y(Ni58)*state.rho + -screened_rates(k_Zn62_to_He4_Ni58_reaclib)*Y(Zn62)) + + (screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(Cu61)*Y(H1)*state.rho + -screened_rates(k_Zn62_to_p_Cu61_reaclib)*Y(Zn62)) + + (screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(Zn61)*Y(N)*state.rho + -screened_rates(k_Zn62_to_n_Zn61_reaclib)*Y(Zn62)) + + (-screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_Zn63_to_n_Zn62_reaclib)*Y(Zn63)) + + (-screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(Zn62)*Y(H1)*state.rho + screened_rates(k_Ga63_to_p_Zn62_reaclib)*Y(Ga63)) + + (-screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(Cu62)*Y(H1)*state.rho) + + (-screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(Zn62)*Y(N)*state.rho + screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(He4)*Y(Ni59)*state.rho) + + (-screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(Zn62)*Y(H1)*state.rho + screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + + (screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(Zn62)*Y(H1)*state.rho) + + (screened_rates(k_Ga62_to_Zn62_electron_capture_weaktab)*Y(Ga62) + -screened_rates(k_Zn62_to_Ga62_beta_neg_weaktab)*Y(Zn62)) + + (-screened_rates(k_Zn62_to_Cu62_electron_capture_weaktab)*Y(Zn62) + screened_rates(k_Cu62_to_Zn62_beta_neg_weaktab)*Y(Cu62)); ydot_nuc(Zn63) = - (screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(He4)*Y(Ni59)*state.rho + -screened_rates(k_Zn63_to_He4_Ni59_reaclib)*Y(Zn63)) + - (screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(Cu62)*Y(H1)*state.rho + -screened_rates(k_Zn63_to_p_Cu62_reaclib)*Y(Zn63)) + - (screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_Zn63_to_n_Zn62_reaclib)*Y(Zn63)) + - (-screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_Zn64_to_n_Zn63_reaclib)*Y(Zn64)) + - (-screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(Zn63)*Y(H1)*state.rho + screened_rates(k_Ga64_to_p_Zn63_reaclib)*Y(Ga64)) + - (-screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(Cu63)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + - (-screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(Zn63)*Y(H1)*state.rho + screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + - (screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(Zn63)*Y(H1)*state.rho) + - (screened_rates(k_Ga63_to_Zn63_weaktab)*Y(Ga63) + -screened_rates(k_Zn63_to_Ga63_weaktab)*Y(Zn63)) + - (-screened_rates(k_Zn63_to_Cu63_weaktab)*Y(Zn63) + screened_rates(k_Cu63_to_Zn63_weaktab)*Y(Cu63)); + (screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(He4)*Y(Ni59)*state.rho + -screened_rates(k_Zn63_to_He4_Ni59_reaclib)*Y(Zn63)) + + (screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(Cu62)*Y(H1)*state.rho + -screened_rates(k_Zn63_to_p_Cu62_reaclib)*Y(Zn63)) + + (screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(Zn62)*Y(N)*state.rho + -screened_rates(k_Zn63_to_n_Zn62_reaclib)*Y(Zn63)) + + (-screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_Zn64_to_n_Zn63_reaclib)*Y(Zn64)) + + (-screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(Zn63)*Y(H1)*state.rho + screened_rates(k_Ga64_to_p_Zn63_reaclib)*Y(Ga64)) + + (-screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(Cu63)*Y(H1)*state.rho) + + (-screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(Zn63)*Y(N)*state.rho + screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(He4)*Y(Ni60)*state.rho) + + (-screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(Zn63)*Y(H1)*state.rho + screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + + (screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(Zn63)*Y(H1)*state.rho) + + (screened_rates(k_Ga63_to_Zn63_electron_capture_weaktab)*Y(Ga63) + -screened_rates(k_Zn63_to_Ga63_beta_neg_weaktab)*Y(Zn63)) + + (-screened_rates(k_Zn63_to_Cu63_electron_capture_weaktab)*Y(Zn63) + screened_rates(k_Cu63_to_Zn63_beta_neg_weaktab)*Y(Cu63)); ydot_nuc(Zn64) = - (screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(He4)*Y(Ni60)*state.rho + -screened_rates(k_Zn64_to_He4_Ni60_reaclib)*Y(Zn64)) + - (screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(Cu63)*Y(H1)*state.rho + -screened_rates(k_Zn64_to_p_Cu63_reaclib)*Y(Zn64)) + - (screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_Zn64_to_n_Zn63_reaclib)*Y(Zn64)) + - (-screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_Zn65_to_n_Zn64_reaclib)*Y(Zn65)) + - (-screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(Cu64)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + - (-screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(Zn64)*Y(H1)*state.rho + screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + - (screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(Ga64)*Y(N)*state.rho + -screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(Zn64)*Y(H1)*state.rho) + - (screened_rates(k_Cu64_to_Zn64_weaktab)*Y(Cu64) + -screened_rates(k_Zn64_to_Cu64_weaktab)*Y(Zn64)) + - (screened_rates(k_Ga64_to_Zn64_weaktab)*Y(Ga64) + -screened_rates(k_Zn64_to_Ga64_weaktab)*Y(Zn64)); + (screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(He4)*Y(Ni60)*state.rho + -screened_rates(k_Zn64_to_He4_Ni60_reaclib)*Y(Zn64)) + + (screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(Cu63)*Y(H1)*state.rho + -screened_rates(k_Zn64_to_p_Cu63_reaclib)*Y(Zn64)) + + (screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(Zn63)*Y(N)*state.rho + -screened_rates(k_Zn64_to_n_Zn63_reaclib)*Y(Zn64)) + + (-screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_Zn65_to_n_Zn64_reaclib)*Y(Zn65)) + + (-screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(Cu64)*Y(H1)*state.rho) + + (-screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(Zn64)*Y(N)*state.rho + screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(He4)*Y(Ni61)*state.rho) + + (-screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(Zn64)*Y(H1)*state.rho + screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + + (screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(Ga64)*Y(N)*state.rho + -screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(Zn64)*Y(H1)*state.rho) + + (screened_rates(k_Cu64_to_Zn64_beta_neg_weaktab)*Y(Cu64) + -screened_rates(k_Zn64_to_Cu64_electron_capture_weaktab)*Y(Zn64)) + + (screened_rates(k_Ga64_to_Zn64_electron_capture_weaktab)*Y(Ga64) + -screened_rates(k_Zn64_to_Ga64_beta_neg_weaktab)*Y(Zn64)); ydot_nuc(Zn65) = - (screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(He4)*Y(Ni61)*state.rho + -screened_rates(k_Zn65_to_He4_Ni61_reaclib)*Y(Zn65)) + - (screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(Cu64)*Y(H1)*state.rho + -screened_rates(k_Zn65_to_p_Cu64_reaclib)*Y(Zn65)) + - (screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_Zn65_to_n_Zn64_reaclib)*Y(Zn65)) + - (-screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_Zn66_to_n_Zn65_reaclib)*Y(Zn66)) + - (-screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(Cu65)*Y(H1)*state.rho) + - (-screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + - (-screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(Zn65)*Y(H1)*state.rho + screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(Cu62)*Y(He4)*state.rho) + - (-screened_rates(k_Zn65_to_Cu65_weaktab)*Y(Zn65) + screened_rates(k_Cu65_to_Zn65_weaktab)*Y(Cu65)); + (screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(He4)*Y(Ni61)*state.rho + -screened_rates(k_Zn65_to_He4_Ni61_reaclib)*Y(Zn65)) + + (screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(Cu64)*Y(H1)*state.rho + -screened_rates(k_Zn65_to_p_Cu64_reaclib)*Y(Zn65)) + + (screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(Zn64)*Y(N)*state.rho + -screened_rates(k_Zn65_to_n_Zn64_reaclib)*Y(Zn65)) + + (-screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_Zn66_to_n_Zn65_reaclib)*Y(Zn66)) + + (-screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(Cu65)*Y(H1)*state.rho) + + (-screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(Zn65)*Y(N)*state.rho + screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(He4)*Y(Ni62)*state.rho) + + (-screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(Zn65)*Y(H1)*state.rho + screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(Cu62)*Y(He4)*state.rho) + + (-screened_rates(k_Zn65_to_Cu65_electron_capture_weaktab)*Y(Zn65) + screened_rates(k_Cu65_to_Zn65_beta_neg_weaktab)*Y(Cu65)); ydot_nuc(Zn66) = - (screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(He4)*Y(Ni62)*state.rho + -screened_rates(k_Zn66_to_He4_Ni62_reaclib)*Y(Zn66)) + - (screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(Cu65)*Y(H1)*state.rho + -screened_rates(k_Zn66_to_p_Cu65_reaclib)*Y(Zn66)) + - (screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_Zn66_to_n_Zn65_reaclib)*Y(Zn66)) + - (-screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(Zn66)*Y(N)*state.rho + screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(He4)*Y(Ni63)*state.rho) + - (-screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(Zn66)*Y(H1)*state.rho + screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(Cu63)*Y(He4)*state.rho); + (screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(He4)*Y(Ni62)*state.rho + -screened_rates(k_Zn66_to_He4_Ni62_reaclib)*Y(Zn66)) + + (screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(Cu65)*Y(H1)*state.rho + -screened_rates(k_Zn66_to_p_Cu65_reaclib)*Y(Zn66)) + + (screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(Zn65)*Y(N)*state.rho + -screened_rates(k_Zn66_to_n_Zn65_reaclib)*Y(Zn66)) + + (-screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(Zn66)*Y(N)*state.rho + screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(He4)*Y(Ni63)*state.rho) + + (-screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(Zn66)*Y(H1)*state.rho + screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(Cu63)*Y(He4)*state.rho); ydot_nuc(Ga62) = - (screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(Cu58)*Y(He4)*state.rho + -screened_rates(k_Ga62_to_He4_Cu58_reaclib)*Y(Ga62)) + - (screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(Zn61)*Y(H1)*state.rho + -screened_rates(k_Ga62_to_p_Zn61_reaclib)*Y(Ga62)) + - (-screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_Ga63_to_n_Ga62_reaclib)*Y(Ga63)) + - (-screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(Ga62)*Y(H1)*state.rho + screened_rates(k_Ge63_to_p_Ga62_reaclib)*Y(Ge63)) + - (-screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(Zn62)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + - (-screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(Ga62)*Y(H1)*state.rho + screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(He4)*Y(Zn59)*state.rho) + - (-screened_rates(k_Ga62_to_Zn62_weaktab)*Y(Ga62) + screened_rates(k_Zn62_to_Ga62_weaktab)*Y(Zn62)); + (screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(Cu58)*Y(He4)*state.rho + -screened_rates(k_Ga62_to_He4_Cu58_reaclib)*Y(Ga62)) + + (screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(Zn61)*Y(H1)*state.rho + -screened_rates(k_Ga62_to_p_Zn61_reaclib)*Y(Ga62)) + + (-screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_Ga63_to_n_Ga62_reaclib)*Y(Ga63)) + + (-screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(Ga62)*Y(H1)*state.rho + screened_rates(k_Ge63_to_p_Ga62_reaclib)*Y(Ge63)) + + (-screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(Zn62)*Y(H1)*state.rho) + + (-screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(Ga62)*Y(N)*state.rho + screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(Cu59)*Y(He4)*state.rho) + + (-screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(Ga62)*Y(H1)*state.rho + screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(He4)*Y(Zn59)*state.rho) + + (-screened_rates(k_Ga62_to_Zn62_electron_capture_weaktab)*Y(Ga62) + screened_rates(k_Zn62_to_Ga62_beta_neg_weaktab)*Y(Zn62)); ydot_nuc(Ga63) = - screened_rates(k_Ge63_to_Ga63_reaclib)*Y(Ge63) + - (screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(Cu59)*Y(He4)*state.rho + -screened_rates(k_Ga63_to_He4_Cu59_reaclib)*Y(Ga63)) + - (screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(Zn62)*Y(H1)*state.rho + -screened_rates(k_Ga63_to_p_Zn62_reaclib)*Y(Ga63)) + - (screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_Ga63_to_n_Ga62_reaclib)*Y(Ga63)) + - (-screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_Ga64_to_n_Ga63_reaclib)*Y(Ga64)) + - (-screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(Ga63)*Y(H1)*state.rho + screened_rates(k_Ge64_to_p_Ga63_reaclib)*Y(Ge64)) + - (-screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(Zn63)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + - (-screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(Ga63)*Y(H1)*state.rho + screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + - (screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(Ga63)*Y(H1)*state.rho) + - (-screened_rates(k_Ga63_to_Zn63_weaktab)*Y(Ga63) + screened_rates(k_Zn63_to_Ga63_weaktab)*Y(Zn63)); + screened_rates(k_Ge63_to_Ga63_beta_pos_reaclib)*Y(Ge63) + + (screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(Cu59)*Y(He4)*state.rho + -screened_rates(k_Ga63_to_He4_Cu59_reaclib)*Y(Ga63)) + + (screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(Zn62)*Y(H1)*state.rho + -screened_rates(k_Ga63_to_p_Zn62_reaclib)*Y(Ga63)) + + (screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(Ga62)*Y(N)*state.rho + -screened_rates(k_Ga63_to_n_Ga62_reaclib)*Y(Ga63)) + + (-screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_Ga64_to_n_Ga63_reaclib)*Y(Ga64)) + + (-screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(Ga63)*Y(H1)*state.rho + screened_rates(k_Ge64_to_p_Ga63_reaclib)*Y(Ge64)) + + (-screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(Zn63)*Y(H1)*state.rho) + + (-screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(Ga63)*Y(N)*state.rho + screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(Cu60)*Y(He4)*state.rho) + + (-screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(Ga63)*Y(H1)*state.rho + screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(He4)*Y(Zn60)*state.rho) + + (screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(Ga63)*Y(H1)*state.rho) + + (-screened_rates(k_Ga63_to_Zn63_electron_capture_weaktab)*Y(Ga63) + screened_rates(k_Zn63_to_Ga63_beta_neg_weaktab)*Y(Zn63)); ydot_nuc(Ga64) = - (screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(Cu60)*Y(He4)*state.rho + -screened_rates(k_Ga64_to_He4_Cu60_reaclib)*Y(Ga64)) + - (screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(Zn63)*Y(H1)*state.rho + -screened_rates(k_Ga64_to_p_Zn63_reaclib)*Y(Ga64)) + - (screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_Ga64_to_n_Ga63_reaclib)*Y(Ga64)) + - (-screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(Ga64)*Y(N)*state.rho + screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(Zn64)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(Ga64)*Y(N)*state.rho + screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + - (-screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(Ga64)*Y(H1)*state.rho + screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + - (screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(Ge64)*Y(N)*state.rho + -screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(Ga64)*Y(H1)*state.rho) + - (-screened_rates(k_Ga64_to_Zn64_weaktab)*Y(Ga64) + screened_rates(k_Zn64_to_Ga64_weaktab)*Y(Zn64)) + - (screened_rates(k_Ge64_to_Ga64_weaktab)*Y(Ge64) + -screened_rates(k_Ga64_to_Ge64_weaktab)*Y(Ga64)); + (screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(Cu60)*Y(He4)*state.rho + -screened_rates(k_Ga64_to_He4_Cu60_reaclib)*Y(Ga64)) + + (screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(Zn63)*Y(H1)*state.rho + -screened_rates(k_Ga64_to_p_Zn63_reaclib)*Y(Ga64)) + + (screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(Ga63)*Y(N)*state.rho + -screened_rates(k_Ga64_to_n_Ga63_reaclib)*Y(Ga64)) + + (-screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(Ga64)*Y(N)*state.rho + screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(Zn64)*Y(H1)*state.rho) + + (-screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(Ga64)*Y(N)*state.rho + screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(Cu61)*Y(He4)*state.rho) + + (-screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(Ga64)*Y(H1)*state.rho + screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + + (screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(Ge64)*Y(N)*state.rho + -screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(Ga64)*Y(H1)*state.rho) + + (-screened_rates(k_Ga64_to_Zn64_electron_capture_weaktab)*Y(Ga64) + screened_rates(k_Zn64_to_Ga64_beta_neg_weaktab)*Y(Zn64)) + + (screened_rates(k_Ge64_to_Ga64_electron_capture_weaktab)*Y(Ge64) + -screened_rates(k_Ga64_to_Ge64_beta_neg_weaktab)*Y(Ga64)); ydot_nuc(Ge63) = - -screened_rates(k_Ge63_to_Ga63_reaclib)*Y(Ge63) + - (screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(He4)*Y(Zn59)*state.rho + -screened_rates(k_Ge63_to_He4_Zn59_reaclib)*Y(Ge63)) + - (screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(Ga62)*Y(H1)*state.rho + -screened_rates(k_Ge63_to_p_Ga62_reaclib)*Y(Ge63)) + - (-screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_Ge64_to_n_Ge63_reaclib)*Y(Ge64)) + - (-screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(Ga63)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(He4)*Y(Zn60)*state.rho); + -screened_rates(k_Ge63_to_Ga63_beta_pos_reaclib)*Y(Ge63) + + (screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(He4)*Y(Zn59)*state.rho + -screened_rates(k_Ge63_to_He4_Zn59_reaclib)*Y(Ge63)) + + (screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(Ga62)*Y(H1)*state.rho + -screened_rates(k_Ge63_to_p_Ga62_reaclib)*Y(Ge63)) + + (-screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_Ge64_to_n_Ge63_reaclib)*Y(Ge64)) + + (-screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(Ga63)*Y(H1)*state.rho) + + (-screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(Ge63)*Y(N)*state.rho + screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(He4)*Y(Zn60)*state.rho); ydot_nuc(Ge64) = - (screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(He4)*Y(Zn60)*state.rho + -screened_rates(k_Ge64_to_He4_Zn60_reaclib)*Y(Ge64)) + - (screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(Ga63)*Y(H1)*state.rho + -screened_rates(k_Ge64_to_p_Ga63_reaclib)*Y(Ge64)) + - (screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_Ge64_to_n_Ge63_reaclib)*Y(Ge64)) + - (-screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(Ge64)*Y(N)*state.rho + screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(Ga64)*Y(H1)*state.rho) + - (-screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(Ge64)*Y(N)*state.rho + screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + - (-screened_rates(k_Ge64_to_Ga64_weaktab)*Y(Ge64) + screened_rates(k_Ga64_to_Ge64_weaktab)*Y(Ga64)); + (screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(He4)*Y(Zn60)*state.rho + -screened_rates(k_Ge64_to_He4_Zn60_reaclib)*Y(Ge64)) + + (screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(Ga63)*Y(H1)*state.rho + -screened_rates(k_Ge64_to_p_Ga63_reaclib)*Y(Ge64)) + + (screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(Ge63)*Y(N)*state.rho + -screened_rates(k_Ge64_to_n_Ge63_reaclib)*Y(Ge64)) + + (-screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(Ge64)*Y(N)*state.rho + screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(Ga64)*Y(H1)*state.rho) + + (-screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(Ge64)*Y(N)*state.rho + screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(He4)*Y(Zn61)*state.rho) + + (-screened_rates(k_Ge64_to_Ga64_electron_capture_weaktab)*Y(Ge64) + screened_rates(k_Ga64_to_Ge64_beta_neg_weaktab)*Y(Ga64)); } @@ -9143,996 +6950,998 @@ AMREX_GPU_DEVICE AMREX_INLINE void jac_nuc(const burn_t& state, MatrixType& jac, const amrex::Array1D& Y, - const amrex::Array1D& screened_rates) + const amrex::Array1D& screened_rates) { + using namespace Rates; + amrex::Real scratch; - scratch = -screened_rates(k_n_Al25_to_Al26_reaclib)*Y(Al25)*state.rho - screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(Al25)*state.rho - screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(Al25)*state.rho - screened_rates(k_n_Al26_to_Al27_reaclib)*Y(Al26)*state.rho - screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(Al26)*state.rho - screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(Al26)*state.rho - screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(Ar36)*state.rho - screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(Ar36)*state.rho - screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(Ar36)*state.rho - screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(Ar37)*state.rho - screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(Ar37)*state.rho - screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(Ar38)*state.rho - screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(Ar39)*state.rho - screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(Ar39)*state.rho - screened_rates(k_n_B10_to_B11_reaclib)*Y(B10)*state.rho - screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(B10)*state.rho - screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(B8)*state.rho - screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(Be7)*state.rho - screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(Be7)*state.rho - screened_rates(k_n_C12_to_C13_reaclib)*Y(C12)*state.rho - screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(C12)*state.rho - screened_rates(k_n_C13_to_C14_reaclib)*Y(C13)*state.rho - screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(Ca40)*state.rho - screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(Ca40)*state.rho - screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(Ca40)*state.rho - screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(Ca41)*state.rho - screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(Ca41)*state.rho - screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(Ca41)*state.rho - screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(Ca42)*state.rho - screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(Ca42)*state.rho - screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(Ca43)*state.rho - screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(Ca44)*state.rho - screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(Ca45)*state.rho - screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(Ca46)*state.rho - screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(Ca47)*state.rho - screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(Cl33)*state.rho - screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(Cl33)*state.rho - screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(Cl33)*state.rho - screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(Cl34)*state.rho - screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(Cl34)*state.rho - screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(Cl34)*state.rho - screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(Cl35)*state.rho - screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(Cl35)*state.rho - screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(Cl36)*state.rho - screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(Cl36)*state.rho - screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(Cl36)*state.rho - screened_rates(k_n_Co53_to_Co54_reaclib)*Y(Co53)*state.rho - screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(Co53)*state.rho - screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(Co53)*state.rho - screened_rates(k_n_Co54_to_Co55_reaclib)*Y(Co54)*state.rho - screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(Co54)*state.rho - screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(Co54)*state.rho - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co57_to_Co58_reaclib)*Y(Co57)*state.rho - screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(Co57)*state.rho - screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(Co57)*state.rho - screened_rates(k_n_Co58_to_Co59_reaclib)*Y(Co58)*state.rho - screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(Co58)*state.rho - screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(Co58)*state.rho - screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(Cr48)*state.rho - screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(Cr48)*state.rho - screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(Cr48)*state.rho - screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(Cr49)*state.rho - screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(Cr49)*state.rho - screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(Cr49)*state.rho - screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(Cr50)*state.rho - screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(Cr50)*state.rho - screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(Cr51)*state.rho - screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(Cr51)*state.rho - screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(Cr52)*state.rho - screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(Cr52)*state.rho - screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(Cr53)*state.rho - screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(Cr54)*state.rho - screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(Cu57)*state.rho - screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(Cu57)*state.rho - screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(Cu57)*state.rho - screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(Cu58)*state.rho - screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(Cu58)*state.rho - screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(Cu58)*state.rho - screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(Cu59)*state.rho - screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(Cu60)*state.rho - screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(Cu61)*state.rho - screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(Cu62)*state.rho - screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(Cu63)*state.rho - screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(Cu64)*state.rho - screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(Cu64)*state.rho - screened_rates(k_n_F17_to_F18_reaclib)*Y(F17)*state.rho - screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(F17)*state.rho - screened_rates(k_n_F17_to_p_O17_reaclib)*Y(F17)*state.rho - screened_rates(k_n_F18_to_F19_reaclib)*Y(F18)*state.rho - screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(F18)*state.rho - screened_rates(k_n_F18_to_p_O18_reaclib)*Y(F18)*state.rho - screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(Fe52)*state.rho - screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(Fe52)*state.rho - screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(Fe53)*state.rho - screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(Fe53)*state.rho - screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(Fe54)*state.rho - screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(Fe56)*state.rho - screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(Fe57)*state.rho - screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(Fe57)*state.rho - screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(Ga62)*state.rho - screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(Ga62)*state.rho - screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(Ga63)*state.rho - screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(Ga64)*state.rho - screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(Ge63)*state.rho - screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(Ge63)*state.rho - screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(Ge63)*state.rho - screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(Ge64)*state.rho - screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(Ge64)*state.rho - screened_rates(k_n_He3_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_n_He3_to_d_d_reaclib)*Y(He3)*state.rho - 0.5*screened_rates(k_n_He4_He4_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 0.5*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(K37)*state.rho - screened_rates(k_n_K37_to_K38_reaclib)*Y(K37)*state.rho - screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(K37)*state.rho - screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(K38)*state.rho - screened_rates(k_n_K38_to_K39_reaclib)*Y(K38)*state.rho - screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(K38)*state.rho - screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(K39)*state.rho - screened_rates(k_n_K39_to_K40_reaclib)*Y(K39)*state.rho - screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(K39)*state.rho - screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(K40)*state.rho - screened_rates(k_n_K40_to_K41_reaclib)*Y(K40)*state.rho - screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(K40)*state.rho - screened_rates(k_n_Li6_to_Li7_reaclib)*Y(Li6)*state.rho - screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(Mg24)*state.rho - screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(Mg25)*state.rho - screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(Mn50)*state.rho - screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(Mn50)*state.rho - screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(Mn50)*state.rho - screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(Mn51)*state.rho - screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(Mn51)*state.rho - screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(Mn52)*state.rho - screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(Mn52)*state.rho - screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(Mn53)*state.rho - screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(Mn53)*state.rho - screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(Mn54)*state.rho - screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(Mn54)*state.rho - screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(Mn55)*state.rho - screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N13)*state.rho - screened_rates(k_n_N13_to_N14_reaclib)*Y(N13)*state.rho - screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N13)*state.rho - screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N14)*state.rho - screened_rates(k_n_N14_to_N15_reaclib)*Y(N14)*state.rho - screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N14)*state.rho - screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N14)*state.rho - screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N15)*state.rho - screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(Na21)*state.rho - screened_rates(k_n_Na21_to_Na22_reaclib)*Y(Na21)*state.rho - screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(Na21)*state.rho - screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(Na22)*state.rho - screened_rates(k_n_Na22_to_Na23_reaclib)*Y(Na22)*state.rho - screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(Na22)*state.rho - screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(Ne18)*state.rho - screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(Ne18)*state.rho - screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(Ne18)*state.rho - screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(Ne19)*state.rho - screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(Ne19)*state.rho - screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(Ne19)*state.rho - screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(Ne20)*state.rho - screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(Ne21)*state.rho - screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(Ni58)*state.rho - screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(Ni59)*state.rho - screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(Ni59)*state.rho - screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(Ni60)*state.rho - screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(Ni60)*state.rho - screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(Ni61)*state.rho - screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(Ni61)*state.rho - screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(Ni62)*state.rho - screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(Ni63)*state.rho - screened_rates(k_n_O14_to_O15_reaclib)*Y(O14)*state.rho - screened_rates(k_n_O14_to_p_N14_reaclib)*Y(O14)*state.rho - screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(O15)*state.rho - screened_rates(k_n_O15_to_O16_reaclib)*Y(O15)*state.rho - screened_rates(k_n_O15_to_p_N15_reaclib)*Y(O15)*state.rho - screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(O16)*state.rho - screened_rates(k_n_O16_to_O17_reaclib)*Y(O16)*state.rho - screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(O17)*state.rho - screened_rates(k_n_O17_to_O18_reaclib)*Y(O17)*state.rho - screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(P29)*state.rho - screened_rates(k_n_P29_to_P30_reaclib)*Y(P29)*state.rho - screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(P29)*state.rho - screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(P30)*state.rho - screened_rates(k_n_P30_to_P31_reaclib)*Y(P30)*state.rho - screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(P30)*state.rho - screened_rates(k_n_P31_to_P32_reaclib)*Y(P31)*state.rho - screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(P31)*state.rho - screened_rates(k_n_P32_to_P33_reaclib)*Y(P32)*state.rho - screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(P32)*state.rho - screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(S32)*state.rho - screened_rates(k_n_S32_to_S33_reaclib)*Y(S32)*state.rho - screened_rates(k_n_S32_to_p_P32_reaclib)*Y(S32)*state.rho - screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(S33)*state.rho - screened_rates(k_n_S33_to_S34_reaclib)*Y(S33)*state.rho - screened_rates(k_n_S33_to_p_P33_reaclib)*Y(S33)*state.rho - screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(S34)*state.rho - screened_rates(k_n_S34_to_S35_reaclib)*Y(S34)*state.rho - screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(S35)*state.rho - screened_rates(k_n_S35_to_S36_reaclib)*Y(S35)*state.rho - screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(Sc43)*state.rho - screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(Sc43)*state.rho - screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(Sc43)*state.rho - screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(Sc44)*state.rho - screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(Sc44)*state.rho - screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(Sc45)*state.rho - screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(Sc46)*state.rho - screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(Sc47)*state.rho - screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(Sc48)*state.rho - screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(Sc48)*state.rho - screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(Si28)*state.rho - screened_rates(k_n_Si28_to_Si29_reaclib)*Y(Si28)*state.rho - screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(Si29)*state.rho - screened_rates(k_n_Si29_to_Si30_reaclib)*Y(Si29)*state.rho - screened_rates(k_n_Si30_to_Si31_reaclib)*Y(Si30)*state.rho - screened_rates(k_n_Si31_to_Si32_reaclib)*Y(Si31)*state.rho - screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(Ti44)*state.rho - screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(Ti44)*state.rho - screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(Ti44)*state.rho - screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(Ti45)*state.rho - screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(Ti45)*state.rho - screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(Ti45)*state.rho - screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(Ti46)*state.rho - screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(Ti46)*state.rho - screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(Ti47)*state.rho - screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(Ti47)*state.rho - screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(Ti48)*state.rho - screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(Ti48)*state.rho - screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(Ti49)*state.rho - screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(Ti49)*state.rho - screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(Ti50)*state.rho - screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(Ti50)*state.rho - screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(Ti51)*state.rho - screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(V46)*state.rho - screened_rates(k_n_V46_to_V47_reaclib)*Y(V46)*state.rho - screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(V46)*state.rho - screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(V47)*state.rho - screened_rates(k_n_V47_to_V48_reaclib)*Y(V47)*state.rho - screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(V47)*state.rho - screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(V48)*state.rho - screened_rates(k_n_V48_to_V49_reaclib)*Y(V48)*state.rho - screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(V48)*state.rho - screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(V49)*state.rho - screened_rates(k_n_V49_to_V50_reaclib)*Y(V49)*state.rho - screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(V49)*state.rho - screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(V50)*state.rho - screened_rates(k_n_V50_to_V51_reaclib)*Y(V50)*state.rho - screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(V50)*state.rho - screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(V51)*state.rho - screened_rates(k_n_V51_to_V52_reaclib)*Y(V51)*state.rho - screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(V51)*state.rho - screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(V52)*state.rho - screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(Zn59)*state.rho - screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(Zn59)*state.rho - screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(Zn59)*state.rho - screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho - screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(Zn60)*state.rho - screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(Zn60)*state.rho - screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(Zn61)*state.rho - screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(Zn61)*state.rho - screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(Zn62)*state.rho - screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(Zn62)*state.rho - screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(Zn63)*state.rho - screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(Zn63)*state.rho - screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(Zn64)*state.rho - screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(Zn64)*state.rho - screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(Zn64)*state.rho - screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(Zn65)*state.rho - screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(Zn65)*state.rho - screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(Zn65)*state.rho - screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(Zn66)*state.rho - 0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - 0.5*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - 0.5*screened_rates(k_n_p_p_to_p_d_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_p_to_d_reaclib)*Y(H1)*state.rho - screened_rates(k_n_to_p_weaktab); + scratch = -screened_rates(k_Al25_n_to_Al26_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al26_n_to_Al27_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(Al26)*state.rho - screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(Ar39)*state.rho - screened_rates(k_B10_n_to_B11_reaclib)*Y(B10)*state.rho - screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(B10)*state.rho - screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(B8)*state.rho - screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(Be7)*state.rho - screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(Be7)*state.rho - screened_rates(k_C12_n_to_C13_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_n_to_C14_reaclib)*Y(C13)*state.rho - screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(Ca47)*state.rho - screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Co53_n_to_Co54_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co54_n_to_Co55_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co57_n_to_Co58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co58_n_to_Co59_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(Co58)*state.rho - screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(Cu57)*state.rho - screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(Cu57)*state.rho - screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(Cu57)*state.rho - screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(Cu64)*state.rho - screened_rates(k_F17_n_to_F18_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_n_to_p_O17_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_n_to_F19_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_n_to_p_O18_reaclib)*Y(F18)*state.rho - screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(Ga64)*state.rho - screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(Ge63)*state.rho - screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(Ge63)*state.rho - screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(Ge63)*state.rho - screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(Ge64)*state.rho - screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(Ge64)*state.rho - screened_rates(k_He3_n_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_n_to_d_d_reaclib)*Y(He3)*state.rho - 0.5*screened_rates(k_He4_He4_n_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 0.5*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - 0.5*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(K37)*state.rho - screened_rates(k_K37_n_to_K38_reaclib)*Y(K37)*state.rho - screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(K37)*state.rho - screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(K38)*state.rho - screened_rates(k_K38_n_to_K39_reaclib)*Y(K38)*state.rho - screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(K38)*state.rho - screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(K39)*state.rho - screened_rates(k_K39_n_to_K40_reaclib)*Y(K39)*state.rho - screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(K39)*state.rho - screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_n_to_K41_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(K40)*state.rho - screened_rates(k_Li6_n_to_Li7_reaclib)*Y(Li6)*state.rho - screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(Mn55)*state.rho - screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N13)*state.rho - screened_rates(k_N13_n_to_N14_reaclib)*Y(N13)*state.rho - screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_n_to_N15_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N15)*state.rho - screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na21_n_to_Na22_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_n_to_Na23_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(Na22)*state.rho - screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(Ni63)*state.rho - screened_rates(k_O14_n_to_O15_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_n_to_p_N14_reaclib)*Y(O14)*state.rho - screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_n_to_O16_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_n_to_p_N15_reaclib)*Y(O15)*state.rho - screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_n_to_O17_reaclib)*Y(O16)*state.rho - screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_n_to_O18_reaclib)*Y(O17)*state.rho - screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(P29)*state.rho - screened_rates(k_P29_n_to_P30_reaclib)*Y(P29)*state.rho - screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(P29)*state.rho - screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(P30)*state.rho - screened_rates(k_P30_n_to_P31_reaclib)*Y(P30)*state.rho - screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(P30)*state.rho - screened_rates(k_P31_n_to_P32_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(P31)*state.rho - screened_rates(k_P32_n_to_P33_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(P32)*state.rho - screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(S32)*state.rho - screened_rates(k_S32_n_to_S33_reaclib)*Y(S32)*state.rho - screened_rates(k_S32_n_to_p_P32_reaclib)*Y(S32)*state.rho - screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_n_to_S34_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_n_to_p_P33_reaclib)*Y(S33)*state.rho - screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_n_to_S35_reaclib)*Y(S34)*state.rho - screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(S35)*state.rho - screened_rates(k_S35_n_to_S36_reaclib)*Y(S35)*state.rho - screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_n_to_Si29_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_n_to_Si30_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si30_n_to_Si31_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si31_n_to_Si32_reaclib)*Y(Si31)*state.rho - screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(Ti51)*state.rho - screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(V46)*state.rho - screened_rates(k_V46_n_to_V47_reaclib)*Y(V46)*state.rho - screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(V46)*state.rho - screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_n_to_V48_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(V47)*state.rho - screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_n_to_V49_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(V48)*state.rho - screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_n_to_V50_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(V49)*state.rho - screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_n_to_V51_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(V50)*state.rho - screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_n_to_V52_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(V51)*state.rho - screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(V52)*state.rho - screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(Zn65)*state.rho - screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(Zn65)*state.rho - screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(Zn65)*state.rho - screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(Zn66)*state.rho - screened_rates(k_n_to_p_beta_neg_weaktab) - screened_rates(k_p_n_to_d_reaclib)*Y(H1)*state.rho - 0.5*screened_rates(k_p_p_n_to_p_d_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho); jac.set(N, N, scratch); - scratch = -0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - 0.5*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_n_p_p_to_p_d_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_p_to_d_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(Ar38)*state.rho + screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(Ar39)*state.rho + screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(Ar40)*state.rho + screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(Be9)*state.rho + screened_rates(k_p_C13_to_n_N13_reaclib)*Y(C13)*state.rho + screened_rates(k_p_C14_to_n_N14_reaclib)*Y(C14)*state.rho + screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(Ca43)*state.rho + screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(Ca44)*state.rho + screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(Ca45)*state.rho + screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(Ca46)*state.rho + screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(Ca47)*state.rho + screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(Ca48)*state.rho + screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(Cl37)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(Co56)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(Co58)*state.rho + screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(Co59)*state.rho + screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(Cr53)*state.rho + screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(Cr54)*state.rho + screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(Cu65)*state.rho + screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(F18)*state.rho + screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(Fe56)*state.rho + screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(Fe57)*state.rho + screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(Fe58)*state.rho + screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(Ga64)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(K40)*state.rho + screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(K41)*state.rho + screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(Li7)*state.rho + screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(Mg25)*state.rho + screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(Mg26)*state.rho + screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(Mn52)*state.rho + screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(Mn53)*state.rho + screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(Mn54)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(Mn55)*state.rho + screened_rates(k_p_N14_to_n_O14_reaclib)*Y(N14)*state.rho + screened_rates(k_p_N15_to_n_O15_reaclib)*Y(N15)*state.rho + screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(Ne21)*state.rho + screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(Ne22)*state.rho + screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(Ni58)*state.rho + screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(Ni59)*state.rho + screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(Ni60)*state.rho + screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(Ni61)*state.rho + screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(Ni62)*state.rho + screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(Ni63)*state.rho + screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(Ni64)*state.rho + screened_rates(k_p_O17_to_n_F17_reaclib)*Y(O17)*state.rho + screened_rates(k_p_O18_to_n_F18_reaclib)*Y(O18)*state.rho + screened_rates(k_p_P32_to_n_S32_reaclib)*Y(P32)*state.rho + screened_rates(k_p_P33_to_n_S33_reaclib)*Y(P33)*state.rho + screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(S33)*state.rho + screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(S34)*state.rho + screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(S35)*state.rho + screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(S36)*state.rho + screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(Sc49)*state.rho + screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(Si29)*state.rho + screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(Si30)*state.rho + screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(Si31)*state.rho + screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(Si32)*state.rho + screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(Ti50)*state.rho + screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(Ti51)*state.rho + screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(V48)*state.rho + screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(V49)*state.rho + screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(V50)*state.rho + screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(V51)*state.rho + screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(V52)*state.rho + screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(Zn62)*state.rho + screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(Zn63)*state.rho + screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(Zn64)*state.rho + screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H2)*state.rho + screened_rates(k_p_to_n_weaktab); + scratch = screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(Ar40)*state.rho + screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(Be9)*state.rho + screened_rates(k_C13_p_to_n_N13_reaclib)*Y(C13)*state.rho + screened_rates(k_C14_p_to_n_N14_reaclib)*Y(C14)*state.rho + screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(Ca45)*state.rho + screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(Ca46)*state.rho + screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(Ca47)*state.rho + screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(Ca48)*state.rho + screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(Cl37)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(Co57)*state.rho + screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(Co58)*state.rho + screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(Co59)*state.rho + screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(Cu65)*state.rho + screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(F19)*state.rho + screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(Fe58)*state.rho + screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(Ga64)*state.rho - 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - 0.5*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) + 0.5*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(K40)*state.rho + screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(K41)*state.rho + screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(Li7)*state.rho + screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(Mg26)*state.rho + screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(Mn52)*state.rho + screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(Mn53)*state.rho + screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(Mn54)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(Mn55)*state.rho + screened_rates(k_N14_p_to_n_O14_reaclib)*Y(N14)*state.rho + screened_rates(k_N15_p_to_n_O15_reaclib)*Y(N15)*state.rho + screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(Ne21)*state.rho + screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(Ne22)*state.rho + screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(Ni61)*state.rho + screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(Ni62)*state.rho + screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(Ni63)*state.rho + screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(Ni64)*state.rho + screened_rates(k_O17_p_to_n_F17_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_p_to_n_F18_reaclib)*Y(O18)*state.rho + screened_rates(k_P32_p_to_n_S32_reaclib)*Y(P32)*state.rho + screened_rates(k_P33_p_to_n_S33_reaclib)*Y(P33)*state.rho + screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(S33)*state.rho + screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(S34)*state.rho + screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(S35)*state.rho + screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(S36)*state.rho + screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(Sc49)*state.rho + screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(Si29)*state.rho + screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(Si30)*state.rho + screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(Si31)*state.rho + screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(Si32)*state.rho + screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(Ti50)*state.rho + screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(Ti51)*state.rho + screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(V48)*state.rho + screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(V49)*state.rho + screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(V50)*state.rho + screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(V51)*state.rho + screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(V52)*state.rho + screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(Zn62)*state.rho + screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(Zn63)*state.rho + screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(Zn64)*state.rho + screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H2)*state.rho - screened_rates(k_p_n_to_d_reaclib)*Y(N)*state.rho - 1.0*screened_rates(k_p_p_n_to_p_d_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(N, H1, scratch); - scratch = screened_rates(k_d_C13_to_n_N14_reaclib)*Y(C13)*state.rho + screened_rates(k_d_C14_to_n_N15_reaclib)*Y(C14)*state.rho + screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(Li6)*state.rho + screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(Li7)*state.rho + 1.0*screened_rates(k_d_d_to_n_He3_reaclib)*Y(H2)*state.rho + screened_rates(k_d_to_n_p_reaclib) + screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_d_to_n_N14_reaclib)*Y(C13)*state.rho + screened_rates(k_C14_d_to_n_N15_reaclib)*Y(C14)*state.rho + screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(Li6)*state.rho + screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(Li7)*state.rho + 1.0*screened_rates(k_d_d_to_n_He3_reaclib)*Y(H2)*state.rho + screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H1)*state.rho + screened_rates(k_d_to_n_p_reaclib); jac.set(N, H2, scratch); - scratch = screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_n_He3_to_He4_reaclib)*Y(N)*state.rho - screened_rates(k_n_He3_to_d_d_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_He3_n_to_He4_reaclib)*Y(N)*state.rho - screened_rates(k_He3_n_to_d_d_reaclib)*Y(N)*state.rho + screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho; jac.set(N, He3, scratch); - scratch = screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(Al26)*state.rho + screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(Al27)*state.rho + screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(Ar37)*state.rho + screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(Ar38)*state.rho + screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(Ar39)*state.rho + screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(Ar40)*state.rho + screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(B10)*state.rho + screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(B11)*state.rho + screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(Be9)*state.rho + screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(C13)*state.rho + screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(C14)*state.rho + screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(Ca41)*state.rho + screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(Ca42)*state.rho + screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(Ca43)*state.rho + screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(Ca44)*state.rho + screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(Ca45)*state.rho + screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(Ca46)*state.rho + screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(Ca47)*state.rho + screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(Ca48)*state.rho + screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(Cl34)*state.rho + screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(Cl35)*state.rho + screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(Cl36)*state.rho + screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(Cl37)*state.rho + screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(Co54)*state.rho + screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(Co56)*state.rho + screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(Co57)*state.rho + screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(Co58)*state.rho + screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(Co59)*state.rho + screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(Cr49)*state.rho + screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(Cr50)*state.rho + screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(Cr51)*state.rho + screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(Cr52)*state.rho + screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(Cr53)*state.rho + screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(Cr54)*state.rho + screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(F19)*state.rho + screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(Fe54)*state.rho + screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(Fe55)*state.rho + screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(Fe56)*state.rho + screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(Fe57)*state.rho + screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(Fe58)*state.rho + 1.0*screened_rates(k_He4_He4_to_n_Be7_reaclib)*Y(He4)*state.rho + screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(K40)*state.rho + screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(K41)*state.rho + screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(Li7)*state.rho + screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(Mg25)*state.rho + screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(Mg26)*state.rho + screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(Mn50)*state.rho + screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(Mn52)*state.rho + screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(Mn53)*state.rho + screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(Mn54)*state.rho + screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(Mn55)*state.rho + screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(N14)*state.rho + screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(N15)*state.rho + screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(Na22)*state.rho + screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(Na23)*state.rho + screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(Ne20)*state.rho + screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(Ne21)*state.rho + screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(Ne22)*state.rho + screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(Ni56)*state.rho + screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(Ni57)*state.rho + screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(Ni58)*state.rho + screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(Ni59)*state.rho + screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(Ni60)*state.rho + screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(Ni61)*state.rho + screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(Ni62)*state.rho + screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(Ni63)*state.rho + screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(O15)*state.rho + screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(O17)*state.rho + screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(O18)*state.rho + screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(P30)*state.rho + screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(P31)*state.rho + screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(P32)*state.rho + screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(P33)*state.rho + screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(S33)*state.rho + screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(S34)*state.rho + screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(S35)*state.rho + screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(S36)*state.rho + screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(Sc43)*state.rho + screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(Sc44)*state.rho + screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(Sc45)*state.rho + screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(Sc46)*state.rho + screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(Sc47)*state.rho + screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(Sc48)*state.rho + screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(Sc49)*state.rho + screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(Si29)*state.rho + screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(Si30)*state.rho + screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(Si31)*state.rho + screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(Si32)*state.rho + screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(Ti45)*state.rho + screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(Ti46)*state.rho + screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(Ti47)*state.rho + screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(Ti48)*state.rho + screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(Ti49)*state.rho + screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(Ti50)*state.rho + screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(Ti51)*state.rho + screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(V47)*state.rho + screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(V48)*state.rho + screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(V49)*state.rho + screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(V50)*state.rho + screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(V51)*state.rho + screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(V52)*state.rho + screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(Zn60)*state.rho + screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(Zn61)*state.rho + screened_rates(k_He4_to_n_He3_reaclib) - 1.0*screened_rates(k_n_He4_He4_to_Be9_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - 1.0*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho); + scratch = screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(Al26)*state.rho + screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(Al27)*state.rho + screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(Ar40)*state.rho + screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(B10)*state.rho + screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(B11)*state.rho + screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(Be9)*state.rho + screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(C12)*state.rho + screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(C13)*state.rho + screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(C14)*state.rho + screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(Ca41)*state.rho + screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(Ca42)*state.rho + screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(Ca45)*state.rho + screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(Ca46)*state.rho + screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(Ca47)*state.rho + screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(Ca48)*state.rho + screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(Cl34)*state.rho + screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(Cl35)*state.rho + screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(Cl36)*state.rho + screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(Cl37)*state.rho + screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(Co54)*state.rho + screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(Co57)*state.rho + screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(Co58)*state.rho + screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(Co59)*state.rho + screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(F19)*state.rho + screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(Fe58)*state.rho - 1.0*screened_rates(k_He4_He4_n_to_Be9_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - 1.0*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + 1.0*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_He4_He4_to_n_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_to_n_He3_reaclib) + screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(K40)*state.rho + screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(K41)*state.rho + screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(Li7)*state.rho + screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(Mg26)*state.rho + screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(Mn50)*state.rho + screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(Mn52)*state.rho + screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(Mn53)*state.rho + screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(Mn54)*state.rho + screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(Mn55)*state.rho + screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(N14)*state.rho + screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(N15)*state.rho + screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(Na22)*state.rho + screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(Ne21)*state.rho + screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(Ne22)*state.rho + screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(Ni61)*state.rho + screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(Ni62)*state.rho + screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(Ni63)*state.rho + screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(O15)*state.rho + screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(O16)*state.rho + screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(O18)*state.rho + screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(P30)*state.rho + screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(P31)*state.rho + screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(P32)*state.rho + screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(P33)*state.rho + screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(S33)*state.rho + screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(S34)*state.rho + screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(S35)*state.rho + screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(S36)*state.rho + screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(Sc49)*state.rho + screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(Si29)*state.rho + screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(Si30)*state.rho + screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(Si31)*state.rho + screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(Si32)*state.rho + screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(Ti45)*state.rho + screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(Ti46)*state.rho + screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(Ti47)*state.rho + screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(Ti48)*state.rho + screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(Ti49)*state.rho + screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(Ti50)*state.rho + screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(Ti51)*state.rho + screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(V47)*state.rho + screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(V48)*state.rho + screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(V49)*state.rho + screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(V50)*state.rho + screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(V51)*state.rho + screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(V52)*state.rho + screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(Zn60)*state.rho + screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(Zn61)*state.rho; jac.set(N, He4, scratch); - scratch = screened_rates(k_Li6_to_n_p_He4_reaclib) + screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(H2)*state.rho - screened_rates(k_n_Li6_to_Li7_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(H2)*state.rho - screened_rates(k_Li6_n_to_Li7_reaclib)*Y(N)*state.rho + screened_rates(k_Li6_to_n_p_He4_reaclib); jac.set(N, Li6, scratch); - scratch = screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(He4)*state.rho + screened_rates(k_Li7_to_n_Li6_reaclib) + screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(He4)*state.rho + screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(H1)*state.rho + screened_rates(k_Li7_to_n_Li6_reaclib); jac.set(N, Li7, scratch); - scratch = -screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(N)*state.rho - screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(N)*state.rho - screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(N)*state.rho - screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(N)*state.rho - screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(N)*state.rho; jac.set(N, Be7, scratch); - scratch = screened_rates(k_Be9_to_n_He4_He4_reaclib) + screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(He4)*state.rho + screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(H1)*state.rho + screened_rates(k_Be9_to_n_He4_He4_reaclib); jac.set(N, Be9, scratch); - scratch = -screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(N)*state.rho; jac.set(N, B8, scratch); - scratch = screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(He4)*state.rho - screened_rates(k_n_B10_to_B11_reaclib)*Y(N)*state.rho - screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(He4)*state.rho - screened_rates(k_B10_n_to_B11_reaclib)*Y(N)*state.rho - screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(N)*state.rho; jac.set(N, B10, scratch); - scratch = screened_rates(k_B11_to_n_B10_reaclib) + screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(He4)*state.rho + screened_rates(k_B11_to_n_B10_reaclib); jac.set(N, B11, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(He4)*state.rho - screened_rates(k_n_C12_to_C13_reaclib)*Y(N)*state.rho - screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(N)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_n_to_C13_reaclib)*Y(N)*state.rho - screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(N)*state.rho; jac.set(N, C12, scratch); - scratch = screened_rates(k_C13_to_n_C12_reaclib) + screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_d_C13_to_n_N14_reaclib)*Y(H2)*state.rho - screened_rates(k_n_C13_to_C14_reaclib)*Y(N)*state.rho + screened_rates(k_p_C13_to_n_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_C13_d_to_n_N14_reaclib)*Y(H2)*state.rho - screened_rates(k_C13_n_to_C14_reaclib)*Y(N)*state.rho + screened_rates(k_C13_p_to_n_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_C13_to_n_C12_reaclib); jac.set(N, C13, scratch); - scratch = screened_rates(k_C14_to_n_C13_reaclib) + screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(He4)*state.rho + screened_rates(k_d_C14_to_n_N15_reaclib)*Y(H2)*state.rho + screened_rates(k_p_C14_to_n_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(He4)*state.rho + screened_rates(k_C14_d_to_n_N15_reaclib)*Y(H2)*state.rho + screened_rates(k_C14_p_to_n_N14_reaclib)*Y(H1)*state.rho + screened_rates(k_C14_to_n_C13_reaclib); jac.set(N, C14, scratch); - scratch = -screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N)*state.rho - screened_rates(k_n_N13_to_N14_reaclib)*Y(N)*state.rho - screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N)*state.rho - screened_rates(k_N13_n_to_N14_reaclib)*Y(N)*state.rho - screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N)*state.rho; jac.set(N, N13, scratch); - scratch = screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_N14_to_n_N13_reaclib) - screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N)*state.rho - screened_rates(k_n_N14_to_N15_reaclib)*Y(N)*state.rho - screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N)*state.rho - screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N)*state.rho + screened_rates(k_p_N14_to_n_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N)*state.rho - screened_rates(k_N14_n_to_N15_reaclib)*Y(N)*state.rho - screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N)*state.rho - screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N)*state.rho + screened_rates(k_N14_p_to_n_O14_reaclib)*Y(H1)*state.rho + screened_rates(k_N14_to_n_N13_reaclib); jac.set(N, N14, scratch); - scratch = screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(He4)*state.rho + screened_rates(k_N15_to_n_N14_reaclib) - screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N)*state.rho + screened_rates(k_p_N15_to_n_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N)*state.rho + screened_rates(k_N15_p_to_n_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_N15_to_n_N14_reaclib); jac.set(N, N15, scratch); - scratch = -screened_rates(k_n_O14_to_O15_reaclib)*Y(N)*state.rho - screened_rates(k_n_O14_to_p_N14_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_O14_n_to_O15_reaclib)*Y(N)*state.rho - screened_rates(k_O14_n_to_p_N14_reaclib)*Y(N)*state.rho; jac.set(N, O14, scratch); - scratch = screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(He4)*state.rho + screened_rates(k_O15_to_n_O14_reaclib) - screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(N)*state.rho - screened_rates(k_n_O15_to_O16_reaclib)*Y(N)*state.rho - screened_rates(k_n_O15_to_p_N15_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(N)*state.rho - screened_rates(k_O15_n_to_O16_reaclib)*Y(N)*state.rho - screened_rates(k_O15_n_to_p_N15_reaclib)*Y(N)*state.rho + screened_rates(k_O15_to_n_O14_reaclib); jac.set(N, O15, scratch); - scratch = screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(He4)*state.rho + screened_rates(k_O16_to_n_O15_reaclib) - screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(N)*state.rho - screened_rates(k_n_O16_to_O17_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(N)*state.rho - screened_rates(k_O16_n_to_O17_reaclib)*Y(N)*state.rho + screened_rates(k_O16_to_n_O15_reaclib); jac.set(N, O16, scratch); - scratch = screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(He4)*state.rho + screened_rates(k_O17_to_n_O16_reaclib) - screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(N)*state.rho - screened_rates(k_n_O17_to_O18_reaclib)*Y(N)*state.rho + screened_rates(k_p_O17_to_n_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(N)*state.rho - screened_rates(k_O17_n_to_O18_reaclib)*Y(N)*state.rho + screened_rates(k_O17_p_to_n_F17_reaclib)*Y(H1)*state.rho + screened_rates(k_O17_to_n_O16_reaclib); jac.set(N, O17, scratch); - scratch = screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_O18_to_n_O17_reaclib) + screened_rates(k_p_O18_to_n_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_O18_p_to_n_F18_reaclib)*Y(H1)*state.rho + screened_rates(k_O18_to_n_O17_reaclib); jac.set(N, O18, scratch); - scratch = -screened_rates(k_n_F17_to_F18_reaclib)*Y(N)*state.rho - screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(N)*state.rho - screened_rates(k_n_F17_to_p_O17_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_F17_n_to_F18_reaclib)*Y(N)*state.rho - screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(N)*state.rho - screened_rates(k_F17_n_to_p_O17_reaclib)*Y(N)*state.rho; jac.set(N, F17, scratch); - scratch = screened_rates(k_F18_to_n_F17_reaclib) + screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_n_F18_to_F19_reaclib)*Y(N)*state.rho - screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(N)*state.rho - screened_rates(k_n_F18_to_p_O18_reaclib)*Y(N)*state.rho + screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_n_to_F19_reaclib)*Y(N)*state.rho - screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(N)*state.rho - screened_rates(k_F18_n_to_p_O18_reaclib)*Y(N)*state.rho + screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_n_F17_reaclib); jac.set(N, F18, scratch); - scratch = screened_rates(k_F19_to_n_F18_reaclib) + screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_n_F18_reaclib); jac.set(N, F19, scratch); - scratch = -screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(N)*state.rho - screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(N)*state.rho - screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(N)*state.rho; jac.set(N, Ne18, scratch); - scratch = screened_rates(k_Ne19_to_n_Ne18_reaclib) - screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(N)*state.rho - screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(N)*state.rho + screened_rates(k_Ne19_to_n_Ne18_reaclib); jac.set(N, Ne19, scratch); - scratch = screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne20_to_n_Ne19_reaclib) - screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(N)*state.rho - screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(N)*state.rho + screened_rates(k_Ne20_to_n_Ne19_reaclib); jac.set(N, Ne20, scratch); - scratch = screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne21_to_n_Ne20_reaclib) - screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(N)*state.rho - screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(N)*state.rho + screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne21_to_n_Ne20_reaclib); jac.set(N, Ne21, scratch); - scratch = screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne22_to_n_Ne21_reaclib) + screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne22_to_n_Ne21_reaclib); jac.set(N, Ne22, scratch); - scratch = -screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(N)*state.rho - screened_rates(k_n_Na21_to_Na22_reaclib)*Y(N)*state.rho - screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(N)*state.rho - screened_rates(k_Na21_n_to_Na22_reaclib)*Y(N)*state.rho - screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(N)*state.rho; jac.set(N, Na21, scratch); - scratch = screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(He4)*state.rho + screened_rates(k_Na22_to_n_Na21_reaclib) - screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(N)*state.rho - screened_rates(k_n_Na22_to_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(N)*state.rho - screened_rates(k_Na22_n_to_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(N)*state.rho + screened_rates(k_Na22_to_n_Na21_reaclib); jac.set(N, Na22, scratch); - scratch = screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(He4)*state.rho + screened_rates(k_Na23_to_n_Na22_reaclib) + screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(He4)*state.rho + screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(H1)*state.rho + screened_rates(k_Na23_to_n_Na22_reaclib); jac.set(N, Na23, scratch); - scratch = -screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(N)*state.rho; jac.set(N, Mg23, scratch); - scratch = screened_rates(k_Mg24_to_n_Mg23_reaclib) - screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(N)*state.rho + screened_rates(k_Mg24_to_n_Mg23_reaclib); jac.set(N, Mg24, scratch); - scratch = screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg25_to_n_Mg24_reaclib) - screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(N)*state.rho + screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg25_to_n_Mg24_reaclib); jac.set(N, Mg25, scratch); - scratch = screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg26_to_n_Mg25_reaclib) + screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg26_to_n_Mg25_reaclib); jac.set(N, Mg26, scratch); - scratch = -screened_rates(k_n_Al25_to_Al26_reaclib)*Y(N)*state.rho - screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(N)*state.rho - screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Al25_n_to_Al26_reaclib)*Y(N)*state.rho - screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(N)*state.rho - screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(N)*state.rho; jac.set(N, Al25, scratch); - scratch = screened_rates(k_Al26_to_n_Al25_reaclib) + screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Al26_to_Al27_reaclib)*Y(N)*state.rho - screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_Al26_n_to_Al27_reaclib)*Y(N)*state.rho - screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(N)*state.rho + screened_rates(k_Al26_to_n_Al25_reaclib); jac.set(N, Al26, scratch); - scratch = screened_rates(k_Al27_to_n_Al26_reaclib) + screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(He4)*state.rho + screened_rates(k_Al27_to_n_Al26_reaclib); jac.set(N, Al27, scratch); - scratch = -screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(N)*state.rho - screened_rates(k_n_Si28_to_Si29_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(N)*state.rho - screened_rates(k_Si28_n_to_Si29_reaclib)*Y(N)*state.rho; jac.set(N, Si28, scratch); - scratch = screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(He4)*state.rho + screened_rates(k_Si29_to_n_Si28_reaclib) - screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_n_Si29_to_Si30_reaclib)*Y(N)*state.rho + screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_Si29_n_to_Si30_reaclib)*Y(N)*state.rho + screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(H1)*state.rho + screened_rates(k_Si29_to_n_Si28_reaclib); jac.set(N, Si29, scratch); - scratch = screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(He4)*state.rho + screened_rates(k_Si30_to_n_Si29_reaclib) - screened_rates(k_n_Si30_to_Si31_reaclib)*Y(N)*state.rho + screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_Si30_n_to_Si31_reaclib)*Y(N)*state.rho + screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(H1)*state.rho + screened_rates(k_Si30_to_n_Si29_reaclib); jac.set(N, Si30, scratch); - scratch = screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(He4)*state.rho + screened_rates(k_Si31_to_n_Si30_reaclib) - screened_rates(k_n_Si31_to_Si32_reaclib)*Y(N)*state.rho + screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_Si31_n_to_Si32_reaclib)*Y(N)*state.rho + screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(H1)*state.rho + screened_rates(k_Si31_to_n_Si30_reaclib); jac.set(N, Si31, scratch); - scratch = screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(He4)*state.rho + screened_rates(k_Si32_to_n_Si31_reaclib) + screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(He4)*state.rho + screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(H1)*state.rho + screened_rates(k_Si32_to_n_Si31_reaclib); jac.set(N, Si32, scratch); - scratch = -screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(N)*state.rho - screened_rates(k_n_P29_to_P30_reaclib)*Y(N)*state.rho - screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(N)*state.rho - screened_rates(k_P29_n_to_P30_reaclib)*Y(N)*state.rho - screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(N)*state.rho; jac.set(N, P29, scratch); - scratch = screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(He4)*state.rho + screened_rates(k_P30_to_n_P29_reaclib) - screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(N)*state.rho - screened_rates(k_n_P30_to_P31_reaclib)*Y(N)*state.rho - screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(N)*state.rho - screened_rates(k_P30_n_to_P31_reaclib)*Y(N)*state.rho - screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(N)*state.rho + screened_rates(k_P30_to_n_P29_reaclib); jac.set(N, P30, scratch); - scratch = screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(He4)*state.rho + screened_rates(k_P31_to_n_P30_reaclib) - screened_rates(k_n_P31_to_P32_reaclib)*Y(N)*state.rho - screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_P31_n_to_P32_reaclib)*Y(N)*state.rho - screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(N)*state.rho + screened_rates(k_P31_to_n_P30_reaclib); jac.set(N, P31, scratch); - scratch = screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(He4)*state.rho + screened_rates(k_P32_to_n_P31_reaclib) - screened_rates(k_n_P32_to_P33_reaclib)*Y(N)*state.rho - screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(N)*state.rho + screened_rates(k_p_P32_to_n_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_P32_n_to_P33_reaclib)*Y(N)*state.rho - screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(N)*state.rho + screened_rates(k_P32_p_to_n_S32_reaclib)*Y(H1)*state.rho + screened_rates(k_P32_to_n_P31_reaclib); jac.set(N, P32, scratch); - scratch = screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(He4)*state.rho + screened_rates(k_P33_to_n_P32_reaclib) + screened_rates(k_p_P33_to_n_S33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(He4)*state.rho + screened_rates(k_P33_p_to_n_S33_reaclib)*Y(H1)*state.rho + screened_rates(k_P33_to_n_P32_reaclib); jac.set(N, P33, scratch); - scratch = -screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(N)*state.rho - screened_rates(k_n_S32_to_S33_reaclib)*Y(N)*state.rho - screened_rates(k_n_S32_to_p_P32_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(N)*state.rho - screened_rates(k_S32_n_to_S33_reaclib)*Y(N)*state.rho - screened_rates(k_S32_n_to_p_P32_reaclib)*Y(N)*state.rho; jac.set(N, S32, scratch); - scratch = screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(He4)*state.rho + screened_rates(k_S33_to_n_S32_reaclib) - screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(N)*state.rho - screened_rates(k_n_S33_to_S34_reaclib)*Y(N)*state.rho - screened_rates(k_n_S33_to_p_P33_reaclib)*Y(N)*state.rho + screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(N)*state.rho - screened_rates(k_S33_n_to_S34_reaclib)*Y(N)*state.rho - screened_rates(k_S33_n_to_p_P33_reaclib)*Y(N)*state.rho + screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(H1)*state.rho + screened_rates(k_S33_to_n_S32_reaclib); jac.set(N, S33, scratch); - scratch = screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(He4)*state.rho + screened_rates(k_S34_to_n_S33_reaclib) - screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_n_S34_to_S35_reaclib)*Y(N)*state.rho + screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_S34_n_to_S35_reaclib)*Y(N)*state.rho + screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(H1)*state.rho + screened_rates(k_S34_to_n_S33_reaclib); jac.set(N, S34, scratch); - scratch = screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(He4)*state.rho + screened_rates(k_S35_to_n_S34_reaclib) - screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_n_S35_to_S36_reaclib)*Y(N)*state.rho + screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_S35_n_to_S36_reaclib)*Y(N)*state.rho + screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(H1)*state.rho + screened_rates(k_S35_to_n_S34_reaclib); jac.set(N, S35, scratch); - scratch = screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(He4)*state.rho + screened_rates(k_S36_to_n_S35_reaclib) + screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(He4)*state.rho + screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(H1)*state.rho + screened_rates(k_S36_to_n_S35_reaclib); jac.set(N, S36, scratch); - scratch = -screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(N)*state.rho - screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(N)*state.rho - screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(N)*state.rho; jac.set(N, Cl33, scratch); - scratch = screened_rates(k_Cl34_to_n_Cl33_reaclib) + screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(N)*state.rho - screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(N)*state.rho - screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(N)*state.rho + screened_rates(k_Cl34_to_n_Cl33_reaclib); jac.set(N, Cl34, scratch); - scratch = screened_rates(k_Cl35_to_n_Cl34_reaclib) + screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(N)*state.rho - screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(N)*state.rho + screened_rates(k_Cl35_to_n_Cl34_reaclib); jac.set(N, Cl35, scratch); - scratch = screened_rates(k_Cl36_to_n_Cl35_reaclib) + screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(N)*state.rho - screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(N)*state.rho + screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl36_to_n_Cl35_reaclib); jac.set(N, Cl36, scratch); - scratch = screened_rates(k_Cl37_to_n_Cl36_reaclib) + screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl37_to_n_Cl36_reaclib); jac.set(N, Cl37, scratch); - scratch = -screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(N)*state.rho - screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(N)*state.rho; jac.set(N, Ar36, scratch); - scratch = screened_rates(k_Ar37_to_n_Ar36_reaclib) + screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(N)*state.rho - screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(N)*state.rho + screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar37_to_n_Ar36_reaclib); jac.set(N, Ar37, scratch); - scratch = screened_rates(k_Ar38_to_n_Ar37_reaclib) + screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(N)*state.rho + screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar38_to_n_Ar37_reaclib); jac.set(N, Ar38, scratch); - scratch = screened_rates(k_Ar39_to_n_Ar38_reaclib) + screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(N)*state.rho + screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar39_to_n_Ar38_reaclib); jac.set(N, Ar39, scratch); - scratch = screened_rates(k_Ar40_to_n_Ar39_reaclib) + screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(He4)*state.rho + screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar40_to_n_Ar39_reaclib); jac.set(N, Ar40, scratch); - scratch = -screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(N)*state.rho - screened_rates(k_n_K37_to_K38_reaclib)*Y(N)*state.rho - screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(N)*state.rho - screened_rates(k_K37_n_to_K38_reaclib)*Y(N)*state.rho - screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(N)*state.rho; jac.set(N, K37, scratch); - scratch = screened_rates(k_K38_to_n_K37_reaclib) - screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(N)*state.rho - screened_rates(k_n_K38_to_K39_reaclib)*Y(N)*state.rho - screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(N)*state.rho - screened_rates(k_K38_n_to_K39_reaclib)*Y(N)*state.rho - screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(N)*state.rho + screened_rates(k_K38_to_n_K37_reaclib); jac.set(N, K38, scratch); - scratch = screened_rates(k_K39_to_n_K38_reaclib) - screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_n_K39_to_K40_reaclib)*Y(N)*state.rho - screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_K39_n_to_K40_reaclib)*Y(N)*state.rho - screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(N)*state.rho + screened_rates(k_K39_to_n_K38_reaclib); jac.set(N, K39, scratch); - scratch = screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(He4)*state.rho + screened_rates(k_K40_to_n_K39_reaclib) - screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_n_K40_to_K41_reaclib)*Y(N)*state.rho - screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(N)*state.rho + screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_K40_n_to_K41_reaclib)*Y(N)*state.rho - screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(N)*state.rho + screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(H1)*state.rho + screened_rates(k_K40_to_n_K39_reaclib); jac.set(N, K40, scratch); - scratch = screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(He4)*state.rho + screened_rates(k_K41_to_n_K40_reaclib) + screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(He4)*state.rho + screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(H1)*state.rho + screened_rates(k_K41_to_n_K40_reaclib); jac.set(N, K41, scratch); - scratch = -screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(N)*state.rho - screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(N)*state.rho; jac.set(N, Ca40, scratch); - scratch = screened_rates(k_Ca41_to_n_Ca40_reaclib) + screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(N)*state.rho - screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(N)*state.rho + screened_rates(k_Ca41_to_n_Ca40_reaclib); jac.set(N, Ca41, scratch); - scratch = screened_rates(k_Ca42_to_n_Ca41_reaclib) + screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(N)*state.rho + screened_rates(k_Ca42_to_n_Ca41_reaclib); jac.set(N, Ca42, scratch); - scratch = screened_rates(k_Ca43_to_n_Ca42_reaclib) + screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(N)*state.rho + screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca43_to_n_Ca42_reaclib); jac.set(N, Ca43, scratch); - scratch = screened_rates(k_Ca44_to_n_Ca43_reaclib) + screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(N)*state.rho + screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca44_to_n_Ca43_reaclib); jac.set(N, Ca44, scratch); - scratch = screened_rates(k_Ca45_to_n_Ca44_reaclib) + screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(N)*state.rho + screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca45_to_n_Ca44_reaclib); jac.set(N, Ca45, scratch); - scratch = screened_rates(k_Ca46_to_n_Ca45_reaclib) + screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(N)*state.rho + screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca46_to_n_Ca45_reaclib); jac.set(N, Ca46, scratch); - scratch = screened_rates(k_Ca47_to_n_Ca46_reaclib) + screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca47_to_n_Ca46_reaclib); jac.set(N, Ca47, scratch); - scratch = screened_rates(k_Ca48_to_n_Ca47_reaclib) + screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(He4)*state.rho + screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca48_to_n_Ca47_reaclib); jac.set(N, Ca48, scratch); - scratch = screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(N)*state.rho - screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(N)*state.rho; jac.set(N, Sc43, scratch); - scratch = screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc44_to_n_Sc43_reaclib) - screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(N)*state.rho + screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(N)*state.rho - screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(N)*state.rho + screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc44_to_n_Sc43_reaclib); jac.set(N, Sc44, scratch); - scratch = screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc45_to_n_Sc44_reaclib) - screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(N)*state.rho + screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(N)*state.rho + screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc45_to_n_Sc44_reaclib); jac.set(N, Sc45, scratch); - scratch = screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc46_to_n_Sc45_reaclib) - screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(N)*state.rho + screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(N)*state.rho + screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc46_to_n_Sc45_reaclib); jac.set(N, Sc46, scratch); - scratch = screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc47_to_n_Sc46_reaclib) - screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(N)*state.rho + screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(N)*state.rho + screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc47_to_n_Sc46_reaclib); jac.set(N, Sc47, scratch); - scratch = screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc48_to_n_Sc47_reaclib) - screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc48_to_n_Sc47_reaclib); jac.set(N, Sc48, scratch); - scratch = screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc49_to_n_Sc48_reaclib) + screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc49_to_n_Sc48_reaclib); jac.set(N, Sc49, scratch); - scratch = -screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(N)*state.rho - screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(N)*state.rho - screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(N)*state.rho; jac.set(N, Ti44, scratch); - scratch = screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti45_to_n_Ti44_reaclib) - screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(N)*state.rho - screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(N)*state.rho + screened_rates(k_Ti45_to_n_Ti44_reaclib); jac.set(N, Ti45, scratch); - scratch = screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti46_to_n_Ti45_reaclib) - screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(N)*state.rho + screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti46_to_n_Ti45_reaclib); jac.set(N, Ti46, scratch); - scratch = screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti47_to_n_Ti46_reaclib) - screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(N)*state.rho + screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti47_to_n_Ti46_reaclib); jac.set(N, Ti47, scratch); - scratch = screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti48_to_n_Ti47_reaclib) - screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(N)*state.rho + screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti48_to_n_Ti47_reaclib); jac.set(N, Ti48, scratch); - scratch = screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti49_to_n_Ti48_reaclib) - screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(N)*state.rho + screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti49_to_n_Ti48_reaclib); jac.set(N, Ti49, scratch); - scratch = screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti50_to_n_Ti49_reaclib) - screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti50_to_n_Ti49_reaclib); jac.set(N, Ti50, scratch); - scratch = screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti51_to_n_Ti50_reaclib) - screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti51_to_n_Ti50_reaclib); jac.set(N, Ti51, scratch); - scratch = -screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(N)*state.rho - screened_rates(k_n_V46_to_V47_reaclib)*Y(N)*state.rho - screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(N)*state.rho - screened_rates(k_V46_n_to_V47_reaclib)*Y(N)*state.rho - screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(N)*state.rho; jac.set(N, V46, scratch); - scratch = screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(He4)*state.rho + screened_rates(k_V47_to_n_V46_reaclib) - screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_n_V47_to_V48_reaclib)*Y(N)*state.rho - screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_V47_n_to_V48_reaclib)*Y(N)*state.rho - screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(N)*state.rho + screened_rates(k_V47_to_n_V46_reaclib); jac.set(N, V47, scratch); - scratch = screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(He4)*state.rho + screened_rates(k_V48_to_n_V47_reaclib) - screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_n_V48_to_V49_reaclib)*Y(N)*state.rho - screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(N)*state.rho + screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_V48_n_to_V49_reaclib)*Y(N)*state.rho - screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(N)*state.rho + screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(H1)*state.rho + screened_rates(k_V48_to_n_V47_reaclib); jac.set(N, V48, scratch); - scratch = screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(He4)*state.rho + screened_rates(k_V49_to_n_V48_reaclib) - screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_n_V49_to_V50_reaclib)*Y(N)*state.rho - screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(N)*state.rho + screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_V49_n_to_V50_reaclib)*Y(N)*state.rho - screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(N)*state.rho + screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(H1)*state.rho + screened_rates(k_V49_to_n_V48_reaclib); jac.set(N, V49, scratch); - scratch = screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(He4)*state.rho + screened_rates(k_V50_to_n_V49_reaclib) - screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_n_V50_to_V51_reaclib)*Y(N)*state.rho - screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(N)*state.rho + screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_V50_n_to_V51_reaclib)*Y(N)*state.rho - screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(N)*state.rho + screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(H1)*state.rho + screened_rates(k_V50_to_n_V49_reaclib); jac.set(N, V50, scratch); - scratch = screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(He4)*state.rho + screened_rates(k_V51_to_n_V50_reaclib) - screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_n_V51_to_V52_reaclib)*Y(N)*state.rho - screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_V51_n_to_V52_reaclib)*Y(N)*state.rho - screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(H1)*state.rho + screened_rates(k_V51_to_n_V50_reaclib); jac.set(N, V51, scratch); - scratch = screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(He4)*state.rho + screened_rates(k_V52_to_n_V51_reaclib) - screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(N)*state.rho + screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(N)*state.rho + screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(H1)*state.rho + screened_rates(k_V52_to_n_V51_reaclib); jac.set(N, V52, scratch); - scratch = -screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(N)*state.rho - screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(N)*state.rho - screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(N)*state.rho; jac.set(N, Cr48, scratch); - scratch = screened_rates(k_Cr49_to_n_Cr48_reaclib) + screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(N)*state.rho + screened_rates(k_Cr49_to_n_Cr48_reaclib); jac.set(N, Cr49, scratch); - scratch = screened_rates(k_Cr50_to_n_Cr49_reaclib) + screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(N)*state.rho + screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr50_to_n_Cr49_reaclib); jac.set(N, Cr50, scratch); - scratch = screened_rates(k_Cr51_to_n_Cr50_reaclib) + screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(N)*state.rho + screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr51_to_n_Cr50_reaclib); jac.set(N, Cr51, scratch); - scratch = screened_rates(k_Cr52_to_n_Cr51_reaclib) + screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(N)*state.rho + screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr52_to_n_Cr51_reaclib); jac.set(N, Cr52, scratch); - scratch = screened_rates(k_Cr53_to_n_Cr52_reaclib) + screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(N)*state.rho + screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr53_to_n_Cr52_reaclib); jac.set(N, Cr53, scratch); - scratch = screened_rates(k_Cr54_to_n_Cr53_reaclib) + screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr54_to_n_Cr53_reaclib); jac.set(N, Cr54, scratch); - scratch = screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(N)*state.rho - screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(N)*state.rho - screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(N)*state.rho; jac.set(N, Mn50, scratch); - scratch = screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn51_to_n_Mn50_reaclib) - screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(N)*state.rho - screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(N)*state.rho + screened_rates(k_Mn51_to_n_Mn50_reaclib); jac.set(N, Mn51, scratch); - scratch = screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn52_to_n_Mn51_reaclib) - screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(N)*state.rho - screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(N)*state.rho + screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn52_to_n_Mn51_reaclib); jac.set(N, Mn52, scratch); - scratch = screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn53_to_n_Mn52_reaclib) - screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(N)*state.rho - screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(N)*state.rho + screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn53_to_n_Mn52_reaclib); jac.set(N, Mn53, scratch); - scratch = screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn54_to_n_Mn53_reaclib) - screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(N)*state.rho - screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(N)*state.rho + screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn54_to_n_Mn53_reaclib); jac.set(N, Mn54, scratch); - scratch = screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn55_to_n_Mn54_reaclib) - screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(N)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn55_to_n_Mn54_reaclib); jac.set(N, Mn55, scratch); - scratch = -screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(N)*state.rho - screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(N)*state.rho; jac.set(N, Fe52, scratch); - scratch = screened_rates(k_Fe53_to_n_Fe52_reaclib) + screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(N)*state.rho + screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe53_to_n_Fe52_reaclib); jac.set(N, Fe53, scratch); - scratch = screened_rates(k_Fe54_to_n_Fe53_reaclib) + screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(N)*state.rho + screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe54_to_n_Fe53_reaclib); jac.set(N, Fe54, scratch); - scratch = screened_rates(k_Fe55_to_n_Fe54_reaclib) + screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(N)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe55_to_n_Fe54_reaclib); jac.set(N, Fe55, scratch); - scratch = screened_rates(k_Fe56_to_n_Fe55_reaclib) + screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe56_to_n_Fe55_reaclib); jac.set(N, Fe56, scratch); - scratch = screened_rates(k_Fe57_to_n_Fe56_reaclib) + screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(N)*state.rho + screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe57_to_n_Fe56_reaclib); jac.set(N, Fe57, scratch); - scratch = screened_rates(k_Fe58_to_n_Fe57_reaclib) + screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe58_to_n_Fe57_reaclib); jac.set(N, Fe58, scratch); - scratch = -screened_rates(k_n_Co53_to_Co54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co53_n_to_Co54_reaclib)*Y(N)*state.rho - screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(N)*state.rho - screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(N)*state.rho; jac.set(N, Co53, scratch); - scratch = screened_rates(k_Co54_to_n_Co53_reaclib) + screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co54_to_Co55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_Co54_n_to_Co55_reaclib)*Y(N)*state.rho - screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(N)*state.rho - screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(N)*state.rho + screened_rates(k_Co54_to_n_Co53_reaclib); jac.set(N, Co54, scratch); - scratch = screened_rates(k_Co55_to_n_Co54_reaclib) + screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_Co55_to_n_Co54_reaclib); jac.set(N, Co55, scratch); - scratch = screened_rates(k_Co56_to_n_Co55_reaclib) + screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Co56_to_n_Co55_reaclib); jac.set(N, Co56, scratch); - scratch = screened_rates(k_Co57_to_n_Co56_reaclib) + screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co57_to_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_Co57_n_to_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(N)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(H1)*state.rho + screened_rates(k_Co57_to_n_Co56_reaclib); jac.set(N, Co57, scratch); - scratch = screened_rates(k_Co58_to_n_Co57_reaclib) + screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co58_to_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_Co58_n_to_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(N)*state.rho + screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(H1)*state.rho + screened_rates(k_Co58_to_n_Co57_reaclib); jac.set(N, Co58, scratch); - scratch = screened_rates(k_Co59_to_n_Co58_reaclib) + screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(He4)*state.rho + screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(H1)*state.rho + screened_rates(k_Co59_to_n_Co58_reaclib); jac.set(N, Co59, scratch); - scratch = screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho; jac.set(N, Ni56, scratch); - scratch = screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni57_to_n_Ni56_reaclib) - screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(N)*state.rho + screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni57_to_n_Ni56_reaclib); jac.set(N, Ni57, scratch); - scratch = screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni58_to_n_Ni57_reaclib) - screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(N)*state.rho + screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni58_to_n_Ni57_reaclib); jac.set(N, Ni58, scratch); - scratch = screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni59_to_n_Ni58_reaclib) - screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(N)*state.rho + screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni59_to_n_Ni58_reaclib); jac.set(N, Ni59, scratch); - scratch = screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni60_to_n_Ni59_reaclib) - screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(N)*state.rho + screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni60_to_n_Ni59_reaclib); jac.set(N, Ni60, scratch); - scratch = screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni61_to_n_Ni60_reaclib) - screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(N)*state.rho + screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni61_to_n_Ni60_reaclib); jac.set(N, Ni61, scratch); - scratch = screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni62_to_n_Ni61_reaclib) - screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(N)*state.rho + screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni62_to_n_Ni61_reaclib); jac.set(N, Ni62, scratch); - scratch = screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni63_to_n_Ni62_reaclib) - screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(N)*state.rho + screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni63_to_n_Ni62_reaclib); jac.set(N, Ni63, scratch); - scratch = screened_rates(k_Ni64_to_n_Ni63_reaclib) + screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni64_to_n_Ni63_reaclib); jac.set(N, Ni64, scratch); - scratch = -screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(N)*state.rho - screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(N)*state.rho - screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(N)*state.rho; jac.set(N, Cu57, scratch); - scratch = screened_rates(k_Cu58_to_n_Cu57_reaclib) - screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(N)*state.rho - screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(N)*state.rho + screened_rates(k_Cu58_to_n_Cu57_reaclib); jac.set(N, Cu58, scratch); - scratch = screened_rates(k_Cu59_to_n_Cu58_reaclib) + screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(N)*state.rho + screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_n_Cu58_reaclib); jac.set(N, Cu59, scratch); - scratch = screened_rates(k_Cu60_to_n_Cu59_reaclib) + screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(N)*state.rho + screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu60_to_n_Cu59_reaclib); jac.set(N, Cu60, scratch); - scratch = screened_rates(k_Cu61_to_n_Cu60_reaclib) + screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(N)*state.rho - screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(N)*state.rho + screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu61_to_n_Cu60_reaclib); jac.set(N, Cu61, scratch); - scratch = screened_rates(k_Cu62_to_n_Cu61_reaclib) - screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(N)*state.rho - screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(N)*state.rho + screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu62_to_n_Cu61_reaclib); jac.set(N, Cu62, scratch); - scratch = screened_rates(k_Cu63_to_n_Cu62_reaclib) - screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(N)*state.rho - screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(N)*state.rho + screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu63_to_n_Cu62_reaclib); jac.set(N, Cu63, scratch); - scratch = screened_rates(k_Cu64_to_n_Cu63_reaclib) - screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(N)*state.rho - screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(N)*state.rho + screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu64_to_n_Cu63_reaclib); jac.set(N, Cu64, scratch); - scratch = screened_rates(k_Cu65_to_n_Cu64_reaclib) + screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu65_to_n_Cu64_reaclib); jac.set(N, Cu65, scratch); - scratch = -screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(N)*state.rho - screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(N)*state.rho - screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(N)*state.rho; jac.set(N, Zn59, scratch); - scratch = screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn60_to_n_Zn59_reaclib) - screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(N)*state.rho - screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(N)*state.rho + screened_rates(k_Zn60_to_n_Zn59_reaclib); jac.set(N, Zn60, scratch); - scratch = screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn61_to_n_Zn60_reaclib) - screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(N)*state.rho - screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(N)*state.rho + screened_rates(k_Zn61_to_n_Zn60_reaclib); jac.set(N, Zn61, scratch); - scratch = screened_rates(k_Zn62_to_n_Zn61_reaclib) - screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(N)*state.rho - screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(N)*state.rho + screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn62_to_n_Zn61_reaclib); jac.set(N, Zn62, scratch); - scratch = screened_rates(k_Zn63_to_n_Zn62_reaclib) - screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(N)*state.rho - screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(N)*state.rho + screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn63_to_n_Zn62_reaclib); jac.set(N, Zn63, scratch); - scratch = screened_rates(k_Zn64_to_n_Zn63_reaclib) - screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(N)*state.rho - screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(N)*state.rho + screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn64_to_n_Zn63_reaclib); jac.set(N, Zn64, scratch); - scratch = screened_rates(k_Zn65_to_n_Zn64_reaclib) - screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(N)*state.rho - screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(N)*state.rho + screened_rates(k_Zn65_to_n_Zn64_reaclib); jac.set(N, Zn65, scratch); - scratch = screened_rates(k_Zn66_to_n_Zn65_reaclib) - screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(N)*state.rho + screened_rates(k_Zn66_to_n_Zn65_reaclib); jac.set(N, Zn66, scratch); - scratch = -screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(N)*state.rho - screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(N)*state.rho; jac.set(N, Ga62, scratch); - scratch = screened_rates(k_Ga63_to_n_Ga62_reaclib) - screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(N)*state.rho - screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(N)*state.rho + screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga63_to_n_Ga62_reaclib); jac.set(N, Ga63, scratch); - scratch = screened_rates(k_Ga64_to_n_Ga63_reaclib) - screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(N)*state.rho + screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga64_to_n_Ga63_reaclib); jac.set(N, Ga64, scratch); - scratch = -screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(N)*state.rho - screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(N)*state.rho - screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(N)*state.rho; jac.set(N, Ge63, scratch); - scratch = screened_rates(k_Ge64_to_n_Ge63_reaclib) - screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(N)*state.rho - screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(N)*state.rho + screened_rates(k_Ge64_to_n_Ge63_reaclib); jac.set(N, Ge64, scratch); - scratch = screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(Al25)*state.rho + screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(Al26)*state.rho + screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(Ar36)*state.rho + screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(B8)*state.rho + screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(Be7)*state.rho + screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(Ca40)*state.rho + screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(Ca41)*state.rho + screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(Cl33)*state.rho + screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(Cl34)*state.rho + screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(Cl35)*state.rho + screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(Co53)*state.rho + screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(Co54)*state.rho + screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(Co57)*state.rho + screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(Co58)*state.rho + screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(Cr48)*state.rho + screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(Cr49)*state.rho + screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(Cu57)*state.rho + screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(Cu58)*state.rho + screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_n_F17_to_p_O17_reaclib)*Y(F17)*state.rho + screened_rates(k_n_F18_to_p_O18_reaclib)*Y(F18)*state.rho + screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(Fe52)*state.rho + screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(Ga62)*state.rho + screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(Ga64)*state.rho + screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(Ge63)*state.rho + screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(Ge64)*state.rho + screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(K37)*state.rho + screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(K38)*state.rho + screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(K39)*state.rho + screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(K40)*state.rho + screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*state.rho + screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(Mn50)*state.rho + screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(Mn51)*state.rho + screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(Mn52)*state.rho + screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(Mn53)*state.rho + screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(Mn54)*state.rho + screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N13)*state.rho + screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N14)*state.rho + screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(Na21)*state.rho + screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(Na22)*state.rho + screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(Ne18)*state.rho + screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(Ne19)*state.rho + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho + screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(Ni58)*state.rho + screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(Ni59)*state.rho + screened_rates(k_n_O14_to_p_N14_reaclib)*Y(O14)*state.rho + screened_rates(k_n_O15_to_p_N15_reaclib)*Y(O15)*state.rho + screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(P29)*state.rho + screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(P30)*state.rho + screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(P31)*state.rho + screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(P32)*state.rho + screened_rates(k_n_S32_to_p_P32_reaclib)*Y(S32)*state.rho + screened_rates(k_n_S33_to_p_P33_reaclib)*Y(S33)*state.rho + screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(Sc43)*state.rho + screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(Ti44)*state.rho + screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(Ti45)*state.rho + screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(V46)*state.rho + screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(V47)*state.rho + screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(V48)*state.rho + screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(V49)*state.rho + screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(V50)*state.rho + screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(V51)*state.rho + screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(Zn59)*state.rho + screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(Zn60)*state.rho + screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(Zn61)*state.rho + screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(Zn62)*state.rho + screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(Zn63)*state.rho + screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(Zn64)*state.rho + screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(Zn65)*state.rho - 0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_n_p_p_to_p_d_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_p_to_d_reaclib)*Y(H1)*state.rho + screened_rates(k_n_to_p_weaktab); + scratch = screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(Al25)*state.rho + screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(Al26)*state.rho + screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(B8)*state.rho + screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(Be7)*state.rho + screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(Ca40)*state.rho + screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(Ca41)*state.rho + screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(Cl33)*state.rho + screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(Cl34)*state.rho + screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(Cl35)*state.rho + screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(Co53)*state.rho + screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(Co54)*state.rho + screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(Co57)*state.rho + screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(Co58)*state.rho + screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(Cu57)*state.rho + screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(Cu58)*state.rho + screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_F17_n_to_p_O17_reaclib)*Y(F17)*state.rho + screened_rates(k_F18_n_to_p_O18_reaclib)*Y(F18)*state.rho + screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(Ga62)*state.rho + screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(Ga64)*state.rho + screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(Ge63)*state.rho + screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(Ge64)*state.rho - 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(K37)*state.rho + screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(K38)*state.rho + screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(K39)*state.rho + screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(K40)*state.rho + screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*state.rho + screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(Mn50)*state.rho + screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(Mn51)*state.rho + screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(Mn52)*state.rho + screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(Mn53)*state.rho + screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(Mn54)*state.rho + screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N13)*state.rho + screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N14)*state.rho + screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(Na21)*state.rho + screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(Na22)*state.rho + screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(Ne18)*state.rho + screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(Ne19)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(Ni59)*state.rho + screened_rates(k_O14_n_to_p_N14_reaclib)*Y(O14)*state.rho + screened_rates(k_O15_n_to_p_N15_reaclib)*Y(O15)*state.rho + screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(P29)*state.rho + screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(P30)*state.rho + screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(P31)*state.rho + screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(P32)*state.rho + screened_rates(k_S32_n_to_p_P32_reaclib)*Y(S32)*state.rho + screened_rates(k_S33_n_to_p_P33_reaclib)*Y(S33)*state.rho + screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(Ti44)*state.rho + screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(Ti45)*state.rho + screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(V46)*state.rho + screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(V47)*state.rho + screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(V48)*state.rho + screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(V49)*state.rho + screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(V50)*state.rho + screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(V51)*state.rho + screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(Zn59)*state.rho + screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(Zn60)*state.rho + screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(Zn61)*state.rho + screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(Zn62)*state.rho + screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(Zn63)*state.rho + screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(Zn64)*state.rho + screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(Zn65)*state.rho + screened_rates(k_n_to_p_beta_neg_weaktab) - screened_rates(k_p_n_to_d_reaclib)*Y(H1)*state.rho - 0.5*screened_rates(k_p_p_n_to_p_d_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho); jac.set(H1, N, scratch); - scratch = -0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_n_p_p_to_p_d_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_p_to_d_reaclib)*Y(N)*state.rho - screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(Al26)*state.rho - screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(Ar36)*state.rho - screened_rates(k_p_Ar36_to_K37_reaclib)*Y(Ar36)*state.rho - screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(Ar37)*state.rho - screened_rates(k_p_Ar37_to_K38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(Ar37)*state.rho - screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(Ar38)*state.rho - screened_rates(k_p_Ar38_to_K39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(Ar38)*state.rho - screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(Ar39)*state.rho - screened_rates(k_p_Ar39_to_K40_reaclib)*Y(Ar39)*state.rho - screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(Ar39)*state.rho - screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(Ar40)*state.rho - screened_rates(k_p_Ar40_to_K41_reaclib)*Y(Ar40)*state.rho - screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(Ar40)*state.rho - screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(B10)*state.rho - screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho - screened_rates(k_p_Be9_to_B10_reaclib)*Y(Be9)*state.rho - screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(Be9)*state.rho - screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(Be9)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(C13)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_C13_to_n_N13_reaclib)*Y(C13)*state.rho - screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(C14)*state.rho - screened_rates(k_p_C14_to_N15_reaclib)*Y(C14)*state.rho - screened_rates(k_p_C14_to_n_N14_reaclib)*Y(C14)*state.rho - screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(Ca40)*state.rho - screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(Ca41)*state.rho - screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(Ca42)*state.rho - screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(Ca42)*state.rho - screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(Ca43)*state.rho - screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(Ca43)*state.rho - screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(Ca44)*state.rho - screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(Ca44)*state.rho - screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(Ca44)*state.rho - screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(Ca45)*state.rho - screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(Ca45)*state.rho - screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(Ca46)*state.rho - screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(Ca46)*state.rho - screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(Ca47)*state.rho - screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(Ca47)*state.rho - screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(Ca48)*state.rho - screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(Ca48)*state.rho - screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(Cl35)*state.rho - screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(Cl36)*state.rho - screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(Cl36)*state.rho - screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(Cl36)*state.rho - screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(Cl37)*state.rho - screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(Cl37)*state.rho - screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(Cl37)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho - screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(Co56)*state.rho - screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(Co56)*state.rho - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(Co58)*state.rho - screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(Co58)*state.rho - screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(Co58)*state.rho - screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(Co59)*state.rho - screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(Co59)*state.rho - screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(Co59)*state.rho - screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(Cr49)*state.rho - screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(Cr49)*state.rho - screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(Cr50)*state.rho - screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(Cr50)*state.rho - screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(Cr51)*state.rho - screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(Cr51)*state.rho - screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(Cr52)*state.rho - screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(Cr52)*state.rho - screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(Cr53)*state.rho - screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(Cr53)*state.rho - screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(Cr54)*state.rho - screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(Cr54)*state.rho - screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(Cr54)*state.rho - screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(Cu58)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(Cu60)*state.rho - screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(Cu61)*state.rho - screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(Cu62)*state.rho - screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(Cu63)*state.rho - screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(Cu63)*state.rho - screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(Cu64)*state.rho - screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(Cu64)*state.rho - screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(Cu64)*state.rho - screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(Cu65)*state.rho - screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(Cu65)*state.rho - screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(Cu65)*state.rho - screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(F19)*state.rho - screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(Fe53)*state.rho - screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(Fe53)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(Fe55)*state.rho - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(Fe57)*state.rho - screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(Fe57)*state.rho - screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(Fe57)*state.rho - screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(Fe58)*state.rho - screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(Fe58)*state.rho - screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(Fe58)*state.rho - screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(Ga62)*state.rho - screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(Ga63)*state.rho - screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(Ga64)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho - 0.5*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 0.5*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_to_d_He3_reaclib)*Y(He4)*state.rho - screened_rates(k_p_K39_to_Ca40_reaclib)*Y(K39)*state.rho - screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(K39)*state.rho - screened_rates(k_p_K40_to_Ca41_reaclib)*Y(K40)*state.rho - screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(K40)*state.rho - screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(K40)*state.rho - screened_rates(k_p_K41_to_Ca42_reaclib)*Y(K41)*state.rho - screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(K41)*state.rho - screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(K41)*state.rho - screened_rates(k_p_Li6_to_Be7_reaclib)*Y(Li6)*state.rho - screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(Li6)*state.rho - screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(Li7)*state.rho - screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(Li7)*state.rho - screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(Mg24)*state.rho - screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(Mg25)*state.rho - screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(Mg25)*state.rho - screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(Mg26)*state.rho - screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(Mg26)*state.rho - screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(Mg26)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(Mn52)*state.rho - screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(Mn52)*state.rho - screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(Mn53)*state.rho - screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(Mn53)*state.rho - screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(Mn54)*state.rho - screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(Mn54)*state.rho - screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*state.rho - screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(Mn55)*state.rho - screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(Mn55)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_p_N14_to_n_O14_reaclib)*Y(N14)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_n_O15_reaclib)*Y(N15)*state.rho - screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(Na21)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(Na22)*state.rho - screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(Na22)*state.rho - screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(Ne21)*state.rho - screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(Ne22)*state.rho - screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*state.rho - screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(Ne22)*state.rho - screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(Ni57)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(Ni59)*state.rho - screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(Ni59)*state.rho - screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(Ni60)*state.rho - screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(Ni60)*state.rho - screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(Ni60)*state.rho - screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(Ni61)*state.rho - screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(Ni61)*state.rho - screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(Ni61)*state.rho - screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(Ni62)*state.rho - screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(Ni62)*state.rho - screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(Ni62)*state.rho - screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(Ni63)*state.rho - screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(Ni63)*state.rho - screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(Ni64)*state.rho - screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(Ni64)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_n_F17_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_n_F18_reaclib)*Y(O18)*state.rho - screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(P32)*state.rho - screened_rates(k_p_P32_to_S33_reaclib)*Y(P32)*state.rho - screened_rates(k_p_P32_to_n_S32_reaclib)*Y(P32)*state.rho - screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(P33)*state.rho - screened_rates(k_p_P33_to_S34_reaclib)*Y(P33)*state.rho - screened_rates(k_p_P33_to_n_S33_reaclib)*Y(P33)*state.rho - screened_rates(k_p_S32_to_Cl33_reaclib)*Y(S32)*state.rho - screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(S32)*state.rho - screened_rates(k_p_S33_to_Cl34_reaclib)*Y(S33)*state.rho - screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(S33)*state.rho - screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(S33)*state.rho - screened_rates(k_p_S34_to_Cl35_reaclib)*Y(S34)*state.rho - screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(S34)*state.rho - screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(S34)*state.rho - screened_rates(k_p_S35_to_Cl36_reaclib)*Y(S35)*state.rho - screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(S35)*state.rho - screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(S35)*state.rho - screened_rates(k_p_S36_to_Cl37_reaclib)*Y(S36)*state.rho - screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(S36)*state.rho - screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(S36)*state.rho - screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(Sc43)*state.rho - screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(Sc43)*state.rho - screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(Sc44)*state.rho - screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(Sc44)*state.rho - screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(Sc45)*state.rho - screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(Sc45)*state.rho - screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(Sc46)*state.rho - screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(Sc46)*state.rho - screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(Sc47)*state.rho - screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(Sc47)*state.rho - screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(Sc48)*state.rho - screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(Sc48)*state.rho - screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(Sc48)*state.rho - screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(Sc49)*state.rho - screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(Sc49)*state.rho - screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(Sc49)*state.rho - screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(Si28)*state.rho - screened_rates(k_p_Si28_to_P29_reaclib)*Y(Si28)*state.rho - screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(Si29)*state.rho - screened_rates(k_p_Si29_to_P30_reaclib)*Y(Si29)*state.rho - screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(Si29)*state.rho - screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(Si30)*state.rho - screened_rates(k_p_Si30_to_P31_reaclib)*Y(Si30)*state.rho - screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(Si30)*state.rho - screened_rates(k_p_Si31_to_P32_reaclib)*Y(Si31)*state.rho - screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(Si31)*state.rho - screened_rates(k_p_Si32_to_P33_reaclib)*Y(Si32)*state.rho - screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(Si32)*state.rho - screened_rates(k_p_Ti45_to_V46_reaclib)*Y(Ti45)*state.rho - screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(Ti46)*state.rho - screened_rates(k_p_Ti46_to_V47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(Ti46)*state.rho - screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(Ti47)*state.rho - screened_rates(k_p_Ti47_to_V48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(Ti47)*state.rho - screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(Ti48)*state.rho - screened_rates(k_p_Ti48_to_V49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(Ti48)*state.rho - screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(Ti49)*state.rho - screened_rates(k_p_Ti49_to_V50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(Ti49)*state.rho - screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(Ti50)*state.rho - screened_rates(k_p_Ti50_to_V51_reaclib)*Y(Ti50)*state.rho - screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(Ti50)*state.rho - screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(Ti51)*state.rho - screened_rates(k_p_Ti51_to_V52_reaclib)*Y(Ti51)*state.rho - screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(Ti51)*state.rho - screened_rates(k_p_V47_to_Cr48_reaclib)*Y(V47)*state.rho - screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(V47)*state.rho - screened_rates(k_p_V48_to_Cr49_reaclib)*Y(V48)*state.rho - screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(V48)*state.rho - screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(V48)*state.rho - screened_rates(k_p_V49_to_Cr50_reaclib)*Y(V49)*state.rho - screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(V49)*state.rho - screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(V49)*state.rho - screened_rates(k_p_V50_to_Cr51_reaclib)*Y(V50)*state.rho - screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(V50)*state.rho - screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(V50)*state.rho - screened_rates(k_p_V51_to_Cr52_reaclib)*Y(V51)*state.rho - screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(V51)*state.rho - screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(V51)*state.rho - screened_rates(k_p_V52_to_Cr53_reaclib)*Y(V52)*state.rho - screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(V52)*state.rho - screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(V52)*state.rho - screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(Zn60)*state.rho - screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(Zn61)*state.rho - screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(Zn62)*state.rho - screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(Zn62)*state.rho - screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(Zn63)*state.rho - screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(Zn63)*state.rho - screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(Zn64)*state.rho - screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(Zn64)*state.rho - screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(Zn65)*state.rho - screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(Zn66)*state.rho - screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho + 2*screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H2)*state.rho - 1.0*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - 2.0*screened_rates(k_p_p_He4_to_He3_He3_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_p_p_to_d_reaclib_beta_pos)*Y(H1)*state.rho - 2.0*screened_rates(k_p_p_to_d_reaclib_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e - screened_rates(k_p_to_n_weaktab); + scratch = -screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho - screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar36_p_to_K37_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_p_to_K38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_p_to_K39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar39_p_to_K40_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Ar40_p_to_K41_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(Ar40)*state.rho - screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(B10)*state.rho - screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*state.rho - screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho - screened_rates(k_Be9_p_to_B10_reaclib)*Y(Be9)*state.rho - screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(Be9)*state.rho - screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(Be9)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(C13)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_C13_p_to_n_N13_reaclib)*Y(C13)*state.rho - screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(C14)*state.rho - screened_rates(k_C14_p_to_N15_reaclib)*Y(C14)*state.rho - screened_rates(k_C14_p_to_n_N14_reaclib)*Y(C14)*state.rho - screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(Ca47)*state.rho - screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(Ca47)*state.rho - screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(Ca48)*state.rho - screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(Ca48)*state.rho - screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(Co59)*state.rho - screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(Co59)*state.rho - screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(Co59)*state.rho - screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(Cu65)*state.rho - screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(Cu65)*state.rho - screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(Cu65)*state.rho - screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(F18)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(F19)*state.rho - screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(Ga64)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho - 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - 1.0*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - 0.5*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 0.5*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_He4_p_p_to_He3_He3_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_p_to_d_He3_reaclib)*Y(He4)*state.rho - screened_rates(k_K39_p_to_Ca40_reaclib)*Y(K39)*state.rho - screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(K39)*state.rho - screened_rates(k_K40_p_to_Ca41_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(K40)*state.rho - screened_rates(k_K41_p_to_Ca42_reaclib)*Y(K41)*state.rho - screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(K41)*state.rho - screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(K41)*state.rho - screened_rates(k_Li6_p_to_Be7_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(Li7)*state.rho - screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(Li7)*state.rho - screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(Mn55)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_p_to_n_O14_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_n_O15_reaclib)*Y(N15)*state.rho - screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(Ne22)*state.rho - screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*state.rho - screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(Ne22)*state.rho - screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(Ni63)*state.rho - screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(Ni63)*state.rho - screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(Ni64)*state.rho - screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(Ni64)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(O16)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_n_F17_reaclib)*Y(O17)*state.rho - screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_n_F18_reaclib)*Y(O18)*state.rho - screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho - screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_p_to_S33_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_p_to_n_S32_reaclib)*Y(P32)*state.rho - screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(P33)*state.rho - screened_rates(k_P33_p_to_S34_reaclib)*Y(P33)*state.rho - screened_rates(k_P33_p_to_n_S33_reaclib)*Y(P33)*state.rho - screened_rates(k_S32_p_to_Cl33_reaclib)*Y(S32)*state.rho - screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(S32)*state.rho - screened_rates(k_S33_p_to_Cl34_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(S33)*state.rho - screened_rates(k_S34_p_to_Cl35_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(S34)*state.rho - screened_rates(k_S35_p_to_Cl36_reaclib)*Y(S35)*state.rho - screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(S35)*state.rho - screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(S35)*state.rho - screened_rates(k_S36_p_to_Cl37_reaclib)*Y(S36)*state.rho - screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(S36)*state.rho - screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(S36)*state.rho - screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(Sc49)*state.rho - screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(Sc49)*state.rho - screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(Sc49)*state.rho - screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_p_to_P29_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_p_to_P30_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si30_p_to_P31_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si31_p_to_P32_reaclib)*Y(Si31)*state.rho - screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(Si31)*state.rho - screened_rates(k_Si32_p_to_P33_reaclib)*Y(Si32)*state.rho - screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(Si32)*state.rho - screened_rates(k_Ti45_p_to_V46_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_p_to_V47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_p_to_V48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_p_to_V49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_p_to_V50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti50_p_to_V51_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(Ti51)*state.rho - screened_rates(k_Ti51_p_to_V52_reaclib)*Y(Ti51)*state.rho - screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(Ti51)*state.rho - screened_rates(k_V47_p_to_Cr48_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(V47)*state.rho - screened_rates(k_V48_p_to_Cr49_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(V48)*state.rho - screened_rates(k_V49_p_to_Cr50_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(V49)*state.rho - screened_rates(k_V50_p_to_Cr51_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(V50)*state.rho - screened_rates(k_V51_p_to_Cr52_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(V51)*state.rho - screened_rates(k_V52_p_to_Cr53_reaclib)*Y(V52)*state.rho - screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(V52)*state.rho - screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(V52)*state.rho - screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(Zn65)*state.rho - screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(Zn66)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho + screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H2)*state.rho - screened_rates(k_p_n_to_d_reaclib)*Y(N)*state.rho - 1.0*screened_rates(k_p_p_n_to_p_d_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_p_p_to_d_beta_pos_reaclib)*Y(H1)*state.rho - 2.0*screened_rates(k_p_p_to_d_electron_capture_reaclib)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e - screened_rates(k_p_to_n_electron_capture_weaktab); jac.set(H1, H1, scratch); - scratch = screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(Li6)*state.rho + screened_rates(k_d_to_n_p_reaclib) - screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho + 2*screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(Li6)*state.rho + 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho + screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H1)*state.rho + screened_rates(k_d_to_n_p_reaclib); jac.set(H1, H2, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho + screened_rates(k_He3_to_p_d_reaclib) + screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He4)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He4)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho + screened_rates(k_He3_to_p_d_reaclib) + screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho; jac.set(H1, He3, scratch); - scratch = screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(Al25)*state.rho + screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(Al26)*state.rho + screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(Al27)*state.rho + screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(Ar36)*state.rho + screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(Ar37)*state.rho + screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(Ar38)*state.rho + screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(B10)*state.rho + screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(B11)*state.rho + screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(Be7)*state.rho + screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(Ca40)*state.rho + screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(Ca41)*state.rho + screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(Ca42)*state.rho + screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(Ca43)*state.rho + screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(Ca44)*state.rho + screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(Ca45)*state.rho + screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(Ca46)*state.rho + screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(Cl33)*state.rho + screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(Cl34)*state.rho + screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(Cl35)*state.rho + screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(Cl36)*state.rho + screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(Cl37)*state.rho + screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(Co53)*state.rho + screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(Co54)*state.rho + screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(Co56)*state.rho + screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(Co57)*state.rho + screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(Co58)*state.rho + screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(Co59)*state.rho + screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(Cr49)*state.rho + screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(Cr50)*state.rho + screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(Cr51)*state.rho + screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(Cr52)*state.rho + screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(Cu57)*state.rho + screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(Cu58)*state.rho + screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(Cu62)*state.rho + screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(Cu63)*state.rho + screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(Fe54)*state.rho + screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(Fe55)*state.rho + screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(Fe56)*state.rho + screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_He4_He4_to_p_Li7_reaclib)*Y(He4)*state.rho + screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(K37)*state.rho + screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(K38)*state.rho + screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(K39)*state.rho + screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(K40)*state.rho + screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(K41)*state.rho + screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(Li6)*state.rho + screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(Mg23)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(Mn50)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(Mn52)*state.rho + screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(Mn53)*state.rho + screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(Mn54)*state.rho + screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(Mn55)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(N14)*state.rho + screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(N15)*state.rho + screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(Na21)*state.rho + screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(Na22)*state.rho + screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(Na23)*state.rho + screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(Ne18)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(Ne20)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(Ni56)*state.rho + screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(Ni57)*state.rho + screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(Ni58)*state.rho + screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(Ni59)*state.rho + screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(Ni60)*state.rho + screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(Ni61)*state.rho + screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(Ni62)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(O15)*state.rho + screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(P29)*state.rho + screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(P30)*state.rho + screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(P31)*state.rho + screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(P32)*state.rho + screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(P33)*state.rho + screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(S32)*state.rho + screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(S33)*state.rho + screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(S34)*state.rho + screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(Sc43)*state.rho + screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(Sc44)*state.rho + screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(Sc45)*state.rho + screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(Sc46)*state.rho + screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(Sc47)*state.rho + screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(Sc48)*state.rho + screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(Si28)*state.rho + screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(Si29)*state.rho + screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(Si30)*state.rho + screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(Ti44)*state.rho + screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(Ti45)*state.rho + screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(Ti46)*state.rho + screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(Ti47)*state.rho + screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(Ti48)*state.rho + screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(Ti49)*state.rho + screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(V46)*state.rho + screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(V47)*state.rho + screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(V48)*state.rho + screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(V49)*state.rho + screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(V50)*state.rho + screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(V51)*state.rho + screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(Zn59)*state.rho + screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(Zn60)*state.rho + screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(Zn61)*state.rho + 1.0*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(H2)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_to_d_He3_reaclib)*Y(H1)*state.rho - 1.0*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) - screened_rates(k_p_p_He4_to_He3_He3_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho); + scratch = screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(Al25)*state.rho + screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(Al26)*state.rho + screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(Al27)*state.rho + screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(Ar38)*state.rho + screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(B10)*state.rho + screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(B11)*state.rho + screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(Be7)*state.rho + screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(C12)*state.rho + screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(Ca40)*state.rho + screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(Ca41)*state.rho + screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(Ca42)*state.rho + screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(Ca45)*state.rho + screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(Ca46)*state.rho + screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(Cl33)*state.rho + screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(Cl34)*state.rho + screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(Cl35)*state.rho + screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(Cl36)*state.rho + screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(Cl37)*state.rho + screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(Co53)*state.rho + screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(Co54)*state.rho + screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(Co57)*state.rho + screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(Co58)*state.rho + screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(Co59)*state.rho + screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(Cu57)*state.rho + screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(Cu58)*state.rho + screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(Cu63)*state.rho + screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(Fe56)*state.rho + screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - 1.0*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) - 1.0*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_He4_He4_to_p_Li7_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_p_p_to_He3_He3_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_p_to_d_He3_reaclib)*Y(H1)*state.rho + screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(K37)*state.rho + screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(K38)*state.rho + screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(K39)*state.rho + screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(K40)*state.rho + screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(K41)*state.rho + screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(Li6)*state.rho + screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(Mg23)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(Mn50)*state.rho + screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(Mn52)*state.rho + screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(Mn53)*state.rho + screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(Mn54)*state.rho + screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(Mn55)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho + screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(N14)*state.rho + screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(N15)*state.rho + screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(Na21)*state.rho + screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(Na22)*state.rho + screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(Ne18)*state.rho + screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(Ni61)*state.rho + screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(Ni62)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho + screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(O15)*state.rho + screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(O16)*state.rho + screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(P29)*state.rho + screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(P30)*state.rho + screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(P31)*state.rho + screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(P32)*state.rho + screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(P33)*state.rho + screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(S32)*state.rho + screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(S33)*state.rho + screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(S34)*state.rho + screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(Si28)*state.rho + screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(Si29)*state.rho + screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(Si30)*state.rho + screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(Ti44)*state.rho + screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(Ti45)*state.rho + screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(Ti46)*state.rho + screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(Ti47)*state.rho + screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(Ti48)*state.rho + screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(Ti49)*state.rho + screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(V46)*state.rho + screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(V47)*state.rho + screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(V48)*state.rho + screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(V49)*state.rho + screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(V50)*state.rho + screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(V51)*state.rho + screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(Zn59)*state.rho + screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(Zn60)*state.rho + screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(Zn61)*state.rho + 1.0*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(H2)*amrex::Math::powi<2>(state.rho); jac.set(H1, He4, scratch); - scratch = screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(He4)*state.rho + screened_rates(k_Li6_to_n_p_He4_reaclib) + screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(H2)*state.rho - screened_rates(k_p_Li6_to_Be7_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(He4)*state.rho + screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(H2)*state.rho - screened_rates(k_Li6_p_to_Be7_reaclib)*Y(H1)*state.rho - screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(H1)*state.rho + screened_rates(k_Li6_to_n_p_He4_reaclib); jac.set(H1, Li6, scratch); - scratch = screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(H1)*state.rho - screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(H1)*state.rho - screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(H1)*state.rho; jac.set(H1, Li7, scratch); - scratch = screened_rates(k_Be7_to_p_Li6_reaclib) + 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(He4)*state.rho + screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(N)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(He4)*state.rho + screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(N)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho + screened_rates(k_Be7_to_p_Li6_reaclib); jac.set(H1, Be7, scratch); - scratch = -screened_rates(k_p_Be9_to_B10_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be9_p_to_B10_reaclib)*Y(H1)*state.rho - screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(H1)*state.rho - screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(H1)*state.rho; jac.set(H1, Be9, scratch); - scratch = screened_rates(k_B8_to_p_Be7_reaclib) + screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(N)*state.rho + screened_rates(k_B8_to_p_Be7_reaclib); jac.set(H1, B8, scratch); - scratch = screened_rates(k_B10_to_p_Be9_reaclib) + screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(He4)*state.rho - screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(He4)*state.rho - screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(H1)*state.rho + screened_rates(k_B10_to_p_Be9_reaclib); jac.set(H1, B10, scratch); - scratch = screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(He4)*state.rho - screened_rates(k_p_B11_to_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(He4)*state.rho - screened_rates(k_B11_p_to_3He4_reaclib)*Y(H1)*state.rho - screened_rates(k_B11_p_to_C12_reaclib)*Y(H1)*state.rho; jac.set(H1, B11, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(Ne20)*state.rho + screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_C12_to_p_B11_reaclib) + screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(He4)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_C12_to_p_B11_reaclib) + screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(H1, C12, scratch); - scratch = -screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(H1)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_p_C13_to_n_N13_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(H1)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_C13_p_to_n_N13_reaclib)*Y(H1)*state.rho; jac.set(H1, C13, scratch); - scratch = -screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(H1)*state.rho - screened_rates(k_p_C14_to_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_C14_to_n_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(H1)*state.rho - screened_rates(k_C14_p_to_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_C14_p_to_n_N14_reaclib)*Y(H1)*state.rho; jac.set(H1, C14, scratch); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_to_p_C12_reaclib) + screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho + screened_rates(k_N13_to_p_C12_reaclib); jac.set(H1, N13, scratch); - scratch = screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(He4)*state.rho + screened_rates(k_N14_to_p_C13_reaclib) + screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N14_to_n_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(He4)*state.rho + screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_N14_p_to_n_O14_reaclib)*Y(H1)*state.rho + screened_rates(k_N14_to_p_C13_reaclib); jac.set(H1, N14, scratch); - scratch = screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(He4)*state.rho + screened_rates(k_N15_to_p_C14_reaclib) - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_n_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_n_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_N15_to_p_C14_reaclib); jac.set(H1, N15, scratch); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_to_p_N13_reaclib) + screened_rates(k_n_O14_to_p_N14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho + screened_rates(k_O14_n_to_p_N14_reaclib)*Y(N)*state.rho + screened_rates(k_O14_to_p_N13_reaclib); jac.set(H1, O14, scratch); - scratch = screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(He4)*state.rho + screened_rates(k_O15_to_p_N14_reaclib) + screened_rates(k_n_O15_to_p_N15_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(He4)*state.rho + screened_rates(k_O15_n_to_p_N15_reaclib)*Y(N)*state.rho + screened_rates(k_O15_to_p_N14_reaclib); jac.set(H1, O15, scratch); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_p_N15_reaclib) - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_to_p_N15_reaclib); jac.set(H1, O16, scratch); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_n_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_n_F17_reaclib)*Y(H1)*state.rho; jac.set(H1, O17, scratch); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_n_F18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_n_F18_reaclib)*Y(H1)*state.rho; jac.set(H1, O18, scratch); - scratch = screened_rates(k_F17_to_p_O16_reaclib) + screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho + screened_rates(k_n_F17_to_p_O17_reaclib)*Y(N)*state.rho - screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(He4)*state.rho + screened_rates(k_F17_n_to_p_O17_reaclib)*Y(N)*state.rho - screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_F17_to_p_O16_reaclib); jac.set(H1, F17, scratch); - scratch = screened_rates(k_F18_to_p_O17_reaclib) + screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_n_F18_to_p_O18_reaclib)*Y(N)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_F18_n_to_p_O18_reaclib)*Y(N)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_p_O17_reaclib); jac.set(H1, F18, scratch); - scratch = screened_rates(k_F19_to_p_O18_reaclib) + screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_p_O18_reaclib); jac.set(H1, F19, scratch); - scratch = screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_p_F17_reaclib) + screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(N)*state.rho + screened_rates(k_Ne18_to_p_F17_reaclib); jac.set(H1, Ne18, scratch); - scratch = screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_p_F18_reaclib) + screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(N)*state.rho + screened_rates(k_Ne19_to_p_F18_reaclib); jac.set(H1, Ne19, scratch); - scratch = screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne20_to_p_F19_reaclib) - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(C12)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_p_F19_reaclib); jac.set(H1, Ne20, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(H1)*state.rho; jac.set(H1, Ne21, scratch); - scratch = -screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(H1)*state.rho; jac.set(H1, Ne22, scratch); - scratch = screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Na21_to_p_Ne20_reaclib) + screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_Na21_to_p_Ne20_reaclib); jac.set(H1, Na21, scratch); - scratch = screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(He4)*state.rho + screened_rates(k_Na22_to_p_Ne21_reaclib) + screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(He4)*state.rho + screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(H1)*state.rho + screened_rates(k_Na22_to_p_Ne21_reaclib); jac.set(H1, Na22, scratch); - scratch = screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(He4)*state.rho + screened_rates(k_Na23_to_p_Ne22_reaclib) - screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(H1)*state.rho + screened_rates(k_Na23_to_p_Ne22_reaclib); jac.set(H1, Na23, scratch); - scratch = screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg23_to_p_Na22_reaclib) + screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(N)*state.rho + screened_rates(k_Mg23_to_p_Na22_reaclib); jac.set(H1, Mg23, scratch); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg24_to_p_Na23_reaclib) - screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg24_to_p_Na23_reaclib); jac.set(H1, Mg24, scratch); - scratch = -screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(H1)*state.rho; jac.set(H1, Mg25, scratch); - scratch = -screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(H1)*state.rho; jac.set(H1, Mg26, scratch); - scratch = screened_rates(k_Al25_to_p_Mg24_reaclib) + screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(He4)*state.rho + screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(N)*state.rho + screened_rates(k_Al25_to_p_Mg24_reaclib); jac.set(H1, Al25, scratch); - scratch = screened_rates(k_Al26_to_p_Mg25_reaclib) + screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(He4)*state.rho + screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(H1)*state.rho + screened_rates(k_Al26_to_p_Mg25_reaclib); jac.set(H1, Al26, scratch); - scratch = screened_rates(k_Al27_to_p_Mg26_reaclib) + screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(He4)*state.rho - screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho + screened_rates(k_Al27_to_p_Mg26_reaclib); jac.set(H1, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*state.rho + screened_rates(k_Si28_to_p_Al27_reaclib) - screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si28_to_P29_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_Si28_p_to_P29_reaclib)*Y(H1)*state.rho + screened_rates(k_Si28_to_p_Al27_reaclib); jac.set(H1, Si28, scratch); - scratch = screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si29_to_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_Si29_p_to_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(H1)*state.rho; jac.set(H1, Si29, scratch); - scratch = screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si30_to_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(He4)*state.rho - screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(H1)*state.rho - screened_rates(k_Si30_p_to_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(H1)*state.rho; jac.set(H1, Si30, scratch); - scratch = -screened_rates(k_p_Si31_to_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si31_p_to_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(H1)*state.rho; jac.set(H1, Si31, scratch); - scratch = -screened_rates(k_p_Si32_to_P33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si32_p_to_P33_reaclib)*Y(H1)*state.rho - screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(H1)*state.rho; jac.set(H1, Si32, scratch); - scratch = screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(He4)*state.rho + screened_rates(k_P29_to_p_Si28_reaclib) + screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(He4)*state.rho + screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(N)*state.rho + screened_rates(k_P29_to_p_Si28_reaclib); jac.set(H1, P29, scratch); - scratch = screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(He4)*state.rho + screened_rates(k_P30_to_p_Si29_reaclib) + screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(He4)*state.rho + screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(N)*state.rho + screened_rates(k_P30_to_p_Si29_reaclib); jac.set(H1, P30, scratch); - scratch = screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(He4)*state.rho + screened_rates(k_P31_to_p_Si30_reaclib) + screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(He4)*state.rho + screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho + screened_rates(k_P31_to_p_Si30_reaclib); jac.set(H1, P31, scratch); - scratch = screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(He4)*state.rho + screened_rates(k_P32_to_p_Si31_reaclib) + screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P32_to_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P32_to_n_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(He4)*state.rho + screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(H1)*state.rho - screened_rates(k_P32_p_to_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_P32_p_to_n_S32_reaclib)*Y(H1)*state.rho + screened_rates(k_P32_to_p_Si31_reaclib); jac.set(H1, P32, scratch); - scratch = screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(He4)*state.rho + screened_rates(k_P33_to_p_Si32_reaclib) - screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P33_to_S34_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P33_to_n_S33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(He4)*state.rho - screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(H1)*state.rho - screened_rates(k_P33_p_to_S34_reaclib)*Y(H1)*state.rho - screened_rates(k_P33_p_to_n_S33_reaclib)*Y(H1)*state.rho + screened_rates(k_P33_to_p_Si32_reaclib); jac.set(H1, P33, scratch); - scratch = screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(He4)*state.rho + screened_rates(k_S32_to_p_P31_reaclib) + screened_rates(k_n_S32_to_p_P32_reaclib)*Y(N)*state.rho - screened_rates(k_p_S32_to_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(He4)*state.rho + screened_rates(k_S32_n_to_p_P32_reaclib)*Y(N)*state.rho - screened_rates(k_S32_p_to_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(H1)*state.rho + screened_rates(k_S32_to_p_P31_reaclib); jac.set(H1, S32, scratch); - scratch = screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(He4)*state.rho + screened_rates(k_S33_to_p_P32_reaclib) + screened_rates(k_n_S33_to_p_P33_reaclib)*Y(N)*state.rho - screened_rates(k_p_S33_to_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(He4)*state.rho + screened_rates(k_S33_n_to_p_P33_reaclib)*Y(N)*state.rho - screened_rates(k_S33_p_to_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(H1)*state.rho + screened_rates(k_S33_to_p_P32_reaclib); jac.set(H1, S33, scratch); - scratch = screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(He4)*state.rho + screened_rates(k_S34_to_p_P33_reaclib) - screened_rates(k_p_S34_to_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(He4)*state.rho - screened_rates(k_S34_p_to_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(H1)*state.rho + screened_rates(k_S34_to_p_P33_reaclib); jac.set(H1, S34, scratch); - scratch = -screened_rates(k_p_S35_to_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S35_p_to_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(H1)*state.rho; jac.set(H1, S35, scratch); - scratch = -screened_rates(k_p_S36_to_Cl37_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S36_p_to_Cl37_reaclib)*Y(H1)*state.rho - screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(H1)*state.rho - screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(H1)*state.rho; jac.set(H1, S36, scratch); - scratch = screened_rates(k_Cl33_to_p_S32_reaclib) + screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(N)*state.rho + screened_rates(k_Cl33_to_p_S32_reaclib); jac.set(H1, Cl33, scratch); - scratch = screened_rates(k_Cl34_to_p_S33_reaclib) + screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(N)*state.rho + screened_rates(k_Cl34_to_p_S33_reaclib); jac.set(H1, Cl34, scratch); - scratch = screened_rates(k_Cl35_to_p_S34_reaclib) + screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(N)*state.rho - screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl35_to_p_S34_reaclib); jac.set(H1, Cl35, scratch); - scratch = screened_rates(k_Cl36_to_p_S35_reaclib) + screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(N)*state.rho - screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl36_to_p_S35_reaclib); jac.set(H1, Cl36, scratch); - scratch = screened_rates(k_Cl37_to_p_S36_reaclib) + screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl37_to_p_S36_reaclib); jac.set(H1, Cl37, scratch); - scratch = screened_rates(k_Ar36_to_p_Cl35_reaclib) + screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar36_to_K37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(He4)*state.rho + screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar36_p_to_K37_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar36_to_p_Cl35_reaclib); jac.set(H1, Ar36, scratch); - scratch = screened_rates(k_Ar37_to_p_Cl36_reaclib) + screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar37_to_K38_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(He4)*state.rho + screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar37_p_to_K38_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar37_to_p_Cl36_reaclib); jac.set(H1, Ar37, scratch); - scratch = screened_rates(k_Ar38_to_p_Cl37_reaclib) + screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar38_to_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar38_p_to_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar38_to_p_Cl37_reaclib); jac.set(H1, Ar38, scratch); - scratch = -screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar39_to_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar39_p_to_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(H1)*state.rho; jac.set(H1, Ar39, scratch); - scratch = -screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar40_to_K41_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar40_p_to_K41_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(H1)*state.rho; jac.set(H1, Ar40, scratch); - scratch = screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(He4)*state.rho + screened_rates(k_K37_to_p_Ar36_reaclib) + screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(He4)*state.rho + screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(N)*state.rho + screened_rates(k_K37_to_p_Ar36_reaclib); jac.set(H1, K37, scratch); - scratch = screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(He4)*state.rho + screened_rates(k_K38_to_p_Ar37_reaclib) + screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(He4)*state.rho + screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(N)*state.rho + screened_rates(k_K38_to_p_Ar37_reaclib); jac.set(H1, K38, scratch); - scratch = screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(He4)*state.rho + screened_rates(k_K39_to_p_Ar38_reaclib) + screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_p_K39_to_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(He4)*state.rho + screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_K39_p_to_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(H1)*state.rho + screened_rates(k_K39_to_p_Ar38_reaclib); jac.set(H1, K39, scratch); - scratch = screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(He4)*state.rho + screened_rates(k_K40_to_p_Ar39_reaclib) + screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_p_K40_to_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(He4)*state.rho + screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_K40_p_to_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(H1)*state.rho + screened_rates(k_K40_to_p_Ar39_reaclib); jac.set(H1, K40, scratch); - scratch = screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(He4)*state.rho + screened_rates(k_K41_to_p_Ar40_reaclib) - screened_rates(k_p_K41_to_Ca42_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(He4)*state.rho - screened_rates(k_K41_p_to_Ca42_reaclib)*Y(H1)*state.rho - screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(H1)*state.rho - screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(H1)*state.rho + screened_rates(k_K41_to_p_Ar40_reaclib); jac.set(H1, K41, scratch); - scratch = screened_rates(k_Ca40_to_p_K39_reaclib) + screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(He4)*state.rho + screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(N)*state.rho - screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca40_to_p_K39_reaclib); jac.set(H1, Ca40, scratch); - scratch = screened_rates(k_Ca41_to_p_K40_reaclib) + screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(He4)*state.rho + screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(N)*state.rho - screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca41_to_p_K40_reaclib); jac.set(H1, Ca41, scratch); - scratch = screened_rates(k_Ca42_to_p_K41_reaclib) + screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca42_to_p_K41_reaclib); jac.set(H1, Ca42, scratch); - scratch = screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(H1)*state.rho; jac.set(H1, Ca43, scratch); - scratch = screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(H1)*state.rho; jac.set(H1, Ca44, scratch); - scratch = screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(H1)*state.rho; jac.set(H1, Ca45, scratch); - scratch = screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(H1)*state.rho; jac.set(H1, Ca46, scratch); - scratch = -screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(H1)*state.rho; jac.set(H1, Ca47, scratch); - scratch = -screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(H1)*state.rho; jac.set(H1, Ca48, scratch); - scratch = screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc43_to_p_Ca42_reaclib) + screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc43_to_p_Ca42_reaclib); jac.set(H1, Sc43, scratch); - scratch = screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc44_to_p_Ca43_reaclib) + screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc44_to_p_Ca43_reaclib); jac.set(H1, Sc44, scratch); - scratch = screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc45_to_p_Ca44_reaclib) + screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc45_to_p_Ca44_reaclib); jac.set(H1, Sc45, scratch); - scratch = screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc46_to_p_Ca45_reaclib) + screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc46_to_p_Ca45_reaclib); jac.set(H1, Sc46, scratch); - scratch = screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc47_to_p_Ca46_reaclib) + screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc47_to_p_Ca46_reaclib); jac.set(H1, Sc47, scratch); - scratch = screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc48_to_p_Ca47_reaclib) + screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(N)*state.rho - screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc48_to_p_Ca47_reaclib); jac.set(H1, Sc48, scratch); - scratch = screened_rates(k_Sc49_to_p_Ca48_reaclib) - screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc49_to_p_Ca48_reaclib); jac.set(H1, Sc49, scratch); - scratch = screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti44_to_p_Sc43_reaclib) + screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(N)*state.rho + screened_rates(k_Ti44_to_p_Sc43_reaclib); jac.set(H1, Ti44, scratch); - scratch = screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti45_to_p_Sc44_reaclib) + screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti45_to_V46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_Ti45_p_to_V46_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti45_to_p_Sc44_reaclib); jac.set(H1, Ti45, scratch); - scratch = screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti46_to_p_Sc45_reaclib) + screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti46_to_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti46_p_to_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti46_to_p_Sc45_reaclib); jac.set(H1, Ti46, scratch); - scratch = screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti47_to_p_Sc46_reaclib) + screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti47_to_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti47_p_to_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti47_to_p_Sc46_reaclib); jac.set(H1, Ti47, scratch); - scratch = screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti48_to_p_Sc47_reaclib) + screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti48_to_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti48_p_to_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti48_to_p_Sc47_reaclib); jac.set(H1, Ti48, scratch); - scratch = screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti49_to_p_Sc48_reaclib) + screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti49_to_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti49_p_to_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti49_to_p_Sc48_reaclib); jac.set(H1, Ti49, scratch); - scratch = screened_rates(k_Ti50_to_p_Sc49_reaclib) - screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti50_to_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti50_p_to_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti50_to_p_Sc49_reaclib); jac.set(H1, Ti50, scratch); - scratch = -screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti51_to_V52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti51_p_to_V52_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(H1)*state.rho; jac.set(H1, Ti51, scratch); - scratch = screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(He4)*state.rho + screened_rates(k_V46_to_p_Ti45_reaclib) + screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(He4)*state.rho + screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(N)*state.rho + screened_rates(k_V46_to_p_Ti45_reaclib); jac.set(H1, V46, scratch); - scratch = screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(He4)*state.rho + screened_rates(k_V47_to_p_Ti46_reaclib) + screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_p_V47_to_Cr48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(He4)*state.rho + screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_V47_p_to_Cr48_reaclib)*Y(H1)*state.rho - screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(H1)*state.rho + screened_rates(k_V47_to_p_Ti46_reaclib); jac.set(H1, V47, scratch); - scratch = screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(He4)*state.rho + screened_rates(k_V48_to_p_Ti47_reaclib) + screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_p_V48_to_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(He4)*state.rho + screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_V48_p_to_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(H1)*state.rho + screened_rates(k_V48_to_p_Ti47_reaclib); jac.set(H1, V48, scratch); - scratch = screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(He4)*state.rho + screened_rates(k_V49_to_p_Ti48_reaclib) + screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_p_V49_to_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(He4)*state.rho + screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_V49_p_to_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(H1)*state.rho + screened_rates(k_V49_to_p_Ti48_reaclib); jac.set(H1, V49, scratch); - scratch = screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(He4)*state.rho + screened_rates(k_V50_to_p_Ti49_reaclib) + screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_p_V50_to_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(He4)*state.rho + screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_V50_p_to_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(H1)*state.rho + screened_rates(k_V50_to_p_Ti49_reaclib); jac.set(H1, V50, scratch); - scratch = screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(He4)*state.rho + screened_rates(k_V51_to_p_Ti50_reaclib) + screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(N)*state.rho - screened_rates(k_p_V51_to_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(He4)*state.rho + screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(N)*state.rho - screened_rates(k_V51_p_to_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(H1)*state.rho + screened_rates(k_V51_to_p_Ti50_reaclib); jac.set(H1, V51, scratch); - scratch = screened_rates(k_V52_to_p_Ti51_reaclib) - screened_rates(k_p_V52_to_Cr53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V52_p_to_Cr53_reaclib)*Y(H1)*state.rho - screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(H1)*state.rho + screened_rates(k_V52_to_p_Ti51_reaclib); jac.set(H1, V52, scratch); - scratch = screened_rates(k_Cr48_to_p_V47_reaclib) + screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(N)*state.rho + screened_rates(k_Cr48_to_p_V47_reaclib); jac.set(H1, Cr48, scratch); - scratch = screened_rates(k_Cr49_to_p_V48_reaclib) + screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(N)*state.rho - screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr49_to_p_V48_reaclib); jac.set(H1, Cr49, scratch); - scratch = screened_rates(k_Cr50_to_p_V49_reaclib) + screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(N)*state.rho - screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr50_to_p_V49_reaclib); jac.set(H1, Cr50, scratch); - scratch = screened_rates(k_Cr51_to_p_V50_reaclib) + screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(N)*state.rho - screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr51_to_p_V50_reaclib); jac.set(H1, Cr51, scratch); - scratch = screened_rates(k_Cr52_to_p_V51_reaclib) + screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(N)*state.rho - screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr52_to_p_V51_reaclib); jac.set(H1, Cr52, scratch); - scratch = screened_rates(k_Cr53_to_p_V52_reaclib) - screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr53_to_p_V52_reaclib); jac.set(H1, Cr53, scratch); - scratch = -screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(H1)*state.rho; jac.set(H1, Cr54, scratch); - scratch = screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn50_to_p_Cr49_reaclib) + screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(N)*state.rho + screened_rates(k_Mn50_to_p_Cr49_reaclib); jac.set(H1, Mn50, scratch); - scratch = screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn51_to_p_Cr50_reaclib) + screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn51_to_p_Cr50_reaclib); jac.set(H1, Mn51, scratch); - scratch = screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn52_to_p_Cr51_reaclib) + screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn52_to_p_Cr51_reaclib); jac.set(H1, Mn52, scratch); - scratch = screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn53_to_p_Cr52_reaclib) + screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn53_to_p_Cr52_reaclib); jac.set(H1, Mn53, scratch); - scratch = screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn54_to_p_Cr53_reaclib) + screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn54_to_p_Cr53_reaclib); jac.set(H1, Mn54, scratch); - scratch = screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn55_to_p_Cr54_reaclib) - screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn55_to_p_Cr54_reaclib); jac.set(H1, Mn55, scratch); - scratch = screened_rates(k_Fe52_to_p_Mn51_reaclib) + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe52_to_p_Mn51_reaclib); jac.set(H1, Fe52, scratch); - scratch = screened_rates(k_Fe53_to_p_Mn52_reaclib) + screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe53_to_p_Mn52_reaclib); jac.set(H1, Fe53, scratch); - scratch = screened_rates(k_Fe54_to_p_Mn53_reaclib) + screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe54_to_p_Mn53_reaclib); jac.set(H1, Fe54, scratch); - scratch = screened_rates(k_Fe55_to_p_Mn54_reaclib) + screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe55_to_p_Mn54_reaclib); jac.set(H1, Fe55, scratch); - scratch = screened_rates(k_Fe56_to_p_Mn55_reaclib) + screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe56_to_p_Mn55_reaclib); jac.set(H1, Fe56, scratch); - scratch = -screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(H1)*state.rho; jac.set(H1, Fe57, scratch); - scratch = -screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(H1)*state.rho; jac.set(H1, Fe58, scratch); - scratch = screened_rates(k_Co53_to_p_Fe52_reaclib) + screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(He4)*state.rho + screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(N)*state.rho + screened_rates(k_Co53_to_p_Fe52_reaclib); jac.set(H1, Co53, scratch); - scratch = screened_rates(k_Co54_to_p_Fe53_reaclib) + screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(He4)*state.rho + screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(N)*state.rho + screened_rates(k_Co54_to_p_Fe53_reaclib); jac.set(H1, Co54, scratch); - scratch = screened_rates(k_Co55_to_p_Fe54_reaclib) + screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Co55_to_p_Fe54_reaclib); jac.set(H1, Co55, scratch); - scratch = screened_rates(k_Co56_to_p_Fe55_reaclib) + screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(He4)*state.rho + screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Co56_to_p_Fe55_reaclib); jac.set(H1, Co56, scratch); - scratch = screened_rates(k_Co57_to_p_Fe56_reaclib) + screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(He4)*state.rho + screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(H1)*state.rho + screened_rates(k_Co57_to_p_Fe56_reaclib); jac.set(H1, Co57, scratch); - scratch = screened_rates(k_Co58_to_p_Fe57_reaclib) + screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(He4)*state.rho + screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(H1)*state.rho + screened_rates(k_Co58_to_p_Fe57_reaclib); jac.set(H1, Co58, scratch); - scratch = screened_rates(k_Co59_to_p_Fe58_reaclib) + screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(He4)*state.rho - screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(H1)*state.rho - screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(H1)*state.rho + screened_rates(k_Co59_to_p_Fe58_reaclib); jac.set(H1, Co59, scratch); - scratch = screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni56_to_p_Co55_reaclib) + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni56_to_p_Co55_reaclib); jac.set(H1, Ni56, scratch); - scratch = screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni57_to_p_Co56_reaclib) + screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni57_to_p_Co56_reaclib); jac.set(H1, Ni57, scratch); - scratch = screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni58_to_p_Co57_reaclib) + screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni58_to_p_Co57_reaclib); jac.set(H1, Ni58, scratch); - scratch = screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni59_to_p_Co58_reaclib) + screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni59_to_p_Co58_reaclib); jac.set(H1, Ni59, scratch); - scratch = screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni60_to_p_Co59_reaclib) - screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni60_to_p_Co59_reaclib); jac.set(H1, Ni60, scratch); - scratch = screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(H1)*state.rho; jac.set(H1, Ni61, scratch); - scratch = screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(H1)*state.rho; jac.set(H1, Ni62, scratch); - scratch = -screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(H1)*state.rho; jac.set(H1, Ni63, scratch); - scratch = -screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(H1)*state.rho; jac.set(H1, Ni64, scratch); - scratch = screened_rates(k_Cu57_to_p_Ni56_reaclib) + screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(N)*state.rho + screened_rates(k_Cu57_to_p_Ni56_reaclib); jac.set(H1, Cu57, scratch); - scratch = screened_rates(k_Cu58_to_p_Ni57_reaclib) + screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu58_to_p_Ni57_reaclib); jac.set(H1, Cu58, scratch); - scratch = screened_rates(k_Cu59_to_p_Ni58_reaclib) + screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_p_Ni58_reaclib); jac.set(H1, Cu59, scratch); - scratch = screened_rates(k_Cu60_to_p_Ni59_reaclib) + screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu60_to_p_Ni59_reaclib); jac.set(H1, Cu60, scratch); - scratch = screened_rates(k_Cu61_to_p_Ni60_reaclib) + screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu61_to_p_Ni60_reaclib); jac.set(H1, Cu61, scratch); - scratch = screened_rates(k_Cu62_to_p_Ni61_reaclib) + screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu62_to_p_Ni61_reaclib); jac.set(H1, Cu62, scratch); - scratch = screened_rates(k_Cu63_to_p_Ni62_reaclib) + screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(N)*state.rho - screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu63_to_p_Ni62_reaclib); jac.set(H1, Cu63, scratch); - scratch = screened_rates(k_Cu64_to_p_Ni63_reaclib) + screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(N)*state.rho - screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu64_to_p_Ni63_reaclib); jac.set(H1, Cu64, scratch); - scratch = screened_rates(k_Cu65_to_p_Ni64_reaclib) - screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu65_to_p_Ni64_reaclib); jac.set(H1, Cu65, scratch); - scratch = screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn59_to_p_Cu58_reaclib) + screened_rates(k_Zn59_to_p_Ni58_reaclib) + screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(N)*state.rho + screened_rates(k_Zn59_to_p_Cu58_reaclib) + screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib); jac.set(H1, Zn59, scratch); - scratch = screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn60_to_p_Cu59_reaclib) + screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn60_to_p_Cu59_reaclib); jac.set(H1, Zn60, scratch); - scratch = screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn61_to_p_Cu60_reaclib) + screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn61_to_p_Cu60_reaclib); jac.set(H1, Zn61, scratch); - scratch = screened_rates(k_Zn62_to_p_Cu61_reaclib) + screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(N)*state.rho - screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn62_to_p_Cu61_reaclib); jac.set(H1, Zn62, scratch); - scratch = screened_rates(k_Zn63_to_p_Cu62_reaclib) + screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(N)*state.rho - screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn63_to_p_Cu62_reaclib); jac.set(H1, Zn63, scratch); - scratch = screened_rates(k_Zn64_to_p_Cu63_reaclib) + screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(N)*state.rho - screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn64_to_p_Cu63_reaclib); jac.set(H1, Zn64, scratch); - scratch = screened_rates(k_Zn65_to_p_Cu64_reaclib) + screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(N)*state.rho - screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn65_to_p_Cu64_reaclib); jac.set(H1, Zn65, scratch); - scratch = screened_rates(k_Zn66_to_p_Cu65_reaclib) - screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn66_to_p_Cu65_reaclib); jac.set(H1, Zn66, scratch); - scratch = screened_rates(k_Ga62_to_p_Zn61_reaclib) + screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(N)*state.rho - screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga62_to_p_Zn61_reaclib); jac.set(H1, Ga62, scratch); - scratch = screened_rates(k_Ga63_to_p_Zn62_reaclib) + screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(N)*state.rho - screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga63_to_p_Zn62_reaclib); jac.set(H1, Ga63, scratch); - scratch = screened_rates(k_Ga64_to_p_Zn63_reaclib) + screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(N)*state.rho - screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga64_to_p_Zn63_reaclib); jac.set(H1, Ga64, scratch); - scratch = screened_rates(k_Ge63_to_p_Ga62_reaclib) + screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(N)*state.rho + screened_rates(k_Ge63_to_p_Ga62_reaclib); jac.set(H1, Ge63, scratch); - scratch = screened_rates(k_Ge64_to_p_Ga63_reaclib) + screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(N)*state.rho + screened_rates(k_Ge64_to_p_Ga63_reaclib); jac.set(H1, Ge64, scratch); - scratch = screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(Be7)*state.rho + 2.0*screened_rates(k_n_He3_to_d_d_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N14)*state.rho + screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N15)*state.rho + 0.5*screened_rates(k_n_p_p_to_p_d_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_p_to_d_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(Be7)*state.rho + 2.0*screened_rates(k_He3_n_to_d_d_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N14)*state.rho + screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N15)*state.rho + screened_rates(k_p_n_to_d_reaclib)*Y(H1)*state.rho + 0.5*screened_rates(k_p_p_n_to_p_d_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho); jac.set(H2, N, scratch); - scratch = 1.0*screened_rates(k_n_p_p_to_p_d_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_p_to_d_reaclib)*Y(N)*state.rho + screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(Be9)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_He4_to_d_He3_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(Li7)*state.rho - screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho - screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H2)*state.rho + 1.0*screened_rates(k_p_p_to_d_reaclib_beta_pos)*Y(H1)*state.rho + 1.0*screened_rates(k_p_p_to_d_reaclib_electron_capture)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; + scratch = screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(Be9)*state.rho + 0.5*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_p_to_d_He3_reaclib)*Y(He4)*state.rho + screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(Li7)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho - screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H2)*state.rho + screened_rates(k_p_n_to_d_reaclib)*Y(N)*state.rho + 1.0*screened_rates(k_p_p_n_to_p_d_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_p_p_to_d_beta_pos_reaclib)*Y(H1)*state.rho + 1.0*screened_rates(k_p_p_to_d_electron_capture_reaclib)*Y(H1)*amrex::Math::powi<2>(state.rho)*state.y_e; jac.set(H2, H1, scratch); - scratch = -screened_rates(k_He4_d_to_Li6_reaclib)*Y(He4)*state.rho - screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_d_C13_to_n_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_d_C14_to_n_N15_reaclib)*Y(C14)*state.rho - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho - 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(Li6)*state.rho - screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(Li6)*state.rho - screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(Li7)*state.rho - 2.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho - 2.0*screened_rates(k_d_d_to_n_He3_reaclib)*Y(H2)*state.rho - screened_rates(k_d_to_n_p_reaclib) - screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho - screened_rates(k_p_d_to_n_p_p_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_C13_d_to_n_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_C14_d_to_n_N15_reaclib)*Y(C14)*state.rho - screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(Li7)*state.rho - 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_d_He4_to_Li6_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho - 2.0*screened_rates(k_d_d_to_n_He3_reaclib)*Y(H2)*state.rho - screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho - screened_rates(k_d_p_to_n_p_p_reaclib)*Y(H1)*state.rho - screened_rates(k_d_to_n_p_reaclib); jac.set(H2, H2, scratch); - scratch = screened_rates(k_He3_to_p_d_reaclib) - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho + 2.0*screened_rates(k_n_He3_to_d_d_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho + 2.0*screened_rates(k_He3_n_to_d_d_reaclib)*Y(N)*state.rho + screened_rates(k_He3_to_p_d_reaclib); jac.set(H2, He3, scratch); - scratch = -screened_rates(k_He4_d_to_Li6_reaclib)*Y(H2)*state.rho + 2.0*screened_rates(k_He4_to_d_d_reaclib) - 1.0*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(H2)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_He4_to_d_He3_reaclib)*Y(H1)*state.rho; + scratch = 1.0*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_p_to_d_He3_reaclib)*Y(H1)*state.rho + 2.0*screened_rates(k_He4_to_d_d_reaclib) - 1.0*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(H2)*amrex::Math::powi<2>(state.rho) - screened_rates(k_d_He4_to_Li6_reaclib)*Y(H2)*state.rho; jac.set(H2, He4, scratch); - scratch = screened_rates(k_Li6_to_He4_d_reaclib) - screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(H2)*state.rho - screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(H2)*state.rho - screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(H2)*state.rho + screened_rates(k_Li6_to_He4_d_reaclib); jac.set(H2, Li6, scratch); - scratch = -screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(H1)*state.rho; jac.set(H2, Li7, scratch); - scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(N)*state.rho; jac.set(H2, Be7, scratch); - scratch = screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(H1)*state.rho; jac.set(H2, Be9, scratch); jac.set(H2, B8, 0.0); @@ -10143,18 +7952,18 @@ void jac_nuc(const burn_t& state, jac.set(H2, C12, 0.0); - scratch = -screened_rates(k_d_C13_to_n_N14_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_C13_d_to_n_N14_reaclib)*Y(H2)*state.rho; jac.set(H2, C13, scratch); - scratch = -screened_rates(k_d_C14_to_n_N15_reaclib)*Y(H2)*state.rho; + scratch = -screened_rates(k_C14_d_to_n_N15_reaclib)*Y(H2)*state.rho; jac.set(H2, C14, scratch); jac.set(H2, N13, 0.0); - scratch = screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N)*state.rho; jac.set(H2, N14, scratch); - scratch = screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N)*state.rho; jac.set(H2, N15, scratch); jac.set(H2, O14, 0.0); @@ -10441,28 +8250,28 @@ void jac_nuc(const burn_t& state, jac.set(H2, Ge64, 0.0); - scratch = -screened_rates(k_n_He3_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_n_He3_to_d_d_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho); + scratch = -screened_rates(k_He3_n_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_n_to_d_d_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho); jac.set(He3, N, scratch); - scratch = 0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_p_He4_to_d_He3_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(Li6)*state.rho + screened_rates(k_p_d_to_He3_reaclib)*Y(H2)*state.rho + 0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) + 2.0*screened_rates(k_p_p_He4_to_He3_He3_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) + 0.5*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) + 2.0*screened_rates(k_He4_p_p_to_He3_He3_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_p_to_d_He3_reaclib)*Y(He4)*state.rho + screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(Li6)*state.rho + screened_rates(k_d_p_to_He3_reaclib)*Y(H2)*state.rho; jac.set(He3, H1, scratch); - scratch = -screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_d_d_to_n_He3_reaclib)*Y(H2)*state.rho + screened_rates(k_p_d_to_He3_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_d_d_to_n_He3_reaclib)*Y(H2)*state.rho + screened_rates(k_d_p_to_He3_reaclib)*Y(H1)*state.rho; jac.set(He3, H2, scratch); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho - 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_He3_to_p_d_reaclib) - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He4)*state.rho - screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_n_He3_to_He4_reaclib)*Y(N)*state.rho - screened_rates(k_n_He3_to_d_d_reaclib)*Y(N)*state.rho - screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho - 2.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He4)*state.rho - screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_He3_n_to_He4_reaclib)*Y(N)*state.rho - screened_rates(k_He3_n_to_d_d_reaclib)*Y(N)*state.rho - screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho - screened_rates(k_He3_to_p_d_reaclib) - screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho; jac.set(He3, He3, scratch); - scratch = -screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He3)*state.rho + screened_rates(k_He4_to_n_He3_reaclib) + 1.0*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + screened_rates(k_p_He4_to_d_He3_reaclib)*Y(H1)*state.rho + 0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) + screened_rates(k_p_p_He4_to_He3_He3_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + 0.5*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) + screened_rates(k_He4_p_p_to_He3_He3_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_p_to_d_He3_reaclib)*Y(H1)*state.rho + screened_rates(k_He4_to_n_He3_reaclib); jac.set(He3, He4, scratch); - scratch = screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(H1)*state.rho; jac.set(He3, Li6, scratch); - scratch = -screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho; + scratch = -screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho; jac.set(He3, Li7, scratch); - scratch = screened_rates(k_Be7_to_He4_He3_reaclib) - screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho + screened_rates(k_Be7_to_He4_He3_reaclib); jac.set(He3, Be7, scratch); jac.set(He3, Be9, 0.0); @@ -10769,510 +8578,510 @@ void jac_nuc(const burn_t& state, jac.set(He3, Ge64, 0.0); - scratch = screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(Al25)*state.rho + screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(Al26)*state.rho + screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(Ar36)*state.rho + screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(Ar37)*state.rho + screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(Ar38)*state.rho + screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(Ar39)*state.rho + screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(B10)*state.rho + 2.0*screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(B8)*state.rho + 2.0*screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(C12)*state.rho + screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(Ca40)*state.rho + screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(Ca41)*state.rho + screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(Ca42)*state.rho + screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(Ca43)*state.rho + screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(Cl33)*state.rho + screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(Cl34)*state.rho + screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(Cl36)*state.rho + screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(Co53)*state.rho + screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(Co54)*state.rho + screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(Co55)*state.rho + screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(Co57)*state.rho + screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(Co58)*state.rho + screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(Cr48)*state.rho + screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(Cr49)*state.rho + screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(Cr50)*state.rho + screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(Cr51)*state.rho + screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(Cr52)*state.rho + screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(Cu57)*state.rho + screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(Cu58)*state.rho + screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(Cu60)*state.rho + screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(Cu61)*state.rho + screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(Cu62)*state.rho + screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(F17)*state.rho + screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(F18)*state.rho + screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(Fe52)*state.rho + screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(Fe53)*state.rho + screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(Fe54)*state.rho + screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(Fe55)*state.rho + screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(Fe56)*state.rho + screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(Fe57)*state.rho + screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(Ga62)*state.rho + screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(Ga63)*state.rho + screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(Ga64)*state.rho + screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(Ge63)*state.rho + screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(Ge64)*state.rho + screened_rates(k_n_He3_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_n_He4_He4_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(K37)*state.rho + screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(K38)*state.rho + screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(K39)*state.rho + screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(K40)*state.rho + screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho + screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(Mg25)*state.rho + screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(Mn50)*state.rho + screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(Mn51)*state.rho + screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(Mn52)*state.rho + screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(Mn53)*state.rho + screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(Mn54)*state.rho + screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(Mn55)*state.rho + screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N13)*state.rho + screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N14)*state.rho + screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(Na21)*state.rho + screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(Na22)*state.rho + screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(Ne18)*state.rho + screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(Ne19)*state.rho + screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(Ne21)*state.rho + screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho + screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho + screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho + screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(Ni59)*state.rho + screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(Ni60)*state.rho + screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(Ni61)*state.rho + screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(O15)*state.rho + screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(O16)*state.rho + screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(O17)*state.rho + screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(P29)*state.rho + screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(P30)*state.rho + screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(S32)*state.rho + screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(S33)*state.rho + screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(S34)*state.rho + screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(S35)*state.rho + screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(Sc43)*state.rho + screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(Sc44)*state.rho + screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(Si28)*state.rho + screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(Si29)*state.rho + screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(Ti44)*state.rho + screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(Ti45)*state.rho + screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(Ti46)*state.rho + screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(Ti47)*state.rho + screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(Ti48)*state.rho + screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(Ti49)*state.rho + screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(Ti50)*state.rho + screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(Ti51)*state.rho + screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(V46)*state.rho + screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(V47)*state.rho + screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(V48)*state.rho + screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(V49)*state.rho + screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(V50)*state.rho + screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(V51)*state.rho + screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(V52)*state.rho + screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(Zn59)*state.rho + screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho + screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(Zn61)*state.rho + screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(Zn62)*state.rho + screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(Zn63)*state.rho + screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(Zn64)*state.rho + screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(Zn65)*state.rho + screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(Zn66)*state.rho - screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho); + scratch = screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(Al25)*state.rho + screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(Al26)*state.rho + screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(Ar39)*state.rho + screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(B10)*state.rho + 2.0*screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(B8)*state.rho + 2.0*screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(C12)*state.rho + screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(Ca40)*state.rho + screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(Ca41)*state.rho + screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(Ca42)*state.rho + screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(Cl33)*state.rho + screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(Cl34)*state.rho + screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(Cl36)*state.rho + screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(Co53)*state.rho + screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(Co54)*state.rho + screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(Co57)*state.rho + screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(Co58)*state.rho + screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(Cu57)*state.rho + screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(Cu58)*state.rho + screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(Cu62)*state.rho + screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(F17)*state.rho + screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(F18)*state.rho + screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(Ga62)*state.rho + screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(Ga64)*state.rho + screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(Ge63)*state.rho + screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(Ge64)*state.rho + screened_rates(k_He3_n_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_He4_n_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(K37)*state.rho + screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(K38)*state.rho + screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(K39)*state.rho + screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(K40)*state.rho + screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho + screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(Mn50)*state.rho + screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(Mn51)*state.rho + screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(Mn52)*state.rho + screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(Mn53)*state.rho + screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(Mn54)*state.rho + screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(Mn55)*state.rho + screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N13)*state.rho + screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N14)*state.rho + screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(Na21)*state.rho + screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(Na22)*state.rho + screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(Ne18)*state.rho + screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(Ne19)*state.rho + screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(Ne21)*state.rho + screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(Ni61)*state.rho + screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(O15)*state.rho + screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(O16)*state.rho + screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(O17)*state.rho + screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(P29)*state.rho + screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(P30)*state.rho + screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(S32)*state.rho + screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(S33)*state.rho + screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(S34)*state.rho + screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(S35)*state.rho + screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(Si28)*state.rho + screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(Si29)*state.rho + screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(Ti44)*state.rho + screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(Ti45)*state.rho + screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(Ti46)*state.rho + screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(Ti47)*state.rho + screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(Ti48)*state.rho + screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(Ti49)*state.rho + screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(Ti50)*state.rho + screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(Ti51)*state.rho + screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(V46)*state.rho + screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(V47)*state.rho + screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(V48)*state.rho + screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(V49)*state.rho + screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(V50)*state.rho + screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(V51)*state.rho + screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(V52)*state.rho + screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(Zn59)*state.rho + screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho + screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(Zn61)*state.rho + screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(Zn62)*state.rho + screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(Zn63)*state.rho + screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(Zn64)*state.rho + screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(Zn65)*state.rho + screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(Zn66)*state.rho; jac.set(He4, N, scratch); - scratch = -screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(Al26)*state.rho + screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(Ar36)*state.rho + screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(Ar37)*state.rho + screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(Ar38)*state.rho + screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(Ar39)*state.rho + screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(Ar40)*state.rho + screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(B10)*state.rho + 3.0*screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*state.rho + screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(Be9)*state.rho + 2.0*screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(Be9)*state.rho + 2.0*screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(Be9)*state.rho + screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(C13)*state.rho + screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(C14)*state.rho + screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(Ca40)*state.rho + screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(Ca41)*state.rho + screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(Ca42)*state.rho + screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(Ca43)*state.rho + screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(Ca44)*state.rho + screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(Cl36)*state.rho + screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(Cl37)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(Co56)*state.rho + screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(Co58)*state.rho + screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(Co59)*state.rho + screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(Cr49)*state.rho + screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(Cr50)*state.rho + screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(Cr51)*state.rho + screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(Cr52)*state.rho + screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(Cu60)*state.rho + screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(Cu61)*state.rho + screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(Cu62)*state.rho + screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(Cu63)*state.rho + screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(Cu64)*state.rho + screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(Cu65)*state.rho + screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(F17)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(Fe53)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(Fe54)*state.rho + screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(Fe55)*state.rho + screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(Fe56)*state.rho + screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(Fe57)*state.rho + screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(Fe58)*state.rho + screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(Ga62)*state.rho + screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(Ga63)*state.rho + screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(Ga64)*state.rho + screened_rates(k_p_He3_to_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_He4_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_to_d_He3_reaclib)*Y(He4)*state.rho + screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(K39)*state.rho + screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(K40)*state.rho + screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(K41)*state.rho + screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(Li6)*state.rho + 2.0*screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*state.rho + screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(Mg25)*state.rho + screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(Mg26)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(Mn51)*state.rho + screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(Mn52)*state.rho + screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(Mn53)*state.rho + screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(Mn54)*state.rho + screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(Mn55)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(Na21)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(Na22)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(Ne21)*state.rho + screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(Ne22)*state.rho + screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(Ni56)*state.rho + screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(Ni57)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(Ni58)*state.rho + screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(Ni59)*state.rho + screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(Ni60)*state.rho + screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(Ni61)*state.rho + screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(Ni62)*state.rho + screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(O16)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho + screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(P32)*state.rho + screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(P33)*state.rho + screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(S32)*state.rho + screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(S33)*state.rho + screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(S34)*state.rho + screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(S35)*state.rho + screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(S36)*state.rho + screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(Sc43)*state.rho + screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(Sc44)*state.rho + screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(Sc45)*state.rho + screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(Sc46)*state.rho + screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(Sc47)*state.rho + screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(Sc48)*state.rho + screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(Sc49)*state.rho + screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(Si28)*state.rho + screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(Si29)*state.rho + screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(Si30)*state.rho + screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(Ti46)*state.rho + screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(Ti47)*state.rho + screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(Ti48)*state.rho + screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(Ti49)*state.rho + screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(Ti50)*state.rho + screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(Ti51)*state.rho + screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(V47)*state.rho + screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(V48)*state.rho + screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(V49)*state.rho + screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(V50)*state.rho + screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(V51)*state.rho + screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(V52)*state.rho + screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(Zn60)*state.rho + screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(Zn61)*state.rho + screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(Zn62)*state.rho + screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(Zn63)*state.rho + screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(Zn64)*state.rho + screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(Zn65)*state.rho + screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(Zn66)*state.rho - 1.0*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - 1.0*screened_rates(k_p_p_He4_to_He3_He3_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho); + scratch = screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(Al26)*state.rho + screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho + screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(Ar40)*state.rho + screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(B10)*state.rho + 3.0*screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*state.rho + screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(Be9)*state.rho + 2.0*screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(Be9)*state.rho + 2.0*screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(Be9)*state.rho + screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(C13)*state.rho + screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(C14)*state.rho + screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(Ca40)*state.rho + screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(Ca41)*state.rho + screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(Ca42)*state.rho + screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(Cl36)*state.rho + screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(Cl37)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho + screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(Co58)*state.rho + screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(Co59)*state.rho + screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(Cu64)*state.rho + screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(Cu65)*state.rho + screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(F17)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(Fe58)*state.rho + screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(Ga62)*state.rho + screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(Ga64)*state.rho + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - 1.0*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_He4_p_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 1.0*screened_rates(k_He4_p_p_to_He3_He3_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_p_to_d_He3_reaclib)*Y(He4)*state.rho + screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(K39)*state.rho + screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(K40)*state.rho + screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(K41)*state.rho + screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(Li6)*state.rho + 2.0*screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*state.rho + screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(Mg26)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(Mn51)*state.rho + screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(Mn52)*state.rho + screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(Mn53)*state.rho + screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(Mn54)*state.rho + screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(Mn55)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(Na21)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(Na22)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(Ne21)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(Ne22)*state.rho + screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(Ni61)*state.rho + screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(Ni62)*state.rho + screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(O16)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho + screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(P32)*state.rho + screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(P33)*state.rho + screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(S32)*state.rho + screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(S33)*state.rho + screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(S34)*state.rho + screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(S35)*state.rho + screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(S36)*state.rho + screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(Sc49)*state.rho + screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(Si28)*state.rho + screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(Si29)*state.rho + screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(Si30)*state.rho + screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(Ti46)*state.rho + screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(Ti47)*state.rho + screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(Ti48)*state.rho + screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(Ti49)*state.rho + screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(Ti50)*state.rho + screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(Ti51)*state.rho + screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(V47)*state.rho + screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(V48)*state.rho + screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(V49)*state.rho + screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(V50)*state.rho + screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(V51)*state.rho + screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(V52)*state.rho + screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(Zn60)*state.rho + screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(Zn61)*state.rho + screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(Zn62)*state.rho + screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(Zn63)*state.rho + screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(Zn64)*state.rho + screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(Zn65)*state.rho + screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(Zn66)*state.rho; jac.set(He4, H1, scratch); - scratch = -screened_rates(k_He4_d_to_Li6_reaclib)*Y(He4)*state.rho + 2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + 2.0*screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(Li7)*state.rho + 1.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho; + scratch = 2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(He3)*state.rho + 2.0*screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - screened_rates(k_d_He4_to_Li6_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_d_d_to_He4_reaclib)*Y(H2)*state.rho; jac.set(He4, H2, scratch); - scratch = 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 1.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho + 2.0*screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He4)*state.rho + screened_rates(k_d_He3_to_p_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_n_He3_to_He4_reaclib)*Y(N)*state.rho + screened_rates(k_p_He3_to_He4_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + 1.0*screened_rates(k_He3_He3_to_p_p_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho - screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He4)*state.rho + screened_rates(k_He3_d_to_p_He4_reaclib)*Y(H2)*state.rho + screened_rates(k_He3_n_to_He4_reaclib)*Y(N)*state.rho + screened_rates(k_He3_p_to_He4_beta_pos_reaclib)*Y(H1)*state.rho + 2.0*screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho; jac.set(He4, He3, scratch); - scratch = -screened_rates(k_He4_Al25_to_P29_reaclib)*Y(Al25)*state.rho - screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(Al25)*state.rho - screened_rates(k_He4_Al26_to_P30_reaclib)*Y(Al26)*state.rho - screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(Al26)*state.rho - screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(Al26)*state.rho - screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(Ar36)*state.rho - screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(Ar36)*state.rho - screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(Ar37)*state.rho - screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(Ar37)*state.rho - screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(Ar37)*state.rho - screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(Ar38)*state.rho - screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(Ar38)*state.rho - screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(Ar38)*state.rho - screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(Ar39)*state.rho - screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(Ar39)*state.rho - screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(Ar40)*state.rho - screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(Ar40)*state.rho - screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(B10)*state.rho - screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(B10)*state.rho - screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(B11)*state.rho - screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(B11)*state.rho - screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(Be7)*state.rho - screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(Be9)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(C13)*state.rho - screened_rates(k_He4_C14_to_O18_reaclib)*Y(C14)*state.rho - screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(C14)*state.rho - screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(Ca40)*state.rho - screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(Ca40)*state.rho - screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(Ca41)*state.rho - screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(Ca41)*state.rho - screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(Ca41)*state.rho - screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(Ca42)*state.rho - screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(Ca42)*state.rho - screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(Ca42)*state.rho - screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(Ca43)*state.rho - screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(Ca43)*state.rho - screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(Ca43)*state.rho - screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(Ca44)*state.rho - screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(Ca44)*state.rho - screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(Ca44)*state.rho - screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(Ca45)*state.rho - screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(Ca45)*state.rho - screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(Ca45)*state.rho - screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(Ca46)*state.rho - screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(Ca46)*state.rho - screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(Ca46)*state.rho - screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(Ca47)*state.rho - screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(Ca47)*state.rho - screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(Ca48)*state.rho - screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(Cl33)*state.rho - screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(Cl33)*state.rho - screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(Cl34)*state.rho - screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(Cl34)*state.rho - screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(Cl34)*state.rho - screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(Cl35)*state.rho - screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(Cl35)*state.rho - screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(Cl35)*state.rho - screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(Cl36)*state.rho - screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(Cl36)*state.rho - screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(Cl36)*state.rho - screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(Cl37)*state.rho - screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(Cl37)*state.rho - screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(Cl37)*state.rho - screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(Co53)*state.rho - screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(Co53)*state.rho - screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(Co54)*state.rho - screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(Co54)*state.rho - screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(Co54)*state.rho - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(Co56)*state.rho - screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(Co56)*state.rho - screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(Co56)*state.rho - screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(Co57)*state.rho - screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(Co57)*state.rho - screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(Co57)*state.rho - screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(Co58)*state.rho - screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(Co58)*state.rho - screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(Co58)*state.rho - screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(Co59)*state.rho - screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(Co59)*state.rho - screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(Co59)*state.rho - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(Cr49)*state.rho - screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(Cr50)*state.rho - screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(Cr51)*state.rho - screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(Cr52)*state.rho - screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(Cr53)*state.rho - screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(Cr53)*state.rho - screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(Cr54)*state.rho - screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(Cr54)*state.rho - screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(Cu57)*state.rho - screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(Cu58)*state.rho - screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(Cu58)*state.rho - screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(Cu59)*state.rho - screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(Cu59)*state.rho - screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(Cu59)*state.rho - screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(Cu60)*state.rho - screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(Cu60)*state.rho - screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(Cu60)*state.rho - screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(Cu61)*state.rho - screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(Cu61)*state.rho - screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(Cu62)*state.rho - screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(Cu63)*state.rho - screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*state.rho - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(Fe55)*state.rho - screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(Fe55)*state.rho - screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(Fe55)*state.rho - screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(Fe56)*state.rho - screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(Fe56)*state.rho - screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(Fe56)*state.rho - screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(Fe57)*state.rho - screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(Fe57)*state.rho - screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(Fe58)*state.rho - screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(Fe58)*state.rho - screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He3)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 1.5*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_He4_He4_to_n_Be7_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_He4_He4_to_p_Li7_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(K37)*state.rho - screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(K38)*state.rho - screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(K39)*state.rho - screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(K39)*state.rho - screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(K40)*state.rho - screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(K40)*state.rho - screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(K40)*state.rho - screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(K41)*state.rho - screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(K41)*state.rho - screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(K41)*state.rho - screened_rates(k_He4_Li6_to_B10_reaclib)*Y(Li6)*state.rho - screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(Li6)*state.rho - screened_rates(k_He4_Li7_to_B11_reaclib)*Y(Li7)*state.rho - screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(Li7)*state.rho - screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(Mg23)*state.rho - screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(Mg25)*state.rho - screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(Mg25)*state.rho - screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(Mg26)*state.rho - screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(Mg26)*state.rho - screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(Mn50)*state.rho - screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(Mn50)*state.rho - screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(Mn50)*state.rho - screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(Mn52)*state.rho - screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(Mn52)*state.rho - screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(Mn52)*state.rho - screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(Mn53)*state.rho - screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(Mn53)*state.rho - screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(Mn53)*state.rho - screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(Mn54)*state.rho - screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(Mn54)*state.rho - screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(Mn54)*state.rho - screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(Mn55)*state.rho - screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(Mn55)*state.rho - screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(Mn55)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(Na21)*state.rho - screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(Na21)*state.rho - screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(Na22)*state.rho - screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(Na22)*state.rho - screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(Na22)*state.rho - screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(Na23)*state.rho - screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(Na23)*state.rho - screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(Na23)*state.rho - screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(Ne18)*state.rho - screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(Ne19)*state.rho - screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(Ne21)*state.rho - screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(Ne21)*state.rho - screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(Ne22)*state.rho - screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(Ne22)*state.rho - screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(Ni57)*state.rho - screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(Ni57)*state.rho - screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(Ni57)*state.rho - screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(Ni58)*state.rho - screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(Ni58)*state.rho - screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(Ni58)*state.rho - screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(Ni59)*state.rho - screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(Ni59)*state.rho - screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(Ni59)*state.rho - screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(Ni60)*state.rho - screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(Ni60)*state.rho - screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(Ni60)*state.rho - screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(Ni61)*state.rho - screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(Ni61)*state.rho - screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(Ni61)*state.rho - screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(Ni62)*state.rho - screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(Ni62)*state.rho - screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(Ni62)*state.rho - screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(Ni63)*state.rho - screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho - screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(O17)*state.rho - screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(O18)*state.rho - screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(O18)*state.rho - screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(P29)*state.rho - screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(P29)*state.rho - screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(P30)*state.rho - screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(P30)*state.rho - screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(P30)*state.rho - screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(P31)*state.rho - screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(P31)*state.rho - screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(P31)*state.rho - screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(P32)*state.rho - screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(P32)*state.rho - screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(P32)*state.rho - screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(P33)*state.rho - screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(P33)*state.rho - screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(P33)*state.rho - screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(S32)*state.rho - screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(S32)*state.rho - screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(S33)*state.rho - screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(S33)*state.rho - screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(S33)*state.rho - screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(S34)*state.rho - screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(S34)*state.rho - screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(S34)*state.rho - screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(S35)*state.rho - screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(S35)*state.rho - screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(S36)*state.rho - screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(S36)*state.rho - screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(Sc43)*state.rho - screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(Sc44)*state.rho - screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(Sc44)*state.rho - screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(Sc44)*state.rho - screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(Sc45)*state.rho - screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(Sc45)*state.rho - screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(Sc45)*state.rho - screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(Sc46)*state.rho - screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(Sc46)*state.rho - screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(Sc46)*state.rho - screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(Sc47)*state.rho - screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(Sc47)*state.rho - screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(Sc47)*state.rho - screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(Sc48)*state.rho - screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(Sc48)*state.rho - screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(Sc48)*state.rho - screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(Sc49)*state.rho - screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si29_to_S33_reaclib)*Y(Si29)*state.rho - screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(Si29)*state.rho - screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(Si29)*state.rho - screened_rates(k_He4_Si30_to_S34_reaclib)*Y(Si30)*state.rho - screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(Si30)*state.rho - screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(Si30)*state.rho - screened_rates(k_He4_Si31_to_S35_reaclib)*Y(Si31)*state.rho - screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(Si31)*state.rho - screened_rates(k_He4_Si32_to_S36_reaclib)*Y(Si32)*state.rho - screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(Si32)*state.rho - screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(Ti44)*state.rho - screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(Ti44)*state.rho - screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(Ti45)*state.rho - screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(Ti45)*state.rho - screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(Ti45)*state.rho - screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(Ti46)*state.rho - screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(Ti46)*state.rho - screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(Ti46)*state.rho - screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(Ti47)*state.rho - screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(Ti47)*state.rho - screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(Ti47)*state.rho - screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(Ti48)*state.rho - screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(Ti48)*state.rho - screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(Ti48)*state.rho - screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(Ti49)*state.rho - screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(Ti49)*state.rho - screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(Ti49)*state.rho - screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(Ti50)*state.rho - screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(Ti50)*state.rho - screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(Ti51)*state.rho - screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(V46)*state.rho - screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(V46)*state.rho - screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(V47)*state.rho - screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(V47)*state.rho - screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(V47)*state.rho - screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(V48)*state.rho - screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(V48)*state.rho - screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(V48)*state.rho - screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(V49)*state.rho - screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(V49)*state.rho - screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(V49)*state.rho - screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(V50)*state.rho - screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(V50)*state.rho - screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(V50)*state.rho - screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(V51)*state.rho - screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(V51)*state.rho - screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(V51)*state.rho - screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(V52)*state.rho - screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(Zn59)*state.rho - screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(Zn59)*state.rho - screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(Zn60)*state.rho - screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(Zn60)*state.rho - screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(Zn60)*state.rho - screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(Zn61)*state.rho - screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(Zn61)*state.rho - screened_rates(k_He4_d_to_Li6_reaclib)*Y(H2)*state.rho - screened_rates(k_He4_to_d_d_reaclib) - screened_rates(k_He4_to_n_He3_reaclib) - 2.0*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(H2)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_n_He4_He4_to_Be9_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - 2.0*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_p_He4_to_d_He3_reaclib)*Y(H1)*state.rho - 1.0*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) - 0.5*screened_rates(k_p_p_He4_to_He3_He3_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho); + scratch = -screened_rates(k_Al25_He4_to_P29_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al26_He4_to_P30_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(Al27)*state.rho - screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(Ar40)*state.rho - screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(B10)*state.rho - screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(B10)*state.rho - screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(B11)*state.rho - screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(B11)*state.rho - screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(Be7)*state.rho - screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(Be9)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(C13)*state.rho - screened_rates(k_C14_He4_to_O18_reaclib)*Y(C14)*state.rho - screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(C14)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(Ca47)*state.rho - screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(Ca47)*state.rho - screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(Ca48)*state.rho - screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(Co59)*state.rho - screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(Co59)*state.rho - screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(Co59)*state.rho - screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(Cu57)*state.rho - screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(Cu63)*state.rho - screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(Fe58)*state.rho - screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho - screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He3)*state.rho - 1.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 1.5*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_He4_He4_n_to_Be9_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - 2.0*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) - 1.0*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) - 2.0*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - 2.0*screened_rates(k_He4_He4_to_n_Be7_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_He4_He4_to_p_Li7_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) - 0.5*screened_rates(k_He4_p_p_to_He3_He3_reaclib)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<2>(state.rho) - screened_rates(k_He4_p_to_d_He3_reaclib)*Y(H1)*state.rho - screened_rates(k_He4_to_d_d_reaclib) - screened_rates(k_He4_to_n_He3_reaclib) - screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(K37)*state.rho - screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(K38)*state.rho - screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(K39)*state.rho - screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(K39)*state.rho - screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(K40)*state.rho - screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(K41)*state.rho - screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(K41)*state.rho - screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(K41)*state.rho - screened_rates(k_Li6_He4_to_B10_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li7_He4_to_B11_reaclib)*Y(Li7)*state.rho - screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(Li7)*state.rho - screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(Mn55)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(N15)*state.rho - screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(Ne22)*state.rho - screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(Ne22)*state.rho - screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(Ni63)*state.rho - screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho - screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(O15)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(O16)*state.rho - screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(O17)*state.rho - screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(O18)*state.rho - screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(P29)*state.rho - screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(P29)*state.rho - screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(P30)*state.rho - screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(P30)*state.rho - screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(P30)*state.rho - screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(P31)*state.rho - screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(P32)*state.rho - screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(P33)*state.rho - screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(P33)*state.rho - screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(P33)*state.rho - screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(S32)*state.rho - screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(S32)*state.rho - screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(S33)*state.rho - screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(S34)*state.rho - screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(S35)*state.rho - screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(S35)*state.rho - screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(S36)*state.rho - screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(S36)*state.rho - screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(Sc49)*state.rho - screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si29_He4_to_S33_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si30_He4_to_S34_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si31_He4_to_S35_reaclib)*Y(Si31)*state.rho - screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(Si31)*state.rho - screened_rates(k_Si32_He4_to_S36_reaclib)*Y(Si32)*state.rho - screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(Si32)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(Ti51)*state.rho - screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(V46)*state.rho - screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(V46)*state.rho - screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(V47)*state.rho - screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(V48)*state.rho - screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(V49)*state.rho - screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(V50)*state.rho - screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(V51)*state.rho - screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(V52)*state.rho - screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(Zn61)*state.rho - 2.0*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(H2)*amrex::Math::powi<2>(state.rho) - screened_rates(k_d_He4_to_Li6_reaclib)*Y(H2)*state.rho; jac.set(He4, He4, scratch); - scratch = -screened_rates(k_He4_Li6_to_B10_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(He4)*state.rho + screened_rates(k_Li6_to_He4_d_reaclib) + screened_rates(k_Li6_to_n_p_He4_reaclib) + screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Li6_He4_to_B10_reaclib)*Y(He4)*state.rho - screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(He4)*state.rho + screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(H1)*state.rho + screened_rates(k_Li6_to_He4_d_reaclib) + screened_rates(k_Li6_to_n_p_He4_reaclib); jac.set(He4, Li6, scratch); - scratch = 2.0*screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(He4)*state.rho + 2.0*screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(H2)*state.rho + 2.0*screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*state.rho - screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(He4)*state.rho + 2.0*screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(H2)*state.rho + 2.0*screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(H1)*state.rho; jac.set(He4, Li7, scratch); - scratch = screened_rates(k_Be7_to_He4_He3_reaclib) + 2.0*screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(He4)*state.rho + 2.0*screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho + 2.0*screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(N)*state.rho; + scratch = 2.0*screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(He4)*state.rho + 2.0*screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho + 2.0*screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(N)*state.rho + screened_rates(k_Be7_to_He4_He3_reaclib); jac.set(He4, Be7, scratch); - scratch = 2.0*screened_rates(k_Be9_to_n_He4_He4_reaclib) - screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(H1)*state.rho + 2.0*screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(H1)*state.rho + 2.0*screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(He4)*state.rho + screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(H1)*state.rho + 2.0*screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(H1)*state.rho + 2.0*screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(H1)*state.rho + 2.0*screened_rates(k_Be9_to_n_He4_He4_reaclib); jac.set(He4, Be9, scratch); - scratch = 2.0*screened_rates(k_B8_to_He4_He4_reaclib) + 2.0*screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(N)*state.rho; + scratch = 2.0*screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(N)*state.rho + 2.0*screened_rates(k_B8_to_He4_He4_beta_pos_reaclib); jac.set(He4, B8, scratch); - scratch = screened_rates(k_B10_to_He4_Li6_reaclib) - screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(He4)*state.rho + screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(N)*state.rho + screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(He4)*state.rho - screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(He4)*state.rho + screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(N)*state.rho + screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(H1)*state.rho + screened_rates(k_B10_to_He4_Li6_reaclib); jac.set(He4, B10, scratch); - scratch = screened_rates(k_B11_to_He4_Li7_reaclib) - screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(He4)*state.rho + 3.0*screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(He4)*state.rho - screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(He4)*state.rho + 3.0*screened_rates(k_B11_p_to_3He4_reaclib)*Y(H1)*state.rho + screened_rates(k_B11_to_He4_Li7_reaclib); jac.set(He4, B11, scratch); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho + screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(Ne20)*state.rho + screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho + 3.0*screened_rates(k_C12_to_He4_He4_He4_reaclib) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(He4)*state.rho + screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(N)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(He4)*state.rho + screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(N)*state.rho + 3.0*screened_rates(k_C12_to_3He4_reaclib) + screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(He4, C12, scratch); - scratch = -screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(H1)*state.rho; jac.set(He4, C13, scratch); - scratch = -screened_rates(k_He4_C14_to_O18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(He4)*state.rho + screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C14_He4_to_O18_reaclib)*Y(He4)*state.rho - screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(He4)*state.rho + screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(H1)*state.rho; jac.set(He4, C14, scratch); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho + screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N)*state.rho; jac.set(He4, N13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(He4)*state.rho + screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(He4)*state.rho + screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N)*state.rho; jac.set(He4, N14, scratch); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(He4)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(He4)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(He4, N15, scratch); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(He4, O14, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(He4)*state.rho + screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(He4)*state.rho + screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(N)*state.rho; jac.set(He4, O15, scratch); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_to_He4_C12_reaclib) + screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(N)*state.rho + screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho + screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(N)*state.rho + screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(H1)*state.rho + screened_rates(k_O16_to_He4_C12_reaclib); jac.set(He4, O16, scratch); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(He4)*state.rho + screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(N)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(He4)*state.rho + screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(N)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(He4, O17, scratch); - scratch = -screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_O18_to_He4_C14_reaclib) + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho + screened_rates(k_O18_to_He4_C14_reaclib); jac.set(He4, O18, scratch); - scratch = -screened_rates(k_He4_F17_to_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho + screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(N)*state.rho + screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(He4)*state.rho + screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(N)*state.rho + screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(H1)*state.rho; jac.set(He4, F17, scratch); - scratch = screened_rates(k_F18_to_He4_N14_reaclib) - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(N)*state.rho + screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho + screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(N)*state.rho + screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho + screened_rates(k_F18_to_He4_N14_reaclib); jac.set(He4, F18, scratch); - scratch = screened_rates(k_F19_to_He4_N15_reaclib) - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(He4)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(He4)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho + screened_rates(k_F19_to_He4_N15_reaclib); jac.set(He4, F19, scratch); - scratch = -screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_to_He4_O14_reaclib) + screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(N)*state.rho + screened_rates(k_Ne18_to_He4_O14_reaclib); jac.set(He4, Ne18, scratch); - scratch = -screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_to_He4_O15_reaclib) + screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(N)*state.rho + screened_rates(k_Ne19_to_He4_O15_reaclib); jac.set(He4, Ne19, scratch); - scratch = screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib) + screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(C12)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(N)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne20_to_He4_O16_reaclib); jac.set(He4, Ne20, scratch); - scratch = -screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne21_to_He4_O17_reaclib) + screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(N)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne21_to_He4_O17_reaclib); jac.set(He4, Ne21, scratch); - scratch = -screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne22_to_He4_O18_reaclib) + screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(He4)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne22_to_He4_O18_reaclib); jac.set(He4, Ne22, scratch); - scratch = -screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Na21_to_He4_F17_reaclib) + screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(N)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(He4)*state.rho + screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(N)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(H1)*state.rho + screened_rates(k_Na21_to_He4_F17_reaclib); jac.set(He4, Na21, scratch); - scratch = -screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(He4)*state.rho + screened_rates(k_Na22_to_He4_F18_reaclib) + screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(N)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(He4)*state.rho + screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(N)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(H1)*state.rho + screened_rates(k_Na22_to_He4_F18_reaclib); jac.set(He4, Na22, scratch); - scratch = -screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(He4)*state.rho + screened_rates(k_Na23_to_He4_F19_reaclib) + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(He4)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho + screened_rates(k_Na23_to_He4_F19_reaclib); jac.set(He4, Na23, scratch); - scratch = -screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg23_to_He4_Ne19_reaclib) + screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(N)*state.rho + screened_rates(k_Mg23_to_He4_Ne19_reaclib); jac.set(He4, Mg23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_reaclib) + screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(N)*state.rho + screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg24_to_He4_Ne20_reaclib); jac.set(He4, Mg24, scratch); - scratch = -screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg25_to_He4_Ne21_reaclib) + screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(N)*state.rho + screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg25_to_He4_Ne21_reaclib); jac.set(He4, Mg25, scratch); - scratch = -screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg26_to_He4_Ne22_reaclib) + screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(He4)*state.rho + screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg26_to_He4_Ne22_reaclib); jac.set(He4, Mg26, scratch); - scratch = screened_rates(k_Al25_to_He4_Na21_reaclib) - screened_rates(k_He4_Al25_to_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Al25_He4_to_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(He4)*state.rho + screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(N)*state.rho + screened_rates(k_Al25_to_He4_Na21_reaclib); jac.set(He4, Al25, scratch); - scratch = screened_rates(k_Al26_to_He4_Na22_reaclib) - screened_rates(k_He4_Al26_to_P30_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(N)*state.rho + screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al26_He4_to_P30_reaclib)*Y(He4)*state.rho - screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(He4)*state.rho + screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(N)*state.rho + screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(H1)*state.rho + screened_rates(k_Al26_to_He4_Na22_reaclib); jac.set(He4, Al26, scratch); - scratch = screened_rates(k_Al27_to_He4_Na23_reaclib) - screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(He4)*state.rho - screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(He4)*state.rho + screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho + screened_rates(k_Al27_to_He4_Na23_reaclib); jac.set(He4, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*state.rho + screened_rates(k_Si28_to_He4_Mg24_reaclib) + screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(N)*state.rho + screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*state.rho + screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(N)*state.rho + screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(H1)*state.rho + screened_rates(k_Si28_to_He4_Mg24_reaclib); jac.set(He4, Si28, scratch); - scratch = -screened_rates(k_He4_Si29_to_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(He4)*state.rho + screened_rates(k_Si29_to_He4_Mg25_reaclib) + screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(N)*state.rho + screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si29_He4_to_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(He4)*state.rho + screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(N)*state.rho + screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(H1)*state.rho + screened_rates(k_Si29_to_He4_Mg25_reaclib); jac.set(He4, Si29, scratch); - scratch = -screened_rates(k_He4_Si30_to_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(He4)*state.rho + screened_rates(k_Si30_to_He4_Mg26_reaclib) + screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si30_He4_to_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(He4)*state.rho + screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(H1)*state.rho + screened_rates(k_Si30_to_He4_Mg26_reaclib); jac.set(He4, Si30, scratch); - scratch = -screened_rates(k_He4_Si31_to_S35_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Si31_He4_to_S35_reaclib)*Y(He4)*state.rho - screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(He4)*state.rho; jac.set(He4, Si31, scratch); - scratch = -screened_rates(k_He4_Si32_to_S36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Si32_He4_to_S36_reaclib)*Y(He4)*state.rho - screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(He4)*state.rho; jac.set(He4, Si32, scratch); - scratch = -screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(He4)*state.rho + screened_rates(k_P29_to_He4_Al25_reaclib) + screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(He4)*state.rho + screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(N)*state.rho + screened_rates(k_P29_to_He4_Al25_reaclib); jac.set(He4, P29, scratch); - scratch = -screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(He4)*state.rho + screened_rates(k_P30_to_He4_Al26_reaclib) + screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(He4)*state.rho + screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(N)*state.rho + screened_rates(k_P30_to_He4_Al26_reaclib); jac.set(He4, P30, scratch); - scratch = -screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(He4)*state.rho + screened_rates(k_P31_to_He4_Al27_reaclib) + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(He4)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho + screened_rates(k_P31_to_He4_Al27_reaclib); jac.set(He4, P31, scratch); - scratch = -screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(He4)*state.rho + screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(He4)*state.rho + screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(H1)*state.rho; jac.set(He4, P32, scratch); - scratch = -screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(He4)*state.rho + screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(He4)*state.rho - screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(He4)*state.rho + screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(H1)*state.rho; jac.set(He4, P33, scratch); - scratch = -screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(He4)*state.rho + screened_rates(k_S32_to_He4_Si28_reaclib) + screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(N)*state.rho + screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(He4)*state.rho + screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(N)*state.rho + screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(H1)*state.rho + screened_rates(k_S32_to_He4_Si28_reaclib); jac.set(He4, S32, scratch); - scratch = -screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(He4)*state.rho + screened_rates(k_S33_to_He4_Si29_reaclib) + screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(N)*state.rho + screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(He4)*state.rho + screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(N)*state.rho + screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(H1)*state.rho + screened_rates(k_S33_to_He4_Si29_reaclib); jac.set(He4, S33, scratch); - scratch = -screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(He4)*state.rho + screened_rates(k_S34_to_He4_Si30_reaclib) + screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(N)*state.rho + screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(He4)*state.rho + screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(N)*state.rho + screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(H1)*state.rho + screened_rates(k_S34_to_He4_Si30_reaclib); jac.set(He4, S34, scratch); - scratch = -screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(He4)*state.rho + screened_rates(k_S35_to_He4_Si31_reaclib) + screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(N)*state.rho + screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(He4)*state.rho - screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(He4)*state.rho + screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(N)*state.rho + screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(H1)*state.rho + screened_rates(k_S35_to_He4_Si31_reaclib); jac.set(He4, S35, scratch); - scratch = -screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(He4)*state.rho + screened_rates(k_S36_to_He4_Si32_reaclib) + screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(He4)*state.rho - screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(He4)*state.rho + screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(H1)*state.rho + screened_rates(k_S36_to_He4_Si32_reaclib); jac.set(He4, S36, scratch); - scratch = screened_rates(k_Cl33_to_He4_P29_reaclib) - screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(N)*state.rho + screened_rates(k_Cl33_to_He4_P29_reaclib); jac.set(He4, Cl33, scratch); - scratch = screened_rates(k_Cl34_to_He4_P30_reaclib) - screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(N)*state.rho + screened_rates(k_Cl34_to_He4_P30_reaclib); jac.set(He4, Cl34, scratch); - scratch = screened_rates(k_Cl35_to_He4_P31_reaclib) - screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(N)*state.rho + screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl35_to_He4_P31_reaclib); jac.set(He4, Cl35, scratch); - scratch = screened_rates(k_Cl36_to_He4_P32_reaclib) - screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(N)*state.rho + screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl36_to_He4_P32_reaclib); jac.set(He4, Cl36, scratch); - scratch = screened_rates(k_Cl37_to_He4_P33_reaclib) - screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(He4)*state.rho + screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl37_to_He4_P33_reaclib); jac.set(He4, Cl37, scratch); - scratch = screened_rates(k_Ar36_to_He4_S32_reaclib) - screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(He4)*state.rho + screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(N)*state.rho + screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar36_to_He4_S32_reaclib); jac.set(He4, Ar36, scratch); - scratch = screened_rates(k_Ar37_to_He4_S33_reaclib) - screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(He4)*state.rho + screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(N)*state.rho + screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar37_to_He4_S33_reaclib); jac.set(He4, Ar37, scratch); - scratch = screened_rates(k_Ar38_to_He4_S34_reaclib) - screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(He4)*state.rho + screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(N)*state.rho + screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar38_to_He4_S34_reaclib); jac.set(He4, Ar38, scratch); - scratch = screened_rates(k_Ar39_to_He4_S35_reaclib) - screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(He4)*state.rho + screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(N)*state.rho + screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar39_to_He4_S35_reaclib); jac.set(He4, Ar39, scratch); - scratch = screened_rates(k_Ar40_to_He4_S36_reaclib) - screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(He4)*state.rho + screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar40_to_He4_S36_reaclib); jac.set(He4, Ar40, scratch); - scratch = -screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(He4)*state.rho + screened_rates(k_K37_to_He4_Cl33_reaclib) + screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(He4)*state.rho + screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(N)*state.rho + screened_rates(k_K37_to_He4_Cl33_reaclib); jac.set(He4, K37, scratch); - scratch = -screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(He4)*state.rho + screened_rates(k_K38_to_He4_Cl34_reaclib) + screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(He4)*state.rho + screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(N)*state.rho + screened_rates(k_K38_to_He4_Cl34_reaclib); jac.set(He4, K38, scratch); - scratch = -screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(He4)*state.rho + screened_rates(k_K39_to_He4_Cl35_reaclib) + screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(N)*state.rho + screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(He4)*state.rho + screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(N)*state.rho + screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(H1)*state.rho + screened_rates(k_K39_to_He4_Cl35_reaclib); jac.set(He4, K39, scratch); - scratch = -screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(He4)*state.rho + screened_rates(k_K40_to_He4_Cl36_reaclib) + screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(N)*state.rho + screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(He4)*state.rho + screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(N)*state.rho + screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(H1)*state.rho + screened_rates(k_K40_to_He4_Cl36_reaclib); jac.set(He4, K40, scratch); - scratch = -screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(He4)*state.rho + screened_rates(k_K41_to_He4_Cl37_reaclib) + screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(He4)*state.rho - screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(He4)*state.rho + screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(H1)*state.rho + screened_rates(k_K41_to_He4_Cl37_reaclib); jac.set(He4, K41, scratch); - scratch = screened_rates(k_Ca40_to_He4_Ar36_reaclib) - screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(He4)*state.rho + screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(N)*state.rho + screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca40_to_He4_Ar36_reaclib); jac.set(He4, Ca40, scratch); - scratch = screened_rates(k_Ca41_to_He4_Ar37_reaclib) - screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(He4)*state.rho + screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(N)*state.rho + screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca41_to_He4_Ar37_reaclib); jac.set(He4, Ca41, scratch); - scratch = screened_rates(k_Ca42_to_He4_Ar38_reaclib) - screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(He4)*state.rho + screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(N)*state.rho + screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca42_to_He4_Ar38_reaclib); jac.set(He4, Ca42, scratch); - scratch = screened_rates(k_Ca43_to_He4_Ar39_reaclib) - screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(He4)*state.rho + screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(N)*state.rho + screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca43_to_He4_Ar39_reaclib); jac.set(He4, Ca43, scratch); - scratch = screened_rates(k_Ca44_to_He4_Ar40_reaclib) - screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(He4)*state.rho + screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca44_to_He4_Ar40_reaclib); jac.set(He4, Ca44, scratch); - scratch = -screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(He4)*state.rho; jac.set(He4, Ca45, scratch); - scratch = -screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(He4)*state.rho; jac.set(He4, Ca46, scratch); - scratch = -screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(He4)*state.rho; jac.set(He4, Ca47, scratch); - scratch = -screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(He4)*state.rho; jac.set(He4, Ca48, scratch); - scratch = -screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc43_to_He4_K39_reaclib) + screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(N)*state.rho + screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(N)*state.rho + screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc43_to_He4_K39_reaclib); jac.set(He4, Sc43, scratch); - scratch = -screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc44_to_He4_K40_reaclib) + screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(N)*state.rho + screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(N)*state.rho + screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc44_to_He4_K40_reaclib); jac.set(He4, Sc44, scratch); - scratch = -screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc45_to_He4_K41_reaclib) + screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc45_to_He4_K41_reaclib); jac.set(He4, Sc45, scratch); - scratch = -screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(H1)*state.rho; jac.set(He4, Sc46, scratch); - scratch = -screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(H1)*state.rho; jac.set(He4, Sc47, scratch); - scratch = -screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(H1)*state.rho; jac.set(He4, Sc48, scratch); - scratch = -screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(He4)*state.rho + screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(H1)*state.rho; jac.set(He4, Sc49, scratch); - scratch = -screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti44_to_He4_Ca40_reaclib) + screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(N)*state.rho + screened_rates(k_Ti44_to_He4_Ca40_reaclib); jac.set(He4, Ti44, scratch); - scratch = -screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti45_to_He4_Ca41_reaclib) + screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(N)*state.rho + screened_rates(k_Ti45_to_He4_Ca41_reaclib); jac.set(He4, Ti45, scratch); - scratch = -screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti46_to_He4_Ca42_reaclib) + screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(N)*state.rho + screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti46_to_He4_Ca42_reaclib); jac.set(He4, Ti46, scratch); - scratch = -screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti47_to_He4_Ca43_reaclib) + screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(N)*state.rho + screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti47_to_He4_Ca43_reaclib); jac.set(He4, Ti47, scratch); - scratch = -screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti48_to_He4_Ca44_reaclib) + screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(N)*state.rho + screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti48_to_He4_Ca44_reaclib); jac.set(He4, Ti48, scratch); - scratch = -screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti49_to_He4_Ca45_reaclib) + screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(N)*state.rho + screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti49_to_He4_Ca45_reaclib); jac.set(He4, Ti49, scratch); - scratch = -screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti50_to_He4_Ca46_reaclib) + screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(N)*state.rho + screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti50_to_He4_Ca46_reaclib); jac.set(He4, Ti50, scratch); - scratch = -screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti51_to_He4_Ca47_reaclib) + screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(He4)*state.rho + screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti51_to_He4_Ca47_reaclib); jac.set(He4, Ti51, scratch); - scratch = -screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(He4)*state.rho + screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(He4)*state.rho + screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(N)*state.rho; jac.set(He4, V46, scratch); - scratch = -screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(He4)*state.rho + screened_rates(k_V47_to_He4_Sc43_reaclib) + screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(N)*state.rho + screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(He4)*state.rho + screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(N)*state.rho + screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(H1)*state.rho + screened_rates(k_V47_to_He4_Sc43_reaclib); jac.set(He4, V47, scratch); - scratch = -screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(He4)*state.rho + screened_rates(k_V48_to_He4_Sc44_reaclib) + screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(N)*state.rho + screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(He4)*state.rho + screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(N)*state.rho + screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(H1)*state.rho + screened_rates(k_V48_to_He4_Sc44_reaclib); jac.set(He4, V48, scratch); - scratch = -screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(He4)*state.rho + screened_rates(k_V49_to_He4_Sc45_reaclib) + screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(N)*state.rho + screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(He4)*state.rho + screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(N)*state.rho + screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(H1)*state.rho + screened_rates(k_V49_to_He4_Sc45_reaclib); jac.set(He4, V49, scratch); - scratch = -screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(He4)*state.rho + screened_rates(k_V50_to_He4_Sc46_reaclib) + screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(N)*state.rho + screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(He4)*state.rho + screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(N)*state.rho + screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(H1)*state.rho + screened_rates(k_V50_to_He4_Sc46_reaclib); jac.set(He4, V50, scratch); - scratch = -screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(He4)*state.rho + screened_rates(k_V51_to_He4_Sc47_reaclib) + screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(N)*state.rho + screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(He4)*state.rho + screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(N)*state.rho + screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(H1)*state.rho + screened_rates(k_V51_to_He4_Sc47_reaclib); jac.set(He4, V51, scratch); - scratch = -screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(He4)*state.rho + screened_rates(k_V52_to_He4_Sc48_reaclib) + screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(N)*state.rho + screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(He4)*state.rho + screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(N)*state.rho + screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(H1)*state.rho + screened_rates(k_V52_to_He4_Sc48_reaclib); jac.set(He4, V52, scratch); - scratch = screened_rates(k_Cr48_to_He4_Ti44_reaclib) - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(N)*state.rho + screened_rates(k_Cr48_to_He4_Ti44_reaclib); jac.set(He4, Cr48, scratch); - scratch = screened_rates(k_Cr49_to_He4_Ti45_reaclib) - screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(N)*state.rho + screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr49_to_He4_Ti45_reaclib); jac.set(He4, Cr49, scratch); - scratch = screened_rates(k_Cr50_to_He4_Ti46_reaclib) - screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(N)*state.rho + screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr50_to_He4_Ti46_reaclib); jac.set(He4, Cr50, scratch); - scratch = screened_rates(k_Cr51_to_He4_Ti47_reaclib) - screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(N)*state.rho + screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr51_to_He4_Ti47_reaclib); jac.set(He4, Cr51, scratch); - scratch = screened_rates(k_Cr52_to_He4_Ti48_reaclib) - screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(N)*state.rho + screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr52_to_He4_Ti48_reaclib); jac.set(He4, Cr52, scratch); - scratch = screened_rates(k_Cr53_to_He4_Ti49_reaclib) - screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(N)*state.rho + screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr53_to_He4_Ti49_reaclib); jac.set(He4, Cr53, scratch); - scratch = screened_rates(k_Cr54_to_He4_Ti50_reaclib) - screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(He4)*state.rho + screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr54_to_He4_Ti50_reaclib); jac.set(He4, Cr54, scratch); - scratch = -screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn50_to_He4_V46_reaclib) + screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(N)*state.rho + screened_rates(k_Mn50_to_He4_V46_reaclib); jac.set(He4, Mn50, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn51_to_He4_V47_reaclib) + screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(N)*state.rho + screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn51_to_He4_V47_reaclib); jac.set(He4, Mn51, scratch); - scratch = -screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn52_to_He4_V48_reaclib) + screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(N)*state.rho + screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn52_to_He4_V48_reaclib); jac.set(He4, Mn52, scratch); - scratch = -screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn53_to_He4_V49_reaclib) + screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(N)*state.rho + screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn53_to_He4_V49_reaclib); jac.set(He4, Mn53, scratch); - scratch = -screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn54_to_He4_V50_reaclib) + screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(N)*state.rho + screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn54_to_He4_V50_reaclib); jac.set(He4, Mn54, scratch); - scratch = -screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn55_to_He4_V51_reaclib) + screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(N)*state.rho + screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(He4)*state.rho + screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(N)*state.rho + screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn55_to_He4_V51_reaclib); jac.set(He4, Mn55, scratch); - scratch = screened_rates(k_Fe52_to_He4_Cr48_reaclib) - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(N)*state.rho + screened_rates(k_Fe52_to_He4_Cr48_reaclib); jac.set(He4, Fe52, scratch); - scratch = screened_rates(k_Fe53_to_He4_Cr49_reaclib) - screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(N)*state.rho + screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe53_to_He4_Cr49_reaclib); jac.set(He4, Fe53, scratch); - scratch = screened_rates(k_Fe54_to_He4_Cr50_reaclib) - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(N)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe54_to_He4_Cr50_reaclib); jac.set(He4, Fe54, scratch); - scratch = screened_rates(k_Fe55_to_He4_Cr51_reaclib) - screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(N)*state.rho + screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe55_to_He4_Cr51_reaclib); jac.set(He4, Fe55, scratch); - scratch = screened_rates(k_Fe56_to_He4_Cr52_reaclib) - screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(N)*state.rho + screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe56_to_He4_Cr52_reaclib); jac.set(He4, Fe56, scratch); - scratch = screened_rates(k_Fe57_to_He4_Cr53_reaclib) - screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(N)*state.rho + screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(N)*state.rho + screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe57_to_He4_Cr53_reaclib); jac.set(He4, Fe57, scratch); - scratch = screened_rates(k_Fe58_to_He4_Cr54_reaclib) - screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(He4)*state.rho + screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe58_to_He4_Cr54_reaclib); jac.set(He4, Fe58, scratch); - scratch = -screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(He4)*state.rho + screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(N)*state.rho; jac.set(He4, Co53, scratch); - scratch = screened_rates(k_Co54_to_He4_Mn50_reaclib) - screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(He4)*state.rho + screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(N)*state.rho + screened_rates(k_Co54_to_He4_Mn50_reaclib); jac.set(He4, Co54, scratch); - scratch = screened_rates(k_Co55_to_He4_Mn51_reaclib) - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho + screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(N)*state.rho + screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(H1)*state.rho + screened_rates(k_Co55_to_He4_Mn51_reaclib); jac.set(He4, Co55, scratch); - scratch = screened_rates(k_Co56_to_He4_Mn52_reaclib) - screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(He4)*state.rho + screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(H1)*state.rho + screened_rates(k_Co56_to_He4_Mn52_reaclib); jac.set(He4, Co56, scratch); - scratch = screened_rates(k_Co57_to_He4_Mn53_reaclib) - screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(He4)*state.rho + screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(N)*state.rho + screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho + screened_rates(k_Co57_to_He4_Mn53_reaclib); jac.set(He4, Co57, scratch); - scratch = screened_rates(k_Co58_to_He4_Mn54_reaclib) - screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(N)*state.rho + screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(He4)*state.rho + screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(N)*state.rho + screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(H1)*state.rho + screened_rates(k_Co58_to_He4_Mn54_reaclib); jac.set(He4, Co58, scratch); - scratch = screened_rates(k_Co59_to_He4_Mn55_reaclib) - screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(He4)*state.rho - screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(He4)*state.rho + screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(H1)*state.rho + screened_rates(k_Co59_to_He4_Mn55_reaclib); jac.set(He4, Co59, scratch); - scratch = -screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_reaclib) + screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni56_to_He4_Fe52_reaclib); jac.set(He4, Ni56, scratch); - scratch = -screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_reaclib) + screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(N)*state.rho + screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni57_to_He4_Fe53_reaclib); jac.set(He4, Ni57, scratch); - scratch = -screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_reaclib) + screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni58_to_He4_Fe54_reaclib); jac.set(He4, Ni58, scratch); - scratch = -screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni59_to_He4_Fe55_reaclib) + screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni59_to_He4_Fe55_reaclib); jac.set(He4, Ni59, scratch); - scratch = -screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni60_to_He4_Fe56_reaclib) + screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(N)*state.rho + screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni60_to_He4_Fe56_reaclib); jac.set(He4, Ni60, scratch); - scratch = -screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni61_to_He4_Fe57_reaclib) + screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(N)*state.rho + screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni61_to_He4_Fe57_reaclib); jac.set(He4, Ni61, scratch); - scratch = -screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni62_to_He4_Fe58_reaclib) + screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(He4)*state.rho + screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni62_to_He4_Fe58_reaclib); jac.set(He4, Ni62, scratch); - scratch = -screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(He4)*state.rho; jac.set(He4, Ni63, scratch); jac.set(He4, Ni64, 0.0); - scratch = screened_rates(k_Cu57_to_He4_Co53_reaclib) - screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(N)*state.rho + screened_rates(k_Cu57_to_He4_Co53_reaclib); jac.set(He4, Cu57, scratch); - scratch = screened_rates(k_Cu58_to_He4_Co54_reaclib) - screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(N)*state.rho + screened_rates(k_Cu58_to_He4_Co54_reaclib); jac.set(He4, Cu58, scratch); - scratch = screened_rates(k_Cu59_to_He4_Co55_reaclib) - screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu59_to_He4_Co55_reaclib); jac.set(He4, Cu59, scratch); - scratch = screened_rates(k_Cu60_to_He4_Co56_reaclib) - screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(N)*state.rho + screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu60_to_He4_Co56_reaclib); jac.set(He4, Cu60, scratch); - scratch = screened_rates(k_Cu61_to_He4_Co57_reaclib) - screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(N)*state.rho + screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu61_to_He4_Co57_reaclib); jac.set(He4, Cu61, scratch); - scratch = screened_rates(k_Cu62_to_He4_Co58_reaclib) - screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(N)*state.rho + screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(N)*state.rho + screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu62_to_He4_Co58_reaclib); jac.set(He4, Cu62, scratch); - scratch = screened_rates(k_Cu63_to_He4_Co59_reaclib) - screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(He4)*state.rho + screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(He4)*state.rho + screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu63_to_He4_Co59_reaclib); jac.set(He4, Cu63, scratch); - scratch = screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(H1)*state.rho; jac.set(He4, Cu64, scratch); - scratch = screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(H1)*state.rho; jac.set(He4, Cu65, scratch); - scratch = -screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(He4)*state.rho + screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(N)*state.rho; jac.set(He4, Zn59, scratch); - scratch = -screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_reaclib) + screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(N)*state.rho + screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn60_to_He4_Ni56_reaclib); jac.set(He4, Zn60, scratch); - scratch = -screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn61_to_He4_Ni57_reaclib) + screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(He4)*state.rho + screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(N)*state.rho + screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn61_to_He4_Ni57_reaclib); jac.set(He4, Zn61, scratch); - scratch = screened_rates(k_Zn62_to_He4_Ni58_reaclib) + screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(N)*state.rho + screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn62_to_He4_Ni58_reaclib); jac.set(He4, Zn62, scratch); - scratch = screened_rates(k_Zn63_to_He4_Ni59_reaclib) + screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(N)*state.rho + screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn63_to_He4_Ni59_reaclib); jac.set(He4, Zn63, scratch); - scratch = screened_rates(k_Zn64_to_He4_Ni60_reaclib) + screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(N)*state.rho + screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn64_to_He4_Ni60_reaclib); jac.set(He4, Zn64, scratch); - scratch = screened_rates(k_Zn65_to_He4_Ni61_reaclib) + screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(N)*state.rho + screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn65_to_He4_Ni61_reaclib); jac.set(He4, Zn65, scratch); - scratch = screened_rates(k_Zn66_to_He4_Ni62_reaclib) + screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(N)*state.rho + screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(N)*state.rho + screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn66_to_He4_Ni62_reaclib); jac.set(He4, Zn66, scratch); - scratch = screened_rates(k_Ga62_to_He4_Cu58_reaclib) + screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(N)*state.rho + screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga62_to_He4_Cu58_reaclib); jac.set(He4, Ga62, scratch); - scratch = screened_rates(k_Ga63_to_He4_Cu59_reaclib) + screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(N)*state.rho + screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga63_to_He4_Cu59_reaclib); jac.set(He4, Ga63, scratch); - scratch = screened_rates(k_Ga64_to_He4_Cu60_reaclib) + screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(N)*state.rho + screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(N)*state.rho + screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga64_to_He4_Cu60_reaclib); jac.set(He4, Ga64, scratch); - scratch = screened_rates(k_Ge63_to_He4_Zn59_reaclib) + screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(N)*state.rho + screened_rates(k_Ge63_to_He4_Zn59_reaclib); jac.set(He4, Ge63, scratch); - scratch = screened_rates(k_Ge64_to_He4_Zn60_reaclib) + screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(N)*state.rho + screened_rates(k_Ge64_to_He4_Zn60_reaclib); jac.set(He4, Ge64, scratch); - scratch = screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(Be7)*state.rho - screened_rates(k_n_Li6_to_Li7_reaclib)*Y(Li6)*state.rho + screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho); + scratch = screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(Be7)*state.rho + screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Li6_n_to_Li7_reaclib)*Y(Li6)*state.rho; jac.set(Li6, N, scratch); - scratch = screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(Be9)*state.rho - screened_rates(k_p_Li6_to_Be7_reaclib)*Y(Li6)*state.rho - screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(Li6)*state.rho + screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(Li7)*state.rho; + scratch = screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(Be9)*state.rho + screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Li6_p_to_Be7_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(Li6)*state.rho + screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(Li7)*state.rho; jac.set(Li6, H1, scratch); - scratch = screened_rates(k_He4_d_to_Li6_reaclib)*Y(He4)*state.rho - screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(Li6)*state.rho - screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(Li6)*state.rho; + scratch = -screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(Li6)*state.rho + screened_rates(k_d_He4_to_Li6_reaclib)*Y(He4)*state.rho; jac.set(Li6, H2, scratch); - scratch = screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He4)*state.rho; jac.set(Li6, He3, scratch); - scratch = screened_rates(k_He4_He3_to_p_Li6_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_Li6_to_B10_reaclib)*Y(Li6)*state.rho - screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(Li6)*state.rho + screened_rates(k_He4_d_to_Li6_reaclib)*Y(H2)*state.rho + screened_rates(k_n_p_He4_to_Li6_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho); + scratch = screened_rates(k_He3_He4_to_p_Li6_reaclib)*Y(He3)*state.rho + screened_rates(k_He4_p_n_to_Li6_reaclib)*Y(N)*Y(H1)*amrex::Math::powi<2>(state.rho) - screened_rates(k_Li6_He4_to_B10_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(Li6)*state.rho + screened_rates(k_d_He4_to_Li6_reaclib)*Y(H2)*state.rho; jac.set(Li6, He4, scratch); - scratch = -screened_rates(k_He4_Li6_to_B10_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(He4)*state.rho - screened_rates(k_Li6_to_He4_d_reaclib) - screened_rates(k_Li6_to_n_p_He4_reaclib) - screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(H2)*state.rho - screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(H2)*state.rho - screened_rates(k_n_Li6_to_Li7_reaclib)*Y(N)*state.rho - screened_rates(k_p_Li6_to_Be7_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Li6_to_He4_He3_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Li6_He4_to_B10_reaclib)*Y(He4)*state.rho - screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(He4)*state.rho - screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(H2)*state.rho - screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(H2)*state.rho - screened_rates(k_Li6_n_to_Li7_reaclib)*Y(N)*state.rho - screened_rates(k_Li6_p_to_Be7_reaclib)*Y(H1)*state.rho - screened_rates(k_Li6_p_to_He4_He3_reaclib)*Y(H1)*state.rho - screened_rates(k_Li6_to_He4_d_reaclib) - screened_rates(k_Li6_to_n_p_He4_reaclib); jac.set(Li6, Li6, scratch); - scratch = screened_rates(k_Li7_to_n_Li6_reaclib) + screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(H1)*state.rho + screened_rates(k_Li7_to_n_Li6_reaclib); jac.set(Li6, Li7, scratch); - scratch = screened_rates(k_Be7_to_p_Li6_reaclib) + screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(N)*state.rho + screened_rates(k_Be7_to_p_Li6_reaclib); jac.set(Li6, Be7, scratch); - scratch = screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(H1)*state.rho; jac.set(Li6, Be9, scratch); jac.set(Li6, B8, 0.0); @@ -11578,35 +9387,35 @@ void jac_nuc(const burn_t& state, jac.set(Li6, Ge64, 0.0); - scratch = screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(B10)*state.rho + screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(Be7)*state.rho + 0.5*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_n_Li6_to_Li7_reaclib)*Y(Li6)*state.rho + 0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho); + scratch = screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(B10)*state.rho + screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(Be7)*state.rho + 0.5*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) + screened_rates(k_Li6_n_to_Li7_reaclib)*Y(Li6)*state.rho; jac.set(Li7, N, scratch); - scratch = 0.5*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(Li7)*state.rho - screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(Li7)*state.rho; + scratch = 0.5*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(Li7)*state.rho - screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(Li7)*state.rho - screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(Li7)*state.rho; jac.set(Li7, H1, scratch); - scratch = screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(Li6)*state.rho - screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(Li7)*state.rho; + scratch = screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(Li6)*state.rho - screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(Li7)*state.rho; jac.set(Li7, H2, scratch); - scratch = -screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho; + scratch = -screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(Li7)*state.rho; jac.set(Li7, He3, scratch); - scratch = 1.0*screened_rates(k_He4_He4_to_p_Li7_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Li7_to_B11_reaclib)*Y(Li7)*state.rho - screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(Li7)*state.rho + 1.0*screened_rates(k_n_He4_He4_to_d_Li7_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho); + scratch = 1.0*screened_rates(k_He4_He4_n_to_d_Li7_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + 1.0*screened_rates(k_He4_He4_to_p_Li7_reaclib)*Y(He4)*state.rho - screened_rates(k_Li7_He4_to_B11_reaclib)*Y(Li7)*state.rho - screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(Li7)*state.rho; jac.set(Li7, He4, scratch); - scratch = screened_rates(k_d_Li6_to_p_Li7_reaclib)*Y(H2)*state.rho + screened_rates(k_n_Li6_to_Li7_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Li6_d_to_p_Li7_reaclib)*Y(H2)*state.rho + screened_rates(k_Li6_n_to_Li7_reaclib)*Y(N)*state.rho; jac.set(Li7, Li6, scratch); - scratch = -screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(He4)*state.rho - screened_rates(k_Li7_to_n_Li6_reaclib) - screened_rates(k_d_Li7_to_n_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_p_Li7_to_He4_He4_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Li7_to_d_Li6_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*state.rho - screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(He4)*state.rho - screened_rates(k_Li7_d_to_n_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_Li7_p_to_He4_He4_reaclib)*Y(H1)*state.rho - screened_rates(k_Li7_p_to_d_Li6_reaclib)*Y(H1)*state.rho - screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(H1)*state.rho - screened_rates(k_Li7_to_n_Li6_reaclib); jac.set(Li7, Li7, scratch); - scratch = screened_rates(k_Be7_to_Li7_reaclib)*state.rho*state.y_e + screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(N)*state.rho + screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*state.rho*state.y_e; jac.set(Li7, Be7, scratch); jac.set(Li7, Be9, 0.0); jac.set(Li7, B8, 0.0); - scratch = screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(N)*state.rho; jac.set(Li7, B10, scratch); scratch = screened_rates(k_B11_to_He4_Li7_reaclib); @@ -11908,28 +9717,28 @@ void jac_nuc(const burn_t& state, jac.set(Li7, Ge64, 0.0); - scratch = -screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(Be7)*state.rho - screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(Be7)*state.rho; + scratch = -screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(Be7)*state.rho - screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(Be7)*state.rho - screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(Be7)*state.rho; jac.set(Be7, N, scratch); - scratch = screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(B10)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_p_Li6_to_Be7_reaclib)*Y(Li6)*state.rho + screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(Li7)*state.rho + 0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho); + scratch = screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(B10)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho + 0.5*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho) + 0.5*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Li6_p_to_Be7_reaclib)*Y(Li6)*state.rho + screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(Li7)*state.rho; jac.set(Be7, H1, scratch); - scratch = -screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(Li6)*state.rho; + scratch = -screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(Li6)*state.rho; jac.set(Be7, H2, scratch); - scratch = -screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He4)*state.rho; jac.set(Be7, He3, scratch); - scratch = -screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(Be7)*state.rho + screened_rates(k_He4_He3_to_Be7_reaclib)*Y(He3)*state.rho + 1.0*screened_rates(k_He4_He4_to_n_Be7_reaclib)*Y(He4)*state.rho + 1.0*screened_rates(k_p_He4_He4_to_d_Be7_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + 0.5*screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho); + scratch = -screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(Be7)*state.rho + screened_rates(k_He3_He4_to_Be7_reaclib)*Y(He3)*state.rho + 0.5*screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib)*Y(He4)*amrex::Math::powi<2>(Y(H1))*amrex::Math::powi<3>(state.rho) + 1.0*screened_rates(k_He4_He4_p_to_d_Be7_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_He4_He4_to_n_Be7_reaclib)*Y(He4)*state.rho; jac.set(Be7, He4, scratch); - scratch = screened_rates(k_d_Li6_to_n_Be7_reaclib)*Y(H2)*state.rho + screened_rates(k_p_Li6_to_Be7_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Li6_d_to_n_Be7_reaclib)*Y(H2)*state.rho + screened_rates(k_Li6_p_to_Be7_reaclib)*Y(H1)*state.rho; jac.set(Be7, Li6, scratch); - scratch = screened_rates(k_p_Li7_to_n_Be7_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Li7_p_to_n_Be7_reaclib)*Y(H1)*state.rho; jac.set(Be7, Li7, scratch); - scratch = -screened_rates(k_Be7_to_He4_He3_reaclib) - screened_rates(k_Be7_to_Li7_reaclib)*state.rho*state.y_e - screened_rates(k_Be7_to_p_Li6_reaclib) - screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(He4)*state.rho - screened_rates(k_d_Be7_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_n_Be7_to_He4_He4_reaclib)*Y(N)*state.rho - screened_rates(k_n_Be7_to_d_Li6_reaclib)*Y(N)*state.rho - screened_rates(k_n_Be7_to_p_Li7_reaclib)*Y(N)*state.rho - screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib)*Y(He3)*state.rho - screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(He4)*state.rho - screened_rates(k_Be7_d_to_p_He4_He4_reaclib)*Y(H2)*state.rho - screened_rates(k_Be7_n_to_He4_He4_reaclib)*Y(N)*state.rho - screened_rates(k_Be7_n_to_d_Li6_reaclib)*Y(N)*state.rho - screened_rates(k_Be7_n_to_p_Li7_reaclib)*Y(N)*state.rho - screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho - screened_rates(k_Be7_to_He4_He3_reaclib) - screened_rates(k_Be7_to_Li7_electron_capture_reaclib)*state.rho*state.y_e - screened_rates(k_Be7_to_p_Li6_reaclib); jac.set(Be7, Be7, scratch); jac.set(Be7, Be9, 0.0); @@ -11937,7 +9746,7 @@ void jac_nuc(const burn_t& state, scratch = screened_rates(k_B8_to_p_Be7_reaclib); jac.set(Be7, B8, scratch); - scratch = screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(H1)*state.rho; jac.set(Be7, B10, scratch); jac.set(Be7, B11, 0.0); @@ -12238,10 +10047,10 @@ void jac_nuc(const burn_t& state, jac.set(Be7, Ge64, 0.0); - scratch = screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_n_He4_He4_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + 0.5*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho); + scratch = screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_n_to_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + 0.5*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(H1)*amrex::Math::powi<3>(state.rho); jac.set(Be9, N, scratch); - scratch = 0.5*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho) - screened_rates(k_p_Be9_to_B10_reaclib)*Y(Be9)*state.rho - screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(Be9)*state.rho - screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(Be9)*state.rho - screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(Be9)*state.rho; + scratch = -screened_rates(k_Be9_p_to_B10_reaclib)*Y(Be9)*state.rho - screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(Be9)*state.rho - screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(Be9)*state.rho - screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(Be9)*state.rho + 0.5*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*Y(N)*amrex::Math::powi<3>(state.rho); jac.set(Be9, H1, scratch); scratch = 0.5*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); @@ -12249,17 +10058,17 @@ void jac_nuc(const burn_t& state, jac.set(Be9, He3, 0.0); - scratch = -screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(Be9)*state.rho + screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(Li6)*state.rho + 1.0*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(H2)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_n_He4_He4_to_Be9_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho); + scratch = -screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(Be9)*state.rho + 1.0*screened_rates(k_He4_He4_n_to_Be9_reaclib)*Y(He4)*Y(N)*amrex::Math::powi<2>(state.rho) + 1.0*screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib)*Y(He4)*Y(N)*Y(H1)*amrex::Math::powi<3>(state.rho) + screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(Li6)*state.rho + 1.0*screened_rates(k_d_He4_He4_to_p_Be9_reaclib)*Y(He4)*Y(H2)*amrex::Math::powi<2>(state.rho); jac.set(Be9, He4, scratch); - scratch = screened_rates(k_He4_Li6_to_p_Be9_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Li6_He4_to_p_Be9_reaclib)*Y(He4)*state.rho; jac.set(Be9, Li6, scratch); jac.set(Be9, Li7, 0.0); jac.set(Be9, Be7, 0.0); - scratch = -screened_rates(k_Be9_to_n_He4_He4_reaclib) - screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Be9_to_B10_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Be9_to_He4_Li6_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Be9_to_d_He4_He4_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(He4)*state.rho - screened_rates(k_Be9_p_to_B10_reaclib)*Y(H1)*state.rho - screened_rates(k_Be9_p_to_He4_Li6_reaclib)*Y(H1)*state.rho - screened_rates(k_Be9_p_to_d_He4_He4_reaclib)*Y(H1)*state.rho - screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib)*Y(H1)*state.rho - screened_rates(k_Be9_to_n_He4_He4_reaclib); jac.set(Be9, Be9, scratch); jac.set(Be9, B8, 0.0); @@ -12269,7 +10078,7 @@ void jac_nuc(const burn_t& state, jac.set(Be9, B11, 0.0); - scratch = screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(N)*state.rho; jac.set(Be9, C12, scratch); jac.set(Be9, C13, 0.0); @@ -12566,29 +10375,29 @@ void jac_nuc(const burn_t& state, jac.set(Be9, Ge64, 0.0); - scratch = -screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(B8)*state.rho; + scratch = -screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(B8)*state.rho; jac.set(B8, N, scratch); - scratch = screened_rates(k_p_Be7_to_B8_reaclib)*Y(Be7)*state.rho + 0.5*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); + scratch = screened_rates(k_Be7_p_to_B8_reaclib)*Y(Be7)*state.rho + 0.5*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho); jac.set(B8, H1, scratch); jac.set(B8, H2, 0.0); jac.set(B8, He3, 0.0); - scratch = 1.0*screened_rates(k_p_He4_He4_to_n_B8_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho); + scratch = 1.0*screened_rates(k_He4_He4_p_to_n_B8_reaclib)*Y(He4)*Y(H1)*amrex::Math::powi<2>(state.rho); jac.set(B8, He4, scratch); jac.set(B8, Li6, 0.0); jac.set(B8, Li7, 0.0); - scratch = screened_rates(k_p_Be7_to_B8_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be7_p_to_B8_reaclib)*Y(H1)*state.rho; jac.set(B8, Be7, scratch); jac.set(B8, Be9, 0.0); - scratch = -screened_rates(k_B8_to_He4_He4_reaclib) - screened_rates(k_B8_to_p_Be7_reaclib) - screened_rates(k_n_B8_to_p_He4_He4_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_B8_n_to_p_He4_He4_reaclib)*Y(N)*state.rho - screened_rates(k_B8_to_He4_He4_beta_pos_reaclib) - screened_rates(k_B8_to_p_Be7_reaclib); jac.set(B8, B8, scratch); jac.set(B8, B10, 0.0); @@ -12891,34 +10700,34 @@ void jac_nuc(const burn_t& state, jac.set(B8, Ge64, 0.0); - scratch = -screened_rates(k_n_B10_to_B11_reaclib)*Y(B10)*state.rho - screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(B10)*state.rho + screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_B10_n_to_B11_reaclib)*Y(B10)*state.rho - screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(B10)*state.rho + screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N13)*state.rho; jac.set(B10, N, scratch); - scratch = -screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(B10)*state.rho + screened_rates(k_p_Be9_to_B10_reaclib)*Y(Be9)*state.rho + screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(C13)*state.rho; + scratch = -screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(B10)*state.rho + screened_rates(k_Be9_p_to_B10_reaclib)*Y(Be9)*state.rho + screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(C13)*state.rho; jac.set(B10, H1, scratch); jac.set(B10, H2, 0.0); jac.set(B10, He3, 0.0); - scratch = -screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(B10)*state.rho - screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(B10)*state.rho + screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(Be7)*state.rho + screened_rates(k_He4_Li6_to_B10_reaclib)*Y(Li6)*state.rho + screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(Li7)*state.rho; + scratch = -screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(B10)*state.rho - screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(B10)*state.rho + screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(Be7)*state.rho + screened_rates(k_Li6_He4_to_B10_reaclib)*Y(Li6)*state.rho + screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(Li7)*state.rho; jac.set(B10, He4, scratch); - scratch = screened_rates(k_He4_Li6_to_B10_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Li6_He4_to_B10_reaclib)*Y(He4)*state.rho; jac.set(B10, Li6, scratch); - scratch = screened_rates(k_He4_Li7_to_n_B10_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Li7_He4_to_n_B10_reaclib)*Y(He4)*state.rho; jac.set(B10, Li7, scratch); - scratch = screened_rates(k_He4_Be7_to_p_B10_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Be7_He4_to_p_B10_reaclib)*Y(He4)*state.rho; jac.set(B10, Be7, scratch); - scratch = screened_rates(k_p_Be9_to_B10_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Be9_p_to_B10_reaclib)*Y(H1)*state.rho; jac.set(B10, Be9, scratch); jac.set(B10, B8, 0.0); - scratch = -screened_rates(k_B10_to_He4_Li6_reaclib) - screened_rates(k_B10_to_p_Be9_reaclib) - screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(He4)*state.rho - screened_rates(k_n_B10_to_B11_reaclib)*Y(N)*state.rho - screened_rates(k_n_B10_to_He4_Li7_reaclib)*Y(N)*state.rho - screened_rates(k_p_B10_to_He4_Be7_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(He4)*state.rho - screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(He4)*state.rho - screened_rates(k_B10_n_to_B11_reaclib)*Y(N)*state.rho - screened_rates(k_B10_n_to_He4_Li7_reaclib)*Y(N)*state.rho - screened_rates(k_B10_p_to_He4_Be7_reaclib)*Y(H1)*state.rho - screened_rates(k_B10_to_He4_Li6_reaclib) - screened_rates(k_B10_to_p_Be9_reaclib); jac.set(B10, B10, scratch); scratch = screened_rates(k_B11_to_n_B10_reaclib); @@ -12926,12 +10735,12 @@ void jac_nuc(const burn_t& state, jac.set(B10, C12, 0.0); - scratch = screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(H1)*state.rho; jac.set(B10, C13, scratch); jac.set(B10, C14, 0.0); - scratch = screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N)*state.rho; jac.set(B10, N13, scratch); jac.set(B10, N14, 0.0); @@ -13222,22 +11031,22 @@ void jac_nuc(const burn_t& state, jac.set(B10, Ge64, 0.0); - scratch = screened_rates(k_n_B10_to_B11_reaclib)*Y(B10)*state.rho + screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_B10_n_to_B11_reaclib)*Y(B10)*state.rho + screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N14)*state.rho; jac.set(B11, N, scratch); - scratch = -screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(B11)*state.rho + screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(C14)*state.rho; + scratch = -screened_rates(k_B11_p_to_3He4_reaclib)*Y(B11)*state.rho - screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*state.rho + screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(C14)*state.rho; jac.set(B11, H1, scratch); jac.set(B11, H2, 0.0); jac.set(B11, He3, 0.0); - scratch = -screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(B11)*state.rho - screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(B11)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_Li7_to_B11_reaclib)*Y(Li7)*state.rho; + scratch = -screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(B11)*state.rho - screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(B11)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_p_B11_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Li7_He4_to_B11_reaclib)*Y(Li7)*state.rho; jac.set(B11, He4, scratch); jac.set(B11, Li6, 0.0); - scratch = screened_rates(k_He4_Li7_to_B11_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Li7_He4_to_B11_reaclib)*Y(He4)*state.rho; jac.set(B11, Li7, scratch); jac.set(B11, Be7, 0.0); @@ -13246,10 +11055,10 @@ void jac_nuc(const burn_t& state, jac.set(B11, B8, 0.0); - scratch = screened_rates(k_n_B10_to_B11_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_B10_n_to_B11_reaclib)*Y(N)*state.rho; jac.set(B11, B10, scratch); - scratch = -screened_rates(k_B11_to_He4_Li7_reaclib) - screened_rates(k_B11_to_n_B10_reaclib) - screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(He4)*state.rho - screened_rates(k_p_B11_to_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_B11_to_He4_He4_He4_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(He4)*state.rho - screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(He4)*state.rho - screened_rates(k_B11_p_to_3He4_reaclib)*Y(H1)*state.rho - screened_rates(k_B11_p_to_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_B11_to_He4_Li7_reaclib) - screened_rates(k_B11_to_n_B10_reaclib); jac.set(B11, B11, scratch); scratch = screened_rates(k_C12_to_p_B11_reaclib); @@ -13257,12 +11066,12 @@ void jac_nuc(const burn_t& state, jac.set(B11, C13, 0.0); - scratch = screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(H1)*state.rho; jac.set(B11, C14, scratch); jac.set(B11, N13, 0.0); - scratch = screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N)*state.rho; jac.set(B11, N14, scratch); jac.set(B11, N15, 0.0); @@ -13551,17 +11360,17 @@ void jac_nuc(const burn_t& state, jac.set(B11, Ge64, 0.0); - scratch = -screened_rates(k_n_C12_to_C13_reaclib)*Y(C12)*state.rho - screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*state.rho + screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(O15)*state.rho; + scratch = -screened_rates(k_C12_n_to_C13_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*state.rho + screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(O15)*state.rho; jac.set(C12, N, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_B11_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho + 2.0*screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(Al27)*state.rho + screened_rates(k_B11_p_to_C12_reaclib)*Y(B11)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho + 2.0*screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(Na23)*state.rho + screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(P31)*state.rho; jac.set(C12, H1, scratch); jac.set(C12, H2, 0.0); jac.set(C12, He3, 0.0); - scratch = screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(Be9)*state.rho - screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(Mg24)*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(Ne20)*state.rho + screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(Be9)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(C12)*state.rho + 0.5*screened_rates(k_He4_He4_He4_to_C12_reaclib)*amrex::Math::powi<2>(Y(He4))*amrex::Math::powi<2>(state.rho) + screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(Mg24)*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(Si28)*state.rho; jac.set(C12, He4, scratch); jac.set(C12, Li6, 0.0); @@ -13570,17 +11379,17 @@ void jac_nuc(const burn_t& state, jac.set(C12, Be7, 0.0); - scratch = screened_rates(k_He4_Be9_to_n_C12_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Be9_He4_to_n_C12_reaclib)*Y(He4)*state.rho; jac.set(C12, Be9, scratch); jac.set(C12, B8, 0.0); jac.set(C12, B10, 0.0); - scratch = screened_rates(k_p_B11_to_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_B11_p_to_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, B11, scratch); - scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(Ne20)*state.rho - screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(Ne20)*state.rho - screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_to_He4_He4_He4_reaclib) - screened_rates(k_C12_to_p_B11_reaclib) - screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(He4)*state.rho - screened_rates(k_n_C12_to_C13_reaclib)*Y(N)*state.rho - screened_rates(k_n_C12_to_He4_Be9_reaclib)*Y(N)*state.rho - screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = -2.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_n_Mg23_reaclib)*Y(C12)*state.rho - 2.0*screened_rates(k_C12_C12_to_p_Na23_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(He4)*state.rho - screened_rates(k_C12_n_to_C13_reaclib)*Y(N)*state.rho - screened_rates(k_C12_n_to_He4_Be9_reaclib)*Y(N)*state.rho - screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C12_to_3He4_reaclib) - screened_rates(k_C12_to_p_B11_reaclib) - screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(Ne20)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(C12, C12, scratch); scratch = screened_rates(k_C13_to_n_C12_reaclib); @@ -13593,15 +11402,15 @@ void jac_nuc(const burn_t& state, jac.set(C12, N14, 0.0); - scratch = screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, N15, scratch); jac.set(C12, O14, 0.0); - scratch = screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(N)*state.rho; jac.set(C12, O15, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_reaclib); + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho + screened_rates(k_O16_to_He4_C12_reaclib); jac.set(C12, O16, scratch); jac.set(C12, O17, 0.0); @@ -13618,7 +11427,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ne19, 0.0); - scratch = -screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(He4)*state.rho; + scratch = -screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(C12)*state.rho - screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(C12)*state.rho + 2.0*screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(He4)*state.rho; jac.set(C12, Ne20, scratch); jac.set(C12, Ne21, 0.0); @@ -13629,13 +11438,13 @@ void jac_nuc(const burn_t& state, jac.set(C12, Na22, 0.0); - scratch = 2.0*screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(H1)*state.rho; jac.set(C12, Na23, scratch); - scratch = 2.0*screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(N)*state.rho; + scratch = 2.0*screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(N)*state.rho; jac.set(C12, Mg23, scratch); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(He4)*state.rho; jac.set(C12, Mg24, scratch); jac.set(C12, Mg25, 0.0); @@ -13646,10 +11455,10 @@ void jac_nuc(const burn_t& state, jac.set(C12, Al26, 0.0); - scratch = screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(H1)*state.rho; jac.set(C12, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(He4)*state.rho; jac.set(C12, Si28, scratch); jac.set(C12, Si29, 0.0); @@ -13664,7 +11473,7 @@ void jac_nuc(const burn_t& state, jac.set(C12, P30, 0.0); - scratch = screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(H1)*state.rho; jac.set(C12, P31, scratch); jac.set(C12, P32, 0.0); @@ -13889,18 +11698,18 @@ void jac_nuc(const burn_t& state, jac.set(C12, Ge64, 0.0); - scratch = screened_rates(k_n_C12_to_C13_reaclib)*Y(C12)*state.rho - screened_rates(k_n_C13_to_C14_reaclib)*Y(C13)*state.rho + screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N13)*state.rho + screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N14)*state.rho + screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_n_to_C13_reaclib)*Y(C12)*state.rho - screened_rates(k_C13_n_to_C14_reaclib)*Y(C13)*state.rho + screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N13)*state.rho + screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N14)*state.rho + screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(O16)*state.rho; jac.set(C13, N, scratch); - scratch = -screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(C13)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_p_C13_to_n_N13_reaclib)*Y(C13)*state.rho; + scratch = -screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(C13)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho - screened_rates(k_C13_p_to_n_N13_reaclib)*Y(C13)*state.rho; jac.set(C13, H1, scratch); - scratch = -screened_rates(k_d_C13_to_n_N14_reaclib)*Y(C13)*state.rho; + scratch = -screened_rates(k_C13_d_to_n_N14_reaclib)*Y(C13)*state.rho; jac.set(C13, H2, scratch); jac.set(C13, He3, 0.0); - scratch = screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(B10)*state.rho - screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(C13)*state.rho; + scratch = screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(B10)*state.rho - screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(C13)*state.rho; jac.set(C13, He4, scratch); jac.set(C13, Li6, 0.0); @@ -13913,24 +11722,24 @@ void jac_nuc(const burn_t& state, jac.set(C13, B8, 0.0); - scratch = screened_rates(k_He4_B10_to_p_C13_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_B10_He4_to_p_C13_reaclib)*Y(He4)*state.rho; jac.set(C13, B10, scratch); jac.set(C13, B11, 0.0); - scratch = screened_rates(k_n_C12_to_C13_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_C12_n_to_C13_reaclib)*Y(N)*state.rho; jac.set(C13, C12, scratch); - scratch = -screened_rates(k_C13_to_n_C12_reaclib) - screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_d_C13_to_n_N14_reaclib)*Y(H2)*state.rho - screened_rates(k_n_C13_to_C14_reaclib)*Y(N)*state.rho - screened_rates(k_p_C13_to_He4_B10_reaclib)*Y(H1)*state.rho - screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_p_C13_to_n_N13_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_C13_d_to_n_N14_reaclib)*Y(H2)*state.rho - screened_rates(k_C13_n_to_C14_reaclib)*Y(N)*state.rho - screened_rates(k_C13_p_to_He4_B10_reaclib)*Y(H1)*state.rho - screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_C13_p_to_n_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_C13_to_n_C12_reaclib); jac.set(C13, C13, scratch); scratch = screened_rates(k_C14_to_n_C13_reaclib); jac.set(C13, C14, scratch); - scratch = screened_rates(k_N13_to_C13_reaclib) + screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N)*state.rho + screened_rates(k_N13_to_C13_beta_pos_reaclib); jac.set(C13, N13, scratch); - scratch = screened_rates(k_N14_to_p_C13_reaclib) + screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N)*state.rho + screened_rates(k_N14_to_p_C13_reaclib); jac.set(C13, N14, scratch); jac.set(C13, N15, 0.0); @@ -13939,7 +11748,7 @@ void jac_nuc(const burn_t& state, jac.set(C13, O15, 0.0); - scratch = screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(N)*state.rho; jac.set(C13, O16, scratch); jac.set(C13, O17, 0.0); @@ -14220,18 +12029,18 @@ void jac_nuc(const burn_t& state, jac.set(C13, Ge64, 0.0); - scratch = screened_rates(k_n_C13_to_C14_reaclib)*Y(C13)*state.rho + screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N14)*state.rho + screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N15)*state.rho + screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_C13_n_to_C14_reaclib)*Y(C13)*state.rho + screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N14)*state.rho + screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N15)*state.rho + screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(O17)*state.rho; jac.set(C14, N, scratch); - scratch = -screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(C14)*state.rho - screened_rates(k_p_C14_to_N15_reaclib)*Y(C14)*state.rho - screened_rates(k_p_C14_to_n_N14_reaclib)*Y(C14)*state.rho; + scratch = -screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(C14)*state.rho - screened_rates(k_C14_p_to_N15_reaclib)*Y(C14)*state.rho - screened_rates(k_C14_p_to_n_N14_reaclib)*Y(C14)*state.rho; jac.set(C14, H1, scratch); - scratch = -screened_rates(k_d_C14_to_n_N15_reaclib)*Y(C14)*state.rho; + scratch = -screened_rates(k_C14_d_to_n_N15_reaclib)*Y(C14)*state.rho; jac.set(C14, H2, scratch); jac.set(C14, He3, 0.0); - scratch = screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(B11)*state.rho - screened_rates(k_He4_C14_to_O18_reaclib)*Y(C14)*state.rho - screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(C14)*state.rho; + scratch = screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(B11)*state.rho - screened_rates(k_C14_He4_to_O18_reaclib)*Y(C14)*state.rho - screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(C14)*state.rho; jac.set(C14, He4, scratch); jac.set(C14, Li6, 0.0); @@ -14246,23 +12055,23 @@ void jac_nuc(const burn_t& state, jac.set(C14, B10, 0.0); - scratch = screened_rates(k_He4_B11_to_p_C14_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_B11_He4_to_p_C14_reaclib)*Y(He4)*state.rho; jac.set(C14, B11, scratch); jac.set(C14, C12, 0.0); - scratch = screened_rates(k_n_C13_to_C14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_C13_n_to_C14_reaclib)*Y(N)*state.rho; jac.set(C14, C13, scratch); - scratch = -screened_rates(k_C14_to_N14_reaclib) - screened_rates(k_C14_to_n_C13_reaclib) - screened_rates(k_He4_C14_to_O18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(He4)*state.rho - screened_rates(k_d_C14_to_n_N15_reaclib)*Y(H2)*state.rho - screened_rates(k_p_C14_to_He4_B11_reaclib)*Y(H1)*state.rho - screened_rates(k_p_C14_to_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_C14_to_n_N14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_C14_He4_to_O18_reaclib)*Y(He4)*state.rho - screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(He4)*state.rho - screened_rates(k_C14_d_to_n_N15_reaclib)*Y(H2)*state.rho - screened_rates(k_C14_p_to_He4_B11_reaclib)*Y(H1)*state.rho - screened_rates(k_C14_p_to_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_C14_p_to_n_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_C14_to_N14_beta_neg_reaclib) - screened_rates(k_C14_to_n_C13_reaclib); jac.set(C14, C14, scratch); jac.set(C14, N13, 0.0); - scratch = screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N)*state.rho; jac.set(C14, N14, scratch); - scratch = screened_rates(k_N15_to_p_C14_reaclib) + screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N)*state.rho + screened_rates(k_N15_to_p_C14_reaclib); jac.set(C14, N15, scratch); jac.set(C14, O14, 0.0); @@ -14271,7 +12080,7 @@ void jac_nuc(const burn_t& state, jac.set(C14, O16, 0.0); - scratch = screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(N)*state.rho; jac.set(C14, O17, scratch); scratch = screened_rates(k_O18_to_He4_C14_reaclib); @@ -14551,17 +12360,17 @@ void jac_nuc(const burn_t& state, jac.set(C14, Ge64, 0.0); - scratch = -screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N13)*state.rho - screened_rates(k_n_N13_to_N14_reaclib)*Y(N13)*state.rho - screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N13)*state.rho; + scratch = -screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N13)*state.rho - screened_rates(k_N13_n_to_N14_reaclib)*Y(N13)*state.rho - screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N13)*state.rho; jac.set(N13, N, scratch); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_p_C13_to_n_N13_reaclib)*Y(C13)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(C12)*state.rho + screened_rates(k_C13_p_to_n_N13_reaclib)*Y(C13)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(O16)*state.rho; jac.set(N13, H1, scratch); jac.set(N13, H2, 0.0); jac.set(N13, He3, 0.0); - scratch = screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(B10)*state.rho - screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho; + scratch = screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(B10)*state.rho - screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho; jac.set(N13, He4, scratch); jac.set(N13, Li6, 0.0); @@ -14574,20 +12383,20 @@ void jac_nuc(const burn_t& state, jac.set(N13, B8, 0.0); - scratch = screened_rates(k_He4_B10_to_n_N13_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_B10_He4_to_n_N13_reaclib)*Y(He4)*state.rho; jac.set(N13, B10, scratch); jac.set(N13, B11, 0.0); - scratch = screened_rates(k_p_C12_to_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C12_p_to_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C12, scratch); - scratch = screened_rates(k_p_C13_to_n_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_p_to_n_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, C13, scratch); jac.set(N13, C14, 0.0); - scratch = -screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_to_C13_reaclib) - screened_rates(k_N13_to_p_C12_reaclib) - screened_rates(k_n_N13_to_He4_B10_reaclib)*Y(N)*state.rho - screened_rates(k_n_N13_to_N14_reaclib)*Y(N)*state.rho - screened_rates(k_n_N13_to_p_C13_reaclib)*Y(N)*state.rho - screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_N13_n_to_He4_B10_reaclib)*Y(N)*state.rho - screened_rates(k_N13_n_to_N14_reaclib)*Y(N)*state.rho - screened_rates(k_N13_n_to_p_C13_reaclib)*Y(N)*state.rho - screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_N13_to_C13_beta_pos_reaclib) - screened_rates(k_N13_to_p_C12_reaclib); jac.set(N13, N13, scratch); scratch = screened_rates(k_N14_to_n_N13_reaclib); @@ -14600,7 +12409,7 @@ void jac_nuc(const burn_t& state, jac.set(N13, O15, 0.0); - scratch = screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(H1)*state.rho; jac.set(N13, O16, scratch); jac.set(N13, O17, 0.0); @@ -14881,18 +12690,18 @@ void jac_nuc(const burn_t& state, jac.set(N13, Ge64, 0.0); - scratch = screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(F17)*state.rho + screened_rates(k_n_N13_to_N14_reaclib)*Y(N13)*state.rho - screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N14)*state.rho - screened_rates(k_n_N14_to_N15_reaclib)*Y(N14)*state.rho - screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N14)*state.rho - screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N14)*state.rho + screened_rates(k_n_O14_to_p_N14_reaclib)*Y(O14)*state.rho; + scratch = screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(F17)*state.rho + screened_rates(k_N13_n_to_N14_reaclib)*Y(N13)*state.rho - screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_n_to_N15_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N14)*state.rho + screened_rates(k_O14_n_to_p_N14_reaclib)*Y(O14)*state.rho; jac.set(N14, N, scratch); - scratch = screened_rates(k_p_C13_to_N14_reaclib)*Y(C13)*state.rho + screened_rates(k_p_C14_to_n_N14_reaclib)*Y(C14)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_p_N14_to_n_O14_reaclib)*Y(N14)*state.rho + screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_C13_p_to_N14_reaclib)*Y(C13)*state.rho + screened_rates(k_C14_p_to_n_N14_reaclib)*Y(C14)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_p_to_n_O14_reaclib)*Y(N14)*state.rho + screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho; jac.set(N14, H1, scratch); - scratch = screened_rates(k_d_C13_to_n_N14_reaclib)*Y(C13)*state.rho; + scratch = screened_rates(k_C13_d_to_n_N14_reaclib)*Y(C13)*state.rho; jac.set(N14, H2, scratch); jac.set(N14, He3, 0.0); - scratch = screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(B11)*state.rho - screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(B11)*state.rho - screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(N14)*state.rho - screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(N14)*state.rho; jac.set(N14, He4, scratch); jac.set(N14, Li6, 0.0); @@ -14907,27 +12716,27 @@ void jac_nuc(const burn_t& state, jac.set(N14, B10, 0.0); - scratch = screened_rates(k_He4_B11_to_n_N14_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_B11_He4_to_n_N14_reaclib)*Y(He4)*state.rho; jac.set(N14, B11, scratch); jac.set(N14, C12, 0.0); - scratch = screened_rates(k_d_C13_to_n_N14_reaclib)*Y(H2)*state.rho + screened_rates(k_p_C13_to_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C13_d_to_n_N14_reaclib)*Y(H2)*state.rho + screened_rates(k_C13_p_to_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, C13, scratch); - scratch = screened_rates(k_C14_to_N14_reaclib) + screened_rates(k_p_C14_to_n_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C14_p_to_n_N14_reaclib)*Y(H1)*state.rho + screened_rates(k_C14_to_N14_beta_neg_reaclib); jac.set(N14, C14, scratch); - scratch = screened_rates(k_n_N13_to_N14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N13_n_to_N14_reaclib)*Y(N)*state.rho; jac.set(N14, N13, scratch); - scratch = -screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_to_n_N13_reaclib) - screened_rates(k_N14_to_p_C13_reaclib) - screened_rates(k_n_N14_to_He4_B11_reaclib)*Y(N)*state.rho - screened_rates(k_n_N14_to_N15_reaclib)*Y(N)*state.rho - screened_rates(k_n_N14_to_d_C13_reaclib)*Y(N)*state.rho - screened_rates(k_n_N14_to_p_C14_reaclib)*Y(N)*state.rho - screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N14_to_n_O14_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(He4)*state.rho - screened_rates(k_N14_n_to_He4_B11_reaclib)*Y(N)*state.rho - screened_rates(k_N14_n_to_N15_reaclib)*Y(N)*state.rho - screened_rates(k_N14_n_to_d_C13_reaclib)*Y(N)*state.rho - screened_rates(k_N14_n_to_p_C14_reaclib)*Y(N)*state.rho - screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_N14_p_to_n_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_N14_to_n_N13_reaclib) - screened_rates(k_N14_to_p_C13_reaclib); jac.set(N14, N14, scratch); scratch = screened_rates(k_N15_to_n_N14_reaclib); jac.set(N14, N15, scratch); - scratch = screened_rates(k_O14_to_N14_reaclib) + screened_rates(k_n_O14_to_p_N14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O14_n_to_p_N14_reaclib)*Y(N)*state.rho + screened_rates(k_O14_to_N14_beta_pos_reaclib); jac.set(N14, O14, scratch); scratch = screened_rates(k_O15_to_p_N14_reaclib); @@ -14935,12 +12744,12 @@ void jac_nuc(const burn_t& state, jac.set(N14, O16, 0.0); - scratch = screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho; jac.set(N14, O17, scratch); jac.set(N14, O18, 0.0); - scratch = screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(N)*state.rho; jac.set(N14, F17, scratch); scratch = screened_rates(k_F18_to_He4_N14_reaclib); @@ -15216,18 +13025,18 @@ void jac_nuc(const burn_t& state, jac.set(N14, Ge64, 0.0); - scratch = screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(F18)*state.rho + screened_rates(k_n_N14_to_N15_reaclib)*Y(N14)*state.rho - screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N15)*state.rho + screened_rates(k_n_O15_to_p_N15_reaclib)*Y(O15)*state.rho; + scratch = screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_n_to_N15_reaclib)*Y(N14)*state.rho - screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N15)*state.rho + screened_rates(k_O15_n_to_p_N15_reaclib)*Y(O15)*state.rho; jac.set(N15, N, scratch); - scratch = screened_rates(k_p_C14_to_N15_reaclib)*Y(C14)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_N15_to_n_O15_reaclib)*Y(N15)*state.rho + screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho; + scratch = screened_rates(k_C14_p_to_N15_reaclib)*Y(C14)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_p_to_n_O15_reaclib)*Y(N15)*state.rho + screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho; jac.set(N15, H1, scratch); - scratch = screened_rates(k_d_C14_to_n_N15_reaclib)*Y(C14)*state.rho; + scratch = screened_rates(k_C14_d_to_n_N15_reaclib)*Y(C14)*state.rho; jac.set(N15, H2, scratch); jac.set(N15, He3, 0.0); - scratch = screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(N15)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(C12)*state.rho - screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(N15)*state.rho - screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(N15)*state.rho; jac.set(N15, He4, scratch); jac.set(N15, Li6, 0.0); @@ -15244,25 +13053,25 @@ void jac_nuc(const burn_t& state, jac.set(N15, B11, 0.0); - scratch = screened_rates(k_He4_C12_to_p_N15_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_p_N15_reaclib)*Y(He4)*state.rho; jac.set(N15, C12, scratch); jac.set(N15, C13, 0.0); - scratch = screened_rates(k_d_C14_to_n_N15_reaclib)*Y(H2)*state.rho + screened_rates(k_p_C14_to_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_C14_d_to_n_N15_reaclib)*Y(H2)*state.rho + screened_rates(k_C14_p_to_N15_reaclib)*Y(H1)*state.rho; jac.set(N15, C14, scratch); jac.set(N15, N13, 0.0); - scratch = screened_rates(k_n_N14_to_N15_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_N14_n_to_N15_reaclib)*Y(N)*state.rho; jac.set(N15, N14, scratch); - scratch = -screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_to_n_N14_reaclib) - screened_rates(k_N15_to_p_C14_reaclib) - screened_rates(k_n_N15_to_d_C14_reaclib)*Y(N)*state.rho - screened_rates(k_p_N15_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_N15_to_n_O15_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(He4)*state.rho - screened_rates(k_N15_n_to_d_C14_reaclib)*Y(N)*state.rho - screened_rates(k_N15_p_to_He4_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_p_to_n_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_N15_to_n_N14_reaclib) - screened_rates(k_N15_to_p_C14_reaclib); jac.set(N15, N15, scratch); jac.set(N15, O14, 0.0); - scratch = screened_rates(k_O15_to_N15_reaclib) + screened_rates(k_n_O15_to_p_N15_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O15_n_to_p_N15_reaclib)*Y(N)*state.rho + screened_rates(k_O15_to_N15_beta_pos_reaclib); jac.set(N15, O15, scratch); scratch = screened_rates(k_O16_to_p_N15_reaclib); @@ -15270,12 +13079,12 @@ void jac_nuc(const burn_t& state, jac.set(N15, O17, 0.0); - scratch = screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho; jac.set(N15, O18, scratch); jac.set(N15, F17, 0.0); - scratch = screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(N)*state.rho; jac.set(N15, F18, scratch); scratch = screened_rates(k_F19_to_He4_N15_reaclib); @@ -15549,17 +13358,17 @@ void jac_nuc(const burn_t& state, jac.set(N15, Ge64, 0.0); - scratch = -screened_rates(k_n_O14_to_O15_reaclib)*Y(O14)*state.rho - screened_rates(k_n_O14_to_p_N14_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_O14_n_to_O15_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_n_to_p_N14_reaclib)*Y(O14)*state.rho; jac.set(O14, N, scratch); - scratch = screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(F17)*state.rho + screened_rates(k_p_N13_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_p_N14_to_n_O14_reaclib)*Y(N14)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(F17)*state.rho + screened_rates(k_N13_p_to_O14_reaclib)*Y(N13)*state.rho + screened_rates(k_N14_p_to_n_O14_reaclib)*Y(N14)*state.rho; jac.set(O14, H1, scratch); jac.set(O14, H2, 0.0); jac.set(O14, He3, 0.0); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(O14, He4, scratch); jac.set(O14, Li6, 0.0); @@ -15582,15 +13391,15 @@ void jac_nuc(const burn_t& state, jac.set(O14, C14, 0.0); - scratch = screened_rates(k_p_N13_to_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N13_p_to_O14_reaclib)*Y(H1)*state.rho; jac.set(O14, N13, scratch); - scratch = screened_rates(k_p_N14_to_n_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_p_to_n_O14_reaclib)*Y(H1)*state.rho; jac.set(O14, N14, scratch); jac.set(O14, N15, 0.0); - scratch = -screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_to_N14_reaclib) - screened_rates(k_O14_to_p_N13_reaclib) - screened_rates(k_n_O14_to_O15_reaclib)*Y(N)*state.rho - screened_rates(k_n_O14_to_p_N14_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho - screened_rates(k_O14_n_to_O15_reaclib)*Y(N)*state.rho - screened_rates(k_O14_n_to_p_N14_reaclib)*Y(N)*state.rho - screened_rates(k_O14_to_N14_beta_pos_reaclib) - screened_rates(k_O14_to_p_N13_reaclib); jac.set(O14, O14, scratch); scratch = screened_rates(k_O15_to_n_O14_reaclib); @@ -15602,7 +13411,7 @@ void jac_nuc(const burn_t& state, jac.set(O14, O18, 0.0); - scratch = screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(H1)*state.rho; jac.set(O14, F17, scratch); jac.set(O14, F18, 0.0); @@ -15878,17 +13687,17 @@ void jac_nuc(const burn_t& state, jac.set(O14, Ge64, 0.0); - scratch = screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(Ne18)*state.rho + screened_rates(k_n_O14_to_O15_reaclib)*Y(O14)*state.rho - screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(O15)*state.rho - screened_rates(k_n_O15_to_O16_reaclib)*Y(O15)*state.rho - screened_rates(k_n_O15_to_p_N15_reaclib)*Y(O15)*state.rho; + scratch = screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(Ne18)*state.rho + screened_rates(k_O14_n_to_O15_reaclib)*Y(O14)*state.rho - screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_n_to_O16_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_n_to_p_N15_reaclib)*Y(O15)*state.rho; jac.set(O15, N, scratch); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_p_N14_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_p_N15_to_n_O15_reaclib)*Y(N15)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_p_to_O15_reaclib)*Y(N14)*state.rho + screened_rates(k_N15_p_to_n_O15_reaclib)*Y(N15)*state.rho; jac.set(O15, H1, scratch); jac.set(O15, H2, 0.0); jac.set(O15, He3, 0.0); - scratch = screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(O15)*state.rho - screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(O15)*state.rho; + scratch = screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(C12)*state.rho - screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(O15)*state.rho - screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(O15)*state.rho; jac.set(O15, He4, scratch); jac.set(O15, Li6, 0.0); @@ -15905,7 +13714,7 @@ void jac_nuc(const burn_t& state, jac.set(O15, B11, 0.0); - scratch = screened_rates(k_He4_C12_to_n_O15_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_n_O15_reaclib)*Y(He4)*state.rho; jac.set(O15, C12, scratch); jac.set(O15, C13, 0.0); @@ -15914,16 +13723,16 @@ void jac_nuc(const burn_t& state, jac.set(O15, N13, 0.0); - scratch = screened_rates(k_p_N14_to_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N14_p_to_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, N14, scratch); - scratch = screened_rates(k_p_N15_to_n_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_n_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, N15, scratch); - scratch = screened_rates(k_n_O14_to_O15_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O14_n_to_O15_reaclib)*Y(N)*state.rho; jac.set(O15, O14, scratch); - scratch = -screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_to_N15_reaclib) - screened_rates(k_O15_to_n_O14_reaclib) - screened_rates(k_O15_to_p_N14_reaclib) - screened_rates(k_n_O15_to_He4_C12_reaclib)*Y(N)*state.rho - screened_rates(k_n_O15_to_O16_reaclib)*Y(N)*state.rho - screened_rates(k_n_O15_to_p_N15_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(He4)*state.rho - screened_rates(k_O15_n_to_He4_C12_reaclib)*Y(N)*state.rho - screened_rates(k_O15_n_to_O16_reaclib)*Y(N)*state.rho - screened_rates(k_O15_n_to_p_N15_reaclib)*Y(N)*state.rho - screened_rates(k_O15_to_N15_beta_pos_reaclib) - screened_rates(k_O15_to_n_O14_reaclib) - screened_rates(k_O15_to_p_N14_reaclib); jac.set(O15, O15, scratch); scratch = screened_rates(k_O16_to_n_O15_reaclib); @@ -15935,12 +13744,12 @@ void jac_nuc(const burn_t& state, jac.set(O15, F17, 0.0); - scratch = screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho; jac.set(O15, F18, scratch); jac.set(O15, F19, 0.0); - scratch = screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(N)*state.rho; jac.set(O15, Ne18, scratch); scratch = screened_rates(k_Ne19_to_He4_O15_reaclib); @@ -16210,17 +14019,17 @@ void jac_nuc(const burn_t& state, jac.set(O15, Ge64, 0.0); - scratch = screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(Ne19)*state.rho + screened_rates(k_n_O15_to_O16_reaclib)*Y(O15)*state.rho - screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(O16)*state.rho - screened_rates(k_n_O16_to_O17_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(Ne19)*state.rho + screened_rates(k_O15_n_to_O16_reaclib)*Y(O15)*state.rho - screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_n_to_O17_reaclib)*Y(O16)*state.rho; jac.set(O16, N, scratch); - scratch = screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_p_N15_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(Al27)*state.rho + screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_p_to_O16_reaclib)*Y(N15)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(P31)*state.rho; jac.set(O16, H1, scratch); jac.set(O16, H2, 0.0); jac.set(O16, He3, 0.0); - scratch = screened_rates(k_He4_C12_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(C13)*state.rho + screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(Mg24)*state.rho + screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(O16)*state.rho - screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(C12)*state.rho + screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(C13)*state.rho + screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(Mg24)*state.rho + screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(N13)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(O16)*state.rho + 2.0*screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(Si28)*state.rho; jac.set(O16, He4, scratch); jac.set(O16, Li6, 0.0); @@ -16237,28 +14046,28 @@ void jac_nuc(const burn_t& state, jac.set(O16, B11, 0.0); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_C12_to_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C12_He4_to_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(O16, C12, scratch); - scratch = screened_rates(k_He4_C13_to_n_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C13_He4_to_n_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, C13, scratch); jac.set(O16, C14, 0.0); - scratch = screened_rates(k_He4_N13_to_p_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N13_He4_to_p_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, N13, scratch); jac.set(O16, N14, 0.0); - scratch = screened_rates(k_p_N15_to_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_N15_p_to_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, N15, scratch); jac.set(O16, O14, 0.0); - scratch = screened_rates(k_n_O15_to_O16_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O15_n_to_O16_reaclib)*Y(N)*state.rho; jac.set(O16, O15, scratch); - scratch = -screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_to_He4_C12_reaclib) - screened_rates(k_O16_to_n_O15_reaclib) - screened_rates(k_O16_to_p_N15_reaclib) - screened_rates(k_n_O16_to_He4_C13_reaclib)*Y(N)*state.rho - screened_rates(k_n_O16_to_O17_reaclib)*Y(N)*state.rho - screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O16_to_He4_N13_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho - screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(He4)*state.rho - screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(He4)*state.rho - 2.0*screened_rates(k_O16_O16_to_He4_Si28_reaclib)*Y(O16)*state.rho - 2.0*screened_rates(k_O16_O16_to_p_P31_reaclib)*Y(O16)*state.rho - screened_rates(k_O16_n_to_He4_C13_reaclib)*Y(N)*state.rho - screened_rates(k_O16_n_to_O17_reaclib)*Y(N)*state.rho - screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_p_to_He4_N13_reaclib)*Y(H1)*state.rho - screened_rates(k_O16_to_He4_C12_reaclib) - screened_rates(k_O16_to_n_O15_reaclib) - screened_rates(k_O16_to_p_N15_reaclib); jac.set(O16, O16, scratch); scratch = screened_rates(k_O17_to_n_O16_reaclib); @@ -16271,12 +14080,12 @@ void jac_nuc(const burn_t& state, jac.set(O16, F18, 0.0); - scratch = screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, F19, scratch); jac.set(O16, Ne18, 0.0); - scratch = screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(N)*state.rho; jac.set(O16, Ne19, scratch); scratch = screened_rates(k_Ne20_to_He4_O16_reaclib); @@ -16294,7 +14103,7 @@ void jac_nuc(const burn_t& state, jac.set(O16, Mg23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, Mg24, scratch); jac.set(O16, Mg25, 0.0); @@ -16305,10 +14114,10 @@ void jac_nuc(const burn_t& state, jac.set(O16, Al26, 0.0); - scratch = screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, Al27, scratch); - scratch = 2.0*screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(He4)*state.rho; + scratch = 2.0*screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(He4)*state.rho; jac.set(O16, Si28, scratch); jac.set(O16, Si29, 0.0); @@ -16323,7 +14132,7 @@ void jac_nuc(const burn_t& state, jac.set(O16, P30, 0.0); - scratch = 2.0*screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(H1)*state.rho; + scratch = 2.0*screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(H1)*state.rho; jac.set(O16, P31, scratch); jac.set(O16, P32, 0.0); @@ -16548,17 +14357,17 @@ void jac_nuc(const burn_t& state, jac.set(O16, Ge64, 0.0); - scratch = screened_rates(k_n_F17_to_p_O17_reaclib)*Y(F17)*state.rho + screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_n_O16_to_O17_reaclib)*Y(O16)*state.rho - screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(O17)*state.rho - screened_rates(k_n_O17_to_O18_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_F17_n_to_p_O17_reaclib)*Y(F17)*state.rho + screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_n_to_O17_reaclib)*Y(O16)*state.rho - screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_n_to_O18_reaclib)*Y(O17)*state.rho; jac.set(O17, N, scratch); - scratch = -screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_p_O17_to_n_F17_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_p_to_n_F17_reaclib)*Y(O17)*state.rho; jac.set(O17, H1, scratch); jac.set(O17, H2, 0.0); jac.set(O17, He3, 0.0); - scratch = screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(C14)*state.rho + screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(N14)*state.rho - screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho - screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(C14)*state.rho + screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(N14)*state.rho - screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho - screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(O17)*state.rho; jac.set(O17, He4, scratch); jac.set(O17, Li6, 0.0); @@ -16579,12 +14388,12 @@ void jac_nuc(const burn_t& state, jac.set(O17, C13, 0.0); - scratch = screened_rates(k_He4_C14_to_n_O17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C14_He4_to_n_O17_reaclib)*Y(He4)*state.rho; jac.set(O17, C14, scratch); jac.set(O17, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_p_O17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_p_O17_reaclib)*Y(He4)*state.rho; jac.set(O17, N14, scratch); jac.set(O17, N15, 0.0); @@ -16593,16 +14402,16 @@ void jac_nuc(const burn_t& state, jac.set(O17, O15, 0.0); - scratch = screened_rates(k_n_O16_to_O17_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O16_n_to_O17_reaclib)*Y(N)*state.rho; jac.set(O17, O16, scratch); - scratch = -screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_to_n_O16_reaclib) - screened_rates(k_n_O17_to_He4_C14_reaclib)*Y(N)*state.rho - screened_rates(k_n_O17_to_O18_reaclib)*Y(N)*state.rho - screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_He4_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O17_to_n_F17_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_O17_n_to_He4_C14_reaclib)*Y(N)*state.rho - screened_rates(k_O17_n_to_O18_reaclib)*Y(N)*state.rho - screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_He4_N14_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_p_to_n_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_O17_to_n_O16_reaclib); jac.set(O17, O17, scratch); scratch = screened_rates(k_O18_to_n_O17_reaclib); jac.set(O17, O18, scratch); - scratch = screened_rates(k_F17_to_O17_reaclib) + screened_rates(k_n_F17_to_p_O17_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_F17_n_to_p_O17_reaclib)*Y(N)*state.rho + screened_rates(k_F17_to_O17_beta_pos_reaclib); jac.set(O17, F17, scratch); scratch = screened_rates(k_F18_to_p_O17_reaclib); @@ -16614,7 +14423,7 @@ void jac_nuc(const burn_t& state, jac.set(O17, Ne19, 0.0); - scratch = screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(N)*state.rho; jac.set(O17, Ne20, scratch); scratch = screened_rates(k_Ne21_to_He4_O17_reaclib); @@ -16880,17 +14689,17 @@ void jac_nuc(const burn_t& state, jac.set(O17, Ge64, 0.0); - scratch = screened_rates(k_n_F18_to_p_O18_reaclib)*Y(F18)*state.rho + screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(Ne21)*state.rho + screened_rates(k_n_O17_to_O18_reaclib)*Y(O17)*state.rho; + scratch = screened_rates(k_F18_n_to_p_O18_reaclib)*Y(F18)*state.rho + screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(Ne21)*state.rho + screened_rates(k_O17_n_to_O18_reaclib)*Y(O17)*state.rho; jac.set(O18, N, scratch); - scratch = -screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_p_O18_to_n_F18_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_p_to_n_F18_reaclib)*Y(O18)*state.rho; jac.set(O18, H1, scratch); jac.set(O18, H2, 0.0); jac.set(O18, He3, 0.0); - scratch = screened_rates(k_He4_C14_to_O18_reaclib)*Y(C14)*state.rho + screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(N15)*state.rho - screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(O18)*state.rho - screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(O18)*state.rho; + scratch = screened_rates(k_C14_He4_to_O18_reaclib)*Y(C14)*state.rho + screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(N15)*state.rho - screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(O18)*state.rho - screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(O18)*state.rho; jac.set(O18, He4, scratch); jac.set(O18, Li6, 0.0); @@ -16911,14 +14720,14 @@ void jac_nuc(const burn_t& state, jac.set(O18, C13, 0.0); - scratch = screened_rates(k_He4_C14_to_O18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_C14_He4_to_O18_reaclib)*Y(He4)*state.rho; jac.set(O18, C14, scratch); jac.set(O18, N13, 0.0); jac.set(O18, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_p_O18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_p_O18_reaclib)*Y(He4)*state.rho; jac.set(O18, N15, scratch); jac.set(O18, O14, 0.0); @@ -16927,15 +14736,15 @@ void jac_nuc(const burn_t& state, jac.set(O18, O16, 0.0); - scratch = screened_rates(k_n_O17_to_O18_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_O17_n_to_O18_reaclib)*Y(N)*state.rho; jac.set(O18, O17, scratch); - scratch = -screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O18_to_He4_C14_reaclib) - screened_rates(k_O18_to_n_O17_reaclib) - screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_He4_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_O18_to_n_F18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_He4_N15_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_p_to_n_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_O18_to_He4_C14_reaclib) - screened_rates(k_O18_to_n_O17_reaclib); jac.set(O18, O18, scratch); jac.set(O18, F17, 0.0); - scratch = screened_rates(k_F18_to_O18_reaclib) + screened_rates(k_n_F18_to_p_O18_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_F18_n_to_p_O18_reaclib)*Y(N)*state.rho + screened_rates(k_F18_to_O18_beta_pos_reaclib); jac.set(O18, F18, scratch); scratch = screened_rates(k_F19_to_p_O18_reaclib); @@ -16947,7 +14756,7 @@ void jac_nuc(const burn_t& state, jac.set(O18, Ne20, 0.0); - scratch = screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(N)*state.rho; jac.set(O18, Ne21, scratch); scratch = screened_rates(k_Ne22_to_He4_O18_reaclib); @@ -17211,17 +15020,17 @@ void jac_nuc(const burn_t& state, jac.set(O18, Ge64, 0.0); - scratch = -screened_rates(k_n_F17_to_F18_reaclib)*Y(F17)*state.rho - screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(F17)*state.rho - screened_rates(k_n_F17_to_p_O17_reaclib)*Y(F17)*state.rho; + scratch = -screened_rates(k_F17_n_to_F18_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_n_to_p_O17_reaclib)*Y(F17)*state.rho; jac.set(F17, N, scratch); - scratch = -screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(F17)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_O16_to_F17_reaclib)*Y(O16)*state.rho + screened_rates(k_p_O17_to_n_F17_reaclib)*Y(O17)*state.rho; + scratch = -screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_p_to_F17_reaclib)*Y(O16)*state.rho + screened_rates(k_O17_p_to_n_F17_reaclib)*Y(O17)*state.rho; jac.set(F17, H1, scratch); jac.set(F17, H2, 0.0); jac.set(F17, He3, 0.0); - scratch = -screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(N14)*state.rho + screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(O14)*state.rho; + scratch = -screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*state.rho + screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(N14)*state.rho + screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(O14)*state.rho; jac.set(F17, He4, scratch); jac.set(F17, Li6, 0.0); @@ -17246,25 +15055,25 @@ void jac_nuc(const burn_t& state, jac.set(F17, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_n_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_n_F17_reaclib)*Y(He4)*state.rho; jac.set(F17, N14, scratch); jac.set(F17, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_p_F17_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_p_F17_reaclib)*Y(He4)*state.rho; jac.set(F17, O14, scratch); jac.set(F17, O15, 0.0); - scratch = screened_rates(k_p_O16_to_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O16_p_to_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, O16, scratch); - scratch = screened_rates(k_p_O17_to_n_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_n_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, O17, scratch); jac.set(F17, O18, 0.0); - scratch = -screened_rates(k_F17_to_O17_reaclib) - screened_rates(k_F17_to_p_O16_reaclib) - screened_rates(k_He4_F17_to_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_n_F17_to_F18_reaclib)*Y(N)*state.rho - screened_rates(k_n_F17_to_He4_N14_reaclib)*Y(N)*state.rho - screened_rates(k_n_F17_to_p_O17_reaclib)*Y(N)*state.rho - screened_rates(k_p_F17_to_He4_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F17_He4_to_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_F17_n_to_F18_reaclib)*Y(N)*state.rho - screened_rates(k_F17_n_to_He4_N14_reaclib)*Y(N)*state.rho - screened_rates(k_F17_n_to_p_O17_reaclib)*Y(N)*state.rho - screened_rates(k_F17_p_to_He4_O14_reaclib)*Y(H1)*state.rho - screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho - screened_rates(k_F17_to_O17_beta_pos_reaclib) - screened_rates(k_F17_to_p_O16_reaclib); jac.set(F17, F17, scratch); scratch = screened_rates(k_F18_to_n_F17_reaclib); @@ -17277,7 +15086,7 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ne19, 0.0); - scratch = screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho; jac.set(F17, Ne20, scratch); jac.set(F17, Ne21, 0.0); @@ -17543,17 +15352,17 @@ void jac_nuc(const burn_t& state, jac.set(F17, Ge64, 0.0); - scratch = screened_rates(k_n_F17_to_F18_reaclib)*Y(F17)*state.rho - screened_rates(k_n_F18_to_F19_reaclib)*Y(F18)*state.rho - screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(F18)*state.rho - screened_rates(k_n_F18_to_p_O18_reaclib)*Y(F18)*state.rho + screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(Na21)*state.rho + screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(Ne18)*state.rho; + scratch = screened_rates(k_F17_n_to_F18_reaclib)*Y(F17)*state.rho - screened_rates(k_F18_n_to_F19_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_n_to_p_O18_reaclib)*Y(F18)*state.rho + screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(Na21)*state.rho + screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(Ne18)*state.rho; jac.set(F18, N, scratch); - scratch = -screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(F18)*state.rho + screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(Ne21)*state.rho + screened_rates(k_p_O17_to_F18_reaclib)*Y(O17)*state.rho + screened_rates(k_p_O18_to_n_F18_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(F18)*state.rho + screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(Ne21)*state.rho + screened_rates(k_O17_p_to_F18_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_p_to_n_F18_reaclib)*Y(O18)*state.rho; jac.set(F18, H1, scratch); jac.set(F18, H2, 0.0); jac.set(F18, He3, 0.0); - scratch = -screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_N14_to_F18_reaclib)*Y(N14)*state.rho + screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(N15)*state.rho + screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(O15)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(F18)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho + screened_rates(k_N14_He4_to_F18_reaclib)*Y(N14)*state.rho + screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(N15)*state.rho + screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(O15)*state.rho; jac.set(F18, He4, scratch); jac.set(F18, Li6, 0.0); @@ -17578,35 +15387,35 @@ void jac_nuc(const burn_t& state, jac.set(F18, N13, 0.0); - scratch = screened_rates(k_He4_N14_to_F18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N14_He4_to_F18_reaclib)*Y(He4)*state.rho; jac.set(F18, N14, scratch); - scratch = screened_rates(k_He4_N15_to_n_F18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_n_F18_reaclib)*Y(He4)*state.rho; jac.set(F18, N15, scratch); jac.set(F18, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_p_F18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_p_F18_reaclib)*Y(He4)*state.rho; jac.set(F18, O15, scratch); jac.set(F18, O16, 0.0); - scratch = screened_rates(k_p_O17_to_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O17_p_to_F18_reaclib)*Y(H1)*state.rho; jac.set(F18, O17, scratch); - scratch = screened_rates(k_p_O18_to_n_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_n_F18_reaclib)*Y(H1)*state.rho; jac.set(F18, O18, scratch); - scratch = screened_rates(k_n_F17_to_F18_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_F17_n_to_F18_reaclib)*Y(N)*state.rho; jac.set(F18, F17, scratch); - scratch = -screened_rates(k_F18_to_He4_N14_reaclib) - screened_rates(k_F18_to_O18_reaclib) - screened_rates(k_F18_to_n_F17_reaclib) - screened_rates(k_F18_to_p_O17_reaclib) - screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_n_F18_to_F19_reaclib)*Y(N)*state.rho - screened_rates(k_n_F18_to_He4_N15_reaclib)*Y(N)*state.rho - screened_rates(k_n_F18_to_p_O18_reaclib)*Y(N)*state.rho - screened_rates(k_p_F18_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho - screened_rates(k_F18_n_to_F19_reaclib)*Y(N)*state.rho - screened_rates(k_F18_n_to_He4_N15_reaclib)*Y(N)*state.rho - screened_rates(k_F18_n_to_p_O18_reaclib)*Y(N)*state.rho - screened_rates(k_F18_p_to_He4_O15_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(H1)*state.rho - screened_rates(k_F18_to_He4_N14_reaclib) - screened_rates(k_F18_to_O18_beta_pos_reaclib) - screened_rates(k_F18_to_n_F17_reaclib) - screened_rates(k_F18_to_p_O17_reaclib); jac.set(F18, F18, scratch); scratch = screened_rates(k_F19_to_n_F18_reaclib); jac.set(F18, F19, scratch); - scratch = screened_rates(k_Ne18_to_F18_reaclib) + screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(N)*state.rho + screened_rates(k_Ne18_to_F18_beta_pos_reaclib); jac.set(F18, Ne18, scratch); scratch = screened_rates(k_Ne19_to_p_F18_reaclib); @@ -17614,12 +15423,12 @@ void jac_nuc(const burn_t& state, jac.set(F18, Ne20, 0.0); - scratch = screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(H1)*state.rho; jac.set(F18, Ne21, scratch); jac.set(F18, Ne22, 0.0); - scratch = screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(N)*state.rho; jac.set(F18, Na21, scratch); scratch = screened_rates(k_Na22_to_He4_F18_reaclib); @@ -17879,17 +15688,17 @@ void jac_nuc(const burn_t& state, jac.set(F18, Ge64, 0.0); - scratch = screened_rates(k_n_F18_to_F19_reaclib)*Y(F18)*state.rho + screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(Na22)*state.rho + screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(Ne19)*state.rho; + scratch = screened_rates(k_F18_n_to_F19_reaclib)*Y(F18)*state.rho + screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(Na22)*state.rho + screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(Ne19)*state.rho; jac.set(F19, N, scratch); - scratch = -screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(Ne22)*state.rho + screened_rates(k_p_O18_to_F19_reaclib)*Y(O18)*state.rho; + scratch = -screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(F19)*state.rho + screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(Ne22)*state.rho + screened_rates(k_O18_p_to_F19_reaclib)*Y(O18)*state.rho; jac.set(F19, H1, scratch); jac.set(F19, H2, 0.0); jac.set(F19, He3, 0.0); - scratch = -screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_He4_N15_to_F19_reaclib)*Y(N15)*state.rho + screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(F19)*state.rho - screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*state.rho + screened_rates(k_N15_He4_to_F19_reaclib)*Y(N15)*state.rho + screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(O16)*state.rho; jac.set(F19, He4, scratch); jac.set(F19, Li6, 0.0); @@ -17916,32 +15725,32 @@ void jac_nuc(const burn_t& state, jac.set(F19, N14, 0.0); - scratch = screened_rates(k_He4_N15_to_F19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_N15_He4_to_F19_reaclib)*Y(He4)*state.rho; jac.set(F19, N15, scratch); jac.set(F19, O14, 0.0); jac.set(F19, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_p_F19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_p_F19_reaclib)*Y(He4)*state.rho; jac.set(F19, O16, scratch); jac.set(F19, O17, 0.0); - scratch = screened_rates(k_p_O18_to_F19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_O18_p_to_F19_reaclib)*Y(H1)*state.rho; jac.set(F19, O18, scratch); jac.set(F19, F17, 0.0); - scratch = screened_rates(k_n_F18_to_F19_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_F18_n_to_F19_reaclib)*Y(N)*state.rho; jac.set(F19, F18, scratch); - scratch = -screened_rates(k_F19_to_He4_N15_reaclib) - screened_rates(k_F19_to_n_F18_reaclib) - screened_rates(k_F19_to_p_O18_reaclib) - screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_p_F19_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(He4)*state.rho - screened_rates(k_F19_p_to_He4_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_F19_to_He4_N15_reaclib) - screened_rates(k_F19_to_n_F18_reaclib) - screened_rates(k_F19_to_p_O18_reaclib); jac.set(F19, F19, scratch); jac.set(F19, Ne18, 0.0); - scratch = screened_rates(k_Ne19_to_F19_reaclib) + screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(N)*state.rho + screened_rates(k_Ne19_to_F19_beta_pos_reaclib); jac.set(F19, Ne19, scratch); scratch = screened_rates(k_Ne20_to_p_F19_reaclib); @@ -17949,12 +15758,12 @@ void jac_nuc(const burn_t& state, jac.set(F19, Ne21, 0.0); - scratch = screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(H1)*state.rho; jac.set(F19, Ne22, scratch); jac.set(F19, Na21, 0.0); - scratch = screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(N)*state.rho; jac.set(F19, Na22, scratch); scratch = screened_rates(k_Na23_to_He4_F19_reaclib); @@ -18212,17 +16021,17 @@ void jac_nuc(const burn_t& state, jac.set(F19, Ge64, 0.0); - scratch = -screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(Ne18)*state.rho - screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(Ne18)*state.rho - screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(Ne18)*state.rho; + scratch = -screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(Ne18)*state.rho; jac.set(Ne18, N, scratch); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(F18)*state.rho + screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(Na21)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(F17)*state.rho + screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(F18)*state.rho + screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(Na21)*state.rho; jac.set(Ne18, H1, scratch); jac.set(Ne18, H2, 0.0); jac.set(Ne18, He3, 0.0); - scratch = -screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(Ne18)*state.rho + screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(O14)*state.rho + screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(O15)*state.rho; + scratch = -screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(Ne18)*state.rho + screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(O14)*state.rho + screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(O15)*state.rho; jac.set(Ne18, He4, scratch); jac.set(Ne18, Li6, 0.0); @@ -18251,10 +16060,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, N15, 0.0); - scratch = screened_rates(k_He4_O14_to_Ne18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O14_He4_to_Ne18_reaclib)*Y(He4)*state.rho; jac.set(Ne18, O14, scratch); - scratch = screened_rates(k_He4_O15_to_n_Ne18_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_n_Ne18_reaclib)*Y(He4)*state.rho; jac.set(Ne18, O15, scratch); jac.set(Ne18, O16, 0.0); @@ -18263,15 +16072,15 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, O18, 0.0); - scratch = screened_rates(k_p_F17_to_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F17_p_to_Ne18_reaclib)*Y(H1)*state.rho; jac.set(Ne18, F17, scratch); - scratch = screened_rates(k_p_F18_to_n_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_n_Ne18_reaclib)*Y(H1)*state.rho; jac.set(Ne18, F18, scratch); jac.set(Ne18, F19, 0.0); - scratch = -screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne18_to_F18_reaclib) - screened_rates(k_Ne18_to_He4_O14_reaclib) - screened_rates(k_Ne18_to_p_F17_reaclib) - screened_rates(k_n_Ne18_to_He4_O15_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne18_to_p_F18_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne18_n_to_He4_O15_reaclib)*Y(N)*state.rho - screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(N)*state.rho - screened_rates(k_Ne18_n_to_p_F18_reaclib)*Y(N)*state.rho - screened_rates(k_Ne18_to_F18_beta_pos_reaclib) - screened_rates(k_Ne18_to_He4_O14_reaclib) - screened_rates(k_Ne18_to_p_F17_reaclib); jac.set(Ne18, Ne18, scratch); scratch = screened_rates(k_Ne19_to_n_Ne18_reaclib); @@ -18283,7 +16092,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, Ne22, 0.0); - scratch = screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(H1)*state.rho; jac.set(Ne18, Na21, scratch); jac.set(Ne18, Na22, 0.0); @@ -18542,17 +16351,17 @@ void jac_nuc(const burn_t& state, jac.set(Ne18, Ge64, 0.0); - scratch = screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(Ne18)*state.rho - screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(Ne19)*state.rho - screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(Ne19)*state.rho - screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(Ne19)*state.rho; + scratch = screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(Ne18)*state.rho - screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(Ne19)*state.rho; jac.set(Ne19, N, scratch); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(Na22)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(F19)*state.rho + screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(Na22)*state.rho; jac.set(Ne19, H1, scratch); jac.set(Ne19, H2, 0.0); jac.set(Ne19, He3, 0.0); - scratch = -screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(Ne19)*state.rho - screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(O15)*state.rho + screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(O16)*state.rho; + scratch = -screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho + screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(O15)*state.rho + screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(O16)*state.rho; jac.set(Ne19, He4, scratch); jac.set(Ne19, Li6, 0.0); @@ -18583,10 +16392,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, O14, 0.0); - scratch = screened_rates(k_He4_O15_to_Ne19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O15_He4_to_Ne19_reaclib)*Y(He4)*state.rho; jac.set(Ne19, O15, scratch); - scratch = screened_rates(k_He4_O16_to_n_Ne19_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_n_Ne19_reaclib)*Y(He4)*state.rho; jac.set(Ne19, O16, scratch); jac.set(Ne19, O17, 0.0); @@ -18595,16 +16404,16 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, F17, 0.0); - scratch = screened_rates(k_p_F18_to_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F18_p_to_Ne19_reaclib)*Y(H1)*state.rho; jac.set(Ne19, F18, scratch); - scratch = screened_rates(k_p_F19_to_n_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_n_Ne19_reaclib)*Y(H1)*state.rho; jac.set(Ne19, F19, scratch); - scratch = screened_rates(k_n_Ne18_to_Ne19_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne18_n_to_Ne19_reaclib)*Y(N)*state.rho; jac.set(Ne19, Ne18, scratch); - scratch = -screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne19_to_F19_reaclib) - screened_rates(k_Ne19_to_He4_O15_reaclib) - screened_rates(k_Ne19_to_n_Ne18_reaclib) - screened_rates(k_Ne19_to_p_F18_reaclib) - screened_rates(k_n_Ne19_to_He4_O16_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne19_to_p_F19_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne19_n_to_He4_O16_reaclib)*Y(N)*state.rho - screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_Ne19_n_to_p_F19_reaclib)*Y(N)*state.rho - screened_rates(k_Ne19_to_F19_beta_pos_reaclib) - screened_rates(k_Ne19_to_He4_O15_reaclib) - screened_rates(k_Ne19_to_n_Ne18_reaclib) - screened_rates(k_Ne19_to_p_F18_reaclib); jac.set(Ne19, Ne19, scratch); scratch = screened_rates(k_Ne20_to_n_Ne19_reaclib); @@ -18616,7 +16425,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, Na21, 0.0); - scratch = screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(H1)*state.rho; jac.set(Ne19, Na22, scratch); jac.set(Ne19, Na23, 0.0); @@ -18874,17 +16683,17 @@ void jac_nuc(const burn_t& state, jac.set(Ne19, Ge64, 0.0); - scratch = screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho + screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(Ne19)*state.rho - screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho + screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(Ne19)*state.rho - screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(Ne20)*state.rho; jac.set(Ne20, N, scratch); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(F19)*state.rho + screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*state.rho + screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(P31)*state.rho; jac.set(Ne20, H1, scratch); jac.set(Ne20, H2, 0.0); jac.set(Ne20, He3, 0.0); - scratch = screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(F17)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(Ne20)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(Ne20)*state.rho + screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(O16)*state.rho + screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(O17)*state.rho + screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(F17)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(Ne20)*state.rho + screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(O16)*state.rho + screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(O17)*state.rho + screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(Si28)*state.rho; jac.set(Ne20, He4, scratch); jac.set(Ne20, Li6, 0.0); @@ -18901,7 +16710,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, B11, 0.0); - scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(Ne20)*state.rho - screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(Ne20)*state.rho; + scratch = 1.0*screened_rates(k_C12_C12_to_He4_Ne20_reaclib)*Y(C12)*state.rho - screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(Ne20)*state.rho; jac.set(Ne20, C12, scratch); jac.set(Ne20, C13, 0.0); @@ -18918,28 +16727,28 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, O15, 0.0); - scratch = screened_rates(k_He4_O16_to_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O16_He4_to_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O16, scratch); - scratch = screened_rates(k_He4_O17_to_n_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O17_He4_to_n_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, O17, scratch); jac.set(Ne20, O18, 0.0); - scratch = screened_rates(k_He4_F17_to_p_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_p_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, F17, scratch); jac.set(Ne20, F18, 0.0); - scratch = screened_rates(k_p_F19_to_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_F19_p_to_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, F19, scratch); jac.set(Ne20, Ne18, 0.0); - scratch = screened_rates(k_n_Ne19_to_Ne20_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne19_n_to_Ne20_reaclib)*Y(N)*state.rho; jac.set(Ne20, Ne19, scratch); - scratch = -screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(C12)*state.rho - screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(C12)*state.rho - screened_rates(k_He4_Ne20_to_C12_C12_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_to_He4_O16_reaclib) - screened_rates(k_Ne20_to_n_Ne19_reaclib) - screened_rates(k_Ne20_to_p_F19_reaclib) - screened_rates(k_n_Ne20_to_He4_O17_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ne20_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(C12)*state.rho - screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(C12)*state.rho - screened_rates(k_Ne20_He4_to_C12_C12_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne20_n_to_He4_O17_reaclib)*Y(N)*state.rho - screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_Ne20_p_to_He4_F17_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne20_to_He4_O16_reaclib) - screened_rates(k_Ne20_to_n_Ne19_reaclib) - screened_rates(k_Ne20_to_p_F19_reaclib); jac.set(Ne20, Ne20, scratch); scratch = screened_rates(k_Ne21_to_n_Ne20_reaclib); @@ -18952,10 +16761,10 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Na22, 0.0); - scratch = screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, Na23, scratch); - scratch = screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(N)*state.rho; jac.set(Ne20, Mg23, scratch); scratch = screened_rates(k_Mg24_to_He4_Ne20_reaclib); @@ -18971,7 +16780,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(He4)*state.rho; jac.set(Ne20, Si28, scratch); jac.set(Ne20, Si29, 0.0); @@ -18986,7 +16795,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, P30, 0.0); - scratch = screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(H1)*state.rho; jac.set(Ne20, P31, scratch); jac.set(Ne20, P32, 0.0); @@ -19211,17 +17020,17 @@ void jac_nuc(const burn_t& state, jac.set(Ne20, Ge64, 0.0); - scratch = screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(Na21)*state.rho + screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(Ne20)*state.rho - screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(Ne21)*state.rho - screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(Ne21)*state.rho; + scratch = screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(Na21)*state.rho + screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(Ne20)*state.rho - screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(Ne21)*state.rho; jac.set(Ne21, N, scratch); - scratch = -screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(Ne21)*state.rho; + scratch = -screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(Ne21)*state.rho; jac.set(Ne21, H1, scratch); jac.set(Ne21, H2, 0.0); jac.set(Ne21, He3, 0.0); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(Ne21)*state.rho - screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(Ne21)*state.rho + screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(O17)*state.rho + screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(O18)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(F18)*state.rho - screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(Ne21)*state.rho - screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(Ne21)*state.rho + screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(O17)*state.rho + screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(O18)*state.rho; jac.set(Ne21, He4, scratch); jac.set(Ne21, Li6, 0.0); @@ -19256,15 +17065,15 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, O16, 0.0); - scratch = screened_rates(k_He4_O17_to_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O17_He4_to_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, O17, scratch); - scratch = screened_rates(k_He4_O18_to_n_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O18_He4_to_n_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, O18, scratch); jac.set(Ne21, F17, 0.0); - scratch = screened_rates(k_He4_F18_to_p_Ne21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_He4_to_p_Ne21_reaclib)*Y(He4)*state.rho; jac.set(Ne21, F18, scratch); jac.set(Ne21, F19, 0.0); @@ -19273,16 +17082,16 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, Ne19, 0.0); - scratch = screened_rates(k_n_Ne20_to_Ne21_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne20_n_to_Ne21_reaclib)*Y(N)*state.rho; jac.set(Ne21, Ne20, scratch); - scratch = -screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne21_to_He4_O17_reaclib) - screened_rates(k_Ne21_to_Na21_weaktab) - screened_rates(k_Ne21_to_n_Ne20_reaclib) - screened_rates(k_n_Ne21_to_He4_O18_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ne21_to_He4_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne21_n_to_He4_O18_reaclib)*Y(N)*state.rho - screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_Ne21_p_to_He4_F18_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne21_to_He4_O17_reaclib) - screened_rates(k_Ne21_to_Na21_beta_neg_weaktab) - screened_rates(k_Ne21_to_n_Ne20_reaclib); jac.set(Ne21, Ne21, scratch); scratch = screened_rates(k_Ne22_to_n_Ne21_reaclib); jac.set(Ne21, Ne22, scratch); - scratch = screened_rates(k_Na21_to_Ne21_weaktab) + screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(N)*state.rho + screened_rates(k_Na21_to_Ne21_electron_capture_weaktab); jac.set(Ne21, Na21, scratch); scratch = screened_rates(k_Na22_to_p_Ne21_reaclib); @@ -19292,7 +17101,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, Mg23, 0.0); - scratch = screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(N)*state.rho; jac.set(Ne21, Mg24, scratch); scratch = screened_rates(k_Mg25_to_He4_Ne21_reaclib); @@ -19544,17 +17353,17 @@ void jac_nuc(const burn_t& state, jac.set(Ne21, Ge64, 0.0); - scratch = screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(Mg25)*state.rho + screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(Na22)*state.rho + screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(Ne21)*state.rho; + scratch = screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(Na22)*state.rho + screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(Ne21)*state.rho; jac.set(Ne22, N, scratch); - scratch = -screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(Ne22)*state.rho - screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*state.rho - screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(Ne22)*state.rho; + scratch = -screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(Ne22)*state.rho - screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*state.rho - screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(Ne22)*state.rho; jac.set(Ne22, H1, scratch); jac.set(Ne22, H2, 0.0); jac.set(Ne22, He3, 0.0); - scratch = screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(Ne22)*state.rho - screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(Ne22)*state.rho + screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(O18)*state.rho; + scratch = screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(F19)*state.rho - screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(Ne22)*state.rho - screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(Ne22)*state.rho + screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(O18)*state.rho; jac.set(Ne22, He4, scratch); jac.set(Ne22, Li6, 0.0); @@ -19591,14 +17400,14 @@ void jac_nuc(const burn_t& state, jac.set(Ne22, O17, 0.0); - scratch = screened_rates(k_He4_O18_to_Ne22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_O18_He4_to_Ne22_reaclib)*Y(He4)*state.rho; jac.set(Ne22, O18, scratch); jac.set(Ne22, F17, 0.0); jac.set(Ne22, F18, 0.0); - scratch = screened_rates(k_He4_F19_to_p_Ne22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F19_He4_to_p_Ne22_reaclib)*Y(He4)*state.rho; jac.set(Ne22, F19, scratch); jac.set(Ne22, Ne18, 0.0); @@ -19607,15 +17416,15 @@ void jac_nuc(const burn_t& state, jac.set(Ne22, Ne20, 0.0); - scratch = screened_rates(k_n_Ne21_to_Ne22_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ne21_n_to_Ne22_reaclib)*Y(N)*state.rho; jac.set(Ne22, Ne21, scratch); - scratch = -screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne22_to_He4_O18_reaclib) - screened_rates(k_Ne22_to_Na22_weaktab) - screened_rates(k_Ne22_to_n_Ne21_reaclib) - screened_rates(k_p_Ne22_to_He4_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(He4)*state.rho - screened_rates(k_Ne22_p_to_He4_F19_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_Ne22_to_He4_O18_reaclib) - screened_rates(k_Ne22_to_Na22_beta_neg_weaktab) - screened_rates(k_Ne22_to_n_Ne21_reaclib); jac.set(Ne22, Ne22, scratch); jac.set(Ne22, Na21, 0.0); - scratch = screened_rates(k_Na22_to_Ne22_weaktab) + screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(N)*state.rho + screened_rates(k_Na22_to_Ne22_electron_capture_weaktab); jac.set(Ne22, Na22, scratch); scratch = screened_rates(k_Na23_to_p_Ne22_reaclib); @@ -19625,7 +17434,7 @@ void jac_nuc(const burn_t& state, jac.set(Ne22, Mg24, 0.0); - scratch = screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(N)*state.rho; jac.set(Ne22, Mg25, scratch); scratch = screened_rates(k_Mg26_to_He4_Ne22_reaclib); @@ -19875,17 +17684,17 @@ void jac_nuc(const burn_t& state, jac.set(Ne22, Ge64, 0.0); - scratch = -screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(Na21)*state.rho - screened_rates(k_n_Na21_to_Na22_reaclib)*Y(Na21)*state.rho - screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(Na21)*state.rho; + scratch = -screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na21_n_to_Na22_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(Na21)*state.rho; jac.set(Na21, N, scratch); - scratch = screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(Na21)*state.rho + screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(Ne20)*state.rho + screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(Ne21)*state.rho; + scratch = screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(Na21)*state.rho + screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(Ne21)*state.rho; jac.set(Na21, H1, scratch); jac.set(Na21, H2, 0.0); jac.set(Na21, He3, 0.0); - scratch = screened_rates(k_He4_F17_to_Na21_reaclib)*Y(F17)*state.rho + screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(F18)*state.rho - screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(Na21)*state.rho - screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(Na21)*state.rho + screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(Ne18)*state.rho; + scratch = screened_rates(k_F17_He4_to_Na21_reaclib)*Y(F17)*state.rho + screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(F18)*state.rho - screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(Na21)*state.rho + screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(Ne18)*state.rho; jac.set(Na21, He4, scratch); jac.set(Na21, Li6, 0.0); @@ -19924,28 +17733,28 @@ void jac_nuc(const burn_t& state, jac.set(Na21, O18, 0.0); - scratch = screened_rates(k_He4_F17_to_Na21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F17_He4_to_Na21_reaclib)*Y(He4)*state.rho; jac.set(Na21, F17, scratch); - scratch = screened_rates(k_He4_F18_to_n_Na21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_He4_to_n_Na21_reaclib)*Y(He4)*state.rho; jac.set(Na21, F18, scratch); jac.set(Na21, F19, 0.0); - scratch = screened_rates(k_He4_Ne18_to_p_Na21_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne18_He4_to_p_Na21_reaclib)*Y(He4)*state.rho; jac.set(Na21, Ne18, scratch); jac.set(Na21, Ne19, 0.0); - scratch = screened_rates(k_p_Ne20_to_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne20_p_to_Na21_reaclib)*Y(H1)*state.rho; jac.set(Na21, Ne20, scratch); - scratch = screened_rates(k_Ne21_to_Na21_weaktab) + screened_rates(k_p_Ne21_to_n_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_n_Na21_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne21_to_Na21_beta_neg_weaktab); jac.set(Na21, Ne21, scratch); jac.set(Na21, Ne22, 0.0); - scratch = -screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Na21_to_He4_F17_reaclib) - screened_rates(k_Na21_to_Ne21_weaktab) - screened_rates(k_Na21_to_p_Ne20_reaclib) - screened_rates(k_n_Na21_to_He4_F18_reaclib)*Y(N)*state.rho - screened_rates(k_n_Na21_to_Na22_reaclib)*Y(N)*state.rho - screened_rates(k_n_Na21_to_p_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_p_Na21_to_He4_Ne18_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(He4)*state.rho - screened_rates(k_Na21_n_to_He4_F18_reaclib)*Y(N)*state.rho - screened_rates(k_Na21_n_to_Na22_reaclib)*Y(N)*state.rho - screened_rates(k_Na21_n_to_p_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_Na21_p_to_He4_Ne18_reaclib)*Y(H1)*state.rho - screened_rates(k_Na21_to_He4_F17_reaclib) - screened_rates(k_Na21_to_Ne21_electron_capture_weaktab) - screened_rates(k_Na21_to_p_Ne20_reaclib); jac.set(Na21, Na21, scratch); scratch = screened_rates(k_Na22_to_n_Na21_reaclib); @@ -19955,7 +17764,7 @@ void jac_nuc(const burn_t& state, jac.set(Na21, Mg23, 0.0); - scratch = screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(H1)*state.rho; jac.set(Na21, Mg24, scratch); jac.set(Na21, Mg25, 0.0); @@ -20207,17 +18016,17 @@ void jac_nuc(const burn_t& state, jac.set(Na21, Ge64, 0.0); - scratch = screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(Al25)*state.rho + screened_rates(k_n_Na21_to_Na22_reaclib)*Y(Na21)*state.rho - screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(Na22)*state.rho - screened_rates(k_n_Na22_to_Na23_reaclib)*Y(Na22)*state.rho - screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(Na22)*state.rho; + scratch = screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(Al25)*state.rho + screened_rates(k_Na21_n_to_Na22_reaclib)*Y(Na21)*state.rho - screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_n_to_Na23_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(Na22)*state.rho; jac.set(Na22, N, scratch); - scratch = screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(Na22)*state.rho - screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(Na22)*state.rho + screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(Ne21)*state.rho + screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(Ne22)*state.rho; + scratch = screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(Na22)*state.rho + screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(Ne21)*state.rho + screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(Ne22)*state.rho; jac.set(Na22, H1, scratch); jac.set(Na22, H2, 0.0); jac.set(Na22, He3, 0.0); - scratch = screened_rates(k_He4_F18_to_Na22_reaclib)*Y(F18)*state.rho + screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(Na22)*state.rho - screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(Na22)*state.rho - screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(Na22)*state.rho + screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(Ne19)*state.rho; + scratch = screened_rates(k_F18_He4_to_Na22_reaclib)*Y(F18)*state.rho + screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(F19)*state.rho - screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(Na22)*state.rho - screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(Na22)*state.rho + screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(Ne19)*state.rho; jac.set(Na22, He4, scratch); jac.set(Na22, Li6, 0.0); @@ -20258,29 +18067,29 @@ void jac_nuc(const burn_t& state, jac.set(Na22, F17, 0.0); - scratch = screened_rates(k_He4_F18_to_Na22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F18_He4_to_Na22_reaclib)*Y(He4)*state.rho; jac.set(Na22, F18, scratch); - scratch = screened_rates(k_He4_F19_to_n_Na22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F19_He4_to_n_Na22_reaclib)*Y(He4)*state.rho; jac.set(Na22, F19, scratch); jac.set(Na22, Ne18, 0.0); - scratch = screened_rates(k_He4_Ne19_to_p_Na22_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne19_He4_to_p_Na22_reaclib)*Y(He4)*state.rho; jac.set(Na22, Ne19, scratch); jac.set(Na22, Ne20, 0.0); - scratch = screened_rates(k_p_Ne21_to_Na22_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne21_p_to_Na22_reaclib)*Y(H1)*state.rho; jac.set(Na22, Ne21, scratch); - scratch = screened_rates(k_Ne22_to_Na22_weaktab) + screened_rates(k_p_Ne22_to_n_Na22_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne22_p_to_n_Na22_reaclib)*Y(H1)*state.rho + screened_rates(k_Ne22_to_Na22_beta_neg_weaktab); jac.set(Na22, Ne22, scratch); - scratch = screened_rates(k_n_Na21_to_Na22_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Na21_n_to_Na22_reaclib)*Y(N)*state.rho; jac.set(Na22, Na21, scratch); - scratch = -screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(He4)*state.rho - screened_rates(k_Na22_to_He4_F18_reaclib) - screened_rates(k_Na22_to_Ne22_weaktab) - screened_rates(k_Na22_to_n_Na21_reaclib) - screened_rates(k_Na22_to_p_Ne21_reaclib) - screened_rates(k_n_Na22_to_He4_F19_reaclib)*Y(N)*state.rho - screened_rates(k_n_Na22_to_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_n_Na22_to_p_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_p_Na22_to_He4_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(He4)*state.rho - screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(He4)*state.rho - screened_rates(k_Na22_n_to_He4_F19_reaclib)*Y(N)*state.rho - screened_rates(k_Na22_n_to_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_Na22_n_to_p_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_Na22_p_to_He4_Ne19_reaclib)*Y(H1)*state.rho - screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(H1)*state.rho - screened_rates(k_Na22_to_He4_F18_reaclib) - screened_rates(k_Na22_to_Ne22_electron_capture_weaktab) - screened_rates(k_Na22_to_n_Na21_reaclib) - screened_rates(k_Na22_to_p_Ne21_reaclib); jac.set(Na22, Na22, scratch); scratch = screened_rates(k_Na23_to_n_Na22_reaclib); @@ -20291,12 +18100,12 @@ void jac_nuc(const burn_t& state, jac.set(Na22, Mg24, 0.0); - scratch = screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(H1)*state.rho; jac.set(Na22, Mg25, scratch); jac.set(Na22, Mg26, 0.0); - scratch = screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(N)*state.rho; jac.set(Na22, Al25, scratch); scratch = screened_rates(k_Al26_to_He4_Na22_reaclib); @@ -20542,17 +18351,17 @@ void jac_nuc(const burn_t& state, jac.set(Na22, Ge64, 0.0); - scratch = screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(Al26)*state.rho + screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*state.rho + screened_rates(k_n_Na22_to_Na23_reaclib)*Y(Na22)*state.rho; + scratch = screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(Al26)*state.rho + screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*state.rho + screened_rates(k_Na22_n_to_Na23_reaclib)*Y(Na22)*state.rho; jac.set(Na23, N, scratch); - scratch = screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(Mg26)*state.rho - screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(Na23)*state.rho + screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(Ne22)*state.rho; + scratch = screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(Ne22)*state.rho; jac.set(Na23, H1, scratch); jac.set(Na23, H2, 0.0); jac.set(Na23, He3, 0.0); - scratch = screened_rates(k_He4_F19_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(Na23)*state.rho - screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(Na23)*state.rho - screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(Na23)*state.rho + screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_F19_He4_to_Na23_reaclib)*Y(F19)*state.rho - screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(Na23)*state.rho - screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(Ne20)*state.rho; jac.set(Na23, He4, scratch); jac.set(Na23, Li6, 0.0); @@ -20596,30 +18405,30 @@ void jac_nuc(const burn_t& state, jac.set(Na23, F18, 0.0); - scratch = screened_rates(k_He4_F19_to_Na23_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_F19_He4_to_Na23_reaclib)*Y(He4)*state.rho; jac.set(Na23, F19, scratch); jac.set(Na23, Ne18, 0.0); jac.set(Na23, Ne19, 0.0); - scratch = screened_rates(k_He4_Ne20_to_p_Na23_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_p_Na23_reaclib)*Y(He4)*state.rho; jac.set(Na23, Ne20, scratch); jac.set(Na23, Ne21, 0.0); - scratch = screened_rates(k_p_Ne22_to_Na23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ne22_p_to_Na23_reaclib)*Y(H1)*state.rho; jac.set(Na23, Ne22, scratch); jac.set(Na23, Na21, 0.0); - scratch = screened_rates(k_n_Na22_to_Na23_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Na22_n_to_Na23_reaclib)*Y(N)*state.rho; jac.set(Na23, Na22, scratch); - scratch = -screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_to_He4_F19_reaclib) - screened_rates(k_Na23_to_Mg23_weaktab) - screened_rates(k_Na23_to_n_Na22_reaclib) - screened_rates(k_Na23_to_p_Ne22_reaclib) - screened_rates(k_p_Na23_to_C12_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(He4)*state.rho - screened_rates(k_Na23_p_to_C12_C12_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_He4_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(H1)*state.rho - screened_rates(k_Na23_to_He4_F19_reaclib) - screened_rates(k_Na23_to_Mg23_beta_neg_weaktab) - screened_rates(k_Na23_to_n_Na22_reaclib) - screened_rates(k_Na23_to_p_Ne22_reaclib); jac.set(Na23, Na23, scratch); - scratch = screened_rates(k_Mg23_to_Na23_weaktab) + screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(N)*state.rho + screened_rates(k_Mg23_to_Na23_electron_capture_weaktab); jac.set(Na23, Mg23, scratch); scratch = screened_rates(k_Mg24_to_p_Na23_reaclib); @@ -20627,12 +18436,12 @@ void jac_nuc(const burn_t& state, jac.set(Na23, Mg25, 0.0); - scratch = screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(H1)*state.rho; jac.set(Na23, Mg26, scratch); jac.set(Na23, Al25, 0.0); - scratch = screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(N)*state.rho; jac.set(Na23, Al26, scratch); scratch = screened_rates(k_Al27_to_He4_Na23_reaclib); @@ -20876,17 +18685,17 @@ void jac_nuc(const burn_t& state, jac.set(Na23, Ge64, 0.0); - scratch = -screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(Mg23)*state.rho; + scratch = -screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(Mg23)*state.rho; jac.set(Mg23, N, scratch); - scratch = screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(Al26)*state.rho + screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(Na22)*state.rho + screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(Al26)*state.rho + screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(Na22)*state.rho + screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(Na23)*state.rho; jac.set(Mg23, H1, scratch); jac.set(Mg23, H2, 0.0); jac.set(Mg23, He3, 0.0); - scratch = -screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(Mg23)*state.rho + screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(Ne19)*state.rho + screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(Ne20)*state.rho; + scratch = -screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(Mg23)*state.rho + screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(Ne19)*state.rho + screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(Ne20)*state.rho; jac.set(Mg23, He4, scratch); jac.set(Mg23, Li6, 0.0); @@ -20934,10 +18743,10 @@ void jac_nuc(const burn_t& state, jac.set(Mg23, Ne18, 0.0); - scratch = screened_rates(k_He4_Ne19_to_Mg23_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne19_He4_to_Mg23_reaclib)*Y(He4)*state.rho; jac.set(Mg23, Ne19, scratch); - scratch = screened_rates(k_He4_Ne20_to_n_Mg23_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_n_Mg23_reaclib)*Y(He4)*state.rho; jac.set(Mg23, Ne20, scratch); jac.set(Mg23, Ne21, 0.0); @@ -20946,13 +18755,13 @@ void jac_nuc(const burn_t& state, jac.set(Mg23, Na21, 0.0); - scratch = screened_rates(k_p_Na22_to_Mg23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na22_p_to_Mg23_reaclib)*Y(H1)*state.rho; jac.set(Mg23, Na22, scratch); - scratch = screened_rates(k_Na23_to_Mg23_weaktab) + screened_rates(k_p_Na23_to_n_Mg23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_n_Mg23_reaclib)*Y(H1)*state.rho + screened_rates(k_Na23_to_Mg23_beta_neg_weaktab); jac.set(Mg23, Na23, scratch); - scratch = -screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg23_to_He4_Ne19_reaclib) - screened_rates(k_Mg23_to_Na23_weaktab) - screened_rates(k_Mg23_to_p_Na22_reaclib) - screened_rates(k_n_Mg23_to_C12_C12_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_He4_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg23_to_p_Na23_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg23_n_to_C12_C12_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_He4_Ne20_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_n_to_p_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_Mg23_to_He4_Ne19_reaclib) - screened_rates(k_Mg23_to_Na23_electron_capture_weaktab) - screened_rates(k_Mg23_to_p_Na22_reaclib); jac.set(Mg23, Mg23, scratch); scratch = screened_rates(k_Mg24_to_n_Mg23_reaclib); @@ -20964,7 +18773,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg23, Al25, 0.0); - scratch = screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(H1)*state.rho; jac.set(Mg23, Al26, scratch); jac.set(Mg23, Al27, 0.0); @@ -21207,17 +19016,17 @@ void jac_nuc(const burn_t& state, jac.set(Mg23, Ge64, 0.0); - scratch = screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(Mg24)*state.rho; + scratch = screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(Mg23)*state.rho - screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(Mg24)*state.rho; jac.set(Mg24, N, scratch); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(Mg24)*state.rho - screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(Na23)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(Na23)*state.rho; jac.set(Mg24, H1, scratch); jac.set(Mg24, H2, 0.0); jac.set(Mg24, He3, 0.0); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(Na21)*state.rho + screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(Ne20)*state.rho + screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(Ne21)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(Na21)*state.rho + screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(Ne20)*state.rho + screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(Ne21)*state.rho; jac.set(Mg24, He4, scratch); jac.set(Mg24, Li6, 0.0); @@ -21234,7 +19043,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, B11, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(O16)*state.rho; jac.set(Mg24, C12, scratch); jac.set(Mg24, C13, 0.0); @@ -21251,7 +19060,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_He4_Mg24_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_He4_Mg24_reaclib)*Y(C12)*state.rho; jac.set(Mg24, O16, scratch); jac.set(Mg24, O17, 0.0); @@ -21268,26 +19077,26 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ne19, 0.0); - scratch = screened_rates(k_He4_Ne20_to_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne20_He4_to_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne20, scratch); - scratch = screened_rates(k_He4_Ne21_to_n_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne21_He4_to_n_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Ne21, scratch); jac.set(Mg24, Ne22, 0.0); - scratch = screened_rates(k_He4_Na21_to_p_Mg24_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na21_He4_to_p_Mg24_reaclib)*Y(He4)*state.rho; jac.set(Mg24, Na21, scratch); jac.set(Mg24, Na22, 0.0); - scratch = screened_rates(k_p_Na23_to_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Na23_p_to_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Na23, scratch); - scratch = screened_rates(k_n_Mg23_to_Mg24_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg23_n_to_Mg24_reaclib)*Y(N)*state.rho; jac.set(Mg24, Mg23, scratch); - scratch = -screened_rates(k_He4_Mg24_to_C12_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_reaclib) - screened_rates(k_Mg24_to_n_Mg23_reaclib) - screened_rates(k_Mg24_to_p_Na23_reaclib) - screened_rates(k_n_Mg24_to_He4_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg24_to_He4_Na21_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg24_He4_to_C12_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg24_n_to_He4_Ne21_reaclib)*Y(N)*state.rho - screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(N)*state.rho - screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg24_p_to_He4_Na21_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg24_to_He4_Ne20_reaclib) - screened_rates(k_Mg24_to_n_Mg23_reaclib) - screened_rates(k_Mg24_to_p_Na23_reaclib); jac.set(Mg24, Mg24, scratch); scratch = screened_rates(k_Mg25_to_n_Mg24_reaclib); @@ -21300,7 +19109,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Al26, 0.0); - scratch = screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho; jac.set(Mg24, Al27, scratch); scratch = screened_rates(k_Si28_to_He4_Mg24_reaclib); @@ -21542,17 +19351,17 @@ void jac_nuc(const burn_t& state, jac.set(Mg24, Ge64, 0.0); - scratch = screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(Al25)*state.rho + screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(Mg24)*state.rho - screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(Mg25)*state.rho + screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(Al25)*state.rho + screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(Mg24)*state.rho - screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(Si28)*state.rho; jac.set(Mg25, N, scratch); - scratch = -screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(Mg25)*state.rho - screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(Mg25)*state.rho; + scratch = -screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(Mg25)*state.rho; jac.set(Mg25, H1, scratch); jac.set(Mg25, H2, 0.0); jac.set(Mg25, He3, 0.0); - scratch = -screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(Mg25)*state.rho - screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(Mg25)*state.rho + screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(Na22)*state.rho + screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(Ne21)*state.rho + screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(Ne22)*state.rho; + scratch = -screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(Na22)*state.rho + screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(Ne21)*state.rho + screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(Ne22)*state.rho; jac.set(Mg25, He4, scratch); jac.set(Mg25, Li6, 0.0); @@ -21603,31 +19412,31 @@ void jac_nuc(const burn_t& state, jac.set(Mg25, Ne20, 0.0); - scratch = screened_rates(k_He4_Ne21_to_Mg25_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne21_He4_to_Mg25_reaclib)*Y(He4)*state.rho; jac.set(Mg25, Ne21, scratch); - scratch = screened_rates(k_He4_Ne22_to_n_Mg25_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne22_He4_to_n_Mg25_reaclib)*Y(He4)*state.rho; jac.set(Mg25, Ne22, scratch); jac.set(Mg25, Na21, 0.0); - scratch = screened_rates(k_He4_Na22_to_p_Mg25_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na22_He4_to_p_Mg25_reaclib)*Y(He4)*state.rho; jac.set(Mg25, Na22, scratch); jac.set(Mg25, Na23, 0.0); jac.set(Mg25, Mg23, 0.0); - scratch = screened_rates(k_n_Mg24_to_Mg25_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg24_n_to_Mg25_reaclib)*Y(N)*state.rho; jac.set(Mg25, Mg24, scratch); - scratch = -screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg25_to_Al25_weaktab) - screened_rates(k_Mg25_to_He4_Ne21_reaclib) - screened_rates(k_Mg25_to_n_Mg24_reaclib) - screened_rates(k_n_Mg25_to_He4_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg25_to_He4_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg25_n_to_He4_Ne22_reaclib)*Y(N)*state.rho - screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg25_p_to_He4_Na22_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg25_to_Al25_beta_neg_weaktab) - screened_rates(k_Mg25_to_He4_Ne21_reaclib) - screened_rates(k_Mg25_to_n_Mg24_reaclib); jac.set(Mg25, Mg25, scratch); scratch = screened_rates(k_Mg26_to_n_Mg25_reaclib); jac.set(Mg25, Mg26, scratch); - scratch = screened_rates(k_Al25_to_Mg25_weaktab) + screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(N)*state.rho + screened_rates(k_Al25_to_Mg25_electron_capture_weaktab); jac.set(Mg25, Al25, scratch); scratch = screened_rates(k_Al26_to_p_Mg25_reaclib); @@ -21635,7 +19444,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg25, Al27, 0.0); - scratch = screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(N)*state.rho; jac.set(Mg25, Si28, scratch); scratch = screened_rates(k_Si29_to_He4_Mg25_reaclib); @@ -21875,17 +19684,17 @@ void jac_nuc(const burn_t& state, jac.set(Mg25, Ge64, 0.0); - scratch = screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(Al26)*state.rho + screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(Mg25)*state.rho + screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(Si29)*state.rho; + scratch = screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(Al26)*state.rho + screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(Si29)*state.rho; jac.set(Mg26, N, scratch); - scratch = -screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(Mg26)*state.rho - screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(Mg26)*state.rho - screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(Mg26)*state.rho; + scratch = -screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(Mg26)*state.rho; jac.set(Mg26, H1, scratch); jac.set(Mg26, H2, 0.0); jac.set(Mg26, He3, 0.0); - scratch = -screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(Mg26)*state.rho - screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(Mg26)*state.rho + screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(Na23)*state.rho + screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(Ne22)*state.rho; + scratch = -screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(Mg26)*state.rho + screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(Na23)*state.rho + screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(Ne22)*state.rho; jac.set(Mg26, He4, scratch); jac.set(Mg26, Li6, 0.0); @@ -21938,29 +19747,29 @@ void jac_nuc(const burn_t& state, jac.set(Mg26, Ne21, 0.0); - scratch = screened_rates(k_He4_Ne22_to_Mg26_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ne22_He4_to_Mg26_reaclib)*Y(He4)*state.rho; jac.set(Mg26, Ne22, scratch); jac.set(Mg26, Na21, 0.0); jac.set(Mg26, Na22, 0.0); - scratch = screened_rates(k_He4_Na23_to_p_Mg26_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na23_He4_to_p_Mg26_reaclib)*Y(He4)*state.rho; jac.set(Mg26, Na23, scratch); jac.set(Mg26, Mg23, 0.0); jac.set(Mg26, Mg24, 0.0); - scratch = screened_rates(k_n_Mg25_to_Mg26_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mg25_n_to_Mg26_reaclib)*Y(N)*state.rho; jac.set(Mg26, Mg25, scratch); - scratch = -screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg26_to_Al26_weaktab) - screened_rates(k_Mg26_to_He4_Ne22_reaclib) - screened_rates(k_Mg26_to_n_Mg25_reaclib) - screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg26_to_He4_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(He4)*state.rho - screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg26_p_to_He4_Na23_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_Mg26_to_Al26_beta_neg_weaktab) - screened_rates(k_Mg26_to_He4_Ne22_reaclib) - screened_rates(k_Mg26_to_n_Mg25_reaclib); jac.set(Mg26, Mg26, scratch); jac.set(Mg26, Al25, 0.0); - scratch = screened_rates(k_Al26_to_Mg26_weaktab) + screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(N)*state.rho + screened_rates(k_Al26_to_Mg26_electron_capture_weaktab); jac.set(Mg26, Al26, scratch); scratch = screened_rates(k_Al27_to_p_Mg26_reaclib); @@ -21968,7 +19777,7 @@ void jac_nuc(const burn_t& state, jac.set(Mg26, Si28, 0.0); - scratch = screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(N)*state.rho; jac.set(Mg26, Si29, scratch); scratch = screened_rates(k_Si30_to_He4_Mg26_reaclib); @@ -22206,17 +20015,17 @@ void jac_nuc(const burn_t& state, jac.set(Mg26, Ge64, 0.0); - scratch = -screened_rates(k_n_Al25_to_Al26_reaclib)*Y(Al25)*state.rho - screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(Al25)*state.rho - screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(Al25)*state.rho; + scratch = -screened_rates(k_Al25_n_to_Al26_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(Al25)*state.rho; jac.set(Al25, N, scratch); - scratch = screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(Mg24)*state.rho + screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(Mg25)*state.rho + screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(Si28)*state.rho; jac.set(Al25, H1, scratch); jac.set(Al25, H2, 0.0); jac.set(Al25, He3, 0.0); - scratch = -screened_rates(k_He4_Al25_to_P29_reaclib)*Y(Al25)*state.rho - screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(Al25)*state.rho + screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(Na21)*state.rho + screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(Na22)*state.rho; + scratch = -screened_rates(k_Al25_He4_to_P29_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(Al25)*state.rho + screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(Na21)*state.rho + screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(Na22)*state.rho; jac.set(Al25, He4, scratch); jac.set(Al25, Li6, 0.0); @@ -22271,25 +20080,25 @@ void jac_nuc(const burn_t& state, jac.set(Al25, Ne22, 0.0); - scratch = screened_rates(k_He4_Na21_to_Al25_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na21_He4_to_Al25_reaclib)*Y(He4)*state.rho; jac.set(Al25, Na21, scratch); - scratch = screened_rates(k_He4_Na22_to_n_Al25_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na22_He4_to_n_Al25_reaclib)*Y(He4)*state.rho; jac.set(Al25, Na22, scratch); jac.set(Al25, Na23, 0.0); jac.set(Al25, Mg23, 0.0); - scratch = screened_rates(k_p_Mg24_to_Al25_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg24_p_to_Al25_reaclib)*Y(H1)*state.rho; jac.set(Al25, Mg24, scratch); - scratch = screened_rates(k_Mg25_to_Al25_weaktab) + screened_rates(k_p_Mg25_to_n_Al25_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg25_p_to_n_Al25_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg25_to_Al25_beta_neg_weaktab); jac.set(Al25, Mg25, scratch); jac.set(Al25, Mg26, 0.0); - scratch = -screened_rates(k_Al25_to_He4_Na21_reaclib) - screened_rates(k_Al25_to_Mg25_weaktab) - screened_rates(k_Al25_to_p_Mg24_reaclib) - screened_rates(k_He4_Al25_to_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Al25_to_Al26_reaclib)*Y(N)*state.rho - screened_rates(k_n_Al25_to_He4_Na22_reaclib)*Y(N)*state.rho - screened_rates(k_n_Al25_to_p_Mg25_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Al25_He4_to_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(He4)*state.rho - screened_rates(k_Al25_n_to_Al26_reaclib)*Y(N)*state.rho - screened_rates(k_Al25_n_to_He4_Na22_reaclib)*Y(N)*state.rho - screened_rates(k_Al25_n_to_p_Mg25_reaclib)*Y(N)*state.rho - screened_rates(k_Al25_to_He4_Na21_reaclib) - screened_rates(k_Al25_to_Mg25_electron_capture_weaktab) - screened_rates(k_Al25_to_p_Mg24_reaclib); jac.set(Al25, Al25, scratch); scratch = screened_rates(k_Al26_to_n_Al25_reaclib); @@ -22297,7 +20106,7 @@ void jac_nuc(const burn_t& state, jac.set(Al25, Al27, 0.0); - scratch = screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(H1)*state.rho; jac.set(Al25, Si28, scratch); jac.set(Al25, Si29, 0.0); @@ -22537,17 +20346,17 @@ void jac_nuc(const burn_t& state, jac.set(Al25, Ge64, 0.0); - scratch = screened_rates(k_n_Al25_to_Al26_reaclib)*Y(Al25)*state.rho - screened_rates(k_n_Al26_to_Al27_reaclib)*Y(Al26)*state.rho - screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(Al26)*state.rho - screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(Al26)*state.rho + screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(P29)*state.rho; + scratch = screened_rates(k_Al25_n_to_Al26_reaclib)*Y(Al25)*state.rho - screened_rates(k_Al26_n_to_Al27_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(Al26)*state.rho + screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(P29)*state.rho; jac.set(Al26, N, scratch); - scratch = -screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(Al26)*state.rho + screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(Mg25)*state.rho + screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(Mg26)*state.rho + screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(Si29)*state.rho; + scratch = -screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(Al26)*state.rho + screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(Mg26)*state.rho + screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(Si29)*state.rho; jac.set(Al26, H1, scratch); jac.set(Al26, H2, 0.0); jac.set(Al26, He3, 0.0); - scratch = -screened_rates(k_He4_Al26_to_P30_reaclib)*Y(Al26)*state.rho - screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(Al26)*state.rho - screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(Al26)*state.rho + screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(Mg23)*state.rho + screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(Na22)*state.rho + screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Al26_He4_to_P30_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(Al26)*state.rho - screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(Al26)*state.rho + screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(Mg23)*state.rho + screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(Na22)*state.rho + screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(Na23)*state.rho; jac.set(Al26, He4, scratch); jac.set(Al26, Li6, 0.0); @@ -22604,27 +20413,27 @@ void jac_nuc(const burn_t& state, jac.set(Al26, Na21, 0.0); - scratch = screened_rates(k_He4_Na22_to_Al26_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na22_He4_to_Al26_reaclib)*Y(He4)*state.rho; jac.set(Al26, Na22, scratch); - scratch = screened_rates(k_He4_Na23_to_n_Al26_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na23_He4_to_n_Al26_reaclib)*Y(He4)*state.rho; jac.set(Al26, Na23, scratch); - scratch = screened_rates(k_He4_Mg23_to_p_Al26_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg23_He4_to_p_Al26_reaclib)*Y(He4)*state.rho; jac.set(Al26, Mg23, scratch); jac.set(Al26, Mg24, 0.0); - scratch = screened_rates(k_p_Mg25_to_Al26_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg25_p_to_Al26_reaclib)*Y(H1)*state.rho; jac.set(Al26, Mg25, scratch); - scratch = screened_rates(k_Mg26_to_Al26_weaktab) + screened_rates(k_p_Mg26_to_n_Al26_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg26_p_to_n_Al26_reaclib)*Y(H1)*state.rho + screened_rates(k_Mg26_to_Al26_beta_neg_weaktab); jac.set(Al26, Mg26, scratch); - scratch = screened_rates(k_n_Al25_to_Al26_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Al25_n_to_Al26_reaclib)*Y(N)*state.rho; jac.set(Al26, Al25, scratch); - scratch = -screened_rates(k_Al26_to_He4_Na22_reaclib) - screened_rates(k_Al26_to_Mg26_weaktab) - screened_rates(k_Al26_to_n_Al25_reaclib) - screened_rates(k_Al26_to_p_Mg25_reaclib) - screened_rates(k_He4_Al26_to_P30_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Al26_to_Al27_reaclib)*Y(N)*state.rho - screened_rates(k_n_Al26_to_He4_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_n_Al26_to_p_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_p_Al26_to_He4_Mg23_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al26_He4_to_P30_reaclib)*Y(He4)*state.rho - screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(He4)*state.rho - screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(He4)*state.rho - screened_rates(k_Al26_n_to_Al27_reaclib)*Y(N)*state.rho - screened_rates(k_Al26_n_to_He4_Na23_reaclib)*Y(N)*state.rho - screened_rates(k_Al26_n_to_p_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_Al26_p_to_He4_Mg23_reaclib)*Y(H1)*state.rho - screened_rates(k_Al26_to_He4_Na22_reaclib) - screened_rates(k_Al26_to_Mg26_electron_capture_weaktab) - screened_rates(k_Al26_to_n_Al25_reaclib) - screened_rates(k_Al26_to_p_Mg25_reaclib); jac.set(Al26, Al26, scratch); scratch = screened_rates(k_Al27_to_n_Al26_reaclib); @@ -22632,7 +20441,7 @@ void jac_nuc(const burn_t& state, jac.set(Al26, Si28, 0.0); - scratch = screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(H1)*state.rho; jac.set(Al26, Si29, scratch); jac.set(Al26, Si30, 0.0); @@ -22641,7 +20450,7 @@ void jac_nuc(const burn_t& state, jac.set(Al26, Si32, 0.0); - scratch = screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(N)*state.rho; jac.set(Al26, P29, scratch); scratch = screened_rates(k_P30_to_He4_Al26_reaclib); @@ -22871,17 +20680,17 @@ void jac_nuc(const burn_t& state, jac.set(Al26, Ge64, 0.0); - scratch = screened_rates(k_n_Al26_to_Al27_reaclib)*Y(Al26)*state.rho + screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(P30)*state.rho; + scratch = screened_rates(k_Al26_n_to_Al27_reaclib)*Y(Al26)*state.rho + screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(P30)*state.rho; jac.set(Al27, N, scratch); - scratch = -screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(Mg26)*state.rho + screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(Si30)*state.rho; + scratch = -screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(Mg26)*state.rho + screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(Si30)*state.rho; jac.set(Al27, H1, scratch); jac.set(Al27, H2, 0.0); jac.set(Al27, He3, 0.0); - scratch = -screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(Al27)*state.rho + screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(Na23)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(Al27)*state.rho - screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(Al27)*state.rho + screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(Na23)*state.rho; jac.set(Al27, He4, scratch); jac.set(Al27, Li6, 0.0); @@ -22898,7 +20707,7 @@ void jac_nuc(const burn_t& state, jac.set(Al27, B11, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(O16)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(O16)*state.rho; jac.set(Al27, C12, scratch); jac.set(Al27, C13, 0.0); @@ -22915,7 +20724,7 @@ void jac_nuc(const burn_t& state, jac.set(Al27, O15, 0.0); - scratch = screened_rates(k_C12_O16_to_p_Al27_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_O16_C12_to_p_Al27_reaclib)*Y(C12)*state.rho; jac.set(Al27, O16, scratch); jac.set(Al27, O17, 0.0); @@ -22942,25 +20751,25 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Na22, 0.0); - scratch = screened_rates(k_He4_Na23_to_Al27_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Na23_He4_to_Al27_reaclib)*Y(He4)*state.rho; jac.set(Al27, Na23, scratch); jac.set(Al27, Mg23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_p_Al27_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_p_Al27_reaclib)*Y(He4)*state.rho; jac.set(Al27, Mg24, scratch); jac.set(Al27, Mg25, 0.0); - scratch = screened_rates(k_p_Mg26_to_Al27_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mg26_p_to_Al27_reaclib)*Y(H1)*state.rho; jac.set(Al27, Mg26, scratch); jac.set(Al27, Al25, 0.0); - scratch = screened_rates(k_n_Al26_to_Al27_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Al26_n_to_Al27_reaclib)*Y(N)*state.rho; jac.set(Al27, Al26, scratch); - scratch = -screened_rates(k_Al27_to_He4_Na23_reaclib) - screened_rates(k_Al27_to_n_Al26_reaclib) - screened_rates(k_Al27_to_p_Mg26_reaclib) - screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Al27_to_C12_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(He4)*state.rho - screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(He4)*state.rho - screened_rates(k_Al27_p_to_C12_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_He4_Mg24_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_Al27_to_He4_Na23_reaclib) - screened_rates(k_Al27_to_n_Al26_reaclib) - screened_rates(k_Al27_to_p_Mg26_reaclib); jac.set(Al27, Al27, scratch); scratch = screened_rates(k_Si28_to_p_Al27_reaclib); @@ -22968,7 +20777,7 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Si29, 0.0); - scratch = screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(H1)*state.rho; jac.set(Al27, Si30, scratch); jac.set(Al27, Si31, 0.0); @@ -22977,7 +20786,7 @@ void jac_nuc(const burn_t& state, jac.set(Al27, P29, 0.0); - scratch = screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(N)*state.rho; jac.set(Al27, P30, scratch); scratch = screened_rates(k_P31_to_He4_Al27_reaclib); @@ -23205,17 +21014,17 @@ void jac_nuc(const burn_t& state, jac.set(Al27, Ge64, 0.0); - scratch = -screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(Si28)*state.rho - screened_rates(k_n_Si28_to_Si29_reaclib)*Y(Si28)*state.rho; + scratch = -screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_n_to_Si29_reaclib)*Y(Si28)*state.rho; jac.set(Si28, N, scratch); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(Si28)*state.rho - screened_rates(k_p_Si28_to_P29_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(Al27)*state.rho + screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_p_to_P29_reaclib)*Y(Si28)*state.rho; jac.set(Si28, H1, scratch); jac.set(Si28, H2, 0.0); jac.set(Si28, He3, 0.0); - scratch = screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(Al25)*state.rho + screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(Mg24)*state.rho + screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(Mg25)*state.rho - screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(Al25)*state.rho + screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(Mg24)*state.rho + screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(Mg25)*state.rho - screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(Si28)*state.rho; jac.set(Si28, He4, scratch); jac.set(Si28, Li6, 0.0); @@ -23232,7 +21041,7 @@ void jac_nuc(const burn_t& state, jac.set(Si28, B11, 0.0); - scratch = screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(Ne20)*state.rho; jac.set(Si28, C12, scratch); jac.set(Si28, C13, 0.0); @@ -23266,7 +21075,7 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Ne19, 0.0); - scratch = screened_rates(k_C12_Ne20_to_He4_Si28_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_Ne20_C12_to_He4_Si28_reaclib)*Y(C12)*state.rho; jac.set(Si28, Ne20, scratch); jac.set(Si28, Ne21, 0.0); @@ -23281,23 +21090,23 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Mg23, 0.0); - scratch = screened_rates(k_He4_Mg24_to_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg24_He4_to_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg24, scratch); - scratch = screened_rates(k_He4_Mg25_to_n_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg25_He4_to_n_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Mg25, scratch); jac.set(Si28, Mg26, 0.0); - scratch = screened_rates(k_He4_Al25_to_p_Si28_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al25_He4_to_p_Si28_reaclib)*Y(He4)*state.rho; jac.set(Si28, Al25, scratch); jac.set(Si28, Al26, 0.0); - scratch = screened_rates(k_p_Al27_to_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Al27_p_to_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, Al27, scratch); - scratch = -screened_rates(k_He4_Si28_to_C12_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_O16_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_to_He4_Mg24_reaclib) - screened_rates(k_Si28_to_p_Al27_reaclib) - screened_rates(k_n_Si28_to_He4_Mg25_reaclib)*Y(N)*state.rho - screened_rates(k_n_Si28_to_Si29_reaclib)*Y(N)*state.rho - screened_rates(k_p_Si28_to_He4_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si28_to_P29_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si28_He4_to_C12_Ne20_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_O16_O16_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*state.rho - screened_rates(k_Si28_n_to_He4_Mg25_reaclib)*Y(N)*state.rho - screened_rates(k_Si28_n_to_Si29_reaclib)*Y(N)*state.rho - screened_rates(k_Si28_p_to_He4_Al25_reaclib)*Y(H1)*state.rho - screened_rates(k_Si28_p_to_P29_reaclib)*Y(H1)*state.rho - screened_rates(k_Si28_to_He4_Mg24_reaclib) - screened_rates(k_Si28_to_p_Al27_reaclib); jac.set(Si28, Si28, scratch); scratch = screened_rates(k_Si29_to_n_Si28_reaclib); @@ -23314,7 +21123,7 @@ void jac_nuc(const burn_t& state, jac.set(Si28, P30, 0.0); - scratch = screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho; jac.set(Si28, P31, scratch); jac.set(Si28, P32, 0.0); @@ -23540,17 +21349,17 @@ void jac_nuc(const burn_t& state, jac.set(Si28, Ge64, 0.0); - scratch = screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(P29)*state.rho + screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(S32)*state.rho + screened_rates(k_n_Si28_to_Si29_reaclib)*Y(Si28)*state.rho - screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(Si29)*state.rho - screened_rates(k_n_Si29_to_Si30_reaclib)*Y(Si29)*state.rho; + scratch = screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(P29)*state.rho + screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(S32)*state.rho + screened_rates(k_Si28_n_to_Si29_reaclib)*Y(Si28)*state.rho - screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_n_to_Si30_reaclib)*Y(Si29)*state.rho; jac.set(Si29, N, scratch); - scratch = screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(P32)*state.rho - screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(Si29)*state.rho - screened_rates(k_p_Si29_to_P30_reaclib)*Y(Si29)*state.rho - screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(Si29)*state.rho; + scratch = screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(P32)*state.rho - screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_p_to_P30_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(Si29)*state.rho; jac.set(Si29, H1, scratch); jac.set(Si29, H2, 0.0); jac.set(Si29, He3, 0.0); - scratch = screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(Al26)*state.rho + screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(Mg25)*state.rho + screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(Mg26)*state.rho - screened_rates(k_He4_Si29_to_S33_reaclib)*Y(Si29)*state.rho - screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(Si29)*state.rho - screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(Si29)*state.rho; + scratch = screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(Al26)*state.rho + screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(Mg25)*state.rho + screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Si29_He4_to_S33_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(Si29)*state.rho; jac.set(Si29, He4, scratch); jac.set(Si29, Li6, 0.0); @@ -23615,23 +21424,23 @@ void jac_nuc(const burn_t& state, jac.set(Si29, Mg24, 0.0); - scratch = screened_rates(k_He4_Mg25_to_Si29_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg25_He4_to_Si29_reaclib)*Y(He4)*state.rho; jac.set(Si29, Mg25, scratch); - scratch = screened_rates(k_He4_Mg26_to_n_Si29_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg26_He4_to_n_Si29_reaclib)*Y(He4)*state.rho; jac.set(Si29, Mg26, scratch); jac.set(Si29, Al25, 0.0); - scratch = screened_rates(k_He4_Al26_to_p_Si29_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al26_He4_to_p_Si29_reaclib)*Y(He4)*state.rho; jac.set(Si29, Al26, scratch); jac.set(Si29, Al27, 0.0); - scratch = screened_rates(k_n_Si28_to_Si29_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Si28_n_to_Si29_reaclib)*Y(N)*state.rho; jac.set(Si29, Si28, scratch); - scratch = -screened_rates(k_He4_Si29_to_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si29_to_He4_Mg25_reaclib) - screened_rates(k_Si29_to_P29_weaktab) - screened_rates(k_Si29_to_n_Si28_reaclib) - screened_rates(k_n_Si29_to_He4_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_n_Si29_to_Si30_reaclib)*Y(N)*state.rho - screened_rates(k_p_Si29_to_He4_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si29_to_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si29_He4_to_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(He4)*state.rho - screened_rates(k_Si29_n_to_He4_Mg26_reaclib)*Y(N)*state.rho - screened_rates(k_Si29_n_to_Si30_reaclib)*Y(N)*state.rho - screened_rates(k_Si29_p_to_He4_Al26_reaclib)*Y(H1)*state.rho - screened_rates(k_Si29_p_to_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(H1)*state.rho - screened_rates(k_Si29_to_He4_Mg25_reaclib) - screened_rates(k_Si29_to_P29_beta_neg_weaktab) - screened_rates(k_Si29_to_n_Si28_reaclib); jac.set(Si29, Si29, scratch); scratch = screened_rates(k_Si30_to_n_Si29_reaclib); @@ -23641,7 +21450,7 @@ void jac_nuc(const burn_t& state, jac.set(Si29, Si32, 0.0); - scratch = screened_rates(k_P29_to_Si29_weaktab) + screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(N)*state.rho + screened_rates(k_P29_to_Si29_electron_capture_weaktab); jac.set(Si29, P29, scratch); scratch = screened_rates(k_P30_to_p_Si29_reaclib); @@ -23649,12 +21458,12 @@ void jac_nuc(const burn_t& state, jac.set(Si29, P31, 0.0); - scratch = screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(H1)*state.rho; jac.set(Si29, P32, scratch); jac.set(Si29, P33, 0.0); - scratch = screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(N)*state.rho; jac.set(Si29, S32, scratch); scratch = screened_rates(k_S33_to_He4_Si29_reaclib); @@ -23874,17 +21683,17 @@ void jac_nuc(const burn_t& state, jac.set(Si29, Ge64, 0.0); - scratch = screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(P30)*state.rho + screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(S33)*state.rho + screened_rates(k_n_Si29_to_Si30_reaclib)*Y(Si29)*state.rho - screened_rates(k_n_Si30_to_Si31_reaclib)*Y(Si30)*state.rho; + scratch = screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(P30)*state.rho + screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(S33)*state.rho + screened_rates(k_Si29_n_to_Si30_reaclib)*Y(Si29)*state.rho - screened_rates(k_Si30_n_to_Si31_reaclib)*Y(Si30)*state.rho; jac.set(Si30, N, scratch); - scratch = screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(P33)*state.rho - screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(Si30)*state.rho - screened_rates(k_p_Si30_to_P31_reaclib)*Y(Si30)*state.rho - screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(Si30)*state.rho; + scratch = screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(P33)*state.rho - screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si30_p_to_P31_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(Si30)*state.rho; jac.set(Si30, H1, scratch); jac.set(Si30, H2, 0.0); jac.set(Si30, He3, 0.0); - scratch = screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(Al27)*state.rho + screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(Mg26)*state.rho - screened_rates(k_He4_Si30_to_S34_reaclib)*Y(Si30)*state.rho - screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(Si30)*state.rho - screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(Si30)*state.rho; + scratch = screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(Al27)*state.rho + screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(Mg26)*state.rho - screened_rates(k_Si30_He4_to_S34_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(Si30)*state.rho; jac.set(Si30, He4, scratch); jac.set(Si30, Li6, 0.0); @@ -23951,22 +21760,22 @@ void jac_nuc(const burn_t& state, jac.set(Si30, Mg25, 0.0); - scratch = screened_rates(k_He4_Mg26_to_Si30_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mg26_He4_to_Si30_reaclib)*Y(He4)*state.rho; jac.set(Si30, Mg26, scratch); jac.set(Si30, Al25, 0.0); jac.set(Si30, Al26, 0.0); - scratch = screened_rates(k_He4_Al27_to_p_Si30_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al27_He4_to_p_Si30_reaclib)*Y(He4)*state.rho; jac.set(Si30, Al27, scratch); jac.set(Si30, Si28, 0.0); - scratch = screened_rates(k_n_Si29_to_Si30_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Si29_n_to_Si30_reaclib)*Y(N)*state.rho; jac.set(Si30, Si29, scratch); - scratch = -screened_rates(k_He4_Si30_to_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(He4)*state.rho - screened_rates(k_Si30_to_He4_Mg26_reaclib) - screened_rates(k_Si30_to_P30_weaktab) - screened_rates(k_Si30_to_n_Si29_reaclib) - screened_rates(k_n_Si30_to_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_p_Si30_to_He4_Al27_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si30_to_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si30_He4_to_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(He4)*state.rho - screened_rates(k_Si30_n_to_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_Si30_p_to_He4_Al27_reaclib)*Y(H1)*state.rho - screened_rates(k_Si30_p_to_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_Si30_to_He4_Mg26_reaclib) - screened_rates(k_Si30_to_P30_beta_neg_weaktab) - screened_rates(k_Si30_to_n_Si29_reaclib); jac.set(Si30, Si30, scratch); scratch = screened_rates(k_Si31_to_n_Si30_reaclib); @@ -23976,7 +21785,7 @@ void jac_nuc(const burn_t& state, jac.set(Si30, P29, 0.0); - scratch = screened_rates(k_P30_to_Si30_weaktab) + screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(N)*state.rho + screened_rates(k_P30_to_Si30_electron_capture_weaktab); jac.set(Si30, P30, scratch); scratch = screened_rates(k_P31_to_p_Si30_reaclib); @@ -23984,12 +21793,12 @@ void jac_nuc(const burn_t& state, jac.set(Si30, P32, 0.0); - scratch = screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(H1)*state.rho; jac.set(Si30, P33, scratch); jac.set(Si30, S32, 0.0); - scratch = screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(N)*state.rho; jac.set(Si30, S33, scratch); scratch = screened_rates(k_S34_to_He4_Si30_reaclib); @@ -24207,17 +22016,17 @@ void jac_nuc(const burn_t& state, jac.set(Si30, Ge64, 0.0); - scratch = screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(P31)*state.rho + screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(S34)*state.rho + screened_rates(k_n_Si30_to_Si31_reaclib)*Y(Si30)*state.rho - screened_rates(k_n_Si31_to_Si32_reaclib)*Y(Si31)*state.rho; + scratch = screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(P31)*state.rho + screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(S34)*state.rho + screened_rates(k_Si30_n_to_Si31_reaclib)*Y(Si30)*state.rho - screened_rates(k_Si31_n_to_Si32_reaclib)*Y(Si31)*state.rho; jac.set(Si31, N, scratch); - scratch = -screened_rates(k_p_Si31_to_P32_reaclib)*Y(Si31)*state.rho - screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(Si31)*state.rho; + scratch = -screened_rates(k_Si31_p_to_P32_reaclib)*Y(Si31)*state.rho - screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(Si31)*state.rho; jac.set(Si31, H1, scratch); jac.set(Si31, H2, 0.0); jac.set(Si31, He3, 0.0); - scratch = -screened_rates(k_He4_Si31_to_S35_reaclib)*Y(Si31)*state.rho - screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(Si31)*state.rho; + scratch = -screened_rates(k_Si31_He4_to_S35_reaclib)*Y(Si31)*state.rho - screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(Si31)*state.rho; jac.set(Si31, He4, scratch); jac.set(Si31, Li6, 0.0); @@ -24296,10 +22105,10 @@ void jac_nuc(const burn_t& state, jac.set(Si31, Si29, 0.0); - scratch = screened_rates(k_n_Si30_to_Si31_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Si30_n_to_Si31_reaclib)*Y(N)*state.rho; jac.set(Si31, Si30, scratch); - scratch = -screened_rates(k_He4_Si31_to_S35_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_Si31_to_P31_weaktab) - screened_rates(k_Si31_to_n_Si30_reaclib) - screened_rates(k_n_Si31_to_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_p_Si31_to_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si31_He4_to_S35_reaclib)*Y(He4)*state.rho - screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_Si31_n_to_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_Si31_p_to_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_Si31_to_P31_beta_neg_weaktab) - screened_rates(k_Si31_to_n_Si30_reaclib); jac.set(Si31, Si31, scratch); scratch = screened_rates(k_Si32_to_n_Si31_reaclib); @@ -24309,7 +22118,7 @@ void jac_nuc(const burn_t& state, jac.set(Si31, P30, 0.0); - scratch = screened_rates(k_P31_to_Si31_weaktab) + screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(N)*state.rho + screened_rates(k_P31_to_Si31_electron_capture_weaktab); jac.set(Si31, P31, scratch); scratch = screened_rates(k_P32_to_p_Si31_reaclib); @@ -24321,7 +22130,7 @@ void jac_nuc(const burn_t& state, jac.set(Si31, S33, 0.0); - scratch = screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(N)*state.rho; jac.set(Si31, S34, scratch); scratch = screened_rates(k_S35_to_He4_Si31_reaclib); @@ -24537,17 +22346,17 @@ void jac_nuc(const burn_t& state, jac.set(Si31, Ge64, 0.0); - scratch = screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(P32)*state.rho + screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(S35)*state.rho + screened_rates(k_n_Si31_to_Si32_reaclib)*Y(Si31)*state.rho; + scratch = screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(P32)*state.rho + screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(S35)*state.rho + screened_rates(k_Si31_n_to_Si32_reaclib)*Y(Si31)*state.rho; jac.set(Si32, N, scratch); - scratch = -screened_rates(k_p_Si32_to_P33_reaclib)*Y(Si32)*state.rho - screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(Si32)*state.rho; + scratch = -screened_rates(k_Si32_p_to_P33_reaclib)*Y(Si32)*state.rho - screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(Si32)*state.rho; jac.set(Si32, H1, scratch); jac.set(Si32, H2, 0.0); jac.set(Si32, He3, 0.0); - scratch = -screened_rates(k_He4_Si32_to_S36_reaclib)*Y(Si32)*state.rho - screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(Si32)*state.rho; + scratch = -screened_rates(k_Si32_He4_to_S36_reaclib)*Y(Si32)*state.rho - screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(Si32)*state.rho; jac.set(Si32, He4, scratch); jac.set(Si32, Li6, 0.0); @@ -24628,10 +22437,10 @@ void jac_nuc(const burn_t& state, jac.set(Si32, Si30, 0.0); - scratch = screened_rates(k_n_Si31_to_Si32_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Si31_n_to_Si32_reaclib)*Y(N)*state.rho; jac.set(Si32, Si31, scratch); - scratch = -screened_rates(k_He4_Si32_to_S36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(He4)*state.rho - screened_rates(k_Si32_to_P32_weaktab) - screened_rates(k_Si32_to_n_Si31_reaclib) - screened_rates(k_p_Si32_to_P33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Si32_He4_to_S36_reaclib)*Y(He4)*state.rho - screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(He4)*state.rho - screened_rates(k_Si32_p_to_P33_reaclib)*Y(H1)*state.rho - screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_Si32_to_P32_beta_neg_weaktab) - screened_rates(k_Si32_to_n_Si31_reaclib); jac.set(Si32, Si32, scratch); jac.set(Si32, P29, 0.0); @@ -24640,7 +22449,7 @@ void jac_nuc(const burn_t& state, jac.set(Si32, P31, 0.0); - scratch = screened_rates(k_P32_to_Si32_weaktab) + screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(N)*state.rho + screened_rates(k_P32_to_Si32_electron_capture_weaktab); jac.set(Si32, P32, scratch); scratch = screened_rates(k_P33_to_p_Si32_reaclib); @@ -24652,7 +22461,7 @@ void jac_nuc(const burn_t& state, jac.set(Si32, S34, 0.0); - scratch = screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(N)*state.rho; jac.set(Si32, S35, scratch); scratch = screened_rates(k_S36_to_He4_Si32_reaclib); @@ -24866,17 +22675,17 @@ void jac_nuc(const burn_t& state, jac.set(Si32, Ge64, 0.0); - scratch = -screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(P29)*state.rho - screened_rates(k_n_P29_to_P30_reaclib)*Y(P29)*state.rho - screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(P29)*state.rho; + scratch = -screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(P29)*state.rho - screened_rates(k_P29_n_to_P30_reaclib)*Y(P29)*state.rho - screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(P29)*state.rho; jac.set(P29, N, scratch); - scratch = screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(S32)*state.rho + screened_rates(k_p_Si28_to_P29_reaclib)*Y(Si28)*state.rho + screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(Si29)*state.rho; + scratch = screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(S32)*state.rho + screened_rates(k_Si28_p_to_P29_reaclib)*Y(Si28)*state.rho + screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(Si29)*state.rho; jac.set(P29, H1, scratch); jac.set(P29, H2, 0.0); jac.set(P29, He3, 0.0); - scratch = screened_rates(k_He4_Al25_to_P29_reaclib)*Y(Al25)*state.rho + screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(Al26)*state.rho - screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(P29)*state.rho - screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(P29)*state.rho; + scratch = screened_rates(k_Al25_He4_to_P29_reaclib)*Y(Al25)*state.rho + screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(Al26)*state.rho - screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(P29)*state.rho - screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(P29)*state.rho; jac.set(P29, He4, scratch); jac.set(P29, Li6, 0.0); @@ -24945,18 +22754,18 @@ void jac_nuc(const burn_t& state, jac.set(P29, Mg26, 0.0); - scratch = screened_rates(k_He4_Al25_to_P29_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al25_He4_to_P29_reaclib)*Y(He4)*state.rho; jac.set(P29, Al25, scratch); - scratch = screened_rates(k_He4_Al26_to_n_P29_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al26_He4_to_n_P29_reaclib)*Y(He4)*state.rho; jac.set(P29, Al26, scratch); jac.set(P29, Al27, 0.0); - scratch = screened_rates(k_p_Si28_to_P29_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si28_p_to_P29_reaclib)*Y(H1)*state.rho; jac.set(P29, Si28, scratch); - scratch = screened_rates(k_Si29_to_P29_weaktab) + screened_rates(k_p_Si29_to_n_P29_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si29_p_to_n_P29_reaclib)*Y(H1)*state.rho + screened_rates(k_Si29_to_P29_beta_neg_weaktab); jac.set(P29, Si29, scratch); jac.set(P29, Si30, 0.0); @@ -24965,7 +22774,7 @@ void jac_nuc(const burn_t& state, jac.set(P29, Si32, 0.0); - scratch = -screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_P29_to_He4_Al25_reaclib) - screened_rates(k_P29_to_Si29_weaktab) - screened_rates(k_P29_to_p_Si28_reaclib) - screened_rates(k_n_P29_to_He4_Al26_reaclib)*Y(N)*state.rho - screened_rates(k_n_P29_to_P30_reaclib)*Y(N)*state.rho - screened_rates(k_n_P29_to_p_Si29_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(He4)*state.rho - screened_rates(k_P29_n_to_He4_Al26_reaclib)*Y(N)*state.rho - screened_rates(k_P29_n_to_P30_reaclib)*Y(N)*state.rho - screened_rates(k_P29_n_to_p_Si29_reaclib)*Y(N)*state.rho - screened_rates(k_P29_to_He4_Al25_reaclib) - screened_rates(k_P29_to_Si29_electron_capture_weaktab) - screened_rates(k_P29_to_p_Si28_reaclib); jac.set(P29, P29, scratch); scratch = screened_rates(k_P30_to_n_P29_reaclib); @@ -24977,7 +22786,7 @@ void jac_nuc(const burn_t& state, jac.set(P29, P33, 0.0); - scratch = screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(H1)*state.rho; jac.set(P29, S32, scratch); jac.set(P29, S33, 0.0); @@ -25197,17 +23006,17 @@ void jac_nuc(const burn_t& state, jac.set(P29, Ge64, 0.0); - scratch = screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(Cl33)*state.rho + screened_rates(k_n_P29_to_P30_reaclib)*Y(P29)*state.rho - screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(P30)*state.rho - screened_rates(k_n_P30_to_P31_reaclib)*Y(P30)*state.rho - screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(P30)*state.rho; + scratch = screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(Cl33)*state.rho + screened_rates(k_P29_n_to_P30_reaclib)*Y(P29)*state.rho - screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(P30)*state.rho - screened_rates(k_P30_n_to_P31_reaclib)*Y(P30)*state.rho - screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(P30)*state.rho; jac.set(P30, N, scratch); - scratch = screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(S33)*state.rho + screened_rates(k_p_Si29_to_P30_reaclib)*Y(Si29)*state.rho + screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(Si30)*state.rho; + scratch = screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(S33)*state.rho + screened_rates(k_Si29_p_to_P30_reaclib)*Y(Si29)*state.rho + screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(Si30)*state.rho; jac.set(P30, H1, scratch); jac.set(P30, H2, 0.0); jac.set(P30, He3, 0.0); - scratch = screened_rates(k_He4_Al26_to_P30_reaclib)*Y(Al26)*state.rho + screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(P30)*state.rho - screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(P30)*state.rho - screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(P30)*state.rho; + scratch = screened_rates(k_Al26_He4_to_P30_reaclib)*Y(Al26)*state.rho + screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(Al27)*state.rho - screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(P30)*state.rho - screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(P30)*state.rho - screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(P30)*state.rho; jac.set(P30, He4, scratch); jac.set(P30, Li6, 0.0); @@ -25278,28 +23087,28 @@ void jac_nuc(const burn_t& state, jac.set(P30, Al25, 0.0); - scratch = screened_rates(k_He4_Al26_to_P30_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al26_He4_to_P30_reaclib)*Y(He4)*state.rho; jac.set(P30, Al26, scratch); - scratch = screened_rates(k_He4_Al27_to_n_P30_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al27_He4_to_n_P30_reaclib)*Y(He4)*state.rho; jac.set(P30, Al27, scratch); jac.set(P30, Si28, 0.0); - scratch = screened_rates(k_p_Si29_to_P30_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si29_p_to_P30_reaclib)*Y(H1)*state.rho; jac.set(P30, Si29, scratch); - scratch = screened_rates(k_Si30_to_P30_weaktab) + screened_rates(k_p_Si30_to_n_P30_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si30_p_to_n_P30_reaclib)*Y(H1)*state.rho + screened_rates(k_Si30_to_P30_beta_neg_weaktab); jac.set(P30, Si30, scratch); jac.set(P30, Si31, 0.0); jac.set(P30, Si32, 0.0); - scratch = screened_rates(k_n_P29_to_P30_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P29_n_to_P30_reaclib)*Y(N)*state.rho; jac.set(P30, P29, scratch); - scratch = -screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_P30_to_He4_Al26_reaclib) - screened_rates(k_P30_to_Si30_weaktab) - screened_rates(k_P30_to_n_P29_reaclib) - screened_rates(k_P30_to_p_Si29_reaclib) - screened_rates(k_n_P30_to_He4_Al27_reaclib)*Y(N)*state.rho - screened_rates(k_n_P30_to_P31_reaclib)*Y(N)*state.rho - screened_rates(k_n_P30_to_p_Si30_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(He4)*state.rho - screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(He4)*state.rho - screened_rates(k_P30_n_to_He4_Al27_reaclib)*Y(N)*state.rho - screened_rates(k_P30_n_to_P31_reaclib)*Y(N)*state.rho - screened_rates(k_P30_n_to_p_Si30_reaclib)*Y(N)*state.rho - screened_rates(k_P30_to_He4_Al26_reaclib) - screened_rates(k_P30_to_Si30_electron_capture_weaktab) - screened_rates(k_P30_to_n_P29_reaclib) - screened_rates(k_P30_to_p_Si29_reaclib); jac.set(P30, P30, scratch); scratch = screened_rates(k_P31_to_n_P30_reaclib); @@ -25311,7 +23120,7 @@ void jac_nuc(const burn_t& state, jac.set(P30, S32, 0.0); - scratch = screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(H1)*state.rho; jac.set(P30, S33, scratch); jac.set(P30, S34, 0.0); @@ -25320,7 +23129,7 @@ void jac_nuc(const burn_t& state, jac.set(P30, S36, 0.0); - scratch = screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(N)*state.rho; jac.set(P30, Cl33, scratch); scratch = screened_rates(k_Cl34_to_He4_P30_reaclib); @@ -25530,17 +23339,17 @@ void jac_nuc(const burn_t& state, jac.set(P30, Ge64, 0.0); - scratch = screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(Cl34)*state.rho + screened_rates(k_n_P30_to_P31_reaclib)*Y(P30)*state.rho - screened_rates(k_n_P31_to_P32_reaclib)*Y(P31)*state.rho - screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(P31)*state.rho; + scratch = screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(Cl34)*state.rho + screened_rates(k_P30_n_to_P31_reaclib)*Y(P30)*state.rho - screened_rates(k_P31_n_to_P32_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(P31)*state.rho; jac.set(P31, N, scratch); - scratch = -screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(P31)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho + screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(S34)*state.rho + screened_rates(k_p_Si30_to_P31_reaclib)*Y(Si30)*state.rho + screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(Si31)*state.rho; + scratch = -screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho + screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(S34)*state.rho + screened_rates(k_Si30_p_to_P31_reaclib)*Y(Si30)*state.rho + screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(Si31)*state.rho; jac.set(P31, H1, scratch); jac.set(P31, H2, 0.0); jac.set(P31, He3, 0.0); - scratch = screened_rates(k_He4_Al27_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(P31)*state.rho - screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(P31)*state.rho - screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(P31)*state.rho + screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(Si28)*state.rho; + scratch = screened_rates(k_Al27_He4_to_P31_reaclib)*Y(Al27)*state.rho - screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(P31)*state.rho - screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(P31)*state.rho + screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(Si28)*state.rho; jac.set(P31, He4, scratch); jac.set(P31, Li6, 0.0); @@ -25557,7 +23366,7 @@ void jac_nuc(const burn_t& state, jac.set(P31, B11, 0.0); - scratch = screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(Ne20)*state.rho; + scratch = screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(Ne20)*state.rho; jac.set(P31, C12, scratch); jac.set(P31, C13, 0.0); @@ -25591,7 +23400,7 @@ void jac_nuc(const burn_t& state, jac.set(P31, Ne19, 0.0); - scratch = screened_rates(k_C12_Ne20_to_p_P31_reaclib)*Y(C12)*state.rho; + scratch = screened_rates(k_Ne20_C12_to_p_P31_reaclib)*Y(C12)*state.rho; jac.set(P31, Ne20, scratch); jac.set(P31, Ne21, 0.0); @@ -25616,28 +23425,28 @@ void jac_nuc(const burn_t& state, jac.set(P31, Al26, 0.0); - scratch = screened_rates(k_He4_Al27_to_P31_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Al27_He4_to_P31_reaclib)*Y(He4)*state.rho; jac.set(P31, Al27, scratch); - scratch = screened_rates(k_He4_Si28_to_p_P31_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_p_P31_reaclib)*Y(He4)*state.rho; jac.set(P31, Si28, scratch); jac.set(P31, Si29, 0.0); - scratch = screened_rates(k_p_Si30_to_P31_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si30_p_to_P31_reaclib)*Y(H1)*state.rho; jac.set(P31, Si30, scratch); - scratch = screened_rates(k_Si31_to_P31_weaktab) + screened_rates(k_p_Si31_to_n_P31_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si31_p_to_n_P31_reaclib)*Y(H1)*state.rho + screened_rates(k_Si31_to_P31_beta_neg_weaktab); jac.set(P31, Si31, scratch); jac.set(P31, Si32, 0.0); jac.set(P31, P29, 0.0); - scratch = screened_rates(k_n_P30_to_P31_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P30_n_to_P31_reaclib)*Y(N)*state.rho; jac.set(P31, P30, scratch); - scratch = -screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_P31_to_He4_Al27_reaclib) - screened_rates(k_P31_to_Si31_weaktab) - screened_rates(k_P31_to_n_P30_reaclib) - screened_rates(k_P31_to_p_Si30_reaclib) - screened_rates(k_n_P31_to_P32_reaclib)*Y(N)*state.rho - screened_rates(k_n_P31_to_p_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_p_P31_to_C12_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_O16_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(He4)*state.rho - screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(He4)*state.rho - screened_rates(k_P31_n_to_P32_reaclib)*Y(N)*state.rho - screened_rates(k_P31_n_to_p_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_P31_p_to_C12_Ne20_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_He4_Si28_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_O16_O16_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho - screened_rates(k_P31_to_He4_Al27_reaclib) - screened_rates(k_P31_to_Si31_electron_capture_weaktab) - screened_rates(k_P31_to_n_P30_reaclib) - screened_rates(k_P31_to_p_Si30_reaclib); jac.set(P31, P31, scratch); scratch = screened_rates(k_P32_to_n_P31_reaclib); @@ -25650,7 +23459,7 @@ void jac_nuc(const burn_t& state, jac.set(P31, S33, 0.0); - scratch = screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(H1)*state.rho; jac.set(P31, S34, scratch); jac.set(P31, S35, 0.0); @@ -25659,7 +23468,7 @@ void jac_nuc(const burn_t& state, jac.set(P31, Cl33, 0.0); - scratch = screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(N)*state.rho; jac.set(P31, Cl34, scratch); scratch = screened_rates(k_Cl35_to_He4_P31_reaclib); @@ -25867,17 +23676,17 @@ void jac_nuc(const burn_t& state, jac.set(P31, Ge64, 0.0); - scratch = screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_n_P31_to_P32_reaclib)*Y(P31)*state.rho - screened_rates(k_n_P32_to_P33_reaclib)*Y(P32)*state.rho - screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(P32)*state.rho + screened_rates(k_n_S32_to_p_P32_reaclib)*Y(S32)*state.rho; + scratch = screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_P31_n_to_P32_reaclib)*Y(P31)*state.rho - screened_rates(k_P32_n_to_P33_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(P32)*state.rho + screened_rates(k_S32_n_to_p_P32_reaclib)*Y(S32)*state.rho; jac.set(P32, N, scratch); - scratch = -screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(P32)*state.rho - screened_rates(k_p_P32_to_S33_reaclib)*Y(P32)*state.rho - screened_rates(k_p_P32_to_n_S32_reaclib)*Y(P32)*state.rho + screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(S35)*state.rho + screened_rates(k_p_Si31_to_P32_reaclib)*Y(Si31)*state.rho + screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(Si32)*state.rho; + scratch = -screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_p_to_S33_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_p_to_n_S32_reaclib)*Y(P32)*state.rho + screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(S35)*state.rho + screened_rates(k_Si31_p_to_P32_reaclib)*Y(Si31)*state.rho + screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(Si32)*state.rho; jac.set(P32, H1, scratch); jac.set(P32, H2, 0.0); jac.set(P32, He3, 0.0); - scratch = -screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(P32)*state.rho - screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(P32)*state.rho - screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(P32)*state.rho + screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(Si29)*state.rho; + scratch = -screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(P32)*state.rho - screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(P32)*state.rho + screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(Si29)*state.rho; jac.set(P32, He4, scratch); jac.set(P32, Li6, 0.0); @@ -25954,31 +23763,31 @@ void jac_nuc(const burn_t& state, jac.set(P32, Si28, 0.0); - scratch = screened_rates(k_He4_Si29_to_p_P32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si29_He4_to_p_P32_reaclib)*Y(He4)*state.rho; jac.set(P32, Si29, scratch); jac.set(P32, Si30, 0.0); - scratch = screened_rates(k_p_Si31_to_P32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si31_p_to_P32_reaclib)*Y(H1)*state.rho; jac.set(P32, Si31, scratch); - scratch = screened_rates(k_Si32_to_P32_weaktab) + screened_rates(k_p_Si32_to_n_P32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si32_p_to_n_P32_reaclib)*Y(H1)*state.rho + screened_rates(k_Si32_to_P32_beta_neg_weaktab); jac.set(P32, Si32, scratch); jac.set(P32, P29, 0.0); jac.set(P32, P30, 0.0); - scratch = screened_rates(k_n_P31_to_P32_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P31_n_to_P32_reaclib)*Y(N)*state.rho; jac.set(P32, P31, scratch); - scratch = -screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(He4)*state.rho - screened_rates(k_P32_to_S32_weaktab) - screened_rates(k_P32_to_Si32_weaktab) - screened_rates(k_P32_to_n_P31_reaclib) - screened_rates(k_P32_to_p_Si31_reaclib) - screened_rates(k_n_P32_to_P33_reaclib)*Y(N)*state.rho - screened_rates(k_n_P32_to_p_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_p_P32_to_He4_Si29_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P32_to_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P32_to_n_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(He4)*state.rho - screened_rates(k_P32_n_to_P33_reaclib)*Y(N)*state.rho - screened_rates(k_P32_n_to_p_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_P32_p_to_He4_Si29_reaclib)*Y(H1)*state.rho - screened_rates(k_P32_p_to_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_P32_p_to_n_S32_reaclib)*Y(H1)*state.rho - screened_rates(k_P32_to_S32_beta_neg_weaktab) - screened_rates(k_P32_to_Si32_electron_capture_weaktab) - screened_rates(k_P32_to_n_P31_reaclib) - screened_rates(k_P32_to_p_Si31_reaclib); jac.set(P32, P32, scratch); scratch = screened_rates(k_P33_to_n_P32_reaclib); jac.set(P32, P33, scratch); - scratch = screened_rates(k_S32_to_P32_weaktab) + screened_rates(k_n_S32_to_p_P32_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S32_n_to_p_P32_reaclib)*Y(N)*state.rho + screened_rates(k_S32_to_P32_electron_capture_weaktab); jac.set(P32, S32, scratch); scratch = screened_rates(k_S33_to_p_P32_reaclib); @@ -25986,7 +23795,7 @@ void jac_nuc(const burn_t& state, jac.set(P32, S34, 0.0); - scratch = screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(H1)*state.rho; jac.set(P32, S35, scratch); jac.set(P32, S36, 0.0); @@ -25995,7 +23804,7 @@ void jac_nuc(const burn_t& state, jac.set(P32, Cl34, 0.0); - scratch = screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(N)*state.rho; jac.set(P32, Cl35, scratch); scratch = screened_rates(k_Cl36_to_He4_P32_reaclib); @@ -26201,17 +24010,17 @@ void jac_nuc(const burn_t& state, jac.set(P32, Ge64, 0.0); - scratch = screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(Cl36)*state.rho + screened_rates(k_n_P32_to_P33_reaclib)*Y(P32)*state.rho + screened_rates(k_n_S33_to_p_P33_reaclib)*Y(S33)*state.rho; + scratch = screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(Cl36)*state.rho + screened_rates(k_P32_n_to_P33_reaclib)*Y(P32)*state.rho + screened_rates(k_S33_n_to_p_P33_reaclib)*Y(S33)*state.rho; jac.set(P33, N, scratch); - scratch = -screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(P33)*state.rho - screened_rates(k_p_P33_to_S34_reaclib)*Y(P33)*state.rho - screened_rates(k_p_P33_to_n_S33_reaclib)*Y(P33)*state.rho + screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(S36)*state.rho + screened_rates(k_p_Si32_to_P33_reaclib)*Y(Si32)*state.rho; + scratch = -screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(P33)*state.rho - screened_rates(k_P33_p_to_S34_reaclib)*Y(P33)*state.rho - screened_rates(k_P33_p_to_n_S33_reaclib)*Y(P33)*state.rho + screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(S36)*state.rho + screened_rates(k_Si32_p_to_P33_reaclib)*Y(Si32)*state.rho; jac.set(P33, H1, scratch); jac.set(P33, H2, 0.0); jac.set(P33, He3, 0.0); - scratch = -screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(P33)*state.rho - screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(P33)*state.rho - screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(P33)*state.rho + screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(Si30)*state.rho; + scratch = -screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(P33)*state.rho - screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(P33)*state.rho - screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(P33)*state.rho + screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(Si30)*state.rho; jac.set(P33, He4, scratch); jac.set(P33, Li6, 0.0); @@ -26290,12 +24099,12 @@ void jac_nuc(const burn_t& state, jac.set(P33, Si29, 0.0); - scratch = screened_rates(k_He4_Si30_to_p_P33_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si30_He4_to_p_P33_reaclib)*Y(He4)*state.rho; jac.set(P33, Si30, scratch); jac.set(P33, Si31, 0.0); - scratch = screened_rates(k_p_Si32_to_P33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Si32_p_to_P33_reaclib)*Y(H1)*state.rho; jac.set(P33, Si32, scratch); jac.set(P33, P29, 0.0); @@ -26304,15 +24113,15 @@ void jac_nuc(const burn_t& state, jac.set(P33, P31, 0.0); - scratch = screened_rates(k_n_P32_to_P33_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_P32_n_to_P33_reaclib)*Y(N)*state.rho; jac.set(P33, P32, scratch); - scratch = -screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(He4)*state.rho - screened_rates(k_P33_to_S33_weaktab) - screened_rates(k_P33_to_n_P32_reaclib) - screened_rates(k_P33_to_p_Si32_reaclib) - screened_rates(k_p_P33_to_He4_Si30_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P33_to_S34_reaclib)*Y(H1)*state.rho - screened_rates(k_p_P33_to_n_S33_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(He4)*state.rho - screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(He4)*state.rho - screened_rates(k_P33_p_to_He4_Si30_reaclib)*Y(H1)*state.rho - screened_rates(k_P33_p_to_S34_reaclib)*Y(H1)*state.rho - screened_rates(k_P33_p_to_n_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_P33_to_S33_beta_neg_weaktab) - screened_rates(k_P33_to_n_P32_reaclib) - screened_rates(k_P33_to_p_Si32_reaclib); jac.set(P33, P33, scratch); jac.set(P33, S32, 0.0); - scratch = screened_rates(k_S33_to_P33_weaktab) + screened_rates(k_n_S33_to_p_P33_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S33_n_to_p_P33_reaclib)*Y(N)*state.rho + screened_rates(k_S33_to_P33_electron_capture_weaktab); jac.set(P33, S33, scratch); scratch = screened_rates(k_S34_to_p_P33_reaclib); @@ -26320,7 +24129,7 @@ void jac_nuc(const burn_t& state, jac.set(P33, S35, 0.0); - scratch = screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(H1)*state.rho; jac.set(P33, S36, scratch); jac.set(P33, Cl33, 0.0); @@ -26329,7 +24138,7 @@ void jac_nuc(const burn_t& state, jac.set(P33, Cl35, 0.0); - scratch = screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(N)*state.rho; jac.set(P33, Cl36, scratch); scratch = screened_rates(k_Cl37_to_He4_P33_reaclib); @@ -26533,17 +24342,17 @@ void jac_nuc(const burn_t& state, jac.set(P33, Ge64, 0.0); - scratch = -screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(S32)*state.rho - screened_rates(k_n_S32_to_S33_reaclib)*Y(S32)*state.rho - screened_rates(k_n_S32_to_p_P32_reaclib)*Y(S32)*state.rho; + scratch = -screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(S32)*state.rho - screened_rates(k_S32_n_to_S33_reaclib)*Y(S32)*state.rho - screened_rates(k_S32_n_to_p_P32_reaclib)*Y(S32)*state.rho; jac.set(S32, N, scratch); - scratch = screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_p_P31_to_S32_reaclib)*Y(P31)*state.rho + screened_rates(k_p_P32_to_n_S32_reaclib)*Y(P32)*state.rho - screened_rates(k_p_S32_to_Cl33_reaclib)*Y(S32)*state.rho - screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(S32)*state.rho; + scratch = screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_P31_p_to_S32_reaclib)*Y(P31)*state.rho + screened_rates(k_P32_p_to_n_S32_reaclib)*Y(P32)*state.rho - screened_rates(k_S32_p_to_Cl33_reaclib)*Y(S32)*state.rho - screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(S32)*state.rho; jac.set(S32, H1, scratch); jac.set(S32, H2, 0.0); jac.set(S32, He3, 0.0); - scratch = screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(P29)*state.rho - screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(S32)*state.rho - screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(S32)*state.rho + screened_rates(k_He4_Si28_to_S32_reaclib)*Y(Si28)*state.rho + screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(Si29)*state.rho; + scratch = screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(P29)*state.rho - screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(S32)*state.rho - screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(S32)*state.rho + screened_rates(k_Si28_He4_to_S32_reaclib)*Y(Si28)*state.rho + screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(Si29)*state.rho; jac.set(S32, He4, scratch); jac.set(S32, Li6, 0.0); @@ -26618,10 +24427,10 @@ void jac_nuc(const burn_t& state, jac.set(S32, Al27, 0.0); - scratch = screened_rates(k_He4_Si28_to_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si28_He4_to_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si28, scratch); - scratch = screened_rates(k_He4_Si29_to_n_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si29_He4_to_n_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, Si29, scratch); jac.set(S32, Si30, 0.0); @@ -26630,20 +24439,20 @@ void jac_nuc(const burn_t& state, jac.set(S32, Si32, 0.0); - scratch = screened_rates(k_He4_P29_to_p_S32_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P29_He4_to_p_S32_reaclib)*Y(He4)*state.rho; jac.set(S32, P29, scratch); jac.set(S32, P30, 0.0); - scratch = screened_rates(k_p_P31_to_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P31_p_to_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, P31, scratch); - scratch = screened_rates(k_P32_to_S32_weaktab) + screened_rates(k_p_P32_to_n_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P32_p_to_n_S32_reaclib)*Y(H1)*state.rho + screened_rates(k_P32_to_S32_beta_neg_weaktab); jac.set(S32, P32, scratch); jac.set(S32, P33, 0.0); - scratch = -screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_S32_to_He4_Si28_reaclib) - screened_rates(k_S32_to_P32_weaktab) - screened_rates(k_S32_to_p_P31_reaclib) - screened_rates(k_n_S32_to_He4_Si29_reaclib)*Y(N)*state.rho - screened_rates(k_n_S32_to_S33_reaclib)*Y(N)*state.rho - screened_rates(k_n_S32_to_p_P32_reaclib)*Y(N)*state.rho - screened_rates(k_p_S32_to_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S32_to_He4_P29_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(He4)*state.rho - screened_rates(k_S32_n_to_He4_Si29_reaclib)*Y(N)*state.rho - screened_rates(k_S32_n_to_S33_reaclib)*Y(N)*state.rho - screened_rates(k_S32_n_to_p_P32_reaclib)*Y(N)*state.rho - screened_rates(k_S32_p_to_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_S32_p_to_He4_P29_reaclib)*Y(H1)*state.rho - screened_rates(k_S32_to_He4_Si28_reaclib) - screened_rates(k_S32_to_P32_electron_capture_weaktab) - screened_rates(k_S32_to_p_P31_reaclib); jac.set(S32, S32, scratch); scratch = screened_rates(k_S33_to_n_S32_reaclib); @@ -26660,7 +24469,7 @@ void jac_nuc(const burn_t& state, jac.set(S32, Cl34, 0.0); - scratch = screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(H1)*state.rho; jac.set(S32, Cl35, scratch); jac.set(S32, Cl36, 0.0); @@ -26866,17 +24675,17 @@ void jac_nuc(const burn_t& state, jac.set(S32, Ge64, 0.0); - scratch = screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(Ar36)*state.rho + screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(Cl33)*state.rho + screened_rates(k_n_S32_to_S33_reaclib)*Y(S32)*state.rho - screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(S33)*state.rho - screened_rates(k_n_S33_to_S34_reaclib)*Y(S33)*state.rho - screened_rates(k_n_S33_to_p_P33_reaclib)*Y(S33)*state.rho; + scratch = screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(Cl33)*state.rho + screened_rates(k_S32_n_to_S33_reaclib)*Y(S32)*state.rho - screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_n_to_S34_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_n_to_p_P33_reaclib)*Y(S33)*state.rho; jac.set(S33, N, scratch); - scratch = screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(Cl36)*state.rho + screened_rates(k_p_P32_to_S33_reaclib)*Y(P32)*state.rho + screened_rates(k_p_P33_to_n_S33_reaclib)*Y(P33)*state.rho - screened_rates(k_p_S33_to_Cl34_reaclib)*Y(S33)*state.rho - screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(S33)*state.rho - screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(S33)*state.rho; + scratch = screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(Cl36)*state.rho + screened_rates(k_P32_p_to_S33_reaclib)*Y(P32)*state.rho + screened_rates(k_P33_p_to_n_S33_reaclib)*Y(P33)*state.rho - screened_rates(k_S33_p_to_Cl34_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(S33)*state.rho; jac.set(S33, H1, scratch); jac.set(S33, H2, 0.0); jac.set(S33, He3, 0.0); - scratch = screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(P30)*state.rho - screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(S33)*state.rho - screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(S33)*state.rho - screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(S33)*state.rho + screened_rates(k_He4_Si29_to_S33_reaclib)*Y(Si29)*state.rho + screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(Si30)*state.rho; + scratch = screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(P30)*state.rho - screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(S33)*state.rho - screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(S33)*state.rho + screened_rates(k_Si29_He4_to_S33_reaclib)*Y(Si29)*state.rho + screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(Si30)*state.rho; jac.set(S33, He4, scratch); jac.set(S33, Li6, 0.0); @@ -26953,10 +24762,10 @@ void jac_nuc(const burn_t& state, jac.set(S33, Si28, 0.0); - scratch = screened_rates(k_He4_Si29_to_S33_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si29_He4_to_S33_reaclib)*Y(He4)*state.rho; jac.set(S33, Si29, scratch); - scratch = screened_rates(k_He4_Si30_to_n_S33_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si30_He4_to_n_S33_reaclib)*Y(He4)*state.rho; jac.set(S33, Si30, scratch); jac.set(S33, Si31, 0.0); @@ -26965,21 +24774,21 @@ void jac_nuc(const burn_t& state, jac.set(S33, P29, 0.0); - scratch = screened_rates(k_He4_P30_to_p_S33_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P30_He4_to_p_S33_reaclib)*Y(He4)*state.rho; jac.set(S33, P30, scratch); jac.set(S33, P31, 0.0); - scratch = screened_rates(k_p_P32_to_S33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P32_p_to_S33_reaclib)*Y(H1)*state.rho; jac.set(S33, P32, scratch); - scratch = screened_rates(k_P33_to_S33_weaktab) + screened_rates(k_p_P33_to_n_S33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P33_p_to_n_S33_reaclib)*Y(H1)*state.rho + screened_rates(k_P33_to_S33_beta_neg_weaktab); jac.set(S33, P33, scratch); - scratch = screened_rates(k_n_S32_to_S33_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S32_n_to_S33_reaclib)*Y(N)*state.rho; jac.set(S33, S32, scratch); - scratch = -screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_S33_to_Cl33_weaktab) - screened_rates(k_S33_to_He4_Si29_reaclib) - screened_rates(k_S33_to_P33_weaktab) - screened_rates(k_S33_to_n_S32_reaclib) - screened_rates(k_S33_to_p_P32_reaclib) - screened_rates(k_n_S33_to_He4_Si30_reaclib)*Y(N)*state.rho - screened_rates(k_n_S33_to_S34_reaclib)*Y(N)*state.rho - screened_rates(k_n_S33_to_p_P33_reaclib)*Y(N)*state.rho - screened_rates(k_p_S33_to_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S33_to_He4_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(He4)*state.rho - screened_rates(k_S33_n_to_He4_Si30_reaclib)*Y(N)*state.rho - screened_rates(k_S33_n_to_S34_reaclib)*Y(N)*state.rho - screened_rates(k_S33_n_to_p_P33_reaclib)*Y(N)*state.rho - screened_rates(k_S33_p_to_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_S33_p_to_He4_P30_reaclib)*Y(H1)*state.rho - screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_S33_to_Cl33_beta_neg_weaktab) - screened_rates(k_S33_to_He4_Si29_reaclib) - screened_rates(k_S33_to_P33_electron_capture_weaktab) - screened_rates(k_S33_to_n_S32_reaclib) - screened_rates(k_S33_to_p_P32_reaclib); jac.set(S33, S33, scratch); scratch = screened_rates(k_S34_to_n_S33_reaclib); @@ -26989,7 +24798,7 @@ void jac_nuc(const burn_t& state, jac.set(S33, S36, 0.0); - scratch = screened_rates(k_Cl33_to_S33_weaktab) + screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(N)*state.rho + screened_rates(k_Cl33_to_S33_electron_capture_weaktab); jac.set(S33, Cl33, scratch); scratch = screened_rates(k_Cl34_to_p_S33_reaclib); @@ -26997,12 +24806,12 @@ void jac_nuc(const burn_t& state, jac.set(S33, Cl35, 0.0); - scratch = screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(H1)*state.rho; jac.set(S33, Cl36, scratch); jac.set(S33, Cl37, 0.0); - scratch = screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(N)*state.rho; jac.set(S33, Ar36, scratch); scratch = screened_rates(k_Ar37_to_He4_S33_reaclib); @@ -27202,17 +25011,17 @@ void jac_nuc(const burn_t& state, jac.set(S33, Ge64, 0.0); - scratch = screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(Ar37)*state.rho + screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(Cl34)*state.rho + screened_rates(k_n_S33_to_S34_reaclib)*Y(S33)*state.rho - screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(S34)*state.rho - screened_rates(k_n_S34_to_S35_reaclib)*Y(S34)*state.rho; + scratch = screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(Cl34)*state.rho + screened_rates(k_S33_n_to_S34_reaclib)*Y(S33)*state.rho - screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_n_to_S35_reaclib)*Y(S34)*state.rho; jac.set(S34, N, scratch); - scratch = screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(Cl37)*state.rho + screened_rates(k_p_P33_to_S34_reaclib)*Y(P33)*state.rho - screened_rates(k_p_S34_to_Cl35_reaclib)*Y(S34)*state.rho - screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(S34)*state.rho - screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(S34)*state.rho; + scratch = screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(Cl37)*state.rho + screened_rates(k_P33_p_to_S34_reaclib)*Y(P33)*state.rho - screened_rates(k_S34_p_to_Cl35_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(S34)*state.rho; jac.set(S34, H1, scratch); jac.set(S34, H2, 0.0); jac.set(S34, He3, 0.0); - scratch = screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(P31)*state.rho - screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(S34)*state.rho - screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(S34)*state.rho - screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(S34)*state.rho + screened_rates(k_He4_Si30_to_S34_reaclib)*Y(Si30)*state.rho + screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(Si31)*state.rho; + scratch = screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(P31)*state.rho - screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(S34)*state.rho - screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(S34)*state.rho + screened_rates(k_Si30_He4_to_S34_reaclib)*Y(Si30)*state.rho + screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(Si31)*state.rho; jac.set(S34, He4, scratch); jac.set(S34, Li6, 0.0); @@ -27291,10 +25100,10 @@ void jac_nuc(const burn_t& state, jac.set(S34, Si29, 0.0); - scratch = screened_rates(k_He4_Si30_to_S34_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si30_He4_to_S34_reaclib)*Y(He4)*state.rho; jac.set(S34, Si30, scratch); - scratch = screened_rates(k_He4_Si31_to_n_S34_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si31_He4_to_n_S34_reaclib)*Y(He4)*state.rho; jac.set(S34, Si31, scratch); jac.set(S34, Si32, 0.0); @@ -27303,20 +25112,20 @@ void jac_nuc(const burn_t& state, jac.set(S34, P30, 0.0); - scratch = screened_rates(k_He4_P31_to_p_S34_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P31_He4_to_p_S34_reaclib)*Y(He4)*state.rho; jac.set(S34, P31, scratch); jac.set(S34, P32, 0.0); - scratch = screened_rates(k_p_P33_to_S34_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_P33_p_to_S34_reaclib)*Y(H1)*state.rho; jac.set(S34, P33, scratch); jac.set(S34, S32, 0.0); - scratch = screened_rates(k_n_S33_to_S34_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S33_n_to_S34_reaclib)*Y(N)*state.rho; jac.set(S34, S33, scratch); - scratch = -screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(He4)*state.rho - screened_rates(k_S34_to_Cl34_weaktab) - screened_rates(k_S34_to_He4_Si30_reaclib) - screened_rates(k_S34_to_n_S33_reaclib) - screened_rates(k_S34_to_p_P33_reaclib) - screened_rates(k_n_S34_to_He4_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_n_S34_to_S35_reaclib)*Y(N)*state.rho - screened_rates(k_p_S34_to_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S34_to_He4_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(He4)*state.rho - screened_rates(k_S34_n_to_He4_Si31_reaclib)*Y(N)*state.rho - screened_rates(k_S34_n_to_S35_reaclib)*Y(N)*state.rho - screened_rates(k_S34_p_to_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_S34_p_to_He4_P31_reaclib)*Y(H1)*state.rho - screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_S34_to_Cl34_beta_neg_weaktab) - screened_rates(k_S34_to_He4_Si30_reaclib) - screened_rates(k_S34_to_n_S33_reaclib) - screened_rates(k_S34_to_p_P33_reaclib); jac.set(S34, S34, scratch); scratch = screened_rates(k_S35_to_n_S34_reaclib); @@ -27326,7 +25135,7 @@ void jac_nuc(const burn_t& state, jac.set(S34, Cl33, 0.0); - scratch = screened_rates(k_Cl34_to_S34_weaktab) + screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(N)*state.rho + screened_rates(k_Cl34_to_S34_electron_capture_weaktab); jac.set(S34, Cl34, scratch); scratch = screened_rates(k_Cl35_to_p_S34_reaclib); @@ -27334,12 +25143,12 @@ void jac_nuc(const burn_t& state, jac.set(S34, Cl36, 0.0); - scratch = screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(H1)*state.rho; jac.set(S34, Cl37, scratch); jac.set(S34, Ar36, 0.0); - scratch = screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(N)*state.rho; jac.set(S34, Ar37, scratch); scratch = screened_rates(k_Ar38_to_He4_S34_reaclib); @@ -27537,17 +25346,17 @@ void jac_nuc(const burn_t& state, jac.set(S34, Ge64, 0.0); - scratch = screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(Ar38)*state.rho + screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(Cl35)*state.rho + screened_rates(k_n_S34_to_S35_reaclib)*Y(S34)*state.rho - screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(S35)*state.rho - screened_rates(k_n_S35_to_S36_reaclib)*Y(S35)*state.rho; + scratch = screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(Cl35)*state.rho + screened_rates(k_S34_n_to_S35_reaclib)*Y(S34)*state.rho - screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(S35)*state.rho - screened_rates(k_S35_n_to_S36_reaclib)*Y(S35)*state.rho; jac.set(S35, N, scratch); - scratch = -screened_rates(k_p_S35_to_Cl36_reaclib)*Y(S35)*state.rho - screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(S35)*state.rho - screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(S35)*state.rho; + scratch = -screened_rates(k_S35_p_to_Cl36_reaclib)*Y(S35)*state.rho - screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(S35)*state.rho - screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(S35)*state.rho; jac.set(S35, H1, scratch); jac.set(S35, H2, 0.0); jac.set(S35, He3, 0.0); - scratch = screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(P32)*state.rho - screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(S35)*state.rho - screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(S35)*state.rho + screened_rates(k_He4_Si31_to_S35_reaclib)*Y(Si31)*state.rho + screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(Si32)*state.rho; + scratch = screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(P32)*state.rho - screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(S35)*state.rho - screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(S35)*state.rho + screened_rates(k_Si31_He4_to_S35_reaclib)*Y(Si31)*state.rho + screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(Si32)*state.rho; jac.set(S35, He4, scratch); jac.set(S35, Li6, 0.0); @@ -27628,10 +25437,10 @@ void jac_nuc(const burn_t& state, jac.set(S35, Si30, 0.0); - scratch = screened_rates(k_He4_Si31_to_S35_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si31_He4_to_S35_reaclib)*Y(He4)*state.rho; jac.set(S35, Si31, scratch); - scratch = screened_rates(k_He4_Si32_to_n_S35_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si32_He4_to_n_S35_reaclib)*Y(He4)*state.rho; jac.set(S35, Si32, scratch); jac.set(S35, P29, 0.0); @@ -27640,7 +25449,7 @@ void jac_nuc(const burn_t& state, jac.set(S35, P31, 0.0); - scratch = screened_rates(k_He4_P32_to_p_S35_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P32_He4_to_p_S35_reaclib)*Y(He4)*state.rho; jac.set(S35, P32, scratch); jac.set(S35, P33, 0.0); @@ -27649,10 +25458,10 @@ void jac_nuc(const burn_t& state, jac.set(S35, S33, 0.0); - scratch = screened_rates(k_n_S34_to_S35_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S34_n_to_S35_reaclib)*Y(N)*state.rho; jac.set(S35, S34, scratch); - scratch = -screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_S35_to_Cl35_weaktab) - screened_rates(k_S35_to_He4_Si31_reaclib) - screened_rates(k_S35_to_n_S34_reaclib) - screened_rates(k_n_S35_to_He4_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_n_S35_to_S36_reaclib)*Y(N)*state.rho - screened_rates(k_p_S35_to_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S35_to_He4_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(He4)*state.rho - screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_S35_n_to_He4_Si32_reaclib)*Y(N)*state.rho - screened_rates(k_S35_n_to_S36_reaclib)*Y(N)*state.rho - screened_rates(k_S35_p_to_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_S35_p_to_He4_P32_reaclib)*Y(H1)*state.rho - screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_S35_to_Cl35_beta_neg_weaktab) - screened_rates(k_S35_to_He4_Si31_reaclib) - screened_rates(k_S35_to_n_S34_reaclib); jac.set(S35, S35, scratch); scratch = screened_rates(k_S36_to_n_S35_reaclib); @@ -27662,7 +25471,7 @@ void jac_nuc(const burn_t& state, jac.set(S35, Cl34, 0.0); - scratch = screened_rates(k_Cl35_to_S35_weaktab) + screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(N)*state.rho + screened_rates(k_Cl35_to_S35_electron_capture_weaktab); jac.set(S35, Cl35, scratch); scratch = screened_rates(k_Cl36_to_p_S35_reaclib); @@ -27674,7 +25483,7 @@ void jac_nuc(const burn_t& state, jac.set(S35, Ar37, 0.0); - scratch = screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(N)*state.rho; jac.set(S35, Ar38, scratch); scratch = screened_rates(k_Ar39_to_He4_S35_reaclib); @@ -27870,17 +25679,17 @@ void jac_nuc(const burn_t& state, jac.set(S35, Ge64, 0.0); - scratch = screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(Ar39)*state.rho + screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_n_S35_to_S36_reaclib)*Y(S35)*state.rho; + scratch = screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_S35_n_to_S36_reaclib)*Y(S35)*state.rho; jac.set(S36, N, scratch); - scratch = -screened_rates(k_p_S36_to_Cl37_reaclib)*Y(S36)*state.rho - screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(S36)*state.rho - screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(S36)*state.rho; + scratch = -screened_rates(k_S36_p_to_Cl37_reaclib)*Y(S36)*state.rho - screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(S36)*state.rho - screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(S36)*state.rho; jac.set(S36, H1, scratch); jac.set(S36, H2, 0.0); jac.set(S36, He3, 0.0); - scratch = screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(P33)*state.rho - screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(S36)*state.rho - screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(S36)*state.rho + screened_rates(k_He4_Si32_to_S36_reaclib)*Y(Si32)*state.rho; + scratch = screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(P33)*state.rho - screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(S36)*state.rho - screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(S36)*state.rho + screened_rates(k_Si32_He4_to_S36_reaclib)*Y(Si32)*state.rho; jac.set(S36, He4, scratch); jac.set(S36, Li6, 0.0); @@ -27963,7 +25772,7 @@ void jac_nuc(const burn_t& state, jac.set(S36, Si31, 0.0); - scratch = screened_rates(k_He4_Si32_to_S36_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Si32_He4_to_S36_reaclib)*Y(He4)*state.rho; jac.set(S36, Si32, scratch); jac.set(S36, P29, 0.0); @@ -27974,7 +25783,7 @@ void jac_nuc(const burn_t& state, jac.set(S36, P32, 0.0); - scratch = screened_rates(k_He4_P33_to_p_S36_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P33_He4_to_p_S36_reaclib)*Y(He4)*state.rho; jac.set(S36, P33, scratch); jac.set(S36, S32, 0.0); @@ -27983,10 +25792,10 @@ void jac_nuc(const burn_t& state, jac.set(S36, S34, 0.0); - scratch = screened_rates(k_n_S35_to_S36_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_S35_n_to_S36_reaclib)*Y(N)*state.rho; jac.set(S36, S35, scratch); - scratch = -screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(He4)*state.rho - screened_rates(k_S36_to_Cl36_weaktab) - screened_rates(k_S36_to_He4_Si32_reaclib) - screened_rates(k_S36_to_n_S35_reaclib) - screened_rates(k_p_S36_to_Cl37_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S36_to_He4_P33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(He4)*state.rho - screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(He4)*state.rho - screened_rates(k_S36_p_to_Cl37_reaclib)*Y(H1)*state.rho - screened_rates(k_S36_p_to_He4_P33_reaclib)*Y(H1)*state.rho - screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_S36_to_Cl36_beta_neg_weaktab) - screened_rates(k_S36_to_He4_Si32_reaclib) - screened_rates(k_S36_to_n_S35_reaclib); jac.set(S36, S36, scratch); jac.set(S36, Cl33, 0.0); @@ -27995,7 +25804,7 @@ void jac_nuc(const burn_t& state, jac.set(S36, Cl35, 0.0); - scratch = screened_rates(k_Cl36_to_S36_weaktab) + screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(N)*state.rho + screened_rates(k_Cl36_to_S36_electron_capture_weaktab); jac.set(S36, Cl36, scratch); scratch = screened_rates(k_Cl37_to_p_S36_reaclib); @@ -28007,7 +25816,7 @@ void jac_nuc(const burn_t& state, jac.set(S36, Ar38, 0.0); - scratch = screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(N)*state.rho; jac.set(S36, Ar39, scratch); scratch = screened_rates(k_Ar40_to_He4_S36_reaclib); @@ -28201,17 +26010,17 @@ void jac_nuc(const burn_t& state, jac.set(S36, Ge64, 0.0); - scratch = -screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(Cl33)*state.rho - screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(Cl33)*state.rho - screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(Cl33)*state.rho; + scratch = -screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(Cl33)*state.rho; jac.set(Cl33, N, scratch); - scratch = screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(Ar36)*state.rho + screened_rates(k_p_S32_to_Cl33_reaclib)*Y(S32)*state.rho + screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(S33)*state.rho; + scratch = screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(Ar36)*state.rho + screened_rates(k_S32_p_to_Cl33_reaclib)*Y(S32)*state.rho + screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(S33)*state.rho; jac.set(Cl33, H1, scratch); jac.set(Cl33, H2, 0.0); jac.set(Cl33, He3, 0.0); - scratch = -screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(Cl33)*state.rho - screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(Cl33)*state.rho + screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(P29)*state.rho + screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(P30)*state.rho; + scratch = -screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(Cl33)*state.rho + screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(P29)*state.rho + screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(P30)*state.rho; jac.set(Cl33, He4, scratch); jac.set(Cl33, Li6, 0.0); @@ -28296,10 +26105,10 @@ void jac_nuc(const burn_t& state, jac.set(Cl33, Si32, 0.0); - scratch = screened_rates(k_He4_P29_to_Cl33_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P29_He4_to_Cl33_reaclib)*Y(He4)*state.rho; jac.set(Cl33, P29, scratch); - scratch = screened_rates(k_He4_P30_to_n_Cl33_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P30_He4_to_n_Cl33_reaclib)*Y(He4)*state.rho; jac.set(Cl33, P30, scratch); jac.set(Cl33, P31, 0.0); @@ -28308,10 +26117,10 @@ void jac_nuc(const burn_t& state, jac.set(Cl33, P33, 0.0); - scratch = screened_rates(k_p_S32_to_Cl33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S32_p_to_Cl33_reaclib)*Y(H1)*state.rho; jac.set(Cl33, S32, scratch); - scratch = screened_rates(k_S33_to_Cl33_weaktab) + screened_rates(k_p_S33_to_n_Cl33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S33_p_to_n_Cl33_reaclib)*Y(H1)*state.rho + screened_rates(k_S33_to_Cl33_beta_neg_weaktab); jac.set(Cl33, S33, scratch); jac.set(Cl33, S34, 0.0); @@ -28320,7 +26129,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl33, S36, 0.0); - scratch = -screened_rates(k_Cl33_to_He4_P29_reaclib) - screened_rates(k_Cl33_to_S33_weaktab) - screened_rates(k_Cl33_to_p_S32_reaclib) - screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl33_to_He4_P30_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl33_to_p_S33_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(N)*state.rho - screened_rates(k_Cl33_n_to_He4_P30_reaclib)*Y(N)*state.rho - screened_rates(k_Cl33_n_to_p_S33_reaclib)*Y(N)*state.rho - screened_rates(k_Cl33_to_He4_P29_reaclib) - screened_rates(k_Cl33_to_S33_electron_capture_weaktab) - screened_rates(k_Cl33_to_p_S32_reaclib); jac.set(Cl33, Cl33, scratch); scratch = screened_rates(k_Cl34_to_n_Cl33_reaclib); @@ -28332,7 +26141,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl33, Cl37, 0.0); - scratch = screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(H1)*state.rho; jac.set(Cl33, Ar36, scratch); jac.set(Cl33, Ar37, 0.0); @@ -28532,17 +26341,17 @@ void jac_nuc(const burn_t& state, jac.set(Cl33, Ge64, 0.0); - scratch = screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(Cl33)*state.rho - screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(Cl34)*state.rho - screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(Cl34)*state.rho - screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(Cl34)*state.rho + screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(K37)*state.rho; + scratch = screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(Cl33)*state.rho - screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(Cl34)*state.rho + screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(K37)*state.rho; jac.set(Cl34, N, scratch); - scratch = screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(Ar37)*state.rho + screened_rates(k_p_S33_to_Cl34_reaclib)*Y(S33)*state.rho + screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(S34)*state.rho; + scratch = screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(Ar37)*state.rho + screened_rates(k_S33_p_to_Cl34_reaclib)*Y(S33)*state.rho + screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(S34)*state.rho; jac.set(Cl34, H1, scratch); jac.set(Cl34, H2, 0.0); jac.set(Cl34, He3, 0.0); - scratch = -screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(Cl34)*state.rho - screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(Cl34)*state.rho - screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(Cl34)*state.rho + screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(P30)*state.rho + screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(P31)*state.rho; + scratch = -screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(Cl34)*state.rho + screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(P30)*state.rho + screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(P31)*state.rho; jac.set(Cl34, He4, scratch); jac.set(Cl34, Li6, 0.0); @@ -28629,10 +26438,10 @@ void jac_nuc(const burn_t& state, jac.set(Cl34, P29, 0.0); - scratch = screened_rates(k_He4_P30_to_Cl34_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P30_He4_to_Cl34_reaclib)*Y(He4)*state.rho; jac.set(Cl34, P30, scratch); - scratch = screened_rates(k_He4_P31_to_n_Cl34_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P31_He4_to_n_Cl34_reaclib)*Y(He4)*state.rho; jac.set(Cl34, P31, scratch); jac.set(Cl34, P32, 0.0); @@ -28641,20 +26450,20 @@ void jac_nuc(const burn_t& state, jac.set(Cl34, S32, 0.0); - scratch = screened_rates(k_p_S33_to_Cl34_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S33_p_to_Cl34_reaclib)*Y(H1)*state.rho; jac.set(Cl34, S33, scratch); - scratch = screened_rates(k_S34_to_Cl34_weaktab) + screened_rates(k_p_S34_to_n_Cl34_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S34_p_to_n_Cl34_reaclib)*Y(H1)*state.rho + screened_rates(k_S34_to_Cl34_beta_neg_weaktab); jac.set(Cl34, S34, scratch); jac.set(Cl34, S35, 0.0); jac.set(Cl34, S36, 0.0); - scratch = screened_rates(k_n_Cl33_to_Cl34_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl33_n_to_Cl34_reaclib)*Y(N)*state.rho; jac.set(Cl34, Cl33, scratch); - scratch = -screened_rates(k_Cl34_to_He4_P30_reaclib) - screened_rates(k_Cl34_to_S34_weaktab) - screened_rates(k_Cl34_to_n_Cl33_reaclib) - screened_rates(k_Cl34_to_p_S33_reaclib) - screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl34_to_He4_P31_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl34_to_p_S34_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(N)*state.rho - screened_rates(k_Cl34_n_to_He4_P31_reaclib)*Y(N)*state.rho - screened_rates(k_Cl34_n_to_p_S34_reaclib)*Y(N)*state.rho - screened_rates(k_Cl34_to_He4_P30_reaclib) - screened_rates(k_Cl34_to_S34_electron_capture_weaktab) - screened_rates(k_Cl34_to_n_Cl33_reaclib) - screened_rates(k_Cl34_to_p_S33_reaclib); jac.set(Cl34, Cl34, scratch); scratch = screened_rates(k_Cl35_to_n_Cl34_reaclib); @@ -28666,7 +26475,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl34, Ar36, 0.0); - scratch = screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(H1)*state.rho; jac.set(Cl34, Ar37, scratch); jac.set(Cl34, Ar38, 0.0); @@ -28675,7 +26484,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl34, Ar40, 0.0); - scratch = screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(N)*state.rho; jac.set(Cl34, K37, scratch); scratch = screened_rates(k_K38_to_He4_Cl34_reaclib); @@ -28865,17 +26674,17 @@ void jac_nuc(const burn_t& state, jac.set(Cl34, Ge64, 0.0); - scratch = screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(Cl34)*state.rho - screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(Cl35)*state.rho - screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(Cl35)*state.rho + screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(K38)*state.rho; + scratch = screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(Cl34)*state.rho - screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(Cl35)*state.rho + screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(K38)*state.rho; jac.set(Cl35, N, scratch); - scratch = screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(Ar38)*state.rho - screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_p_S34_to_Cl35_reaclib)*Y(S34)*state.rho + screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(S35)*state.rho; + scratch = screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(Cl35)*state.rho + screened_rates(k_S34_p_to_Cl35_reaclib)*Y(S34)*state.rho + screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(S35)*state.rho; jac.set(Cl35, H1, scratch); jac.set(Cl35, H2, 0.0); jac.set(Cl35, He3, 0.0); - scratch = -screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(Cl35)*state.rho - screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(Cl35)*state.rho - screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(Cl35)*state.rho + screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(P31)*state.rho + screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(P32)*state.rho + screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(S32)*state.rho; + scratch = -screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(Cl35)*state.rho + screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(P31)*state.rho + screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(P32)*state.rho + screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(S32)*state.rho; jac.set(Cl35, He4, scratch); jac.set(Cl35, Li6, 0.0); @@ -28964,33 +26773,33 @@ void jac_nuc(const burn_t& state, jac.set(Cl35, P30, 0.0); - scratch = screened_rates(k_He4_P31_to_Cl35_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P31_He4_to_Cl35_reaclib)*Y(He4)*state.rho; jac.set(Cl35, P31, scratch); - scratch = screened_rates(k_He4_P32_to_n_Cl35_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P32_He4_to_n_Cl35_reaclib)*Y(He4)*state.rho; jac.set(Cl35, P32, scratch); jac.set(Cl35, P33, 0.0); - scratch = screened_rates(k_He4_S32_to_p_Cl35_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S32_He4_to_p_Cl35_reaclib)*Y(He4)*state.rho; jac.set(Cl35, S32, scratch); jac.set(Cl35, S33, 0.0); - scratch = screened_rates(k_p_S34_to_Cl35_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S34_p_to_Cl35_reaclib)*Y(H1)*state.rho; jac.set(Cl35, S34, scratch); - scratch = screened_rates(k_S35_to_Cl35_weaktab) + screened_rates(k_p_S35_to_n_Cl35_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S35_p_to_n_Cl35_reaclib)*Y(H1)*state.rho + screened_rates(k_S35_to_Cl35_beta_neg_weaktab); jac.set(Cl35, S35, scratch); jac.set(Cl35, S36, 0.0); jac.set(Cl35, Cl33, 0.0); - scratch = screened_rates(k_n_Cl34_to_Cl35_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl34_n_to_Cl35_reaclib)*Y(N)*state.rho; jac.set(Cl35, Cl34, scratch); - scratch = -screened_rates(k_Cl35_to_He4_P31_reaclib) - screened_rates(k_Cl35_to_S35_weaktab) - screened_rates(k_Cl35_to_n_Cl34_reaclib) - screened_rates(k_Cl35_to_p_S34_reaclib) - screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl35_to_He4_P32_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl35_to_p_S35_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl35_to_He4_S32_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_Cl35_n_to_He4_P32_reaclib)*Y(N)*state.rho - screened_rates(k_Cl35_n_to_p_S35_reaclib)*Y(N)*state.rho - screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl35_p_to_He4_S32_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl35_to_He4_P31_reaclib) - screened_rates(k_Cl35_to_S35_electron_capture_weaktab) - screened_rates(k_Cl35_to_n_Cl34_reaclib) - screened_rates(k_Cl35_to_p_S34_reaclib); jac.set(Cl35, Cl35, scratch); scratch = screened_rates(k_Cl36_to_n_Cl35_reaclib); @@ -29003,7 +26812,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl35, Ar37, 0.0); - scratch = screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(H1)*state.rho; jac.set(Cl35, Ar38, scratch); jac.set(Cl35, Ar39, 0.0); @@ -29012,7 +26821,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl35, K37, 0.0); - scratch = screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(N)*state.rho; jac.set(Cl35, K38, scratch); scratch = screened_rates(k_K39_to_He4_Cl35_reaclib); @@ -29200,17 +27009,17 @@ void jac_nuc(const burn_t& state, jac.set(Cl35, Ge64, 0.0); - scratch = screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(Ar36)*state.rho + screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(Cl36)*state.rho - screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(Cl36)*state.rho - screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(K39)*state.rho; + scratch = screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(Cl35)*state.rho - screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(K39)*state.rho; jac.set(Cl36, N, scratch); - scratch = screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(Ar39)*state.rho - screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(Cl36)*state.rho - screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(Cl36)*state.rho - screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_p_S35_to_Cl36_reaclib)*Y(S35)*state.rho + screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(S36)*state.rho; + scratch = screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_S35_p_to_Cl36_reaclib)*Y(S35)*state.rho + screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(S36)*state.rho; jac.set(Cl36, H1, scratch); jac.set(Cl36, H2, 0.0); jac.set(Cl36, He3, 0.0); - scratch = -screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(Cl36)*state.rho - screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(Cl36)*state.rho - screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(Cl36)*state.rho + screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(P32)*state.rho + screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(P33)*state.rho + screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(S33)*state.rho; + scratch = -screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(Cl36)*state.rho - screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(Cl36)*state.rho + screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(P32)*state.rho + screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(P33)*state.rho + screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(S33)*state.rho; jac.set(Cl36, He4, scratch); jac.set(Cl36, Li6, 0.0); @@ -29301,39 +27110,39 @@ void jac_nuc(const burn_t& state, jac.set(Cl36, P31, 0.0); - scratch = screened_rates(k_He4_P32_to_Cl36_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P32_He4_to_Cl36_reaclib)*Y(He4)*state.rho; jac.set(Cl36, P32, scratch); - scratch = screened_rates(k_He4_P33_to_n_Cl36_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P33_He4_to_n_Cl36_reaclib)*Y(He4)*state.rho; jac.set(Cl36, P33, scratch); jac.set(Cl36, S32, 0.0); - scratch = screened_rates(k_He4_S33_to_p_Cl36_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S33_He4_to_p_Cl36_reaclib)*Y(He4)*state.rho; jac.set(Cl36, S33, scratch); jac.set(Cl36, S34, 0.0); - scratch = screened_rates(k_p_S35_to_Cl36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S35_p_to_Cl36_reaclib)*Y(H1)*state.rho; jac.set(Cl36, S35, scratch); - scratch = screened_rates(k_S36_to_Cl36_weaktab) + screened_rates(k_p_S36_to_n_Cl36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S36_p_to_n_Cl36_reaclib)*Y(H1)*state.rho + screened_rates(k_S36_to_Cl36_beta_neg_weaktab); jac.set(Cl36, S36, scratch); jac.set(Cl36, Cl33, 0.0); jac.set(Cl36, Cl34, 0.0); - scratch = screened_rates(k_n_Cl35_to_Cl36_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl35_n_to_Cl36_reaclib)*Y(N)*state.rho; jac.set(Cl36, Cl35, scratch); - scratch = -screened_rates(k_Cl36_to_Ar36_weaktab) - screened_rates(k_Cl36_to_He4_P32_reaclib) - screened_rates(k_Cl36_to_S36_weaktab) - screened_rates(k_Cl36_to_n_Cl35_reaclib) - screened_rates(k_Cl36_to_p_S35_reaclib) - screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl36_to_He4_P33_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cl36_to_p_S36_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl36_to_He4_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_Cl36_n_to_He4_P33_reaclib)*Y(N)*state.rho - screened_rates(k_Cl36_n_to_p_S36_reaclib)*Y(N)*state.rho - screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl36_p_to_He4_S33_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl36_to_Ar36_beta_neg_weaktab) - screened_rates(k_Cl36_to_He4_P32_reaclib) - screened_rates(k_Cl36_to_S36_electron_capture_weaktab) - screened_rates(k_Cl36_to_n_Cl35_reaclib) - screened_rates(k_Cl36_to_p_S35_reaclib); jac.set(Cl36, Cl36, scratch); scratch = screened_rates(k_Cl37_to_n_Cl36_reaclib); jac.set(Cl36, Cl37, scratch); - scratch = screened_rates(k_Ar36_to_Cl36_weaktab) + screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(N)*state.rho + screened_rates(k_Ar36_to_Cl36_electron_capture_weaktab); jac.set(Cl36, Ar36, scratch); scratch = screened_rates(k_Ar37_to_p_Cl36_reaclib); @@ -29341,7 +27150,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl36, Ar38, 0.0); - scratch = screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(H1)*state.rho; jac.set(Cl36, Ar39, scratch); jac.set(Cl36, Ar40, 0.0); @@ -29350,7 +27159,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl36, K38, 0.0); - scratch = screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(N)*state.rho; jac.set(Cl36, K39, scratch); scratch = screened_rates(k_K40_to_He4_Cl36_reaclib); @@ -29536,17 +27345,17 @@ void jac_nuc(const burn_t& state, jac.set(Cl36, Ge64, 0.0); - scratch = screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(Cl36)*state.rho + screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(K40)*state.rho; + scratch = screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(Cl36)*state.rho + screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(K40)*state.rho; jac.set(Cl37, N, scratch); - scratch = screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(Ar40)*state.rho - screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(Cl37)*state.rho - screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(Cl37)*state.rho - screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(Cl37)*state.rho + screened_rates(k_p_S36_to_Cl37_reaclib)*Y(S36)*state.rho; + scratch = screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(Cl37)*state.rho + screened_rates(k_S36_p_to_Cl37_reaclib)*Y(S36)*state.rho; jac.set(Cl37, H1, scratch); jac.set(Cl37, H2, 0.0); jac.set(Cl37, He3, 0.0); - scratch = -screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(Cl37)*state.rho - screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(Cl37)*state.rho - screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(Cl37)*state.rho + screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(P33)*state.rho + screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(S34)*state.rho; + scratch = -screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(Cl37)*state.rho - screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(Cl37)*state.rho + screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(P33)*state.rho + screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(S34)*state.rho; jac.set(Cl37, He4, scratch); jac.set(Cl37, Li6, 0.0); @@ -29639,19 +27448,19 @@ void jac_nuc(const burn_t& state, jac.set(Cl37, P32, 0.0); - scratch = screened_rates(k_He4_P33_to_Cl37_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_P33_He4_to_Cl37_reaclib)*Y(He4)*state.rho; jac.set(Cl37, P33, scratch); jac.set(Cl37, S32, 0.0); jac.set(Cl37, S33, 0.0); - scratch = screened_rates(k_He4_S34_to_p_Cl37_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S34_He4_to_p_Cl37_reaclib)*Y(He4)*state.rho; jac.set(Cl37, S34, scratch); jac.set(Cl37, S35, 0.0); - scratch = screened_rates(k_p_S36_to_Cl37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_S36_p_to_Cl37_reaclib)*Y(H1)*state.rho; jac.set(Cl37, S36, scratch); jac.set(Cl37, Cl33, 0.0); @@ -29660,15 +27469,15 @@ void jac_nuc(const burn_t& state, jac.set(Cl37, Cl35, 0.0); - scratch = screened_rates(k_n_Cl36_to_Cl37_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cl36_n_to_Cl37_reaclib)*Y(N)*state.rho; jac.set(Cl37, Cl36, scratch); - scratch = -screened_rates(k_Cl37_to_Ar37_weaktab) - screened_rates(k_Cl37_to_He4_P33_reaclib) - screened_rates(k_Cl37_to_n_Cl36_reaclib) - screened_rates(k_Cl37_to_p_S36_reaclib) - screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl37_to_He4_S34_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(He4)*state.rho - screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl37_p_to_He4_S34_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_Cl37_to_Ar37_beta_neg_weaktab) - screened_rates(k_Cl37_to_He4_P33_reaclib) - screened_rates(k_Cl37_to_n_Cl36_reaclib) - screened_rates(k_Cl37_to_p_S36_reaclib); jac.set(Cl37, Cl37, scratch); jac.set(Cl37, Ar36, 0.0); - scratch = screened_rates(k_Ar37_to_Cl37_weaktab) + screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(N)*state.rho + screened_rates(k_Ar37_to_Cl37_electron_capture_weaktab); jac.set(Cl37, Ar37, scratch); scratch = screened_rates(k_Ar38_to_p_Cl37_reaclib); @@ -29676,7 +27485,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl37, Ar39, 0.0); - scratch = screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(H1)*state.rho; jac.set(Cl37, Ar40, scratch); jac.set(Cl37, K37, 0.0); @@ -29685,7 +27494,7 @@ void jac_nuc(const burn_t& state, jac.set(Cl37, K39, 0.0); - scratch = screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(N)*state.rho; jac.set(Cl37, K40, scratch); scratch = screened_rates(k_K41_to_He4_Cl37_reaclib); @@ -29869,17 +27678,17 @@ void jac_nuc(const burn_t& state, jac.set(Cl37, Ge64, 0.0); - scratch = -screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(Ar36)*state.rho - screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(Ar36)*state.rho - screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(Ar36)*state.rho; + scratch = -screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(Ar36)*state.rho; jac.set(Ar36, N, scratch); - scratch = -screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(Ar36)*state.rho - screened_rates(k_p_Ar36_to_K37_reaclib)*Y(Ar36)*state.rho + screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(Cl35)*state.rho + screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(K39)*state.rho; + scratch = -screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar36_p_to_K37_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(Cl35)*state.rho + screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(Cl36)*state.rho + screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(K39)*state.rho; jac.set(Ar36, H1, scratch); jac.set(Ar36, H2, 0.0); jac.set(Ar36, He3, 0.0); - scratch = -screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(Ar36)*state.rho - screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(Ar36)*state.rho + screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(Cl33)*state.rho + screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(S32)*state.rho + screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(S33)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(Cl33)*state.rho + screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(S32)*state.rho + screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(S33)*state.rho; jac.set(Ar36, He4, scratch); jac.set(Ar36, Li6, 0.0); @@ -29974,10 +27783,10 @@ void jac_nuc(const burn_t& state, jac.set(Ar36, P33, 0.0); - scratch = screened_rates(k_He4_S32_to_Ar36_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S32_He4_to_Ar36_reaclib)*Y(He4)*state.rho; jac.set(Ar36, S32, scratch); - scratch = screened_rates(k_He4_S33_to_n_Ar36_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S33_He4_to_n_Ar36_reaclib)*Y(He4)*state.rho; jac.set(Ar36, S33, scratch); jac.set(Ar36, S34, 0.0); @@ -29986,20 +27795,20 @@ void jac_nuc(const burn_t& state, jac.set(Ar36, S36, 0.0); - scratch = screened_rates(k_He4_Cl33_to_p_Ar36_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl33_He4_to_p_Ar36_reaclib)*Y(He4)*state.rho; jac.set(Ar36, Cl33, scratch); jac.set(Ar36, Cl34, 0.0); - scratch = screened_rates(k_p_Cl35_to_Ar36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl35_p_to_Ar36_reaclib)*Y(H1)*state.rho; jac.set(Ar36, Cl35, scratch); - scratch = screened_rates(k_Cl36_to_Ar36_weaktab) + screened_rates(k_p_Cl36_to_n_Ar36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl36_p_to_n_Ar36_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl36_to_Ar36_beta_neg_weaktab); jac.set(Ar36, Cl36, scratch); jac.set(Ar36, Cl37, 0.0); - scratch = -screened_rates(k_Ar36_to_Cl36_weaktab) - screened_rates(k_Ar36_to_He4_S32_reaclib) - screened_rates(k_Ar36_to_p_Cl35_reaclib) - screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar36_to_He4_S33_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar36_to_p_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ar36_to_He4_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar36_to_K37_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_Ar36_n_to_He4_S33_reaclib)*Y(N)*state.rho - screened_rates(k_Ar36_n_to_p_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_Ar36_p_to_He4_Cl33_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar36_p_to_K37_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar36_to_Cl36_electron_capture_weaktab) - screened_rates(k_Ar36_to_He4_S32_reaclib) - screened_rates(k_Ar36_to_p_Cl35_reaclib); jac.set(Ar36, Ar36, scratch); scratch = screened_rates(k_Ar37_to_n_Ar36_reaclib); @@ -30016,7 +27825,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar36, K38, 0.0); - scratch = screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(H1)*state.rho; jac.set(Ar36, K39, scratch); jac.set(Ar36, K40, 0.0); @@ -30202,17 +28011,17 @@ void jac_nuc(const burn_t& state, jac.set(Ar36, Ge64, 0.0); - scratch = screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(Ar36)*state.rho - screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(Ar37)*state.rho - screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(Ca40)*state.rho + screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(K37)*state.rho; + scratch = screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(Ar36)*state.rho - screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(Ca40)*state.rho + screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(K37)*state.rho; jac.set(Ar37, N, scratch); - scratch = -screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(Ar37)*state.rho - screened_rates(k_p_Ar37_to_K38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(Cl36)*state.rho + screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(Cl37)*state.rho + screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(K40)*state.rho; + scratch = -screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_p_to_K38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(Cl36)*state.rho + screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(Cl37)*state.rho + screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(K40)*state.rho; jac.set(Ar37, H1, scratch); jac.set(Ar37, H2, 0.0); jac.set(Ar37, He3, 0.0); - scratch = -screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(Ar37)*state.rho - screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(Ar37)*state.rho - screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(Ar37)*state.rho + screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(Cl34)*state.rho + screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(S33)*state.rho + screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(S34)*state.rho; + scratch = -screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(Cl34)*state.rho + screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(S33)*state.rho + screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(S34)*state.rho; jac.set(Ar37, He4, scratch); jac.set(Ar37, Li6, 0.0); @@ -30309,10 +28118,10 @@ void jac_nuc(const burn_t& state, jac.set(Ar37, S32, 0.0); - scratch = screened_rates(k_He4_S33_to_Ar37_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S33_He4_to_Ar37_reaclib)*Y(He4)*state.rho; jac.set(Ar37, S33, scratch); - scratch = screened_rates(k_He4_S34_to_n_Ar37_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S34_He4_to_n_Ar37_reaclib)*Y(He4)*state.rho; jac.set(Ar37, S34, scratch); jac.set(Ar37, S35, 0.0); @@ -30321,21 +28130,21 @@ void jac_nuc(const burn_t& state, jac.set(Ar37, Cl33, 0.0); - scratch = screened_rates(k_He4_Cl34_to_p_Ar37_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl34_He4_to_p_Ar37_reaclib)*Y(He4)*state.rho; jac.set(Ar37, Cl34, scratch); jac.set(Ar37, Cl35, 0.0); - scratch = screened_rates(k_p_Cl36_to_Ar37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl36_p_to_Ar37_reaclib)*Y(H1)*state.rho; jac.set(Ar37, Cl36, scratch); - scratch = screened_rates(k_Cl37_to_Ar37_weaktab) + screened_rates(k_p_Cl37_to_n_Ar37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl37_p_to_n_Ar37_reaclib)*Y(H1)*state.rho + screened_rates(k_Cl37_to_Ar37_beta_neg_weaktab); jac.set(Ar37, Cl37, scratch); - scratch = screened_rates(k_n_Ar36_to_Ar37_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar36_n_to_Ar37_reaclib)*Y(N)*state.rho; jac.set(Ar37, Ar36, scratch); - scratch = -screened_rates(k_Ar37_to_Cl37_weaktab) - screened_rates(k_Ar37_to_He4_S33_reaclib) - screened_rates(k_Ar37_to_K37_weaktab) - screened_rates(k_Ar37_to_n_Ar36_reaclib) - screened_rates(k_Ar37_to_p_Cl36_reaclib) - screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar37_to_He4_S34_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar37_to_p_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ar37_to_He4_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar37_to_K38_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_Ar37_n_to_He4_S34_reaclib)*Y(N)*state.rho - screened_rates(k_Ar37_n_to_p_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_Ar37_p_to_He4_Cl34_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar37_p_to_K38_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar37_to_Cl37_electron_capture_weaktab) - screened_rates(k_Ar37_to_He4_S33_reaclib) - screened_rates(k_Ar37_to_K37_beta_neg_weaktab) - screened_rates(k_Ar37_to_n_Ar36_reaclib) - screened_rates(k_Ar37_to_p_Cl36_reaclib); jac.set(Ar37, Ar37, scratch); scratch = screened_rates(k_Ar38_to_n_Ar37_reaclib); @@ -30345,7 +28154,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar37, Ar40, 0.0); - scratch = screened_rates(k_K37_to_Ar37_weaktab) + screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(N)*state.rho + screened_rates(k_K37_to_Ar37_electron_capture_weaktab); jac.set(Ar37, K37, scratch); scratch = screened_rates(k_K38_to_p_Ar37_reaclib); @@ -30353,12 +28162,12 @@ void jac_nuc(const burn_t& state, jac.set(Ar37, K39, 0.0); - scratch = screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(H1)*state.rho; jac.set(Ar37, K40, scratch); jac.set(Ar37, K41, 0.0); - scratch = screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(N)*state.rho; jac.set(Ar37, Ca40, scratch); scratch = screened_rates(k_Ca41_to_He4_Ar37_reaclib); @@ -30538,17 +28347,17 @@ void jac_nuc(const burn_t& state, jac.set(Ar37, Ge64, 0.0); - scratch = screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(Ar38)*state.rho + screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(Ca41)*state.rho + screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(K38)*state.rho; + scratch = screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(Ca41)*state.rho + screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(K38)*state.rho; jac.set(Ar38, N, scratch); - scratch = -screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(Ar38)*state.rho - screened_rates(k_p_Ar38_to_K39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(Ar38)*state.rho + screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(Cl37)*state.rho + screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(K41)*state.rho; + scratch = -screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_p_to_K39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(Cl37)*state.rho + screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(K41)*state.rho; jac.set(Ar38, H1, scratch); jac.set(Ar38, H2, 0.0); jac.set(Ar38, He3, 0.0); - scratch = -screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(Ar38)*state.rho - screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(Ar38)*state.rho - screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(Ar38)*state.rho + screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(Cl35)*state.rho + screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(S34)*state.rho + screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(S35)*state.rho; + scratch = -screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(Cl35)*state.rho + screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(S34)*state.rho + screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(S35)*state.rho; jac.set(Ar38, He4, scratch); jac.set(Ar38, Li6, 0.0); @@ -30647,10 +28456,10 @@ void jac_nuc(const burn_t& state, jac.set(Ar38, S33, 0.0); - scratch = screened_rates(k_He4_S34_to_Ar38_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S34_He4_to_Ar38_reaclib)*Y(He4)*state.rho; jac.set(Ar38, S34, scratch); - scratch = screened_rates(k_He4_S35_to_n_Ar38_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S35_He4_to_n_Ar38_reaclib)*Y(He4)*state.rho; jac.set(Ar38, S35, scratch); jac.set(Ar38, S36, 0.0); @@ -30659,20 +28468,20 @@ void jac_nuc(const burn_t& state, jac.set(Ar38, Cl34, 0.0); - scratch = screened_rates(k_He4_Cl35_to_p_Ar38_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl35_He4_to_p_Ar38_reaclib)*Y(He4)*state.rho; jac.set(Ar38, Cl35, scratch); jac.set(Ar38, Cl36, 0.0); - scratch = screened_rates(k_p_Cl37_to_Ar38_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cl37_p_to_Ar38_reaclib)*Y(H1)*state.rho; jac.set(Ar38, Cl37, scratch); jac.set(Ar38, Ar36, 0.0); - scratch = screened_rates(k_n_Ar37_to_Ar38_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar37_n_to_Ar38_reaclib)*Y(N)*state.rho; jac.set(Ar38, Ar37, scratch); - scratch = -screened_rates(k_Ar38_to_He4_S34_reaclib) - screened_rates(k_Ar38_to_K38_weaktab) - screened_rates(k_Ar38_to_n_Ar37_reaclib) - screened_rates(k_Ar38_to_p_Cl37_reaclib) - screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar38_to_He4_S35_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ar38_to_He4_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar38_to_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_Ar38_n_to_He4_S35_reaclib)*Y(N)*state.rho - screened_rates(k_Ar38_p_to_He4_Cl35_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar38_p_to_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar38_to_He4_S34_reaclib) - screened_rates(k_Ar38_to_K38_beta_neg_weaktab) - screened_rates(k_Ar38_to_n_Ar37_reaclib) - screened_rates(k_Ar38_to_p_Cl37_reaclib); jac.set(Ar38, Ar38, scratch); scratch = screened_rates(k_Ar39_to_n_Ar38_reaclib); @@ -30682,7 +28491,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar38, K37, 0.0); - scratch = screened_rates(k_K38_to_Ar38_weaktab) + screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(N)*state.rho + screened_rates(k_K38_to_Ar38_electron_capture_weaktab); jac.set(Ar38, K38, scratch); scratch = screened_rates(k_K39_to_p_Ar38_reaclib); @@ -30690,12 +28499,12 @@ void jac_nuc(const burn_t& state, jac.set(Ar38, K40, 0.0); - scratch = screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(H1)*state.rho; jac.set(Ar38, K41, scratch); jac.set(Ar38, Ca40, 0.0); - scratch = screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(N)*state.rho; jac.set(Ar38, Ca41, scratch); scratch = screened_rates(k_Ca42_to_He4_Ar38_reaclib); @@ -30873,17 +28682,17 @@ void jac_nuc(const burn_t& state, jac.set(Ar38, Ge64, 0.0); - scratch = screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(Ar39)*state.rho - screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(Ar39)*state.rho + screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(Ca42)*state.rho + screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(K39)*state.rho; + scratch = screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(Ca42)*state.rho + screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(K39)*state.rho; jac.set(Ar39, N, scratch); - scratch = -screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(Ar39)*state.rho - screened_rates(k_p_Ar39_to_K40_reaclib)*Y(Ar39)*state.rho - screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(Ar39)*state.rho; + scratch = -screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar39_p_to_K40_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(Ar39)*state.rho; jac.set(Ar39, H1, scratch); jac.set(Ar39, H2, 0.0); jac.set(Ar39, He3, 0.0); - scratch = -screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(Ar39)*state.rho - screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(Ar39)*state.rho + screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(Cl36)*state.rho + screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(S35)*state.rho + screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(S36)*state.rho; + scratch = -screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(Cl36)*state.rho + screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(S35)*state.rho + screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(S36)*state.rho; jac.set(Ar39, He4, scratch); jac.set(Ar39, Li6, 0.0); @@ -30984,10 +28793,10 @@ void jac_nuc(const burn_t& state, jac.set(Ar39, S34, 0.0); - scratch = screened_rates(k_He4_S35_to_Ar39_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S35_He4_to_Ar39_reaclib)*Y(He4)*state.rho; jac.set(Ar39, S35, scratch); - scratch = screened_rates(k_He4_S36_to_n_Ar39_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S36_He4_to_n_Ar39_reaclib)*Y(He4)*state.rho; jac.set(Ar39, S36, scratch); jac.set(Ar39, Cl33, 0.0); @@ -30996,7 +28805,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar39, Cl35, 0.0); - scratch = screened_rates(k_He4_Cl36_to_p_Ar39_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl36_He4_to_p_Ar39_reaclib)*Y(He4)*state.rho; jac.set(Ar39, Cl36, scratch); jac.set(Ar39, Cl37, 0.0); @@ -31005,10 +28814,10 @@ void jac_nuc(const burn_t& state, jac.set(Ar39, Ar37, 0.0); - scratch = screened_rates(k_n_Ar38_to_Ar39_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar38_n_to_Ar39_reaclib)*Y(N)*state.rho; jac.set(Ar39, Ar38, scratch); - scratch = -screened_rates(k_Ar39_to_He4_S35_reaclib) - screened_rates(k_Ar39_to_K39_weaktab) - screened_rates(k_Ar39_to_n_Ar38_reaclib) - screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ar39_to_He4_S36_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ar39_to_He4_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar39_to_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_Ar39_n_to_He4_S36_reaclib)*Y(N)*state.rho - screened_rates(k_Ar39_p_to_He4_Cl36_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar39_p_to_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar39_to_He4_S35_reaclib) - screened_rates(k_Ar39_to_K39_beta_neg_weaktab) - screened_rates(k_Ar39_to_n_Ar38_reaclib); jac.set(Ar39, Ar39, scratch); scratch = screened_rates(k_Ar40_to_n_Ar39_reaclib); @@ -31018,7 +28827,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar39, K38, 0.0); - scratch = screened_rates(k_K39_to_Ar39_weaktab) + screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(N)*state.rho + screened_rates(k_K39_to_Ar39_electron_capture_weaktab); jac.set(Ar39, K39, scratch); scratch = screened_rates(k_K40_to_p_Ar39_reaclib); @@ -31030,7 +28839,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar39, Ca41, 0.0); - scratch = screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(N)*state.rho; jac.set(Ar39, Ca42, scratch); scratch = screened_rates(k_Ca43_to_He4_Ar39_reaclib); @@ -31206,17 +29015,17 @@ void jac_nuc(const burn_t& state, jac.set(Ar39, Ge64, 0.0); - scratch = screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(Ar39)*state.rho + screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(Ca43)*state.rho + screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(K40)*state.rho; + scratch = screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(Ca43)*state.rho + screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(K40)*state.rho; jac.set(Ar40, N, scratch); - scratch = -screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(Ar40)*state.rho - screened_rates(k_p_Ar40_to_K41_reaclib)*Y(Ar40)*state.rho - screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(Ar40)*state.rho; + scratch = -screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Ar40_p_to_K41_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(Ar40)*state.rho; jac.set(Ar40, H1, scratch); jac.set(Ar40, H2, 0.0); jac.set(Ar40, He3, 0.0); - scratch = -screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(Ar40)*state.rho - screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(Ar40)*state.rho + screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(Cl37)*state.rho + screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(S36)*state.rho; + scratch = -screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(Ar40)*state.rho + screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(Cl37)*state.rho + screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(S36)*state.rho; jac.set(Ar40, He4, scratch); jac.set(Ar40, Li6, 0.0); @@ -31319,7 +29128,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar40, S35, 0.0); - scratch = screened_rates(k_He4_S36_to_Ar40_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_S36_He4_to_Ar40_reaclib)*Y(He4)*state.rho; jac.set(Ar40, S36, scratch); jac.set(Ar40, Cl33, 0.0); @@ -31330,7 +29139,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar40, Cl36, 0.0); - scratch = screened_rates(k_He4_Cl37_to_p_Ar40_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl37_He4_to_p_Ar40_reaclib)*Y(He4)*state.rho; jac.set(Ar40, Cl37, scratch); jac.set(Ar40, Ar36, 0.0); @@ -31339,10 +29148,10 @@ void jac_nuc(const burn_t& state, jac.set(Ar40, Ar38, 0.0); - scratch = screened_rates(k_n_Ar39_to_Ar40_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ar39_n_to_Ar40_reaclib)*Y(N)*state.rho; jac.set(Ar40, Ar39, scratch); - scratch = -screened_rates(k_Ar40_to_He4_S36_reaclib) - screened_rates(k_Ar40_to_K40_weaktab) - screened_rates(k_Ar40_to_n_Ar39_reaclib) - screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ar40_to_He4_Cl37_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar40_to_K41_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(He4)*state.rho - screened_rates(k_Ar40_p_to_He4_Cl37_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar40_p_to_K41_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_Ar40_to_He4_S36_reaclib) - screened_rates(k_Ar40_to_K40_beta_neg_weaktab) - screened_rates(k_Ar40_to_n_Ar39_reaclib); jac.set(Ar40, Ar40, scratch); jac.set(Ar40, K37, 0.0); @@ -31351,7 +29160,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar40, K39, 0.0); - scratch = screened_rates(k_K40_to_Ar40_weaktab) + screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(N)*state.rho + screened_rates(k_K40_to_Ar40_electron_capture_weaktab); jac.set(Ar40, K40, scratch); scratch = screened_rates(k_K41_to_p_Ar40_reaclib); @@ -31363,7 +29172,7 @@ void jac_nuc(const burn_t& state, jac.set(Ar40, Ca42, 0.0); - scratch = screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(N)*state.rho; jac.set(Ar40, Ca43, scratch); scratch = screened_rates(k_Ca44_to_He4_Ar40_reaclib); @@ -31537,17 +29346,17 @@ void jac_nuc(const burn_t& state, jac.set(Ar40, Ge64, 0.0); - scratch = -screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(K37)*state.rho - screened_rates(k_n_K37_to_K38_reaclib)*Y(K37)*state.rho - screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(K37)*state.rho; + scratch = -screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(K37)*state.rho - screened_rates(k_K37_n_to_K38_reaclib)*Y(K37)*state.rho - screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(K37)*state.rho; jac.set(K37, N, scratch); - scratch = screened_rates(k_p_Ar36_to_K37_reaclib)*Y(Ar36)*state.rho + screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(Ca40)*state.rho; + scratch = screened_rates(k_Ar36_p_to_K37_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(Ca40)*state.rho; jac.set(K37, H1, scratch); jac.set(K37, H2, 0.0); jac.set(K37, He3, 0.0); - scratch = screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(Cl33)*state.rho + screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(Cl34)*state.rho - screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(K37)*state.rho; + scratch = screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(Cl33)*state.rho + screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(Cl34)*state.rho - screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(K37)*state.rho; jac.set(K37, He4, scratch); jac.set(K37, Li6, 0.0); @@ -31652,10 +29461,10 @@ void jac_nuc(const burn_t& state, jac.set(K37, S36, 0.0); - scratch = screened_rates(k_He4_Cl33_to_K37_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl33_He4_to_K37_reaclib)*Y(He4)*state.rho; jac.set(K37, Cl33, scratch); - scratch = screened_rates(k_He4_Cl34_to_n_K37_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl34_He4_to_n_K37_reaclib)*Y(He4)*state.rho; jac.set(K37, Cl34, scratch); jac.set(K37, Cl35, 0.0); @@ -31664,10 +29473,10 @@ void jac_nuc(const burn_t& state, jac.set(K37, Cl37, 0.0); - scratch = screened_rates(k_p_Ar36_to_K37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar36_p_to_K37_reaclib)*Y(H1)*state.rho; jac.set(K37, Ar36, scratch); - scratch = screened_rates(k_Ar37_to_K37_weaktab) + screened_rates(k_p_Ar37_to_n_K37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar37_p_to_n_K37_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar37_to_K37_beta_neg_weaktab); jac.set(K37, Ar37, scratch); jac.set(K37, Ar38, 0.0); @@ -31676,7 +29485,7 @@ void jac_nuc(const burn_t& state, jac.set(K37, Ar40, 0.0); - scratch = -screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_K37_to_Ar37_weaktab) - screened_rates(k_K37_to_He4_Cl33_reaclib) - screened_rates(k_K37_to_p_Ar36_reaclib) - screened_rates(k_n_K37_to_He4_Cl34_reaclib)*Y(N)*state.rho - screened_rates(k_n_K37_to_K38_reaclib)*Y(N)*state.rho - screened_rates(k_n_K37_to_p_Ar37_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(He4)*state.rho - screened_rates(k_K37_n_to_He4_Cl34_reaclib)*Y(N)*state.rho - screened_rates(k_K37_n_to_K38_reaclib)*Y(N)*state.rho - screened_rates(k_K37_n_to_p_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_K37_to_Ar37_electron_capture_weaktab) - screened_rates(k_K37_to_He4_Cl33_reaclib) - screened_rates(k_K37_to_p_Ar36_reaclib); jac.set(K37, K37, scratch); scratch = screened_rates(k_K38_to_n_K37_reaclib); @@ -31688,7 +29497,7 @@ void jac_nuc(const burn_t& state, jac.set(K37, K41, 0.0); - scratch = screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(H1)*state.rho; jac.set(K37, Ca40, scratch); jac.set(K37, Ca41, 0.0); @@ -31867,17 +29676,17 @@ void jac_nuc(const burn_t& state, jac.set(K37, Ge64, 0.0); - scratch = screened_rates(k_n_K37_to_K38_reaclib)*Y(K37)*state.rho - screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(K38)*state.rho - screened_rates(k_n_K38_to_K39_reaclib)*Y(K38)*state.rho - screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(K38)*state.rho; + scratch = screened_rates(k_K37_n_to_K38_reaclib)*Y(K37)*state.rho - screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(K38)*state.rho - screened_rates(k_K38_n_to_K39_reaclib)*Y(K38)*state.rho - screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(K38)*state.rho; jac.set(K38, N, scratch); - scratch = screened_rates(k_p_Ar37_to_K38_reaclib)*Y(Ar37)*state.rho + screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(Ar38)*state.rho + screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(Ca41)*state.rho; + scratch = screened_rates(k_Ar37_p_to_K38_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(Ca41)*state.rho; jac.set(K38, H1, scratch); jac.set(K38, H2, 0.0); jac.set(K38, He3, 0.0); - scratch = screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(Cl34)*state.rho + screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(Cl35)*state.rho - screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(K38)*state.rho; + scratch = screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(Cl34)*state.rho + screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(Cl35)*state.rho - screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(K38)*state.rho; jac.set(K38, He4, scratch); jac.set(K38, Li6, 0.0); @@ -31984,10 +29793,10 @@ void jac_nuc(const burn_t& state, jac.set(K38, Cl33, 0.0); - scratch = screened_rates(k_He4_Cl34_to_K38_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl34_He4_to_K38_reaclib)*Y(He4)*state.rho; jac.set(K38, Cl34, scratch); - scratch = screened_rates(k_He4_Cl35_to_n_K38_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl35_He4_to_n_K38_reaclib)*Y(He4)*state.rho; jac.set(K38, Cl35, scratch); jac.set(K38, Cl36, 0.0); @@ -31996,20 +29805,20 @@ void jac_nuc(const burn_t& state, jac.set(K38, Ar36, 0.0); - scratch = screened_rates(k_p_Ar37_to_K38_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar37_p_to_K38_reaclib)*Y(H1)*state.rho; jac.set(K38, Ar37, scratch); - scratch = screened_rates(k_Ar38_to_K38_weaktab) + screened_rates(k_p_Ar38_to_n_K38_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar38_p_to_n_K38_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar38_to_K38_beta_neg_weaktab); jac.set(K38, Ar38, scratch); jac.set(K38, Ar39, 0.0); jac.set(K38, Ar40, 0.0); - scratch = screened_rates(k_n_K37_to_K38_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K37_n_to_K38_reaclib)*Y(N)*state.rho; jac.set(K38, K37, scratch); - scratch = -screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_K38_to_Ar38_weaktab) - screened_rates(k_K38_to_He4_Cl34_reaclib) - screened_rates(k_K38_to_n_K37_reaclib) - screened_rates(k_K38_to_p_Ar37_reaclib) - screened_rates(k_n_K38_to_He4_Cl35_reaclib)*Y(N)*state.rho - screened_rates(k_n_K38_to_K39_reaclib)*Y(N)*state.rho - screened_rates(k_n_K38_to_p_Ar38_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(He4)*state.rho - screened_rates(k_K38_n_to_He4_Cl35_reaclib)*Y(N)*state.rho - screened_rates(k_K38_n_to_K39_reaclib)*Y(N)*state.rho - screened_rates(k_K38_n_to_p_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_K38_to_Ar38_electron_capture_weaktab) - screened_rates(k_K38_to_He4_Cl34_reaclib) - screened_rates(k_K38_to_n_K37_reaclib) - screened_rates(k_K38_to_p_Ar37_reaclib); jac.set(K38, K38, scratch); scratch = screened_rates(k_K39_to_n_K38_reaclib); @@ -32021,7 +29830,7 @@ void jac_nuc(const burn_t& state, jac.set(K38, Ca40, 0.0); - scratch = screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(H1)*state.rho; jac.set(K38, Ca41, scratch); jac.set(K38, Ca42, 0.0); @@ -32198,17 +30007,17 @@ void jac_nuc(const burn_t& state, jac.set(K38, Ge64, 0.0); - scratch = screened_rates(k_n_K38_to_K39_reaclib)*Y(K38)*state.rho - screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(K39)*state.rho - screened_rates(k_n_K39_to_K40_reaclib)*Y(K39)*state.rho - screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(K39)*state.rho; + scratch = screened_rates(k_K38_n_to_K39_reaclib)*Y(K38)*state.rho - screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(K39)*state.rho - screened_rates(k_K39_n_to_K40_reaclib)*Y(K39)*state.rho - screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(K39)*state.rho; jac.set(K39, N, scratch); - scratch = screened_rates(k_p_Ar38_to_K39_reaclib)*Y(Ar38)*state.rho + screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(Ar39)*state.rho + screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(Ca42)*state.rho - screened_rates(k_p_K39_to_Ca40_reaclib)*Y(K39)*state.rho - screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(K39)*state.rho; + scratch = screened_rates(k_Ar38_p_to_K39_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(Ca42)*state.rho - screened_rates(k_K39_p_to_Ca40_reaclib)*Y(K39)*state.rho - screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(K39)*state.rho; jac.set(K39, H1, scratch); jac.set(K39, H2, 0.0); jac.set(K39, He3, 0.0); - scratch = screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(Ar36)*state.rho + screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(Cl35)*state.rho + screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(Cl36)*state.rho - screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(K39)*state.rho - screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(K39)*state.rho; + scratch = screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(Cl35)*state.rho + screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(Cl36)*state.rho - screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(K39)*state.rho - screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(K39)*state.rho; jac.set(K39, He4, scratch); jac.set(K39, Li6, 0.0); @@ -32317,33 +30126,33 @@ void jac_nuc(const burn_t& state, jac.set(K39, Cl34, 0.0); - scratch = screened_rates(k_He4_Cl35_to_K39_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl35_He4_to_K39_reaclib)*Y(He4)*state.rho; jac.set(K39, Cl35, scratch); - scratch = screened_rates(k_He4_Cl36_to_n_K39_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl36_He4_to_n_K39_reaclib)*Y(He4)*state.rho; jac.set(K39, Cl36, scratch); jac.set(K39, Cl37, 0.0); - scratch = screened_rates(k_He4_Ar36_to_p_K39_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar36_He4_to_p_K39_reaclib)*Y(He4)*state.rho; jac.set(K39, Ar36, scratch); jac.set(K39, Ar37, 0.0); - scratch = screened_rates(k_p_Ar38_to_K39_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar38_p_to_K39_reaclib)*Y(H1)*state.rho; jac.set(K39, Ar38, scratch); - scratch = screened_rates(k_Ar39_to_K39_weaktab) + screened_rates(k_p_Ar39_to_n_K39_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar39_p_to_n_K39_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar39_to_K39_beta_neg_weaktab); jac.set(K39, Ar39, scratch); jac.set(K39, Ar40, 0.0); jac.set(K39, K37, 0.0); - scratch = screened_rates(k_n_K38_to_K39_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K38_n_to_K39_reaclib)*Y(N)*state.rho; jac.set(K39, K38, scratch); - scratch = -screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_K39_to_Ar39_weaktab) - screened_rates(k_K39_to_He4_Cl35_reaclib) - screened_rates(k_K39_to_n_K38_reaclib) - screened_rates(k_K39_to_p_Ar38_reaclib) - screened_rates(k_n_K39_to_He4_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_n_K39_to_K40_reaclib)*Y(N)*state.rho - screened_rates(k_n_K39_to_p_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_p_K39_to_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K39_to_He4_Ar36_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(He4)*state.rho - screened_rates(k_K39_n_to_He4_Cl36_reaclib)*Y(N)*state.rho - screened_rates(k_K39_n_to_K40_reaclib)*Y(N)*state.rho - screened_rates(k_K39_n_to_p_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_K39_p_to_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_K39_p_to_He4_Ar36_reaclib)*Y(H1)*state.rho - screened_rates(k_K39_to_Ar39_electron_capture_weaktab) - screened_rates(k_K39_to_He4_Cl35_reaclib) - screened_rates(k_K39_to_n_K38_reaclib) - screened_rates(k_K39_to_p_Ar38_reaclib); jac.set(K39, K39, scratch); scratch = screened_rates(k_K40_to_n_K39_reaclib); @@ -32356,7 +30165,7 @@ void jac_nuc(const burn_t& state, jac.set(K39, Ca41, 0.0); - scratch = screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(H1)*state.rho; jac.set(K39, Ca42, scratch); jac.set(K39, Ca43, 0.0); @@ -32532,17 +30341,17 @@ void jac_nuc(const burn_t& state, jac.set(K39, Ge64, 0.0); - scratch = screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(Ca40)*state.rho + screened_rates(k_n_K39_to_K40_reaclib)*Y(K39)*state.rho - screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(K40)*state.rho - screened_rates(k_n_K40_to_K41_reaclib)*Y(K40)*state.rho - screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(K40)*state.rho + screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(Sc43)*state.rho; + scratch = screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(Ca40)*state.rho + screened_rates(k_K39_n_to_K40_reaclib)*Y(K39)*state.rho - screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_n_to_K41_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(K40)*state.rho + screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(Sc43)*state.rho; jac.set(K40, N, scratch); - scratch = screened_rates(k_p_Ar39_to_K40_reaclib)*Y(Ar39)*state.rho + screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(Ar40)*state.rho + screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(Ca43)*state.rho - screened_rates(k_p_K40_to_Ca41_reaclib)*Y(K40)*state.rho - screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(K40)*state.rho - screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(K40)*state.rho; + scratch = screened_rates(k_Ar39_p_to_K40_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(Ar40)*state.rho + screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(Ca43)*state.rho - screened_rates(k_K40_p_to_Ca41_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(K40)*state.rho; jac.set(K40, H1, scratch); jac.set(K40, H2, 0.0); jac.set(K40, He3, 0.0); - scratch = screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(Ar37)*state.rho + screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(Cl36)*state.rho + screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(Cl37)*state.rho - screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(K40)*state.rho - screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(K40)*state.rho - screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(K40)*state.rho; + scratch = screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(Cl36)*state.rho + screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(Cl37)*state.rho - screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(K40)*state.rho - screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(K40)*state.rho; jac.set(K40, He4, scratch); jac.set(K40, Li6, 0.0); @@ -32653,39 +30462,39 @@ void jac_nuc(const burn_t& state, jac.set(K40, Cl35, 0.0); - scratch = screened_rates(k_He4_Cl36_to_K40_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl36_He4_to_K40_reaclib)*Y(He4)*state.rho; jac.set(K40, Cl36, scratch); - scratch = screened_rates(k_He4_Cl37_to_n_K40_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl37_He4_to_n_K40_reaclib)*Y(He4)*state.rho; jac.set(K40, Cl37, scratch); jac.set(K40, Ar36, 0.0); - scratch = screened_rates(k_He4_Ar37_to_p_K40_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar37_He4_to_p_K40_reaclib)*Y(He4)*state.rho; jac.set(K40, Ar37, scratch); jac.set(K40, Ar38, 0.0); - scratch = screened_rates(k_p_Ar39_to_K40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar39_p_to_K40_reaclib)*Y(H1)*state.rho; jac.set(K40, Ar39, scratch); - scratch = screened_rates(k_Ar40_to_K40_weaktab) + screened_rates(k_p_Ar40_to_n_K40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar40_p_to_n_K40_reaclib)*Y(H1)*state.rho + screened_rates(k_Ar40_to_K40_beta_neg_weaktab); jac.set(K40, Ar40, scratch); jac.set(K40, K37, 0.0); jac.set(K40, K38, 0.0); - scratch = screened_rates(k_n_K39_to_K40_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K39_n_to_K40_reaclib)*Y(N)*state.rho; jac.set(K40, K39, scratch); - scratch = -screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(He4)*state.rho - screened_rates(k_K40_to_Ar40_weaktab) - screened_rates(k_K40_to_Ca40_weaktab) - screened_rates(k_K40_to_He4_Cl36_reaclib) - screened_rates(k_K40_to_n_K39_reaclib) - screened_rates(k_K40_to_p_Ar39_reaclib) - screened_rates(k_n_K40_to_He4_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_n_K40_to_K41_reaclib)*Y(N)*state.rho - screened_rates(k_n_K40_to_p_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_p_K40_to_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K40_to_He4_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(He4)*state.rho - screened_rates(k_K40_n_to_He4_Cl37_reaclib)*Y(N)*state.rho - screened_rates(k_K40_n_to_K41_reaclib)*Y(N)*state.rho - screened_rates(k_K40_n_to_p_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_K40_p_to_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_K40_p_to_He4_Ar37_reaclib)*Y(H1)*state.rho - screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_K40_to_Ar40_electron_capture_weaktab) - screened_rates(k_K40_to_Ca40_beta_neg_weaktab) - screened_rates(k_K40_to_He4_Cl36_reaclib) - screened_rates(k_K40_to_n_K39_reaclib) - screened_rates(k_K40_to_p_Ar39_reaclib); jac.set(K40, K40, scratch); scratch = screened_rates(k_K41_to_n_K40_reaclib); jac.set(K40, K41, scratch); - scratch = screened_rates(k_Ca40_to_K40_weaktab) + screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(N)*state.rho + screened_rates(k_Ca40_to_K40_electron_capture_weaktab); jac.set(K40, Ca40, scratch); scratch = screened_rates(k_Ca41_to_p_K40_reaclib); @@ -32693,7 +30502,7 @@ void jac_nuc(const burn_t& state, jac.set(K40, Ca42, 0.0); - scratch = screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(H1)*state.rho; jac.set(K40, Ca43, scratch); jac.set(K40, Ca44, 0.0); @@ -32706,7 +30515,7 @@ void jac_nuc(const burn_t& state, jac.set(K40, Ca48, 0.0); - scratch = screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(N)*state.rho; jac.set(K40, Sc43, scratch); scratch = screened_rates(k_Sc44_to_He4_K40_reaclib); @@ -32868,17 +30677,17 @@ void jac_nuc(const burn_t& state, jac.set(K40, Ge64, 0.0); - scratch = screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(Ca41)*state.rho + screened_rates(k_n_K40_to_K41_reaclib)*Y(K40)*state.rho + screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(Sc44)*state.rho; + scratch = screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(Ca41)*state.rho + screened_rates(k_K40_n_to_K41_reaclib)*Y(K40)*state.rho + screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(Sc44)*state.rho; jac.set(K41, N, scratch); - scratch = screened_rates(k_p_Ar40_to_K41_reaclib)*Y(Ar40)*state.rho + screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(Ca44)*state.rho - screened_rates(k_p_K41_to_Ca42_reaclib)*Y(K41)*state.rho - screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(K41)*state.rho - screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(K41)*state.rho; + scratch = screened_rates(k_Ar40_p_to_K41_reaclib)*Y(Ar40)*state.rho + screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(Ca44)*state.rho - screened_rates(k_K41_p_to_Ca42_reaclib)*Y(K41)*state.rho - screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(K41)*state.rho - screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(K41)*state.rho; jac.set(K41, H1, scratch); jac.set(K41, H2, 0.0); jac.set(K41, He3, 0.0); - scratch = screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(Ar38)*state.rho + screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(Cl37)*state.rho - screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(K41)*state.rho - screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(K41)*state.rho - screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(K41)*state.rho; + scratch = screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(Cl37)*state.rho - screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(K41)*state.rho - screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(K41)*state.rho - screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(K41)*state.rho; jac.set(K41, He4, scratch); jac.set(K41, Li6, 0.0); @@ -32991,19 +30800,19 @@ void jac_nuc(const burn_t& state, jac.set(K41, Cl36, 0.0); - scratch = screened_rates(k_He4_Cl37_to_K41_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cl37_He4_to_K41_reaclib)*Y(He4)*state.rho; jac.set(K41, Cl37, scratch); jac.set(K41, Ar36, 0.0); jac.set(K41, Ar37, 0.0); - scratch = screened_rates(k_He4_Ar38_to_p_K41_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar38_He4_to_p_K41_reaclib)*Y(He4)*state.rho; jac.set(K41, Ar38, scratch); jac.set(K41, Ar39, 0.0); - scratch = screened_rates(k_p_Ar40_to_K41_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ar40_p_to_K41_reaclib)*Y(H1)*state.rho; jac.set(K41, Ar40, scratch); jac.set(K41, K37, 0.0); @@ -33012,15 +30821,15 @@ void jac_nuc(const burn_t& state, jac.set(K41, K39, 0.0); - scratch = screened_rates(k_n_K40_to_K41_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_K40_n_to_K41_reaclib)*Y(N)*state.rho; jac.set(K41, K40, scratch); - scratch = -screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(He4)*state.rho - screened_rates(k_K41_to_Ca41_weaktab) - screened_rates(k_K41_to_He4_Cl37_reaclib) - screened_rates(k_K41_to_n_K40_reaclib) - screened_rates(k_K41_to_p_Ar40_reaclib) - screened_rates(k_p_K41_to_Ca42_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K41_to_He4_Ar38_reaclib)*Y(H1)*state.rho - screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(He4)*state.rho - screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(He4)*state.rho - screened_rates(k_K41_p_to_Ca42_reaclib)*Y(H1)*state.rho - screened_rates(k_K41_p_to_He4_Ar38_reaclib)*Y(H1)*state.rho - screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_K41_to_Ca41_beta_neg_weaktab) - screened_rates(k_K41_to_He4_Cl37_reaclib) - screened_rates(k_K41_to_n_K40_reaclib) - screened_rates(k_K41_to_p_Ar40_reaclib); jac.set(K41, K41, scratch); jac.set(K41, Ca40, 0.0); - scratch = screened_rates(k_Ca41_to_K41_weaktab) + screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(N)*state.rho + screened_rates(k_Ca41_to_K41_electron_capture_weaktab); jac.set(K41, Ca41, scratch); scratch = screened_rates(k_Ca42_to_p_K41_reaclib); @@ -33028,7 +30837,7 @@ void jac_nuc(const burn_t& state, jac.set(K41, Ca43, 0.0); - scratch = screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(H1)*state.rho; jac.set(K41, Ca44, scratch); jac.set(K41, Ca45, 0.0); @@ -33041,7 +30850,7 @@ void jac_nuc(const burn_t& state, jac.set(K41, Sc43, 0.0); - scratch = screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(N)*state.rho; jac.set(K41, Sc44, scratch); scratch = screened_rates(k_Sc45_to_He4_K41_reaclib); @@ -33201,17 +31010,17 @@ void jac_nuc(const burn_t& state, jac.set(K41, Ge64, 0.0); - scratch = -screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(Ca40)*state.rho - screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(Ca40)*state.rho - screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(Ca40)*state.rho; + scratch = -screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(Ca40)*state.rho; jac.set(Ca40, N, scratch); - scratch = -screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(Ca40)*state.rho + screened_rates(k_p_K39_to_Ca40_reaclib)*Y(K39)*state.rho + screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(K40)*state.rho + screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(Sc43)*state.rho; + scratch = -screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(Ca40)*state.rho + screened_rates(k_K39_p_to_Ca40_reaclib)*Y(K39)*state.rho + screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(K40)*state.rho + screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(Sc43)*state.rho; jac.set(Ca40, H1, scratch); jac.set(Ca40, H2, 0.0); jac.set(Ca40, He3, 0.0); - scratch = screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(Ar36)*state.rho + screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(Ar37)*state.rho - screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(Ca40)*state.rho - screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(Ca40)*state.rho + screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(K37)*state.rho; + scratch = screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(Ar36)*state.rho + screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(Ar37)*state.rho - screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(Ca40)*state.rho + screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(K37)*state.rho; jac.set(Ca40, He4, scratch); jac.set(Ca40, Li6, 0.0); @@ -33326,10 +31135,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca40, Cl37, 0.0); - scratch = screened_rates(k_He4_Ar36_to_Ca40_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar36_He4_to_Ca40_reaclib)*Y(He4)*state.rho; jac.set(Ca40, Ar36, scratch); - scratch = screened_rates(k_He4_Ar37_to_n_Ca40_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar37_He4_to_n_Ca40_reaclib)*Y(He4)*state.rho; jac.set(Ca40, Ar37, scratch); jac.set(Ca40, Ar38, 0.0); @@ -33338,20 +31147,20 @@ void jac_nuc(const burn_t& state, jac.set(Ca40, Ar40, 0.0); - scratch = screened_rates(k_He4_K37_to_p_Ca40_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K37_He4_to_p_Ca40_reaclib)*Y(He4)*state.rho; jac.set(Ca40, K37, scratch); jac.set(Ca40, K38, 0.0); - scratch = screened_rates(k_p_K39_to_Ca40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K39_p_to_Ca40_reaclib)*Y(H1)*state.rho; jac.set(Ca40, K39, scratch); - scratch = screened_rates(k_K40_to_Ca40_weaktab) + screened_rates(k_p_K40_to_n_Ca40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K40_p_to_n_Ca40_reaclib)*Y(H1)*state.rho + screened_rates(k_K40_to_Ca40_beta_neg_weaktab); jac.set(Ca40, K40, scratch); jac.set(Ca40, K41, 0.0); - scratch = -screened_rates(k_Ca40_to_He4_Ar36_reaclib) - screened_rates(k_Ca40_to_K40_weaktab) - screened_rates(k_Ca40_to_p_K39_reaclib) - screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca40_to_He4_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca40_to_p_K40_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca40_to_He4_K37_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(N)*state.rho - screened_rates(k_Ca40_n_to_He4_Ar37_reaclib)*Y(N)*state.rho - screened_rates(k_Ca40_n_to_p_K40_reaclib)*Y(N)*state.rho - screened_rates(k_Ca40_p_to_He4_K37_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca40_to_He4_Ar36_reaclib) - screened_rates(k_Ca40_to_K40_electron_capture_weaktab) - screened_rates(k_Ca40_to_p_K39_reaclib); jac.set(Ca40, Ca40, scratch); scratch = screened_rates(k_Ca41_to_n_Ca40_reaclib); @@ -33371,7 +31180,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca40, Ca48, 0.0); - scratch = screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(H1)*state.rho; jac.set(Ca40, Sc43, scratch); jac.set(Ca40, Sc44, 0.0); @@ -33533,17 +31342,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca40, Ge64, 0.0); - scratch = screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(Ca40)*state.rho - screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(Ca41)*state.rho - screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(Ca41)*state.rho - screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(Ca41)*state.rho + screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(Ti44)*state.rho; + scratch = screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(Ca40)*state.rho - screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(Ca41)*state.rho + screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(Ti44)*state.rho; jac.set(Ca41, N, scratch); - scratch = -screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(Ca41)*state.rho + screened_rates(k_p_K40_to_Ca41_reaclib)*Y(K40)*state.rho + screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(K41)*state.rho + screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(Sc44)*state.rho; + scratch = -screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(Ca41)*state.rho + screened_rates(k_K40_p_to_Ca41_reaclib)*Y(K40)*state.rho + screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(K41)*state.rho + screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(Sc44)*state.rho; jac.set(Ca41, H1, scratch); jac.set(Ca41, H2, 0.0); jac.set(Ca41, He3, 0.0); - scratch = screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(Ar37)*state.rho + screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(Ar38)*state.rho - screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(Ca41)*state.rho - screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(Ca41)*state.rho - screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(Ca41)*state.rho + screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(K38)*state.rho; + scratch = screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(Ar37)*state.rho + screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(Ar38)*state.rho - screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(Ca41)*state.rho + screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(K38)*state.rho; jac.set(Ca41, He4, scratch); jac.set(Ca41, Li6, 0.0); @@ -33660,10 +31469,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca41, Ar36, 0.0); - scratch = screened_rates(k_He4_Ar37_to_Ca41_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar37_He4_to_Ca41_reaclib)*Y(He4)*state.rho; jac.set(Ca41, Ar37, scratch); - scratch = screened_rates(k_He4_Ar38_to_n_Ca41_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar38_He4_to_n_Ca41_reaclib)*Y(He4)*state.rho; jac.set(Ca41, Ar38, scratch); jac.set(Ca41, Ar39, 0.0); @@ -33672,21 +31481,21 @@ void jac_nuc(const burn_t& state, jac.set(Ca41, K37, 0.0); - scratch = screened_rates(k_He4_K38_to_p_Ca41_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K38_He4_to_p_Ca41_reaclib)*Y(He4)*state.rho; jac.set(Ca41, K38, scratch); jac.set(Ca41, K39, 0.0); - scratch = screened_rates(k_p_K40_to_Ca41_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K40_p_to_Ca41_reaclib)*Y(H1)*state.rho; jac.set(Ca41, K40, scratch); - scratch = screened_rates(k_K41_to_Ca41_weaktab) + screened_rates(k_p_K41_to_n_Ca41_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K41_p_to_n_Ca41_reaclib)*Y(H1)*state.rho + screened_rates(k_K41_to_Ca41_beta_neg_weaktab); jac.set(Ca41, K41, scratch); - scratch = screened_rates(k_n_Ca40_to_Ca41_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca40_n_to_Ca41_reaclib)*Y(N)*state.rho; jac.set(Ca41, Ca40, scratch); - scratch = -screened_rates(k_Ca41_to_He4_Ar37_reaclib) - screened_rates(k_Ca41_to_K41_weaktab) - screened_rates(k_Ca41_to_n_Ca40_reaclib) - screened_rates(k_Ca41_to_p_K40_reaclib) - screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca41_to_He4_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca41_to_p_K41_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca41_to_He4_K38_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(N)*state.rho - screened_rates(k_Ca41_n_to_He4_Ar38_reaclib)*Y(N)*state.rho - screened_rates(k_Ca41_n_to_p_K41_reaclib)*Y(N)*state.rho - screened_rates(k_Ca41_p_to_He4_K38_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca41_to_He4_Ar37_reaclib) - screened_rates(k_Ca41_to_K41_electron_capture_weaktab) - screened_rates(k_Ca41_to_n_Ca40_reaclib) - screened_rates(k_Ca41_to_p_K40_reaclib); jac.set(Ca41, Ca41, scratch); scratch = screened_rates(k_Ca42_to_n_Ca41_reaclib); @@ -33706,7 +31515,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca41, Sc43, 0.0); - scratch = screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(H1)*state.rho; jac.set(Ca41, Sc44, scratch); jac.set(Ca41, Sc45, 0.0); @@ -33719,7 +31528,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca41, Sc49, 0.0); - scratch = screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(N)*state.rho; jac.set(Ca41, Ti44, scratch); scratch = screened_rates(k_Ti45_to_He4_Ca41_reaclib); @@ -33867,17 +31676,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca41, Ge64, 0.0); - scratch = screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(Ca41)*state.rho - screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(Ca42)*state.rho - screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(Ca42)*state.rho + screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(Ti45)*state.rho; + scratch = screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(Ca42)*state.rho + screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(Ti45)*state.rho; jac.set(Ca42, N, scratch); - scratch = -screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(Ca42)*state.rho - screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(Ca42)*state.rho + screened_rates(k_p_K41_to_Ca42_reaclib)*Y(K41)*state.rho + screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(Sc45)*state.rho; + scratch = -screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(Ca42)*state.rho + screened_rates(k_K41_p_to_Ca42_reaclib)*Y(K41)*state.rho + screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(Sc45)*state.rho; jac.set(Ca42, H1, scratch); jac.set(Ca42, H2, 0.0); jac.set(Ca42, He3, 0.0); - scratch = screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(Ar38)*state.rho + screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(Ar39)*state.rho - screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(Ca42)*state.rho - screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(Ca42)*state.rho - screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(Ca42)*state.rho + screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(K39)*state.rho; + scratch = screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(Ar38)*state.rho + screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(Ar39)*state.rho - screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(Ca42)*state.rho + screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(K39)*state.rho; jac.set(Ca42, He4, scratch); jac.set(Ca42, Li6, 0.0); @@ -33996,10 +31805,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca42, Ar37, 0.0); - scratch = screened_rates(k_He4_Ar38_to_Ca42_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar38_He4_to_Ca42_reaclib)*Y(He4)*state.rho; jac.set(Ca42, Ar38, scratch); - scratch = screened_rates(k_He4_Ar39_to_n_Ca42_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar39_He4_to_n_Ca42_reaclib)*Y(He4)*state.rho; jac.set(Ca42, Ar39, scratch); jac.set(Ca42, Ar40, 0.0); @@ -34008,20 +31817,20 @@ void jac_nuc(const burn_t& state, jac.set(Ca42, K38, 0.0); - scratch = screened_rates(k_He4_K39_to_p_Ca42_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K39_He4_to_p_Ca42_reaclib)*Y(He4)*state.rho; jac.set(Ca42, K39, scratch); jac.set(Ca42, K40, 0.0); - scratch = screened_rates(k_p_K41_to_Ca42_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_K41_p_to_Ca42_reaclib)*Y(H1)*state.rho; jac.set(Ca42, K41, scratch); jac.set(Ca42, Ca40, 0.0); - scratch = screened_rates(k_n_Ca41_to_Ca42_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca41_n_to_Ca42_reaclib)*Y(N)*state.rho; jac.set(Ca42, Ca41, scratch); - scratch = -screened_rates(k_Ca42_to_He4_Ar38_reaclib) - screened_rates(k_Ca42_to_n_Ca41_reaclib) - screened_rates(k_Ca42_to_p_K41_reaclib) - screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca42_to_He4_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca42_to_He4_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_Ca42_n_to_He4_Ar39_reaclib)*Y(N)*state.rho - screened_rates(k_Ca42_p_to_He4_K39_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca42_to_He4_Ar38_reaclib) - screened_rates(k_Ca42_to_n_Ca41_reaclib) - screened_rates(k_Ca42_to_p_K41_reaclib); jac.set(Ca42, Ca42, scratch); scratch = screened_rates(k_Ca43_to_n_Ca42_reaclib); @@ -34042,7 +31851,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca42, Sc44, 0.0); - scratch = screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(H1)*state.rho; jac.set(Ca42, Sc45, scratch); jac.set(Ca42, Sc46, 0.0); @@ -34055,7 +31864,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca42, Ti44, 0.0); - scratch = screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(N)*state.rho; jac.set(Ca42, Ti45, scratch); scratch = screened_rates(k_Ti46_to_He4_Ca42_reaclib); @@ -34201,17 +32010,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca42, Ge64, 0.0); - scratch = screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(Ca42)*state.rho - screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(Ca43)*state.rho + screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(Sc43)*state.rho + screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(Ti46)*state.rho; + scratch = screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(Ti46)*state.rho; jac.set(Ca43, N, scratch); - scratch = -screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(Ca43)*state.rho - screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(Ca43)*state.rho + screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(Sc46)*state.rho; + scratch = -screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(Sc46)*state.rho; jac.set(Ca43, H1, scratch); jac.set(Ca43, H2, 0.0); jac.set(Ca43, He3, 0.0); - scratch = screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(Ar39)*state.rho + screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(Ar40)*state.rho - screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(Ca43)*state.rho - screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(Ca43)*state.rho - screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(Ca43)*state.rho + screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(K40)*state.rho; + scratch = screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(Ar39)*state.rho + screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(Ca43)*state.rho + screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(K40)*state.rho; jac.set(Ca43, He4, scratch); jac.set(Ca43, Li6, 0.0); @@ -34332,10 +32141,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca43, Ar38, 0.0); - scratch = screened_rates(k_He4_Ar39_to_Ca43_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar39_He4_to_Ca43_reaclib)*Y(He4)*state.rho; jac.set(Ca43, Ar39, scratch); - scratch = screened_rates(k_He4_Ar40_to_n_Ca43_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar40_He4_to_n_Ca43_reaclib)*Y(He4)*state.rho; jac.set(Ca43, Ar40, scratch); jac.set(Ca43, K37, 0.0); @@ -34344,7 +32153,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca43, K39, 0.0); - scratch = screened_rates(k_He4_K40_to_p_Ca43_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K40_He4_to_p_Ca43_reaclib)*Y(He4)*state.rho; jac.set(Ca43, K40, scratch); jac.set(Ca43, K41, 0.0); @@ -34353,10 +32162,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca43, Ca41, 0.0); - scratch = screened_rates(k_n_Ca42_to_Ca43_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca42_n_to_Ca43_reaclib)*Y(N)*state.rho; jac.set(Ca43, Ca42, scratch); - scratch = -screened_rates(k_Ca43_to_He4_Ar39_reaclib) - screened_rates(k_Ca43_to_Sc43_weaktab) - screened_rates(k_Ca43_to_n_Ca42_reaclib) - screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ca43_to_He4_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca43_to_He4_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_Ca43_n_to_He4_Ar40_reaclib)*Y(N)*state.rho - screened_rates(k_Ca43_p_to_He4_K40_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca43_to_He4_Ar39_reaclib) - screened_rates(k_Ca43_to_Sc43_beta_neg_weaktab) - screened_rates(k_Ca43_to_n_Ca42_reaclib); jac.set(Ca43, Ca43, scratch); scratch = screened_rates(k_Ca44_to_n_Ca43_reaclib); @@ -34370,7 +32179,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca43, Ca48, 0.0); - scratch = screened_rates(k_Sc43_to_Ca43_weaktab) + screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(N)*state.rho + screened_rates(k_Sc43_to_Ca43_electron_capture_weaktab); jac.set(Ca43, Sc43, scratch); scratch = screened_rates(k_Sc44_to_p_Ca43_reaclib); @@ -34378,7 +32187,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca43, Sc45, 0.0); - scratch = screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(H1)*state.rho; jac.set(Ca43, Sc46, scratch); jac.set(Ca43, Sc47, 0.0); @@ -34391,7 +32200,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca43, Ti45, 0.0); - scratch = screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(N)*state.rho; jac.set(Ca43, Ti46, scratch); scratch = screened_rates(k_Ti47_to_He4_Ca43_reaclib); @@ -34535,17 +32344,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca43, Ge64, 0.0); - scratch = screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(Ca44)*state.rho + screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(Ti47)*state.rho; + scratch = screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(Ti47)*state.rho; jac.set(Ca44, N, scratch); - scratch = -screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(Ca44)*state.rho - screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(Ca44)*state.rho - screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(Ca44)*state.rho + screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(Sc47)*state.rho; + scratch = -screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(Sc47)*state.rho; jac.set(Ca44, H1, scratch); jac.set(Ca44, H2, 0.0); jac.set(Ca44, He3, 0.0); - scratch = screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(Ar40)*state.rho - screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(Ca44)*state.rho - screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(Ca44)*state.rho - screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(Ca44)*state.rho + screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(K41)*state.rho; + scratch = screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(Ar40)*state.rho - screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(Ca44)*state.rho + screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(K41)*state.rho; jac.set(Ca44, He4, scratch); jac.set(Ca44, Li6, 0.0); @@ -34668,7 +32477,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca44, Ar39, 0.0); - scratch = screened_rates(k_He4_Ar40_to_Ca44_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ar40_He4_to_Ca44_reaclib)*Y(He4)*state.rho; jac.set(Ca44, Ar40, scratch); jac.set(Ca44, K37, 0.0); @@ -34679,7 +32488,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca44, K40, 0.0); - scratch = screened_rates(k_He4_K41_to_p_Ca44_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K41_He4_to_p_Ca44_reaclib)*Y(He4)*state.rho; jac.set(Ca44, K41, scratch); jac.set(Ca44, Ca40, 0.0); @@ -34688,10 +32497,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca44, Ca42, 0.0); - scratch = screened_rates(k_n_Ca43_to_Ca44_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca43_n_to_Ca44_reaclib)*Y(N)*state.rho; jac.set(Ca44, Ca43, scratch); - scratch = -screened_rates(k_Ca44_to_He4_Ar40_reaclib) - screened_rates(k_Ca44_to_Sc44_weaktab) - screened_rates(k_Ca44_to_n_Ca43_reaclib) - screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca44_to_He4_K41_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_Ca44_p_to_He4_K41_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca44_to_He4_Ar40_reaclib) - screened_rates(k_Ca44_to_Sc44_beta_neg_weaktab) - screened_rates(k_Ca44_to_n_Ca43_reaclib); jac.set(Ca44, Ca44, scratch); scratch = screened_rates(k_Ca45_to_n_Ca44_reaclib); @@ -34705,7 +32514,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca44, Sc43, 0.0); - scratch = screened_rates(k_Sc44_to_Ca44_weaktab) + screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(N)*state.rho + screened_rates(k_Sc44_to_Ca44_electron_capture_weaktab); jac.set(Ca44, Sc44, scratch); scratch = screened_rates(k_Sc45_to_p_Ca44_reaclib); @@ -34713,7 +32522,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca44, Sc46, 0.0); - scratch = screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(H1)*state.rho; jac.set(Ca44, Sc47, scratch); jac.set(Ca44, Sc48, 0.0); @@ -34726,7 +32535,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca44, Ti46, 0.0); - scratch = screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(N)*state.rho; jac.set(Ca44, Ti47, scratch); scratch = screened_rates(k_Ti48_to_He4_Ca44_reaclib); @@ -34868,17 +32677,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca44, Ge64, 0.0); - scratch = screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(Ca44)*state.rho - screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(Ca45)*state.rho + screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(Ti48)*state.rho; + scratch = screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(Ca45)*state.rho + screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(Ti48)*state.rho; jac.set(Ca45, N, scratch); - scratch = -screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(Ca45)*state.rho - screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(Ca45)*state.rho + screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(Sc48)*state.rho; + scratch = -screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(Ca45)*state.rho + screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(Sc48)*state.rho; jac.set(Ca45, H1, scratch); jac.set(Ca45, H2, 0.0); jac.set(Ca45, He3, 0.0); - scratch = -screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(Ca45)*state.rho - screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(Ca45)*state.rho - screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(Ca45)*state.rho; + scratch = -screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(Ca45)*state.rho; jac.set(Ca45, He4, scratch); jac.set(Ca45, Li6, 0.0); @@ -35021,10 +32830,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca45, Ca43, 0.0); - scratch = screened_rates(k_n_Ca44_to_Ca45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca44_n_to_Ca45_reaclib)*Y(N)*state.rho; jac.set(Ca45, Ca44, scratch); - scratch = -screened_rates(k_Ca45_to_Sc45_weaktab) - screened_rates(k_Ca45_to_n_Ca44_reaclib) - screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca45_to_Sc45_beta_neg_weaktab) - screened_rates(k_Ca45_to_n_Ca44_reaclib); jac.set(Ca45, Ca45, scratch); scratch = screened_rates(k_Ca46_to_n_Ca45_reaclib); @@ -35038,7 +32847,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca45, Sc44, 0.0); - scratch = screened_rates(k_Sc45_to_Ca45_weaktab) + screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(N)*state.rho + screened_rates(k_Sc45_to_Ca45_electron_capture_weaktab); jac.set(Ca45, Sc45, scratch); scratch = screened_rates(k_Sc46_to_p_Ca45_reaclib); @@ -35046,7 +32855,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca45, Sc47, 0.0); - scratch = screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(H1)*state.rho; jac.set(Ca45, Sc48, scratch); jac.set(Ca45, Sc49, 0.0); @@ -35059,7 +32868,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca45, Ti47, 0.0); - scratch = screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(N)*state.rho; jac.set(Ca45, Ti48, scratch); scratch = screened_rates(k_Ti49_to_He4_Ca45_reaclib); @@ -35199,17 +33008,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca45, Ge64, 0.0); - scratch = screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(Ca45)*state.rho - screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(Ca46)*state.rho + screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(Ti49)*state.rho; + scratch = screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(Ca46)*state.rho + screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(Ti49)*state.rho; jac.set(Ca46, N, scratch); - scratch = -screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(Ca46)*state.rho - screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(Ca46)*state.rho + screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(Sc49)*state.rho; + scratch = -screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(Ca46)*state.rho + screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(Sc49)*state.rho; jac.set(Ca46, H1, scratch); jac.set(Ca46, H2, 0.0); jac.set(Ca46, He3, 0.0); - scratch = -screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(Ca46)*state.rho - screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(Ca46)*state.rho - screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(Ca46)*state.rho; + scratch = -screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(Ca46)*state.rho; jac.set(Ca46, He4, scratch); jac.set(Ca46, Li6, 0.0); @@ -35354,10 +33163,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca46, Ca44, 0.0); - scratch = screened_rates(k_n_Ca45_to_Ca46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca45_n_to_Ca46_reaclib)*Y(N)*state.rho; jac.set(Ca46, Ca45, scratch); - scratch = -screened_rates(k_Ca46_to_Sc46_weaktab) - screened_rates(k_Ca46_to_n_Ca45_reaclib) - screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca46_to_Sc46_beta_neg_weaktab) - screened_rates(k_Ca46_to_n_Ca45_reaclib); jac.set(Ca46, Ca46, scratch); scratch = screened_rates(k_Ca47_to_n_Ca46_reaclib); @@ -35371,7 +33180,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca46, Sc45, 0.0); - scratch = screened_rates(k_Sc46_to_Ca46_weaktab) + screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(N)*state.rho + screened_rates(k_Sc46_to_Ca46_electron_capture_weaktab); jac.set(Ca46, Sc46, scratch); scratch = screened_rates(k_Sc47_to_p_Ca46_reaclib); @@ -35379,7 +33188,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca46, Sc48, 0.0); - scratch = screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(H1)*state.rho; jac.set(Ca46, Sc49, scratch); jac.set(Ca46, Ti44, 0.0); @@ -35392,7 +33201,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca46, Ti48, 0.0); - scratch = screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(N)*state.rho; jac.set(Ca46, Ti49, scratch); scratch = screened_rates(k_Ti50_to_He4_Ca46_reaclib); @@ -35530,17 +33339,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca46, Ge64, 0.0); - scratch = screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(Ca46)*state.rho - screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(Ca47)*state.rho + screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(Ti50)*state.rho; + scratch = screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(Ca47)*state.rho + screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(Ti50)*state.rho; jac.set(Ca47, N, scratch); - scratch = -screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(Ca47)*state.rho - screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(Ca47)*state.rho; + scratch = -screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(Ca47)*state.rho - screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(Ca47)*state.rho; jac.set(Ca47, H1, scratch); jac.set(Ca47, H2, 0.0); jac.set(Ca47, He3, 0.0); - scratch = -screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(Ca47)*state.rho - screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(Ca47)*state.rho; + scratch = -screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(Ca47)*state.rho - screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(Ca47)*state.rho; jac.set(Ca47, He4, scratch); jac.set(Ca47, Li6, 0.0); @@ -35687,10 +33496,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca47, Ca45, 0.0); - scratch = screened_rates(k_n_Ca46_to_Ca47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca46_n_to_Ca47_reaclib)*Y(N)*state.rho; jac.set(Ca47, Ca46, scratch); - scratch = -screened_rates(k_Ca47_to_Sc47_weaktab) - screened_rates(k_Ca47_to_n_Ca46_reaclib) - screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(N)*state.rho - screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca47_to_Sc47_beta_neg_weaktab) - screened_rates(k_Ca47_to_n_Ca46_reaclib); jac.set(Ca47, Ca47, scratch); scratch = screened_rates(k_Ca48_to_n_Ca47_reaclib); @@ -35704,7 +33513,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca47, Sc46, 0.0); - scratch = screened_rates(k_Sc47_to_Ca47_weaktab) + screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(N)*state.rho + screened_rates(k_Sc47_to_Ca47_electron_capture_weaktab); jac.set(Ca47, Sc47, scratch); scratch = screened_rates(k_Sc48_to_p_Ca47_reaclib); @@ -35724,7 +33533,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca47, Ti49, 0.0); - scratch = screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(N)*state.rho; jac.set(Ca47, Ti50, scratch); scratch = screened_rates(k_Ti51_to_He4_Ca47_reaclib); @@ -35860,17 +33669,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca47, Ge64, 0.0); - scratch = screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(Ca47)*state.rho + screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(Ti51)*state.rho; + scratch = screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(Ca47)*state.rho + screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(Ti51)*state.rho; jac.set(Ca48, N, scratch); - scratch = -screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(Ca48)*state.rho - screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(Ca48)*state.rho; + scratch = -screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(Ca48)*state.rho - screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(Ca48)*state.rho; jac.set(Ca48, H1, scratch); jac.set(Ca48, H2, 0.0); jac.set(Ca48, He3, 0.0); - scratch = -screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(Ca48)*state.rho; + scratch = -screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(Ca48)*state.rho; jac.set(Ca48, He4, scratch); jac.set(Ca48, Li6, 0.0); @@ -36019,10 +33828,10 @@ void jac_nuc(const burn_t& state, jac.set(Ca48, Ca46, 0.0); - scratch = screened_rates(k_n_Ca47_to_Ca48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ca47_n_to_Ca48_reaclib)*Y(N)*state.rho; jac.set(Ca48, Ca47, scratch); - scratch = -screened_rates(k_Ca48_to_Sc48_weaktab) - screened_rates(k_Ca48_to_n_Ca47_reaclib) - screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_Ca48_to_Sc48_beta_neg_weaktab) - screened_rates(k_Ca48_to_n_Ca47_reaclib); jac.set(Ca48, Ca48, scratch); jac.set(Ca48, Sc43, 0.0); @@ -36035,7 +33844,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca48, Sc47, 0.0); - scratch = screened_rates(k_Sc48_to_Ca48_weaktab) + screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(N)*state.rho + screened_rates(k_Sc48_to_Ca48_electron_capture_weaktab); jac.set(Ca48, Sc48, scratch); scratch = screened_rates(k_Sc49_to_p_Ca48_reaclib); @@ -36055,7 +33864,7 @@ void jac_nuc(const burn_t& state, jac.set(Ca48, Ti50, 0.0); - scratch = screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(N)*state.rho; jac.set(Ca48, Ti51, scratch); jac.set(Ca48, V46, 0.0); @@ -36188,17 +33997,17 @@ void jac_nuc(const burn_t& state, jac.set(Ca48, Ge64, 0.0); - scratch = -screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(Sc43)*state.rho - screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(Sc43)*state.rho - screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(Sc43)*state.rho + screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(V46)*state.rho; + scratch = -screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(Sc43)*state.rho + screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(V46)*state.rho; jac.set(Sc43, N, scratch); - scratch = screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(Ca42)*state.rho + screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(Ca43)*state.rho - screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(Sc43)*state.rho - screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(Sc43)*state.rho + screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(Ti46)*state.rho; + scratch = screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(Ca42)*state.rho + screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(Ti46)*state.rho; jac.set(Sc43, H1, scratch); jac.set(Sc43, H2, 0.0); jac.set(Sc43, He3, 0.0); - scratch = screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(Ca40)*state.rho + screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(K39)*state.rho + screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(K40)*state.rho - screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(Sc43)*state.rho - screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(Sc43)*state.rho; + scratch = screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(Ca40)*state.rho + screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(K39)*state.rho + screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(K40)*state.rho - screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(Sc43)*state.rho; jac.set(Sc43, He4, scratch); jac.set(Sc43, Li6, 0.0); @@ -36327,23 +34136,23 @@ void jac_nuc(const burn_t& state, jac.set(Sc43, K38, 0.0); - scratch = screened_rates(k_He4_K39_to_Sc43_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K39_He4_to_Sc43_reaclib)*Y(He4)*state.rho; jac.set(Sc43, K39, scratch); - scratch = screened_rates(k_He4_K40_to_n_Sc43_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K40_He4_to_n_Sc43_reaclib)*Y(He4)*state.rho; jac.set(Sc43, K40, scratch); jac.set(Sc43, K41, 0.0); - scratch = screened_rates(k_He4_Ca40_to_p_Sc43_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca40_He4_to_p_Sc43_reaclib)*Y(He4)*state.rho; jac.set(Sc43, Ca40, scratch); jac.set(Sc43, Ca41, 0.0); - scratch = screened_rates(k_p_Ca42_to_Sc43_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca42_p_to_Sc43_reaclib)*Y(H1)*state.rho; jac.set(Sc43, Ca42, scratch); - scratch = screened_rates(k_Ca43_to_Sc43_weaktab) + screened_rates(k_p_Ca43_to_n_Sc43_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca43_p_to_n_Sc43_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca43_to_Sc43_beta_neg_weaktab); jac.set(Sc43, Ca43, scratch); jac.set(Sc43, Ca44, 0.0); @@ -36356,7 +34165,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc43, Ca48, 0.0); - scratch = -screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc43_to_Ca43_weaktab) - screened_rates(k_Sc43_to_He4_K39_reaclib) - screened_rates(k_Sc43_to_p_Ca42_reaclib) - screened_rates(k_n_Sc43_to_He4_K40_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc43_to_p_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc43_to_He4_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc43_n_to_He4_K40_reaclib)*Y(N)*state.rho - screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_Sc43_n_to_p_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_Sc43_p_to_He4_Ca40_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc43_to_Ca43_electron_capture_weaktab) - screened_rates(k_Sc43_to_He4_K39_reaclib) - screened_rates(k_Sc43_to_p_Ca42_reaclib); jac.set(Sc43, Sc43, scratch); scratch = screened_rates(k_Sc44_to_n_Sc43_reaclib); @@ -36377,7 +34186,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc43, Ti45, 0.0); - scratch = screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(H1)*state.rho; jac.set(Sc43, Ti46, scratch); jac.set(Sc43, Ti47, 0.0); @@ -36390,7 +34199,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc43, Ti51, 0.0); - scratch = screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(N)*state.rho; jac.set(Sc43, V46, scratch); scratch = screened_rates(k_V47_to_He4_Sc43_reaclib); @@ -36522,17 +34331,17 @@ void jac_nuc(const burn_t& state, jac.set(Sc43, Ge64, 0.0); - scratch = screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(Sc43)*state.rho - screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(Sc44)*state.rho - screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(Ti44)*state.rho + screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(V47)*state.rho; + scratch = screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(Ti44)*state.rho + screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(V47)*state.rho; jac.set(Sc44, N, scratch); - scratch = screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(Ca43)*state.rho + screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(Ca44)*state.rho - screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(Sc44)*state.rho - screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(Ti47)*state.rho; + scratch = screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(Ti47)*state.rho; jac.set(Sc44, H1, scratch); jac.set(Sc44, H2, 0.0); jac.set(Sc44, He3, 0.0); - scratch = screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(Ca41)*state.rho + screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(K40)*state.rho + screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(K41)*state.rho - screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(Sc44)*state.rho - screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(Sc44)*state.rho - screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(Sc44)*state.rho; + scratch = screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(Ca41)*state.rho + screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(K40)*state.rho + screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(K41)*state.rho - screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(Sc44)*state.rho; jac.set(Sc44, He4, scratch); jac.set(Sc44, Li6, 0.0); @@ -36663,23 +34472,23 @@ void jac_nuc(const burn_t& state, jac.set(Sc44, K39, 0.0); - scratch = screened_rates(k_He4_K40_to_Sc44_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K40_He4_to_Sc44_reaclib)*Y(He4)*state.rho; jac.set(Sc44, K40, scratch); - scratch = screened_rates(k_He4_K41_to_n_Sc44_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K41_He4_to_n_Sc44_reaclib)*Y(He4)*state.rho; jac.set(Sc44, K41, scratch); jac.set(Sc44, Ca40, 0.0); - scratch = screened_rates(k_He4_Ca41_to_p_Sc44_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca41_He4_to_p_Sc44_reaclib)*Y(He4)*state.rho; jac.set(Sc44, Ca41, scratch); jac.set(Sc44, Ca42, 0.0); - scratch = screened_rates(k_p_Ca43_to_Sc44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca43_p_to_Sc44_reaclib)*Y(H1)*state.rho; jac.set(Sc44, Ca43, scratch); - scratch = screened_rates(k_Ca44_to_Sc44_weaktab) + screened_rates(k_p_Ca44_to_n_Sc44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca44_p_to_n_Sc44_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca44_to_Sc44_beta_neg_weaktab); jac.set(Sc44, Ca44, scratch); jac.set(Sc44, Ca45, 0.0); @@ -36690,10 +34499,10 @@ void jac_nuc(const burn_t& state, jac.set(Sc44, Ca48, 0.0); - scratch = screened_rates(k_n_Sc43_to_Sc44_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc43_n_to_Sc44_reaclib)*Y(N)*state.rho; jac.set(Sc44, Sc43, scratch); - scratch = -screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc44_to_Ca44_weaktab) - screened_rates(k_Sc44_to_He4_K40_reaclib) - screened_rates(k_Sc44_to_Ti44_weaktab) - screened_rates(k_Sc44_to_n_Sc43_reaclib) - screened_rates(k_Sc44_to_p_Ca43_reaclib) - screened_rates(k_n_Sc44_to_He4_K41_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc44_to_p_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc44_to_He4_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc44_n_to_He4_K41_reaclib)*Y(N)*state.rho - screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_Sc44_n_to_p_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_Sc44_p_to_He4_Ca41_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc44_to_Ca44_electron_capture_weaktab) - screened_rates(k_Sc44_to_He4_K40_reaclib) - screened_rates(k_Sc44_to_Ti44_beta_neg_weaktab) - screened_rates(k_Sc44_to_n_Sc43_reaclib) - screened_rates(k_Sc44_to_p_Ca43_reaclib); jac.set(Sc44, Sc44, scratch); scratch = screened_rates(k_Sc45_to_n_Sc44_reaclib); @@ -36707,7 +34516,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc44, Sc49, 0.0); - scratch = screened_rates(k_Ti44_to_Sc44_weaktab) + screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(N)*state.rho + screened_rates(k_Ti44_to_Sc44_electron_capture_weaktab); jac.set(Sc44, Ti44, scratch); scratch = screened_rates(k_Ti45_to_p_Sc44_reaclib); @@ -36715,7 +34524,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc44, Ti46, 0.0); - scratch = screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(H1)*state.rho; jac.set(Sc44, Ti47, scratch); jac.set(Sc44, Ti48, 0.0); @@ -36728,7 +34537,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc44, V46, 0.0); - scratch = screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(N)*state.rho; jac.set(Sc44, V47, scratch); scratch = screened_rates(k_V48_to_He4_Sc44_reaclib); @@ -36858,17 +34667,17 @@ void jac_nuc(const burn_t& state, jac.set(Sc44, Ge64, 0.0); - scratch = screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(Ti45)*state.rho + screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(V48)*state.rho; + scratch = screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(Ti45)*state.rho + screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(V48)*state.rho; jac.set(Sc45, N, scratch); - scratch = screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(Ca44)*state.rho + screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(Ca45)*state.rho - screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(Sc45)*state.rho - screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(Ti48)*state.rho; + scratch = screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(Ti48)*state.rho; jac.set(Sc45, H1, scratch); jac.set(Sc45, H2, 0.0); jac.set(Sc45, He3, 0.0); - scratch = screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(Ca42)*state.rho + screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(K41)*state.rho - screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(Sc45)*state.rho - screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(Sc45)*state.rho - screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(Sc45)*state.rho; + scratch = screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(Ca42)*state.rho + screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(K41)*state.rho - screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(Sc45)*state.rho; jac.set(Sc45, He4, scratch); jac.set(Sc45, Li6, 0.0); @@ -37001,22 +34810,22 @@ void jac_nuc(const burn_t& state, jac.set(Sc45, K40, 0.0); - scratch = screened_rates(k_He4_K41_to_Sc45_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_K41_He4_to_Sc45_reaclib)*Y(He4)*state.rho; jac.set(Sc45, K41, scratch); jac.set(Sc45, Ca40, 0.0); jac.set(Sc45, Ca41, 0.0); - scratch = screened_rates(k_He4_Ca42_to_p_Sc45_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca42_He4_to_p_Sc45_reaclib)*Y(He4)*state.rho; jac.set(Sc45, Ca42, scratch); jac.set(Sc45, Ca43, 0.0); - scratch = screened_rates(k_p_Ca44_to_Sc45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca44_p_to_Sc45_reaclib)*Y(H1)*state.rho; jac.set(Sc45, Ca44, scratch); - scratch = screened_rates(k_Ca45_to_Sc45_weaktab) + screened_rates(k_p_Ca45_to_n_Sc45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca45_p_to_n_Sc45_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca45_to_Sc45_beta_neg_weaktab); jac.set(Sc45, Ca45, scratch); jac.set(Sc45, Ca46, 0.0); @@ -37027,10 +34836,10 @@ void jac_nuc(const burn_t& state, jac.set(Sc45, Sc43, 0.0); - scratch = screened_rates(k_n_Sc44_to_Sc45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc44_n_to_Sc45_reaclib)*Y(N)*state.rho; jac.set(Sc45, Sc44, scratch); - scratch = -screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc45_to_Ca45_weaktab) - screened_rates(k_Sc45_to_He4_K41_reaclib) - screened_rates(k_Sc45_to_Ti45_weaktab) - screened_rates(k_Sc45_to_n_Sc44_reaclib) - screened_rates(k_Sc45_to_p_Ca44_reaclib) - screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc45_to_p_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc45_to_He4_Ca42_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_Sc45_n_to_p_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_Sc45_p_to_He4_Ca42_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc45_to_Ca45_electron_capture_weaktab) - screened_rates(k_Sc45_to_He4_K41_reaclib) - screened_rates(k_Sc45_to_Ti45_beta_neg_weaktab) - screened_rates(k_Sc45_to_n_Sc44_reaclib) - screened_rates(k_Sc45_to_p_Ca44_reaclib); jac.set(Sc45, Sc45, scratch); scratch = screened_rates(k_Sc46_to_n_Sc45_reaclib); @@ -37044,7 +34853,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc45, Ti44, 0.0); - scratch = screened_rates(k_Ti45_to_Sc45_weaktab) + screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(N)*state.rho + screened_rates(k_Ti45_to_Sc45_electron_capture_weaktab); jac.set(Sc45, Ti45, scratch); scratch = screened_rates(k_Ti46_to_p_Sc45_reaclib); @@ -37052,7 +34861,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc45, Ti47, 0.0); - scratch = screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(H1)*state.rho; jac.set(Sc45, Ti48, scratch); jac.set(Sc45, Ti49, 0.0); @@ -37065,7 +34874,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc45, V47, 0.0); - scratch = screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(N)*state.rho; jac.set(Sc45, V48, scratch); scratch = screened_rates(k_V49_to_He4_Sc45_reaclib); @@ -37193,17 +35002,17 @@ void jac_nuc(const burn_t& state, jac.set(Sc45, Ge64, 0.0); - scratch = screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(V49)*state.rho; + scratch = screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(V49)*state.rho; jac.set(Sc46, N, scratch); - scratch = screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(Ca45)*state.rho + screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(Ca46)*state.rho - screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(Sc46)*state.rho - screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(Ti49)*state.rho; + scratch = screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(Ca45)*state.rho + screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(Ti49)*state.rho; jac.set(Sc46, H1, scratch); jac.set(Sc46, H2, 0.0); jac.set(Sc46, He3, 0.0); - scratch = screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(Ca43)*state.rho - screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(Sc46)*state.rho - screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(Sc46)*state.rho - screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(Sc46)*state.rho; + scratch = screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(Ca43)*state.rho - screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(Sc46)*state.rho; jac.set(Sc46, He4, scratch); jac.set(Sc46, Li6, 0.0); @@ -37344,15 +35153,15 @@ void jac_nuc(const burn_t& state, jac.set(Sc46, Ca42, 0.0); - scratch = screened_rates(k_He4_Ca43_to_p_Sc46_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca43_He4_to_p_Sc46_reaclib)*Y(He4)*state.rho; jac.set(Sc46, Ca43, scratch); jac.set(Sc46, Ca44, 0.0); - scratch = screened_rates(k_p_Ca45_to_Sc46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca45_p_to_Sc46_reaclib)*Y(H1)*state.rho; jac.set(Sc46, Ca45, scratch); - scratch = screened_rates(k_Ca46_to_Sc46_weaktab) + screened_rates(k_p_Ca46_to_n_Sc46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca46_p_to_n_Sc46_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca46_to_Sc46_beta_neg_weaktab); jac.set(Sc46, Ca46, scratch); jac.set(Sc46, Ca47, 0.0); @@ -37363,10 +35172,10 @@ void jac_nuc(const burn_t& state, jac.set(Sc46, Sc44, 0.0); - scratch = screened_rates(k_n_Sc45_to_Sc46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc45_n_to_Sc46_reaclib)*Y(N)*state.rho; jac.set(Sc46, Sc45, scratch); - scratch = -screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc46_to_Ca46_weaktab) - screened_rates(k_Sc46_to_Ti46_weaktab) - screened_rates(k_Sc46_to_n_Sc45_reaclib) - screened_rates(k_Sc46_to_p_Ca45_reaclib) - screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc46_to_p_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc46_to_He4_Ca43_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_Sc46_n_to_p_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_Sc46_p_to_He4_Ca43_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc46_to_Ca46_electron_capture_weaktab) - screened_rates(k_Sc46_to_Ti46_beta_neg_weaktab) - screened_rates(k_Sc46_to_n_Sc45_reaclib) - screened_rates(k_Sc46_to_p_Ca45_reaclib); jac.set(Sc46, Sc46, scratch); scratch = screened_rates(k_Sc47_to_n_Sc46_reaclib); @@ -37380,7 +35189,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc46, Ti45, 0.0); - scratch = screened_rates(k_Ti46_to_Sc46_weaktab) + screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(N)*state.rho + screened_rates(k_Ti46_to_Sc46_electron_capture_weaktab); jac.set(Sc46, Ti46, scratch); scratch = screened_rates(k_Ti47_to_p_Sc46_reaclib); @@ -37388,7 +35197,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc46, Ti48, 0.0); - scratch = screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(H1)*state.rho; jac.set(Sc46, Ti49, scratch); jac.set(Sc46, Ti50, 0.0); @@ -37401,7 +35210,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc46, V48, 0.0); - scratch = screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(N)*state.rho; jac.set(Sc46, V49, scratch); scratch = screened_rates(k_V50_to_He4_Sc46_reaclib); @@ -37527,17 +35336,17 @@ void jac_nuc(const burn_t& state, jac.set(Sc46, Ge64, 0.0); - scratch = screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(V50)*state.rho; + scratch = screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(V50)*state.rho; jac.set(Sc47, N, scratch); - scratch = screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(Ca46)*state.rho + screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(Ca47)*state.rho - screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(Sc47)*state.rho - screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(Ti50)*state.rho; + scratch = screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(Ca46)*state.rho + screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(Ca47)*state.rho - screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(Ti50)*state.rho; jac.set(Sc47, H1, scratch); jac.set(Sc47, H2, 0.0); jac.set(Sc47, He3, 0.0); - scratch = screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(Ca44)*state.rho - screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(Sc47)*state.rho - screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(Sc47)*state.rho - screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(Sc47)*state.rho; + scratch = screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(Ca44)*state.rho - screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(Sc47)*state.rho; jac.set(Sc47, He4, scratch); jac.set(Sc47, Li6, 0.0); @@ -37680,15 +35489,15 @@ void jac_nuc(const burn_t& state, jac.set(Sc47, Ca43, 0.0); - scratch = screened_rates(k_He4_Ca44_to_p_Sc47_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca44_He4_to_p_Sc47_reaclib)*Y(He4)*state.rho; jac.set(Sc47, Ca44, scratch); jac.set(Sc47, Ca45, 0.0); - scratch = screened_rates(k_p_Ca46_to_Sc47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca46_p_to_Sc47_reaclib)*Y(H1)*state.rho; jac.set(Sc47, Ca46, scratch); - scratch = screened_rates(k_Ca47_to_Sc47_weaktab) + screened_rates(k_p_Ca47_to_n_Sc47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca47_p_to_n_Sc47_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca47_to_Sc47_beta_neg_weaktab); jac.set(Sc47, Ca47, scratch); jac.set(Sc47, Ca48, 0.0); @@ -37699,10 +35508,10 @@ void jac_nuc(const burn_t& state, jac.set(Sc47, Sc45, 0.0); - scratch = screened_rates(k_n_Sc46_to_Sc47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc46_n_to_Sc47_reaclib)*Y(N)*state.rho; jac.set(Sc47, Sc46, scratch); - scratch = -screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc47_to_Ca47_weaktab) - screened_rates(k_Sc47_to_Ti47_weaktab) - screened_rates(k_Sc47_to_n_Sc46_reaclib) - screened_rates(k_Sc47_to_p_Ca46_reaclib) - screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc47_to_p_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc47_to_He4_Ca44_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_Sc47_n_to_p_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_Sc47_p_to_He4_Ca44_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc47_to_Ca47_electron_capture_weaktab) - screened_rates(k_Sc47_to_Ti47_beta_neg_weaktab) - screened_rates(k_Sc47_to_n_Sc46_reaclib) - screened_rates(k_Sc47_to_p_Ca46_reaclib); jac.set(Sc47, Sc47, scratch); scratch = screened_rates(k_Sc48_to_n_Sc47_reaclib); @@ -37716,7 +35525,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc47, Ti46, 0.0); - scratch = screened_rates(k_Ti47_to_Sc47_weaktab) + screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(N)*state.rho + screened_rates(k_Ti47_to_Sc47_electron_capture_weaktab); jac.set(Sc47, Ti47, scratch); scratch = screened_rates(k_Ti48_to_p_Sc47_reaclib); @@ -37724,7 +35533,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc47, Ti49, 0.0); - scratch = screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(H1)*state.rho; jac.set(Sc47, Ti50, scratch); jac.set(Sc47, Ti51, 0.0); @@ -37737,7 +35546,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc47, V49, 0.0); - scratch = screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(N)*state.rho; jac.set(Sc47, V50, scratch); scratch = screened_rates(k_V51_to_He4_Sc47_reaclib); @@ -37861,17 +35670,17 @@ void jac_nuc(const burn_t& state, jac.set(Sc47, Ge64, 0.0); - scratch = screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(Sc48)*state.rho - screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(V51)*state.rho; + scratch = screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(V51)*state.rho; jac.set(Sc48, N, scratch); - scratch = screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(Ca47)*state.rho + screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(Ca48)*state.rho - screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(Sc48)*state.rho - screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(Sc48)*state.rho - screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(Ti51)*state.rho; + scratch = screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(Ca47)*state.rho + screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(Ca48)*state.rho - screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(Ti51)*state.rho; jac.set(Sc48, H1, scratch); jac.set(Sc48, H2, 0.0); jac.set(Sc48, He3, 0.0); - scratch = screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(Ca45)*state.rho - screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(Sc48)*state.rho - screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(Sc48)*state.rho - screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(Sc48)*state.rho; + scratch = screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(Ca45)*state.rho - screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(Sc48)*state.rho; jac.set(Sc48, He4, scratch); jac.set(Sc48, Li6, 0.0); @@ -38016,15 +35825,15 @@ void jac_nuc(const burn_t& state, jac.set(Sc48, Ca44, 0.0); - scratch = screened_rates(k_He4_Ca45_to_p_Sc48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca45_He4_to_p_Sc48_reaclib)*Y(He4)*state.rho; jac.set(Sc48, Ca45, scratch); jac.set(Sc48, Ca46, 0.0); - scratch = screened_rates(k_p_Ca47_to_Sc48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca47_p_to_Sc48_reaclib)*Y(H1)*state.rho; jac.set(Sc48, Ca47, scratch); - scratch = screened_rates(k_Ca48_to_Sc48_weaktab) + screened_rates(k_p_Ca48_to_n_Sc48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca48_p_to_n_Sc48_reaclib)*Y(H1)*state.rho + screened_rates(k_Ca48_to_Sc48_beta_neg_weaktab); jac.set(Sc48, Ca48, scratch); jac.set(Sc48, Sc43, 0.0); @@ -38035,10 +35844,10 @@ void jac_nuc(const burn_t& state, jac.set(Sc48, Sc46, 0.0); - scratch = screened_rates(k_n_Sc47_to_Sc48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc47_n_to_Sc48_reaclib)*Y(N)*state.rho; jac.set(Sc48, Sc47, scratch); - scratch = -screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc48_to_Ca48_weaktab) - screened_rates(k_Sc48_to_Ti48_weaktab) - screened_rates(k_Sc48_to_n_Sc47_reaclib) - screened_rates(k_Sc48_to_p_Ca47_reaclib) - screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Sc48_to_p_Ca48_reaclib)*Y(N)*state.rho - screened_rates(k_p_Sc48_to_He4_Ca45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_Sc48_n_to_p_Ca48_reaclib)*Y(N)*state.rho - screened_rates(k_Sc48_p_to_He4_Ca45_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc48_to_Ca48_electron_capture_weaktab) - screened_rates(k_Sc48_to_Ti48_beta_neg_weaktab) - screened_rates(k_Sc48_to_n_Sc47_reaclib) - screened_rates(k_Sc48_to_p_Ca47_reaclib); jac.set(Sc48, Sc48, scratch); scratch = screened_rates(k_Sc49_to_n_Sc48_reaclib); @@ -38052,7 +35861,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc48, Ti47, 0.0); - scratch = screened_rates(k_Ti48_to_Sc48_weaktab) + screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(N)*state.rho + screened_rates(k_Ti48_to_Sc48_electron_capture_weaktab); jac.set(Sc48, Ti48, scratch); scratch = screened_rates(k_Ti49_to_p_Sc48_reaclib); @@ -38060,7 +35869,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc48, Ti50, 0.0); - scratch = screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(H1)*state.rho; jac.set(Sc48, Ti51, scratch); jac.set(Sc48, V46, 0.0); @@ -38073,7 +35882,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc48, V50, 0.0); - scratch = screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(N)*state.rho; jac.set(Sc48, V51, scratch); scratch = screened_rates(k_V52_to_He4_Sc48_reaclib); @@ -38195,17 +36004,17 @@ void jac_nuc(const burn_t& state, jac.set(Sc48, Ge64, 0.0); - scratch = screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(Sc48)*state.rho + screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(V52)*state.rho; + scratch = screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(V52)*state.rho; jac.set(Sc49, N, scratch); - scratch = screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(Ca48)*state.rho - screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(Sc49)*state.rho - screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(Sc49)*state.rho - screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(Sc49)*state.rho; + scratch = screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(Ca48)*state.rho - screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(Sc49)*state.rho - screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(Sc49)*state.rho - screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(Sc49)*state.rho; jac.set(Sc49, H1, scratch); jac.set(Sc49, H2, 0.0); jac.set(Sc49, He3, 0.0); - scratch = screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(Ca46)*state.rho - screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(Sc49)*state.rho; + scratch = screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(Ca46)*state.rho - screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(Sc49)*state.rho; jac.set(Sc49, He4, scratch); jac.set(Sc49, Li6, 0.0); @@ -38352,12 +36161,12 @@ void jac_nuc(const burn_t& state, jac.set(Sc49, Ca45, 0.0); - scratch = screened_rates(k_He4_Ca46_to_p_Sc49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca46_He4_to_p_Sc49_reaclib)*Y(He4)*state.rho; jac.set(Sc49, Ca46, scratch); jac.set(Sc49, Ca47, 0.0); - scratch = screened_rates(k_p_Ca48_to_Sc49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ca48_p_to_Sc49_reaclib)*Y(H1)*state.rho; jac.set(Sc49, Ca48, scratch); jac.set(Sc49, Sc43, 0.0); @@ -38370,10 +36179,10 @@ void jac_nuc(const burn_t& state, jac.set(Sc49, Sc47, 0.0); - scratch = screened_rates(k_n_Sc48_to_Sc49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Sc48_n_to_Sc49_reaclib)*Y(N)*state.rho; jac.set(Sc49, Sc48, scratch); - scratch = -screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc49_to_Ti49_weaktab) - screened_rates(k_Sc49_to_n_Sc48_reaclib) - screened_rates(k_Sc49_to_p_Ca48_reaclib) - screened_rates(k_p_Sc49_to_He4_Ca46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(He4)*state.rho - screened_rates(k_Sc49_p_to_He4_Ca46_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_Sc49_to_Ti49_beta_neg_weaktab) - screened_rates(k_Sc49_to_n_Sc48_reaclib) - screened_rates(k_Sc49_to_p_Ca48_reaclib); jac.set(Sc49, Sc49, scratch); jac.set(Sc49, Ti44, 0.0); @@ -38386,7 +36195,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc49, Ti48, 0.0); - scratch = screened_rates(k_Ti49_to_Sc49_weaktab) + screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(N)*state.rho + screened_rates(k_Ti49_to_Sc49_electron_capture_weaktab); jac.set(Sc49, Ti49, scratch); scratch = screened_rates(k_Ti50_to_p_Sc49_reaclib); @@ -38406,7 +36215,7 @@ void jac_nuc(const burn_t& state, jac.set(Sc49, V51, 0.0); - scratch = screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(N)*state.rho; jac.set(Sc49, V52, scratch); jac.set(Sc49, Cr48, 0.0); @@ -38525,17 +36334,17 @@ void jac_nuc(const burn_t& state, jac.set(Sc49, Ge64, 0.0); - scratch = -screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(Ti44)*state.rho - screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(Ti44)*state.rho - screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(Ti44)*state.rho; + scratch = -screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(Ti44)*state.rho; jac.set(Ti44, N, scratch); - scratch = screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(Sc43)*state.rho + screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(V47)*state.rho; + scratch = screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(Sc44)*state.rho + screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(V47)*state.rho; jac.set(Ti44, H1, scratch); jac.set(Ti44, H2, 0.0); jac.set(Ti44, He3, 0.0); - scratch = screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(Ca40)*state.rho + screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(Ca41)*state.rho - screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(Ti44)*state.rho - screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(Ti44)*state.rho; + scratch = screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(Ca40)*state.rho + screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(Ca41)*state.rho - screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(Ti44)*state.rho; jac.set(Ti44, He4, scratch); jac.set(Ti44, Li6, 0.0); @@ -38670,10 +36479,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti44, K41, 0.0); - scratch = screened_rates(k_He4_Ca40_to_Ti44_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca40_He4_to_Ti44_reaclib)*Y(He4)*state.rho; jac.set(Ti44, Ca40, scratch); - scratch = screened_rates(k_He4_Ca41_to_n_Ti44_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca41_He4_to_n_Ti44_reaclib)*Y(He4)*state.rho; jac.set(Ti44, Ca41, scratch); jac.set(Ti44, Ca42, 0.0); @@ -38690,10 +36499,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti44, Ca48, 0.0); - scratch = screened_rates(k_p_Sc43_to_Ti44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc43_p_to_Ti44_reaclib)*Y(H1)*state.rho; jac.set(Ti44, Sc43, scratch); - scratch = screened_rates(k_Sc44_to_Ti44_weaktab) + screened_rates(k_p_Sc44_to_n_Ti44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc44_p_to_n_Ti44_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc44_to_Ti44_beta_neg_weaktab); jac.set(Ti44, Sc44, scratch); jac.set(Ti44, Sc45, 0.0); @@ -38706,7 +36515,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti44, Sc49, 0.0); - scratch = -screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti44_to_He4_Ca40_reaclib) - screened_rates(k_Ti44_to_Sc44_weaktab) - screened_rates(k_Ti44_to_p_Sc43_reaclib) - screened_rates(k_n_Ti44_to_He4_Ca41_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti44_to_p_Sc44_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti44_n_to_He4_Ca41_reaclib)*Y(N)*state.rho - screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(N)*state.rho - screened_rates(k_Ti44_n_to_p_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_Ti44_to_He4_Ca40_reaclib) - screened_rates(k_Ti44_to_Sc44_electron_capture_weaktab) - screened_rates(k_Ti44_to_p_Sc43_reaclib); jac.set(Ti44, Ti44, scratch); scratch = screened_rates(k_Ti45_to_n_Ti44_reaclib); @@ -38726,7 +36535,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti44, V46, 0.0); - scratch = screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(H1)*state.rho; jac.set(Ti44, V47, scratch); jac.set(Ti44, V48, 0.0); @@ -38856,17 +36665,17 @@ void jac_nuc(const burn_t& state, jac.set(Ti44, Ge64, 0.0); - scratch = screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(Cr48)*state.rho + screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(Ti44)*state.rho - screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(Ti45)*state.rho - screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(Ti45)*state.rho - screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(Ti45)*state.rho; + scratch = screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(Ti44)*state.rho - screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(Ti45)*state.rho; jac.set(Ti45, N, scratch); - scratch = screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(Sc44)*state.rho + screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(Sc45)*state.rho - screened_rates(k_p_Ti45_to_V46_reaclib)*Y(Ti45)*state.rho + screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(V48)*state.rho; + scratch = screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Ti45_p_to_V46_reaclib)*Y(Ti45)*state.rho + screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(V48)*state.rho; jac.set(Ti45, H1, scratch); jac.set(Ti45, H2, 0.0); jac.set(Ti45, He3, 0.0); - scratch = screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(Ca41)*state.rho + screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(Ca42)*state.rho - screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(Ti45)*state.rho - screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(Ti45)*state.rho - screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(Ti45)*state.rho; + scratch = screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(Ca41)*state.rho + screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(Ca42)*state.rho - screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(Ti45)*state.rho; jac.set(Ti45, He4, scratch); jac.set(Ti45, Li6, 0.0); @@ -39003,10 +36812,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti45, Ca40, 0.0); - scratch = screened_rates(k_He4_Ca41_to_Ti45_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca41_He4_to_Ti45_reaclib)*Y(He4)*state.rho; jac.set(Ti45, Ca41, scratch); - scratch = screened_rates(k_He4_Ca42_to_n_Ti45_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca42_He4_to_n_Ti45_reaclib)*Y(He4)*state.rho; jac.set(Ti45, Ca42, scratch); jac.set(Ti45, Ca43, 0.0); @@ -39023,10 +36832,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti45, Sc43, 0.0); - scratch = screened_rates(k_p_Sc44_to_Ti45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc44_p_to_Ti45_reaclib)*Y(H1)*state.rho; jac.set(Ti45, Sc44, scratch); - scratch = screened_rates(k_Sc45_to_Ti45_weaktab) + screened_rates(k_p_Sc45_to_n_Ti45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc45_p_to_n_Ti45_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc45_to_Ti45_beta_neg_weaktab); jac.set(Ti45, Sc45, scratch); jac.set(Ti45, Sc46, 0.0); @@ -39037,10 +36846,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti45, Sc49, 0.0); - scratch = screened_rates(k_n_Ti44_to_Ti45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti44_n_to_Ti45_reaclib)*Y(N)*state.rho; jac.set(Ti45, Ti44, scratch); - scratch = -screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti45_to_He4_Ca41_reaclib) - screened_rates(k_Ti45_to_Sc45_weaktab) - screened_rates(k_Ti45_to_n_Ti44_reaclib) - screened_rates(k_Ti45_to_p_Sc44_reaclib) - screened_rates(k_n_Ti45_to_He4_Ca42_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti45_to_p_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti45_to_V46_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti45_n_to_He4_Ca42_reaclib)*Y(N)*state.rho - screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_Ti45_n_to_p_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_Ti45_p_to_V46_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti45_to_He4_Ca41_reaclib) - screened_rates(k_Ti45_to_Sc45_electron_capture_weaktab) - screened_rates(k_Ti45_to_n_Ti44_reaclib) - screened_rates(k_Ti45_to_p_Sc44_reaclib); jac.set(Ti45, Ti45, scratch); scratch = screened_rates(k_Ti46_to_n_Ti45_reaclib); @@ -39061,7 +36870,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti45, V47, 0.0); - scratch = screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(H1)*state.rho; jac.set(Ti45, V48, scratch); jac.set(Ti45, V49, 0.0); @@ -39072,7 +36881,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti45, V52, 0.0); - scratch = screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(N)*state.rho; jac.set(Ti45, Cr48, scratch); scratch = screened_rates(k_Cr49_to_He4_Ti45_reaclib); @@ -39190,17 +36999,17 @@ void jac_nuc(const burn_t& state, jac.set(Ti45, Ge64, 0.0); - scratch = screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(Cr49)*state.rho + screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(Ti45)*state.rho - screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(Ti46)*state.rho - screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(V46)*state.rho; + scratch = screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(Ti45)*state.rho - screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(V46)*state.rho; jac.set(Ti46, N, scratch); - scratch = screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(Sc45)*state.rho + screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(Sc46)*state.rho - screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(Ti46)*state.rho - screened_rates(k_p_Ti46_to_V47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(V49)*state.rho; + scratch = screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_p_to_V47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(Ti46)*state.rho + screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(V49)*state.rho; jac.set(Ti46, H1, scratch); jac.set(Ti46, H2, 0.0); jac.set(Ti46, He3, 0.0); - scratch = screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(Ca42)*state.rho + screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(Ca43)*state.rho + screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(Ti46)*state.rho - screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(Ti46)*state.rho - screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(Ti46)*state.rho; + scratch = screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(Ca42)*state.rho + screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(Ti46)*state.rho; jac.set(Ti46, He4, scratch); jac.set(Ti46, Li6, 0.0); @@ -39339,10 +37148,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti46, Ca41, 0.0); - scratch = screened_rates(k_He4_Ca42_to_Ti46_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca42_He4_to_Ti46_reaclib)*Y(He4)*state.rho; jac.set(Ti46, Ca42, scratch); - scratch = screened_rates(k_He4_Ca43_to_n_Ti46_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca43_He4_to_n_Ti46_reaclib)*Y(He4)*state.rho; jac.set(Ti46, Ca43, scratch); jac.set(Ti46, Ca44, 0.0); @@ -39355,15 +37164,15 @@ void jac_nuc(const burn_t& state, jac.set(Ti46, Ca48, 0.0); - scratch = screened_rates(k_He4_Sc43_to_p_Ti46_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc43_He4_to_p_Ti46_reaclib)*Y(He4)*state.rho; jac.set(Ti46, Sc43, scratch); jac.set(Ti46, Sc44, 0.0); - scratch = screened_rates(k_p_Sc45_to_Ti46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc45_p_to_Ti46_reaclib)*Y(H1)*state.rho; jac.set(Ti46, Sc45, scratch); - scratch = screened_rates(k_Sc46_to_Ti46_weaktab) + screened_rates(k_p_Sc46_to_n_Ti46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc46_p_to_n_Ti46_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc46_to_Ti46_beta_neg_weaktab); jac.set(Ti46, Sc46, scratch); jac.set(Ti46, Sc47, 0.0); @@ -39374,10 +37183,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti46, Ti44, 0.0); - scratch = screened_rates(k_n_Ti45_to_Ti46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti45_n_to_Ti46_reaclib)*Y(N)*state.rho; jac.set(Ti46, Ti45, scratch); - scratch = -screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti46_to_He4_Ca42_reaclib) - screened_rates(k_Ti46_to_Sc46_weaktab) - screened_rates(k_Ti46_to_V46_weaktab) - screened_rates(k_Ti46_to_n_Ti45_reaclib) - screened_rates(k_Ti46_to_p_Sc45_reaclib) - screened_rates(k_n_Ti46_to_He4_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti46_to_p_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti46_to_He4_Sc43_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti46_to_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti46_n_to_He4_Ca43_reaclib)*Y(N)*state.rho - screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_Ti46_n_to_p_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_Ti46_p_to_He4_Sc43_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti46_p_to_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti46_to_He4_Ca42_reaclib) - screened_rates(k_Ti46_to_Sc46_electron_capture_weaktab) - screened_rates(k_Ti46_to_V46_beta_neg_weaktab) - screened_rates(k_Ti46_to_n_Ti45_reaclib) - screened_rates(k_Ti46_to_p_Sc45_reaclib); jac.set(Ti46, Ti46, scratch); scratch = screened_rates(k_Ti47_to_n_Ti46_reaclib); @@ -39391,7 +37200,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti46, Ti51, 0.0); - scratch = screened_rates(k_V46_to_Ti46_weaktab) + screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(N)*state.rho + screened_rates(k_V46_to_Ti46_electron_capture_weaktab); jac.set(Ti46, V46, scratch); scratch = screened_rates(k_V47_to_p_Ti46_reaclib); @@ -39399,7 +37208,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti46, V48, 0.0); - scratch = screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(H1)*state.rho; jac.set(Ti46, V49, scratch); jac.set(Ti46, V50, 0.0); @@ -39410,7 +37219,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti46, Cr48, 0.0); - scratch = screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(N)*state.rho; jac.set(Ti46, Cr49, scratch); scratch = screened_rates(k_Cr50_to_He4_Ti46_reaclib); @@ -39526,17 +37335,17 @@ void jac_nuc(const burn_t& state, jac.set(Ti46, Ge64, 0.0); - scratch = screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(Cr50)*state.rho + screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(Ti47)*state.rho - screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(V47)*state.rho; + scratch = screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(Ti46)*state.rho - screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(V47)*state.rho; jac.set(Ti47, N, scratch); - scratch = screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(Sc46)*state.rho + screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(Sc47)*state.rho - screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(Ti47)*state.rho - screened_rates(k_p_Ti47_to_V48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(V50)*state.rho; + scratch = screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_p_to_V48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(Ti47)*state.rho + screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(V50)*state.rho; jac.set(Ti47, H1, scratch); jac.set(Ti47, H2, 0.0); jac.set(Ti47, He3, 0.0); - scratch = screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(Ca43)*state.rho + screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(Ca44)*state.rho + screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(Sc44)*state.rho - screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(Ti47)*state.rho - screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(Ti47)*state.rho - screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(Ti47)*state.rho; + scratch = screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(Ca43)*state.rho + screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(Sc44)*state.rho - screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(Ti47)*state.rho; jac.set(Ti47, He4, scratch); jac.set(Ti47, Li6, 0.0); @@ -39677,10 +37486,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti47, Ca42, 0.0); - scratch = screened_rates(k_He4_Ca43_to_Ti47_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca43_He4_to_Ti47_reaclib)*Y(He4)*state.rho; jac.set(Ti47, Ca43, scratch); - scratch = screened_rates(k_He4_Ca44_to_n_Ti47_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca44_He4_to_n_Ti47_reaclib)*Y(He4)*state.rho; jac.set(Ti47, Ca44, scratch); jac.set(Ti47, Ca45, 0.0); @@ -39693,15 +37502,15 @@ void jac_nuc(const burn_t& state, jac.set(Ti47, Sc43, 0.0); - scratch = screened_rates(k_He4_Sc44_to_p_Ti47_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc44_He4_to_p_Ti47_reaclib)*Y(He4)*state.rho; jac.set(Ti47, Sc44, scratch); jac.set(Ti47, Sc45, 0.0); - scratch = screened_rates(k_p_Sc46_to_Ti47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc46_p_to_Ti47_reaclib)*Y(H1)*state.rho; jac.set(Ti47, Sc46, scratch); - scratch = screened_rates(k_Sc47_to_Ti47_weaktab) + screened_rates(k_p_Sc47_to_n_Ti47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc47_p_to_n_Ti47_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc47_to_Ti47_beta_neg_weaktab); jac.set(Ti47, Sc47, scratch); jac.set(Ti47, Sc48, 0.0); @@ -39712,10 +37521,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti47, Ti45, 0.0); - scratch = screened_rates(k_n_Ti46_to_Ti47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti46_n_to_Ti47_reaclib)*Y(N)*state.rho; jac.set(Ti47, Ti46, scratch); - scratch = -screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti47_to_He4_Ca43_reaclib) - screened_rates(k_Ti47_to_Sc47_weaktab) - screened_rates(k_Ti47_to_V47_weaktab) - screened_rates(k_Ti47_to_n_Ti46_reaclib) - screened_rates(k_Ti47_to_p_Sc46_reaclib) - screened_rates(k_n_Ti47_to_He4_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti47_to_p_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti47_to_He4_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti47_to_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti47_n_to_He4_Ca44_reaclib)*Y(N)*state.rho - screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_Ti47_n_to_p_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_Ti47_p_to_He4_Sc44_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti47_p_to_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti47_to_He4_Ca43_reaclib) - screened_rates(k_Ti47_to_Sc47_electron_capture_weaktab) - screened_rates(k_Ti47_to_V47_beta_neg_weaktab) - screened_rates(k_Ti47_to_n_Ti46_reaclib) - screened_rates(k_Ti47_to_p_Sc46_reaclib); jac.set(Ti47, Ti47, scratch); scratch = screened_rates(k_Ti48_to_n_Ti47_reaclib); @@ -39729,7 +37538,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti47, V46, 0.0); - scratch = screened_rates(k_V47_to_Ti47_weaktab) + screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(N)*state.rho + screened_rates(k_V47_to_Ti47_electron_capture_weaktab); jac.set(Ti47, V47, scratch); scratch = screened_rates(k_V48_to_p_Ti47_reaclib); @@ -39737,7 +37546,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti47, V49, 0.0); - scratch = screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(H1)*state.rho; jac.set(Ti47, V50, scratch); jac.set(Ti47, V51, 0.0); @@ -39748,7 +37557,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti47, Cr49, 0.0); - scratch = screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(N)*state.rho; jac.set(Ti47, Cr50, scratch); scratch = screened_rates(k_Cr51_to_He4_Ti47_reaclib); @@ -39862,17 +37671,17 @@ void jac_nuc(const burn_t& state, jac.set(Ti47, Ge64, 0.0); - scratch = screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(Cr51)*state.rho + screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(Ti48)*state.rho - screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(V48)*state.rho; + scratch = screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(Ti47)*state.rho - screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(V48)*state.rho; jac.set(Ti48, N, scratch); - scratch = screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(Sc47)*state.rho + screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(Sc48)*state.rho - screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(Ti48)*state.rho - screened_rates(k_p_Ti48_to_V49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(V51)*state.rho; + scratch = screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_p_to_V49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(Ti48)*state.rho + screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(V51)*state.rho; jac.set(Ti48, H1, scratch); jac.set(Ti48, H2, 0.0); jac.set(Ti48, He3, 0.0); - scratch = screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(Ca44)*state.rho + screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(Ca45)*state.rho + screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(Sc45)*state.rho - screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(Ti48)*state.rho - screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(Ti48)*state.rho - screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(Ti48)*state.rho; + scratch = screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(Ca44)*state.rho + screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(Ca45)*state.rho + screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(Sc45)*state.rho - screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(Ti48)*state.rho; jac.set(Ti48, He4, scratch); jac.set(Ti48, Li6, 0.0); @@ -40015,10 +37824,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti48, Ca43, 0.0); - scratch = screened_rates(k_He4_Ca44_to_Ti48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca44_He4_to_Ti48_reaclib)*Y(He4)*state.rho; jac.set(Ti48, Ca44, scratch); - scratch = screened_rates(k_He4_Ca45_to_n_Ti48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca45_He4_to_n_Ti48_reaclib)*Y(He4)*state.rho; jac.set(Ti48, Ca45, scratch); jac.set(Ti48, Ca46, 0.0); @@ -40031,15 +37840,15 @@ void jac_nuc(const burn_t& state, jac.set(Ti48, Sc44, 0.0); - scratch = screened_rates(k_He4_Sc45_to_p_Ti48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc45_He4_to_p_Ti48_reaclib)*Y(He4)*state.rho; jac.set(Ti48, Sc45, scratch); jac.set(Ti48, Sc46, 0.0); - scratch = screened_rates(k_p_Sc47_to_Ti48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc47_p_to_Ti48_reaclib)*Y(H1)*state.rho; jac.set(Ti48, Sc47, scratch); - scratch = screened_rates(k_Sc48_to_Ti48_weaktab) + screened_rates(k_p_Sc48_to_n_Ti48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc48_p_to_n_Ti48_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc48_to_Ti48_beta_neg_weaktab); jac.set(Ti48, Sc48, scratch); jac.set(Ti48, Sc49, 0.0); @@ -40050,10 +37859,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti48, Ti46, 0.0); - scratch = screened_rates(k_n_Ti47_to_Ti48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti47_n_to_Ti48_reaclib)*Y(N)*state.rho; jac.set(Ti48, Ti47, scratch); - scratch = -screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti48_to_He4_Ca44_reaclib) - screened_rates(k_Ti48_to_Sc48_weaktab) - screened_rates(k_Ti48_to_V48_weaktab) - screened_rates(k_Ti48_to_n_Ti47_reaclib) - screened_rates(k_Ti48_to_p_Sc47_reaclib) - screened_rates(k_n_Ti48_to_He4_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti48_to_p_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti48_to_He4_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti48_to_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti48_n_to_He4_Ca45_reaclib)*Y(N)*state.rho - screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_Ti48_n_to_p_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_Ti48_p_to_He4_Sc45_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti48_p_to_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti48_to_He4_Ca44_reaclib) - screened_rates(k_Ti48_to_Sc48_electron_capture_weaktab) - screened_rates(k_Ti48_to_V48_beta_neg_weaktab) - screened_rates(k_Ti48_to_n_Ti47_reaclib) - screened_rates(k_Ti48_to_p_Sc47_reaclib); jac.set(Ti48, Ti48, scratch); scratch = screened_rates(k_Ti49_to_n_Ti48_reaclib); @@ -40067,7 +37876,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti48, V47, 0.0); - scratch = screened_rates(k_V48_to_Ti48_weaktab) + screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(N)*state.rho + screened_rates(k_V48_to_Ti48_electron_capture_weaktab); jac.set(Ti48, V48, scratch); scratch = screened_rates(k_V49_to_p_Ti48_reaclib); @@ -40075,7 +37884,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti48, V50, 0.0); - scratch = screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(H1)*state.rho; jac.set(Ti48, V51, scratch); jac.set(Ti48, V52, 0.0); @@ -40086,7 +37895,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti48, Cr50, 0.0); - scratch = screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(N)*state.rho; jac.set(Ti48, Cr51, scratch); scratch = screened_rates(k_Cr52_to_He4_Ti48_reaclib); @@ -40198,17 +38007,17 @@ void jac_nuc(const burn_t& state, jac.set(Ti48, Ge64, 0.0); - scratch = screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(Cr52)*state.rho + screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(Ti49)*state.rho - screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(V49)*state.rho; + scratch = screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(Ti48)*state.rho - screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(V49)*state.rho; jac.set(Ti49, N, scratch); - scratch = screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(Sc48)*state.rho + screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(Sc49)*state.rho - screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(Ti49)*state.rho - screened_rates(k_p_Ti49_to_V50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(V52)*state.rho; + scratch = screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(Sc49)*state.rho - screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_p_to_V50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(Ti49)*state.rho + screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(V52)*state.rho; jac.set(Ti49, H1, scratch); jac.set(Ti49, H2, 0.0); jac.set(Ti49, He3, 0.0); - scratch = screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(Ca45)*state.rho + screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(Ca46)*state.rho + screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(Sc46)*state.rho - screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(Ti49)*state.rho - screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(Ti49)*state.rho - screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(Ti49)*state.rho; + scratch = screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(Ca45)*state.rho + screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(Ca46)*state.rho + screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(Sc46)*state.rho - screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(Ti49)*state.rho; jac.set(Ti49, He4, scratch); jac.set(Ti49, Li6, 0.0); @@ -40353,10 +38162,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti49, Ca44, 0.0); - scratch = screened_rates(k_He4_Ca45_to_Ti49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca45_He4_to_Ti49_reaclib)*Y(He4)*state.rho; jac.set(Ti49, Ca45, scratch); - scratch = screened_rates(k_He4_Ca46_to_n_Ti49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca46_He4_to_n_Ti49_reaclib)*Y(He4)*state.rho; jac.set(Ti49, Ca46, scratch); jac.set(Ti49, Ca47, 0.0); @@ -40369,15 +38178,15 @@ void jac_nuc(const burn_t& state, jac.set(Ti49, Sc45, 0.0); - scratch = screened_rates(k_He4_Sc46_to_p_Ti49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc46_He4_to_p_Ti49_reaclib)*Y(He4)*state.rho; jac.set(Ti49, Sc46, scratch); jac.set(Ti49, Sc47, 0.0); - scratch = screened_rates(k_p_Sc48_to_Ti49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc48_p_to_Ti49_reaclib)*Y(H1)*state.rho; jac.set(Ti49, Sc48, scratch); - scratch = screened_rates(k_Sc49_to_Ti49_weaktab) + screened_rates(k_p_Sc49_to_n_Ti49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc49_p_to_n_Ti49_reaclib)*Y(H1)*state.rho + screened_rates(k_Sc49_to_Ti49_beta_neg_weaktab); jac.set(Ti49, Sc49, scratch); jac.set(Ti49, Ti44, 0.0); @@ -40388,10 +38197,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti49, Ti47, 0.0); - scratch = screened_rates(k_n_Ti48_to_Ti49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti48_n_to_Ti49_reaclib)*Y(N)*state.rho; jac.set(Ti49, Ti48, scratch); - scratch = -screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti49_to_He4_Ca45_reaclib) - screened_rates(k_Ti49_to_Sc49_weaktab) - screened_rates(k_Ti49_to_V49_weaktab) - screened_rates(k_Ti49_to_n_Ti48_reaclib) - screened_rates(k_Ti49_to_p_Sc48_reaclib) - screened_rates(k_n_Ti49_to_He4_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti49_to_p_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti49_to_He4_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti49_to_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti49_n_to_He4_Ca46_reaclib)*Y(N)*state.rho - screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_Ti49_n_to_p_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_Ti49_p_to_He4_Sc46_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti49_p_to_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti49_to_He4_Ca45_reaclib) - screened_rates(k_Ti49_to_Sc49_electron_capture_weaktab) - screened_rates(k_Ti49_to_V49_beta_neg_weaktab) - screened_rates(k_Ti49_to_n_Ti48_reaclib) - screened_rates(k_Ti49_to_p_Sc48_reaclib); jac.set(Ti49, Ti49, scratch); scratch = screened_rates(k_Ti50_to_n_Ti49_reaclib); @@ -40405,7 +38214,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti49, V48, 0.0); - scratch = screened_rates(k_V49_to_Ti49_weaktab) + screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(N)*state.rho + screened_rates(k_V49_to_Ti49_electron_capture_weaktab); jac.set(Ti49, V49, scratch); scratch = screened_rates(k_V50_to_p_Ti49_reaclib); @@ -40413,7 +38222,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti49, V51, 0.0); - scratch = screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(H1)*state.rho; jac.set(Ti49, V52, scratch); jac.set(Ti49, Cr48, 0.0); @@ -40424,7 +38233,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti49, Cr51, 0.0); - scratch = screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(N)*state.rho; jac.set(Ti49, Cr52, scratch); scratch = screened_rates(k_Cr53_to_He4_Ti49_reaclib); @@ -40534,17 +38343,17 @@ void jac_nuc(const burn_t& state, jac.set(Ti49, Ge64, 0.0); - scratch = screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(Ti50)*state.rho - screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(Ti50)*state.rho + screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(V50)*state.rho; + scratch = screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(Ti49)*state.rho - screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(Ti50)*state.rho + screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(V50)*state.rho; jac.set(Ti50, N, scratch); - scratch = screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(Sc49)*state.rho - screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(Ti50)*state.rho - screened_rates(k_p_Ti50_to_V51_reaclib)*Y(Ti50)*state.rho - screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(Ti50)*state.rho; + scratch = screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(Sc49)*state.rho - screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti50_p_to_V51_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(Ti50)*state.rho; jac.set(Ti50, H1, scratch); jac.set(Ti50, H2, 0.0); jac.set(Ti50, He3, 0.0); - scratch = screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(Ca46)*state.rho + screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(Ca47)*state.rho + screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(Sc47)*state.rho - screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(Ti50)*state.rho - screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(Ti50)*state.rho; + scratch = screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(Ca46)*state.rho + screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(Ca47)*state.rho + screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(Sc47)*state.rho - screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(Ti50)*state.rho; jac.set(Ti50, He4, scratch); jac.set(Ti50, Li6, 0.0); @@ -40691,10 +38500,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti50, Ca45, 0.0); - scratch = screened_rates(k_He4_Ca46_to_Ti50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca46_He4_to_Ti50_reaclib)*Y(He4)*state.rho; jac.set(Ti50, Ca46, scratch); - scratch = screened_rates(k_He4_Ca47_to_n_Ti50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca47_He4_to_n_Ti50_reaclib)*Y(He4)*state.rho; jac.set(Ti50, Ca47, scratch); jac.set(Ti50, Ca48, 0.0); @@ -40707,12 +38516,12 @@ void jac_nuc(const burn_t& state, jac.set(Ti50, Sc46, 0.0); - scratch = screened_rates(k_He4_Sc47_to_p_Ti50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc47_He4_to_p_Ti50_reaclib)*Y(He4)*state.rho; jac.set(Ti50, Sc47, scratch); jac.set(Ti50, Sc48, 0.0); - scratch = screened_rates(k_p_Sc49_to_Ti50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Sc49_p_to_Ti50_reaclib)*Y(H1)*state.rho; jac.set(Ti50, Sc49, scratch); jac.set(Ti50, Ti44, 0.0); @@ -40725,10 +38534,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti50, Ti48, 0.0); - scratch = screened_rates(k_n_Ti49_to_Ti50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti49_n_to_Ti50_reaclib)*Y(N)*state.rho; jac.set(Ti50, Ti49, scratch); - scratch = -screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti50_to_He4_Ca46_reaclib) - screened_rates(k_Ti50_to_V50_weaktab) - screened_rates(k_Ti50_to_n_Ti49_reaclib) - screened_rates(k_Ti50_to_p_Sc49_reaclib) - screened_rates(k_n_Ti50_to_He4_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti50_to_He4_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti50_to_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti50_n_to_He4_Ca47_reaclib)*Y(N)*state.rho - screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(N)*state.rho - screened_rates(k_Ti50_p_to_He4_Sc47_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti50_p_to_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti50_to_He4_Ca46_reaclib) - screened_rates(k_Ti50_to_V50_beta_neg_weaktab) - screened_rates(k_Ti50_to_n_Ti49_reaclib) - screened_rates(k_Ti50_to_p_Sc49_reaclib); jac.set(Ti50, Ti50, scratch); scratch = screened_rates(k_Ti51_to_n_Ti50_reaclib); @@ -40742,7 +38551,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti50, V49, 0.0); - scratch = screened_rates(k_V50_to_Ti50_weaktab) + screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(N)*state.rho + screened_rates(k_V50_to_Ti50_electron_capture_weaktab); jac.set(Ti50, V50, scratch); scratch = screened_rates(k_V51_to_p_Ti50_reaclib); @@ -40760,7 +38569,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti50, Cr52, 0.0); - scratch = screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(N)*state.rho; jac.set(Ti50, Cr53, scratch); scratch = screened_rates(k_Cr54_to_He4_Ti50_reaclib); @@ -40868,17 +38677,17 @@ void jac_nuc(const burn_t& state, jac.set(Ti50, Ge64, 0.0); - scratch = screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(Ti50)*state.rho - screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(Ti51)*state.rho + screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(V51)*state.rho; + scratch = screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(Ti50)*state.rho - screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(Ti51)*state.rho + screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(V51)*state.rho; jac.set(Ti51, N, scratch); - scratch = -screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(Ti51)*state.rho - screened_rates(k_p_Ti51_to_V52_reaclib)*Y(Ti51)*state.rho - screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(Ti51)*state.rho; + scratch = -screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(Ti51)*state.rho - screened_rates(k_Ti51_p_to_V52_reaclib)*Y(Ti51)*state.rho - screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(Ti51)*state.rho; jac.set(Ti51, H1, scratch); jac.set(Ti51, H2, 0.0); jac.set(Ti51, He3, 0.0); - scratch = screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(Ca47)*state.rho + screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(Ca48)*state.rho + screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(Sc48)*state.rho - screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(Ti51)*state.rho; + scratch = screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(Ca47)*state.rho + screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(Ca48)*state.rho + screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(Sc48)*state.rho - screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(Ti51)*state.rho; jac.set(Ti51, He4, scratch); jac.set(Ti51, Li6, 0.0); @@ -41027,10 +38836,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti51, Ca46, 0.0); - scratch = screened_rates(k_He4_Ca47_to_Ti51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca47_He4_to_Ti51_reaclib)*Y(He4)*state.rho; jac.set(Ti51, Ca47, scratch); - scratch = screened_rates(k_He4_Ca48_to_n_Ti51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ca48_He4_to_n_Ti51_reaclib)*Y(He4)*state.rho; jac.set(Ti51, Ca48, scratch); jac.set(Ti51, Sc43, 0.0); @@ -41043,7 +38852,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti51, Sc47, 0.0); - scratch = screened_rates(k_He4_Sc48_to_p_Ti51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc48_He4_to_p_Ti51_reaclib)*Y(He4)*state.rho; jac.set(Ti51, Sc48, scratch); jac.set(Ti51, Sc49, 0.0); @@ -41060,10 +38869,10 @@ void jac_nuc(const burn_t& state, jac.set(Ti51, Ti49, 0.0); - scratch = screened_rates(k_n_Ti50_to_Ti51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ti50_n_to_Ti51_reaclib)*Y(N)*state.rho; jac.set(Ti51, Ti50, scratch); - scratch = -screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti51_to_He4_Ca47_reaclib) - screened_rates(k_Ti51_to_V51_weaktab) - screened_rates(k_Ti51_to_n_Ti50_reaclib) - screened_rates(k_n_Ti51_to_He4_Ca48_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ti51_to_He4_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti51_to_V52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_Ti51_n_to_He4_Ca48_reaclib)*Y(N)*state.rho - screened_rates(k_Ti51_p_to_He4_Sc48_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti51_p_to_V52_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_Ti51_to_He4_Ca47_reaclib) - screened_rates(k_Ti51_to_V51_beta_neg_weaktab) - screened_rates(k_Ti51_to_n_Ti50_reaclib); jac.set(Ti51, Ti51, scratch); jac.set(Ti51, V46, 0.0); @@ -41076,7 +38885,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti51, V50, 0.0); - scratch = screened_rates(k_V51_to_Ti51_weaktab) + screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(N)*state.rho + screened_rates(k_V51_to_Ti51_electron_capture_weaktab); jac.set(Ti51, V51, scratch); scratch = screened_rates(k_V52_to_p_Ti51_reaclib); @@ -41094,7 +38903,7 @@ void jac_nuc(const burn_t& state, jac.set(Ti51, Cr53, 0.0); - scratch = screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(N)*state.rho; jac.set(Ti51, Cr54, scratch); jac.set(Ti51, Mn50, 0.0); @@ -41199,17 +39008,17 @@ void jac_nuc(const burn_t& state, jac.set(Ti51, Ge64, 0.0); - scratch = -screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(V46)*state.rho - screened_rates(k_n_V46_to_V47_reaclib)*Y(V46)*state.rho - screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(V46)*state.rho; + scratch = -screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(V46)*state.rho - screened_rates(k_V46_n_to_V47_reaclib)*Y(V46)*state.rho - screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(V46)*state.rho; jac.set(V46, N, scratch); - scratch = screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(Cr49)*state.rho + screened_rates(k_p_Ti45_to_V46_reaclib)*Y(Ti45)*state.rho + screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(Ti46)*state.rho; + scratch = screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Ti45_p_to_V46_reaclib)*Y(Ti45)*state.rho + screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(Ti46)*state.rho; jac.set(V46, H1, scratch); jac.set(V46, H2, 0.0); jac.set(V46, He3, 0.0); - scratch = screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(V46)*state.rho - screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(V46)*state.rho; + scratch = screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(Sc43)*state.rho - screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(V46)*state.rho - screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(V46)*state.rho; jac.set(V46, He4, scratch); jac.set(V46, Li6, 0.0); @@ -41362,7 +39171,7 @@ void jac_nuc(const burn_t& state, jac.set(V46, Ca48, 0.0); - scratch = screened_rates(k_He4_Sc43_to_n_V46_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc43_He4_to_n_V46_reaclib)*Y(He4)*state.rho; jac.set(V46, Sc43, scratch); jac.set(V46, Sc44, 0.0); @@ -41379,10 +39188,10 @@ void jac_nuc(const burn_t& state, jac.set(V46, Ti44, 0.0); - scratch = screened_rates(k_p_Ti45_to_V46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti45_p_to_V46_reaclib)*Y(H1)*state.rho; jac.set(V46, Ti45, scratch); - scratch = screened_rates(k_Ti46_to_V46_weaktab) + screened_rates(k_p_Ti46_to_n_V46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti46_p_to_n_V46_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti46_to_V46_beta_neg_weaktab); jac.set(V46, Ti46, scratch); jac.set(V46, Ti47, 0.0); @@ -41395,7 +39204,7 @@ void jac_nuc(const burn_t& state, jac.set(V46, Ti51, 0.0); - scratch = -screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_V46_to_Ti46_weaktab) - screened_rates(k_V46_to_p_Ti45_reaclib) - screened_rates(k_n_V46_to_He4_Sc43_reaclib)*Y(N)*state.rho - screened_rates(k_n_V46_to_V47_reaclib)*Y(N)*state.rho - screened_rates(k_n_V46_to_p_Ti46_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(He4)*state.rho - screened_rates(k_V46_n_to_He4_Sc43_reaclib)*Y(N)*state.rho - screened_rates(k_V46_n_to_V47_reaclib)*Y(N)*state.rho - screened_rates(k_V46_n_to_p_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_V46_to_Ti46_electron_capture_weaktab) - screened_rates(k_V46_to_p_Ti45_reaclib); jac.set(V46, V46, scratch); scratch = screened_rates(k_V47_to_n_V46_reaclib); @@ -41413,7 +39222,7 @@ void jac_nuc(const burn_t& state, jac.set(V46, Cr48, 0.0); - scratch = screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(H1)*state.rho; jac.set(V46, Cr49, scratch); jac.set(V46, Cr50, 0.0); @@ -41529,17 +39338,17 @@ void jac_nuc(const burn_t& state, jac.set(V46, Ge64, 0.0); - scratch = screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(Mn50)*state.rho + screened_rates(k_n_V46_to_V47_reaclib)*Y(V46)*state.rho - screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(V47)*state.rho - screened_rates(k_n_V47_to_V48_reaclib)*Y(V47)*state.rho - screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(V47)*state.rho; + scratch = screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(Mn50)*state.rho + screened_rates(k_V46_n_to_V47_reaclib)*Y(V46)*state.rho - screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_n_to_V48_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(V47)*state.rho; jac.set(V47, N, scratch); - scratch = screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(Cr50)*state.rho + screened_rates(k_p_Ti46_to_V47_reaclib)*Y(Ti46)*state.rho + screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(Ti47)*state.rho - screened_rates(k_p_V47_to_Cr48_reaclib)*Y(V47)*state.rho - screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(V47)*state.rho; + scratch = screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Ti46_p_to_V47_reaclib)*Y(Ti46)*state.rho + screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(Ti47)*state.rho - screened_rates(k_V47_p_to_Cr48_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(V47)*state.rho; jac.set(V47, H1, scratch); jac.set(V47, H2, 0.0); jac.set(V47, He3, 0.0); - scratch = screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(Sc43)*state.rho + screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(Sc44)*state.rho + screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(Ti44)*state.rho - screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(V47)*state.rho - screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(V47)*state.rho - screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(V47)*state.rho; + scratch = screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(Sc43)*state.rho + screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(Ti44)*state.rho - screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(V47)*state.rho - screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(V47)*state.rho; jac.set(V47, He4, scratch); jac.set(V47, Li6, 0.0); @@ -41692,10 +39501,10 @@ void jac_nuc(const burn_t& state, jac.set(V47, Ca48, 0.0); - scratch = screened_rates(k_He4_Sc43_to_V47_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc43_He4_to_V47_reaclib)*Y(He4)*state.rho; jac.set(V47, Sc43, scratch); - scratch = screened_rates(k_He4_Sc44_to_n_V47_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc44_He4_to_n_V47_reaclib)*Y(He4)*state.rho; jac.set(V47, Sc44, scratch); jac.set(V47, Sc45, 0.0); @@ -41708,15 +39517,15 @@ void jac_nuc(const burn_t& state, jac.set(V47, Sc49, 0.0); - scratch = screened_rates(k_He4_Ti44_to_p_V47_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti44_He4_to_p_V47_reaclib)*Y(He4)*state.rho; jac.set(V47, Ti44, scratch); jac.set(V47, Ti45, 0.0); - scratch = screened_rates(k_p_Ti46_to_V47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti46_p_to_V47_reaclib)*Y(H1)*state.rho; jac.set(V47, Ti46, scratch); - scratch = screened_rates(k_Ti47_to_V47_weaktab) + screened_rates(k_p_Ti47_to_n_V47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti47_p_to_n_V47_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti47_to_V47_beta_neg_weaktab); jac.set(V47, Ti47, scratch); jac.set(V47, Ti48, 0.0); @@ -41727,10 +39536,10 @@ void jac_nuc(const burn_t& state, jac.set(V47, Ti51, 0.0); - scratch = screened_rates(k_n_V46_to_V47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V46_n_to_V47_reaclib)*Y(N)*state.rho; jac.set(V47, V46, scratch); - scratch = -screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_V47_to_He4_Sc43_reaclib) - screened_rates(k_V47_to_Ti47_weaktab) - screened_rates(k_V47_to_n_V46_reaclib) - screened_rates(k_V47_to_p_Ti46_reaclib) - screened_rates(k_n_V47_to_He4_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_n_V47_to_V48_reaclib)*Y(N)*state.rho - screened_rates(k_n_V47_to_p_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_p_V47_to_Cr48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V47_to_He4_Ti44_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(He4)*state.rho - screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(He4)*state.rho - screened_rates(k_V47_n_to_He4_Sc44_reaclib)*Y(N)*state.rho - screened_rates(k_V47_n_to_V48_reaclib)*Y(N)*state.rho - screened_rates(k_V47_n_to_p_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_V47_p_to_Cr48_reaclib)*Y(H1)*state.rho - screened_rates(k_V47_p_to_He4_Ti44_reaclib)*Y(H1)*state.rho - screened_rates(k_V47_to_He4_Sc43_reaclib) - screened_rates(k_V47_to_Ti47_electron_capture_weaktab) - screened_rates(k_V47_to_n_V46_reaclib) - screened_rates(k_V47_to_p_Ti46_reaclib); jac.set(V47, V47, scratch); scratch = screened_rates(k_V48_to_n_V47_reaclib); @@ -41749,7 +39558,7 @@ void jac_nuc(const burn_t& state, jac.set(V47, Cr49, 0.0); - scratch = screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(H1)*state.rho; jac.set(V47, Cr50, scratch); jac.set(V47, Cr51, 0.0); @@ -41760,7 +39569,7 @@ void jac_nuc(const burn_t& state, jac.set(V47, Cr54, 0.0); - scratch = screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(N)*state.rho; jac.set(V47, Mn50, scratch); scratch = screened_rates(k_Mn51_to_He4_V47_reaclib); @@ -41864,17 +39673,17 @@ void jac_nuc(const burn_t& state, jac.set(V47, Ge64, 0.0); - scratch = screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(Cr48)*state.rho + screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(Mn51)*state.rho + screened_rates(k_n_V47_to_V48_reaclib)*Y(V47)*state.rho - screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(V48)*state.rho - screened_rates(k_n_V48_to_V49_reaclib)*Y(V48)*state.rho - screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(V48)*state.rho; + scratch = screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(Mn51)*state.rho + screened_rates(k_V47_n_to_V48_reaclib)*Y(V47)*state.rho - screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_n_to_V49_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(V48)*state.rho; jac.set(V48, N, scratch); - scratch = screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(Cr51)*state.rho + screened_rates(k_p_Ti47_to_V48_reaclib)*Y(Ti47)*state.rho + screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(Ti48)*state.rho - screened_rates(k_p_V48_to_Cr49_reaclib)*Y(V48)*state.rho - screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(V48)*state.rho - screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(V48)*state.rho; + scratch = screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Ti47_p_to_V48_reaclib)*Y(Ti47)*state.rho + screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(Ti48)*state.rho - screened_rates(k_V48_p_to_Cr49_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(V48)*state.rho; jac.set(V48, H1, scratch); jac.set(V48, H2, 0.0); jac.set(V48, He3, 0.0); - scratch = screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(Sc44)*state.rho + screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(Sc45)*state.rho + screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(Ti45)*state.rho - screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(V48)*state.rho - screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(V48)*state.rho - screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(V48)*state.rho; + scratch = screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(Sc44)*state.rho + screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(Ti45)*state.rho - screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(V48)*state.rho - screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(V48)*state.rho; jac.set(V48, He4, scratch); jac.set(V48, Li6, 0.0); @@ -42029,10 +39838,10 @@ void jac_nuc(const burn_t& state, jac.set(V48, Sc43, 0.0); - scratch = screened_rates(k_He4_Sc44_to_V48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc44_He4_to_V48_reaclib)*Y(He4)*state.rho; jac.set(V48, Sc44, scratch); - scratch = screened_rates(k_He4_Sc45_to_n_V48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc45_He4_to_n_V48_reaclib)*Y(He4)*state.rho; jac.set(V48, Sc45, scratch); jac.set(V48, Sc46, 0.0); @@ -42045,15 +39854,15 @@ void jac_nuc(const burn_t& state, jac.set(V48, Ti44, 0.0); - scratch = screened_rates(k_He4_Ti45_to_p_V48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti45_He4_to_p_V48_reaclib)*Y(He4)*state.rho; jac.set(V48, Ti45, scratch); jac.set(V48, Ti46, 0.0); - scratch = screened_rates(k_p_Ti47_to_V48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti47_p_to_V48_reaclib)*Y(H1)*state.rho; jac.set(V48, Ti47, scratch); - scratch = screened_rates(k_Ti48_to_V48_weaktab) + screened_rates(k_p_Ti48_to_n_V48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti48_p_to_n_V48_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti48_to_V48_beta_neg_weaktab); jac.set(V48, Ti48, scratch); jac.set(V48, Ti49, 0.0); @@ -42064,10 +39873,10 @@ void jac_nuc(const burn_t& state, jac.set(V48, V46, 0.0); - scratch = screened_rates(k_n_V47_to_V48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V47_n_to_V48_reaclib)*Y(N)*state.rho; jac.set(V48, V47, scratch); - scratch = -screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_V48_to_Cr48_weaktab) - screened_rates(k_V48_to_He4_Sc44_reaclib) - screened_rates(k_V48_to_Ti48_weaktab) - screened_rates(k_V48_to_n_V47_reaclib) - screened_rates(k_V48_to_p_Ti47_reaclib) - screened_rates(k_n_V48_to_He4_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_n_V48_to_V49_reaclib)*Y(N)*state.rho - screened_rates(k_n_V48_to_p_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_p_V48_to_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V48_to_He4_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(He4)*state.rho - screened_rates(k_V48_n_to_He4_Sc45_reaclib)*Y(N)*state.rho - screened_rates(k_V48_n_to_V49_reaclib)*Y(N)*state.rho - screened_rates(k_V48_n_to_p_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_V48_p_to_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_V48_p_to_He4_Ti45_reaclib)*Y(H1)*state.rho - screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(H1)*state.rho - screened_rates(k_V48_to_Cr48_beta_neg_weaktab) - screened_rates(k_V48_to_He4_Sc44_reaclib) - screened_rates(k_V48_to_Ti48_electron_capture_weaktab) - screened_rates(k_V48_to_n_V47_reaclib) - screened_rates(k_V48_to_p_Ti47_reaclib); jac.set(V48, V48, scratch); scratch = screened_rates(k_V49_to_n_V48_reaclib); @@ -42079,7 +39888,7 @@ void jac_nuc(const burn_t& state, jac.set(V48, V52, 0.0); - scratch = screened_rates(k_Cr48_to_V48_weaktab) + screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(N)*state.rho + screened_rates(k_Cr48_to_V48_electron_capture_weaktab); jac.set(V48, Cr48, scratch); scratch = screened_rates(k_Cr49_to_p_V48_reaclib); @@ -42087,7 +39896,7 @@ void jac_nuc(const burn_t& state, jac.set(V48, Cr50, 0.0); - scratch = screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(H1)*state.rho; jac.set(V48, Cr51, scratch); jac.set(V48, Cr52, 0.0); @@ -42098,7 +39907,7 @@ void jac_nuc(const burn_t& state, jac.set(V48, Mn50, 0.0); - scratch = screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(N)*state.rho; jac.set(V48, Mn51, scratch); scratch = screened_rates(k_Mn52_to_He4_V48_reaclib); @@ -42200,17 +40009,17 @@ void jac_nuc(const burn_t& state, jac.set(V48, Ge64, 0.0); - scratch = screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(Cr49)*state.rho + screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(Mn52)*state.rho + screened_rates(k_n_V48_to_V49_reaclib)*Y(V48)*state.rho - screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(V49)*state.rho - screened_rates(k_n_V49_to_V50_reaclib)*Y(V49)*state.rho - screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(V49)*state.rho; + scratch = screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(Mn52)*state.rho + screened_rates(k_V48_n_to_V49_reaclib)*Y(V48)*state.rho - screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_n_to_V50_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(V49)*state.rho; jac.set(V49, N, scratch); - scratch = screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(Cr52)*state.rho + screened_rates(k_p_Ti48_to_V49_reaclib)*Y(Ti48)*state.rho + screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(Ti49)*state.rho - screened_rates(k_p_V49_to_Cr50_reaclib)*Y(V49)*state.rho - screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(V49)*state.rho - screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(V49)*state.rho; + scratch = screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Ti48_p_to_V49_reaclib)*Y(Ti48)*state.rho + screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(Ti49)*state.rho - screened_rates(k_V49_p_to_Cr50_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(V49)*state.rho; jac.set(V49, H1, scratch); jac.set(V49, H2, 0.0); jac.set(V49, He3, 0.0); - scratch = screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(Sc45)*state.rho + screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(Sc46)*state.rho + screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(Ti46)*state.rho - screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(V49)*state.rho - screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(V49)*state.rho - screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(V49)*state.rho; + scratch = screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(Sc45)*state.rho + screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(Ti46)*state.rho - screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(V49)*state.rho - screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(V49)*state.rho; jac.set(V49, He4, scratch); jac.set(V49, Li6, 0.0); @@ -42367,10 +40176,10 @@ void jac_nuc(const burn_t& state, jac.set(V49, Sc44, 0.0); - scratch = screened_rates(k_He4_Sc45_to_V49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc45_He4_to_V49_reaclib)*Y(He4)*state.rho; jac.set(V49, Sc45, scratch); - scratch = screened_rates(k_He4_Sc46_to_n_V49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc46_He4_to_n_V49_reaclib)*Y(He4)*state.rho; jac.set(V49, Sc46, scratch); jac.set(V49, Sc47, 0.0); @@ -42383,15 +40192,15 @@ void jac_nuc(const burn_t& state, jac.set(V49, Ti45, 0.0); - scratch = screened_rates(k_He4_Ti46_to_p_V49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti46_He4_to_p_V49_reaclib)*Y(He4)*state.rho; jac.set(V49, Ti46, scratch); jac.set(V49, Ti47, 0.0); - scratch = screened_rates(k_p_Ti48_to_V49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti48_p_to_V49_reaclib)*Y(H1)*state.rho; jac.set(V49, Ti48, scratch); - scratch = screened_rates(k_Ti49_to_V49_weaktab) + screened_rates(k_p_Ti49_to_n_V49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti49_p_to_n_V49_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti49_to_V49_beta_neg_weaktab); jac.set(V49, Ti49, scratch); jac.set(V49, Ti50, 0.0); @@ -42402,10 +40211,10 @@ void jac_nuc(const burn_t& state, jac.set(V49, V47, 0.0); - scratch = screened_rates(k_n_V48_to_V49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V48_n_to_V49_reaclib)*Y(N)*state.rho; jac.set(V49, V48, scratch); - scratch = -screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_V49_to_Cr49_weaktab) - screened_rates(k_V49_to_He4_Sc45_reaclib) - screened_rates(k_V49_to_Ti49_weaktab) - screened_rates(k_V49_to_n_V48_reaclib) - screened_rates(k_V49_to_p_Ti48_reaclib) - screened_rates(k_n_V49_to_He4_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_n_V49_to_V50_reaclib)*Y(N)*state.rho - screened_rates(k_n_V49_to_p_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_p_V49_to_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V49_to_He4_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(He4)*state.rho - screened_rates(k_V49_n_to_He4_Sc46_reaclib)*Y(N)*state.rho - screened_rates(k_V49_n_to_V50_reaclib)*Y(N)*state.rho - screened_rates(k_V49_n_to_p_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_V49_p_to_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_V49_p_to_He4_Ti46_reaclib)*Y(H1)*state.rho - screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_V49_to_Cr49_beta_neg_weaktab) - screened_rates(k_V49_to_He4_Sc45_reaclib) - screened_rates(k_V49_to_Ti49_electron_capture_weaktab) - screened_rates(k_V49_to_n_V48_reaclib) - screened_rates(k_V49_to_p_Ti48_reaclib); jac.set(V49, V49, scratch); scratch = screened_rates(k_V50_to_n_V49_reaclib); @@ -42417,7 +40226,7 @@ void jac_nuc(const burn_t& state, jac.set(V49, Cr48, 0.0); - scratch = screened_rates(k_Cr49_to_V49_weaktab) + screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(N)*state.rho + screened_rates(k_Cr49_to_V49_electron_capture_weaktab); jac.set(V49, Cr49, scratch); scratch = screened_rates(k_Cr50_to_p_V49_reaclib); @@ -42425,7 +40234,7 @@ void jac_nuc(const burn_t& state, jac.set(V49, Cr51, 0.0); - scratch = screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(H1)*state.rho; jac.set(V49, Cr52, scratch); jac.set(V49, Cr53, 0.0); @@ -42436,7 +40245,7 @@ void jac_nuc(const burn_t& state, jac.set(V49, Mn51, 0.0); - scratch = screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(N)*state.rho; jac.set(V49, Mn52, scratch); scratch = screened_rates(k_Mn53_to_He4_V49_reaclib); @@ -42536,17 +40345,17 @@ void jac_nuc(const burn_t& state, jac.set(V49, Ge64, 0.0); - scratch = screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(Mn53)*state.rho + screened_rates(k_n_V49_to_V50_reaclib)*Y(V49)*state.rho - screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(V50)*state.rho - screened_rates(k_n_V50_to_V51_reaclib)*Y(V50)*state.rho - screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(V50)*state.rho; + scratch = screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(Mn53)*state.rho + screened_rates(k_V49_n_to_V50_reaclib)*Y(V49)*state.rho - screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_n_to_V51_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(V50)*state.rho; jac.set(V50, N, scratch); - scratch = screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_p_Ti49_to_V50_reaclib)*Y(Ti49)*state.rho + screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(Ti50)*state.rho - screened_rates(k_p_V50_to_Cr51_reaclib)*Y(V50)*state.rho - screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(V50)*state.rho - screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(V50)*state.rho; + scratch = screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Ti49_p_to_V50_reaclib)*Y(Ti49)*state.rho + screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(Ti50)*state.rho - screened_rates(k_V50_p_to_Cr51_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(V50)*state.rho; jac.set(V50, H1, scratch); jac.set(V50, H2, 0.0); jac.set(V50, He3, 0.0); - scratch = screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(Sc46)*state.rho + screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(Sc47)*state.rho + screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(Ti47)*state.rho - screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(V50)*state.rho - screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(V50)*state.rho - screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(V50)*state.rho; + scratch = screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(Sc46)*state.rho + screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(Ti47)*state.rho - screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(V50)*state.rho - screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(V50)*state.rho; jac.set(V50, He4, scratch); jac.set(V50, Li6, 0.0); @@ -42705,10 +40514,10 @@ void jac_nuc(const burn_t& state, jac.set(V50, Sc45, 0.0); - scratch = screened_rates(k_He4_Sc46_to_V50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc46_He4_to_V50_reaclib)*Y(He4)*state.rho; jac.set(V50, Sc46, scratch); - scratch = screened_rates(k_He4_Sc47_to_n_V50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc47_He4_to_n_V50_reaclib)*Y(He4)*state.rho; jac.set(V50, Sc47, scratch); jac.set(V50, Sc48, 0.0); @@ -42721,15 +40530,15 @@ void jac_nuc(const burn_t& state, jac.set(V50, Ti46, 0.0); - scratch = screened_rates(k_He4_Ti47_to_p_V50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti47_He4_to_p_V50_reaclib)*Y(He4)*state.rho; jac.set(V50, Ti47, scratch); jac.set(V50, Ti48, 0.0); - scratch = screened_rates(k_p_Ti49_to_V50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti49_p_to_V50_reaclib)*Y(H1)*state.rho; jac.set(V50, Ti49, scratch); - scratch = screened_rates(k_Ti50_to_V50_weaktab) + screened_rates(k_p_Ti50_to_n_V50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti50_p_to_n_V50_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti50_to_V50_beta_neg_weaktab); jac.set(V50, Ti50, scratch); jac.set(V50, Ti51, 0.0); @@ -42740,10 +40549,10 @@ void jac_nuc(const burn_t& state, jac.set(V50, V48, 0.0); - scratch = screened_rates(k_n_V49_to_V50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V49_n_to_V50_reaclib)*Y(N)*state.rho; jac.set(V50, V49, scratch); - scratch = -screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_V50_to_Cr50_weaktab) - screened_rates(k_V50_to_He4_Sc46_reaclib) - screened_rates(k_V50_to_Ti50_weaktab) - screened_rates(k_V50_to_n_V49_reaclib) - screened_rates(k_V50_to_p_Ti49_reaclib) - screened_rates(k_n_V50_to_He4_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_n_V50_to_V51_reaclib)*Y(N)*state.rho - screened_rates(k_n_V50_to_p_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_p_V50_to_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V50_to_He4_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(He4)*state.rho - screened_rates(k_V50_n_to_He4_Sc47_reaclib)*Y(N)*state.rho - screened_rates(k_V50_n_to_V51_reaclib)*Y(N)*state.rho - screened_rates(k_V50_n_to_p_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_V50_p_to_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_V50_p_to_He4_Ti47_reaclib)*Y(H1)*state.rho - screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_V50_to_Cr50_beta_neg_weaktab) - screened_rates(k_V50_to_He4_Sc46_reaclib) - screened_rates(k_V50_to_Ti50_electron_capture_weaktab) - screened_rates(k_V50_to_n_V49_reaclib) - screened_rates(k_V50_to_p_Ti49_reaclib); jac.set(V50, V50, scratch); scratch = screened_rates(k_V51_to_n_V50_reaclib); @@ -42755,7 +40564,7 @@ void jac_nuc(const burn_t& state, jac.set(V50, Cr49, 0.0); - scratch = screened_rates(k_Cr50_to_V50_weaktab) + screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(N)*state.rho + screened_rates(k_Cr50_to_V50_electron_capture_weaktab); jac.set(V50, Cr50, scratch); scratch = screened_rates(k_Cr51_to_p_V50_reaclib); @@ -42763,7 +40572,7 @@ void jac_nuc(const burn_t& state, jac.set(V50, Cr52, 0.0); - scratch = screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(H1)*state.rho; jac.set(V50, Cr53, scratch); jac.set(V50, Cr54, 0.0); @@ -42774,7 +40583,7 @@ void jac_nuc(const burn_t& state, jac.set(V50, Mn52, 0.0); - scratch = screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(N)*state.rho; jac.set(V50, Mn53, scratch); scratch = screened_rates(k_Mn54_to_He4_V50_reaclib); @@ -42872,17 +40681,17 @@ void jac_nuc(const burn_t& state, jac.set(V50, Ge64, 0.0); - scratch = screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(Mn54)*state.rho + screened_rates(k_n_V50_to_V51_reaclib)*Y(V50)*state.rho - screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(V51)*state.rho - screened_rates(k_n_V51_to_V52_reaclib)*Y(V51)*state.rho - screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(V51)*state.rho; + scratch = screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(Mn54)*state.rho + screened_rates(k_V50_n_to_V51_reaclib)*Y(V50)*state.rho - screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_n_to_V52_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(V51)*state.rho; jac.set(V51, N, scratch); - scratch = screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_p_Ti50_to_V51_reaclib)*Y(Ti50)*state.rho + screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(Ti51)*state.rho - screened_rates(k_p_V51_to_Cr52_reaclib)*Y(V51)*state.rho - screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(V51)*state.rho - screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(V51)*state.rho; + scratch = screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Ti50_p_to_V51_reaclib)*Y(Ti50)*state.rho + screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(Ti51)*state.rho - screened_rates(k_V51_p_to_Cr52_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(V51)*state.rho; jac.set(V51, H1, scratch); jac.set(V51, H2, 0.0); jac.set(V51, He3, 0.0); - scratch = screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(Sc47)*state.rho + screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(Sc48)*state.rho + screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(Ti48)*state.rho - screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(V51)*state.rho - screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(V51)*state.rho - screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(V51)*state.rho; + scratch = screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(Sc47)*state.rho + screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(Ti48)*state.rho - screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(V51)*state.rho - screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(V51)*state.rho; jac.set(V51, He4, scratch); jac.set(V51, Li6, 0.0); @@ -43043,10 +40852,10 @@ void jac_nuc(const burn_t& state, jac.set(V51, Sc46, 0.0); - scratch = screened_rates(k_He4_Sc47_to_V51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc47_He4_to_V51_reaclib)*Y(He4)*state.rho; jac.set(V51, Sc47, scratch); - scratch = screened_rates(k_He4_Sc48_to_n_V51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc48_He4_to_n_V51_reaclib)*Y(He4)*state.rho; jac.set(V51, Sc48, scratch); jac.set(V51, Sc49, 0.0); @@ -43059,15 +40868,15 @@ void jac_nuc(const burn_t& state, jac.set(V51, Ti47, 0.0); - scratch = screened_rates(k_He4_Ti48_to_p_V51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti48_He4_to_p_V51_reaclib)*Y(He4)*state.rho; jac.set(V51, Ti48, scratch); jac.set(V51, Ti49, 0.0); - scratch = screened_rates(k_p_Ti50_to_V51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti50_p_to_V51_reaclib)*Y(H1)*state.rho; jac.set(V51, Ti50, scratch); - scratch = screened_rates(k_Ti51_to_V51_weaktab) + screened_rates(k_p_Ti51_to_n_V51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti51_p_to_n_V51_reaclib)*Y(H1)*state.rho + screened_rates(k_Ti51_to_V51_beta_neg_weaktab); jac.set(V51, Ti51, scratch); jac.set(V51, V46, 0.0); @@ -43078,10 +40887,10 @@ void jac_nuc(const burn_t& state, jac.set(V51, V49, 0.0); - scratch = screened_rates(k_n_V50_to_V51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V50_n_to_V51_reaclib)*Y(N)*state.rho; jac.set(V51, V50, scratch); - scratch = -screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_V51_to_Cr51_weaktab) - screened_rates(k_V51_to_He4_Sc47_reaclib) - screened_rates(k_V51_to_Ti51_weaktab) - screened_rates(k_V51_to_n_V50_reaclib) - screened_rates(k_V51_to_p_Ti50_reaclib) - screened_rates(k_n_V51_to_He4_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_n_V51_to_V52_reaclib)*Y(N)*state.rho - screened_rates(k_n_V51_to_p_Ti51_reaclib)*Y(N)*state.rho - screened_rates(k_p_V51_to_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V51_to_He4_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(He4)*state.rho - screened_rates(k_V51_n_to_He4_Sc48_reaclib)*Y(N)*state.rho - screened_rates(k_V51_n_to_V52_reaclib)*Y(N)*state.rho - screened_rates(k_V51_n_to_p_Ti51_reaclib)*Y(N)*state.rho - screened_rates(k_V51_p_to_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_V51_p_to_He4_Ti48_reaclib)*Y(H1)*state.rho - screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_V51_to_Cr51_beta_neg_weaktab) - screened_rates(k_V51_to_He4_Sc47_reaclib) - screened_rates(k_V51_to_Ti51_electron_capture_weaktab) - screened_rates(k_V51_to_n_V50_reaclib) - screened_rates(k_V51_to_p_Ti50_reaclib); jac.set(V51, V51, scratch); scratch = screened_rates(k_V52_to_n_V51_reaclib); @@ -43093,7 +40902,7 @@ void jac_nuc(const burn_t& state, jac.set(V51, Cr50, 0.0); - scratch = screened_rates(k_Cr51_to_V51_weaktab) + screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(N)*state.rho + screened_rates(k_Cr51_to_V51_electron_capture_weaktab); jac.set(V51, Cr51, scratch); scratch = screened_rates(k_Cr52_to_p_V51_reaclib); @@ -43101,7 +40910,7 @@ void jac_nuc(const burn_t& state, jac.set(V51, Cr53, 0.0); - scratch = screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(H1)*state.rho; jac.set(V51, Cr54, scratch); jac.set(V51, Mn50, 0.0); @@ -43112,7 +40921,7 @@ void jac_nuc(const burn_t& state, jac.set(V51, Mn53, 0.0); - scratch = screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(N)*state.rho; jac.set(V51, Mn54, scratch); scratch = screened_rates(k_Mn55_to_He4_V51_reaclib); @@ -43208,17 +41017,17 @@ void jac_nuc(const burn_t& state, jac.set(V51, Ge64, 0.0); - scratch = screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(Mn55)*state.rho + screened_rates(k_n_V51_to_V52_reaclib)*Y(V51)*state.rho - screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(V52)*state.rho; + scratch = screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(Mn55)*state.rho + screened_rates(k_V51_n_to_V52_reaclib)*Y(V51)*state.rho - screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(V52)*state.rho; jac.set(V52, N, scratch); - scratch = screened_rates(k_p_Ti51_to_V52_reaclib)*Y(Ti51)*state.rho - screened_rates(k_p_V52_to_Cr53_reaclib)*Y(V52)*state.rho - screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(V52)*state.rho - screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(V52)*state.rho; + scratch = screened_rates(k_Ti51_p_to_V52_reaclib)*Y(Ti51)*state.rho - screened_rates(k_V52_p_to_Cr53_reaclib)*Y(V52)*state.rho - screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(V52)*state.rho - screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(V52)*state.rho; jac.set(V52, H1, scratch); jac.set(V52, H2, 0.0); jac.set(V52, He3, 0.0); - scratch = screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(Sc48)*state.rho + screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(Sc49)*state.rho + screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(Ti49)*state.rho - screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(V52)*state.rho; + scratch = screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(Sc48)*state.rho + screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(Sc49)*state.rho + screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(Ti49)*state.rho - screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(V52)*state.rho; jac.set(V52, He4, scratch); jac.set(V52, Li6, 0.0); @@ -43381,10 +41190,10 @@ void jac_nuc(const burn_t& state, jac.set(V52, Sc47, 0.0); - scratch = screened_rates(k_He4_Sc48_to_V52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc48_He4_to_V52_reaclib)*Y(He4)*state.rho; jac.set(V52, Sc48, scratch); - scratch = screened_rates(k_He4_Sc49_to_n_V52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Sc49_He4_to_n_V52_reaclib)*Y(He4)*state.rho; jac.set(V52, Sc49, scratch); jac.set(V52, Ti44, 0.0); @@ -43397,12 +41206,12 @@ void jac_nuc(const burn_t& state, jac.set(V52, Ti48, 0.0); - scratch = screened_rates(k_He4_Ti49_to_p_V52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti49_He4_to_p_V52_reaclib)*Y(He4)*state.rho; jac.set(V52, Ti49, scratch); jac.set(V52, Ti50, 0.0); - scratch = screened_rates(k_p_Ti51_to_V52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ti51_p_to_V52_reaclib)*Y(H1)*state.rho; jac.set(V52, Ti51, scratch); jac.set(V52, V46, 0.0); @@ -43415,10 +41224,10 @@ void jac_nuc(const burn_t& state, jac.set(V52, V50, 0.0); - scratch = screened_rates(k_n_V51_to_V52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_V51_n_to_V52_reaclib)*Y(N)*state.rho; jac.set(V52, V51, scratch); - scratch = -screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_V52_to_Cr52_weaktab) - screened_rates(k_V52_to_He4_Sc48_reaclib) - screened_rates(k_V52_to_n_V51_reaclib) - screened_rates(k_V52_to_p_Ti51_reaclib) - screened_rates(k_n_V52_to_He4_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_p_V52_to_Cr53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V52_to_He4_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_V52_n_to_He4_Sc49_reaclib)*Y(N)*state.rho - screened_rates(k_V52_p_to_Cr53_reaclib)*Y(H1)*state.rho - screened_rates(k_V52_p_to_He4_Ti49_reaclib)*Y(H1)*state.rho - screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_V52_to_Cr52_beta_neg_weaktab) - screened_rates(k_V52_to_He4_Sc48_reaclib) - screened_rates(k_V52_to_n_V51_reaclib) - screened_rates(k_V52_to_p_Ti51_reaclib); jac.set(V52, V52, scratch); jac.set(V52, Cr48, 0.0); @@ -43429,7 +41238,7 @@ void jac_nuc(const burn_t& state, jac.set(V52, Cr51, 0.0); - scratch = screened_rates(k_Cr52_to_V52_weaktab) + screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(N)*state.rho + screened_rates(k_Cr52_to_V52_electron_capture_weaktab); jac.set(V52, Cr52, scratch); scratch = screened_rates(k_Cr53_to_p_V52_reaclib); @@ -43447,7 +41256,7 @@ void jac_nuc(const burn_t& state, jac.set(V52, Mn54, 0.0); - scratch = screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(N)*state.rho; jac.set(V52, Mn55, scratch); jac.set(V52, Fe52, 0.0); @@ -43540,17 +41349,17 @@ void jac_nuc(const burn_t& state, jac.set(V52, Ge64, 0.0); - scratch = -screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(Cr48)*state.rho - screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(Cr48)*state.rho - screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(Cr48)*state.rho; + scratch = -screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(Cr48)*state.rho; jac.set(Cr48, N, scratch); - scratch = screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(Mn51)*state.rho + screened_rates(k_p_V47_to_Cr48_reaclib)*Y(V47)*state.rho + screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(V48)*state.rho; + scratch = screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(Mn51)*state.rho + screened_rates(k_V47_p_to_Cr48_reaclib)*Y(V47)*state.rho + screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(V48)*state.rho; jac.set(Cr48, H1, scratch); jac.set(Cr48, H2, 0.0); jac.set(Cr48, He3, 0.0); - scratch = -screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(Ti44)*state.rho + screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(Ti45)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(Ti44)*state.rho + screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(Ti45)*state.rho; jac.set(Cr48, He4, scratch); jac.set(Cr48, Li6, 0.0); @@ -43717,10 +41526,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, Sc49, 0.0); - scratch = screened_rates(k_He4_Ti44_to_Cr48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti44_He4_to_Cr48_reaclib)*Y(He4)*state.rho; jac.set(Cr48, Ti44, scratch); - scratch = screened_rates(k_He4_Ti45_to_n_Cr48_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti45_He4_to_n_Cr48_reaclib)*Y(He4)*state.rho; jac.set(Cr48, Ti45, scratch); jac.set(Cr48, Ti46, 0.0); @@ -43737,10 +41546,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, V46, 0.0); - scratch = screened_rates(k_p_V47_to_Cr48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V47_p_to_Cr48_reaclib)*Y(H1)*state.rho; jac.set(Cr48, V47, scratch); - scratch = screened_rates(k_V48_to_Cr48_weaktab) + screened_rates(k_p_V48_to_n_Cr48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V48_p_to_n_Cr48_reaclib)*Y(H1)*state.rho + screened_rates(k_V48_to_Cr48_beta_neg_weaktab); jac.set(Cr48, V48, scratch); jac.set(Cr48, V49, 0.0); @@ -43751,7 +41560,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, V52, 0.0); - scratch = -screened_rates(k_Cr48_to_He4_Ti44_reaclib) - screened_rates(k_Cr48_to_V48_weaktab) - screened_rates(k_Cr48_to_p_V47_reaclib) - screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr48_to_He4_Ti45_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr48_to_p_V48_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(N)*state.rho - screened_rates(k_Cr48_n_to_He4_Ti45_reaclib)*Y(N)*state.rho - screened_rates(k_Cr48_n_to_p_V48_reaclib)*Y(N)*state.rho - screened_rates(k_Cr48_to_He4_Ti44_reaclib) - screened_rates(k_Cr48_to_V48_electron_capture_weaktab) - screened_rates(k_Cr48_to_p_V47_reaclib); jac.set(Cr48, Cr48, scratch); scratch = screened_rates(k_Cr49_to_n_Cr48_reaclib); @@ -43769,7 +41578,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, Mn50, 0.0); - scratch = screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(H1)*state.rho; jac.set(Cr48, Mn51, scratch); jac.set(Cr48, Mn52, 0.0); @@ -43871,17 +41680,17 @@ void jac_nuc(const burn_t& state, jac.set(Cr48, Ge64, 0.0); - scratch = screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(Cr48)*state.rho - screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(Cr49)*state.rho - screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(Cr49)*state.rho - screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(Cr49)*state.rho + screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(Fe52)*state.rho; jac.set(Cr49, N, scratch); - scratch = -screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(Cr49)*state.rho - screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(Cr49)*state.rho + screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(Mn52)*state.rho + screened_rates(k_p_V48_to_Cr49_reaclib)*Y(V48)*state.rho + screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(V49)*state.rho; + scratch = -screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(Mn52)*state.rho + screened_rates(k_V48_p_to_Cr49_reaclib)*Y(V48)*state.rho + screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(V49)*state.rho; jac.set(Cr49, H1, scratch); jac.set(Cr49, H2, 0.0); jac.set(Cr49, He3, 0.0); - scratch = -screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(Cr49)*state.rho - screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(Cr49)*state.rho + screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(Ti45)*state.rho + screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(Ti46)*state.rho + screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(V46)*state.rho; + scratch = -screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(Ti45)*state.rho + screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(Ti46)*state.rho + screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(V46)*state.rho; jac.set(Cr49, He4, scratch); jac.set(Cr49, Li6, 0.0); @@ -44050,10 +41859,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr49, Ti44, 0.0); - scratch = screened_rates(k_He4_Ti45_to_Cr49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti45_He4_to_Cr49_reaclib)*Y(He4)*state.rho; jac.set(Cr49, Ti45, scratch); - scratch = screened_rates(k_He4_Ti46_to_n_Cr49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti46_He4_to_n_Cr49_reaclib)*Y(He4)*state.rho; jac.set(Cr49, Ti46, scratch); jac.set(Cr49, Ti47, 0.0); @@ -44066,15 +41875,15 @@ void jac_nuc(const burn_t& state, jac.set(Cr49, Ti51, 0.0); - scratch = screened_rates(k_He4_V46_to_p_Cr49_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V46_He4_to_p_Cr49_reaclib)*Y(He4)*state.rho; jac.set(Cr49, V46, scratch); jac.set(Cr49, V47, 0.0); - scratch = screened_rates(k_p_V48_to_Cr49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V48_p_to_Cr49_reaclib)*Y(H1)*state.rho; jac.set(Cr49, V48, scratch); - scratch = screened_rates(k_V49_to_Cr49_weaktab) + screened_rates(k_p_V49_to_n_Cr49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V49_p_to_n_Cr49_reaclib)*Y(H1)*state.rho + screened_rates(k_V49_to_Cr49_beta_neg_weaktab); jac.set(Cr49, V49, scratch); jac.set(Cr49, V50, 0.0); @@ -44083,10 +41892,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr49, V52, 0.0); - scratch = screened_rates(k_n_Cr48_to_Cr49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr48_n_to_Cr49_reaclib)*Y(N)*state.rho; jac.set(Cr49, Cr48, scratch); - scratch = -screened_rates(k_Cr49_to_He4_Ti45_reaclib) - screened_rates(k_Cr49_to_V49_weaktab) - screened_rates(k_Cr49_to_n_Cr48_reaclib) - screened_rates(k_Cr49_to_p_V48_reaclib) - screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr49_to_He4_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr49_to_p_V49_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr49_to_He4_V46_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_Cr49_n_to_He4_Ti46_reaclib)*Y(N)*state.rho - screened_rates(k_Cr49_n_to_p_V49_reaclib)*Y(N)*state.rho - screened_rates(k_Cr49_p_to_He4_V46_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr49_to_He4_Ti45_reaclib) - screened_rates(k_Cr49_to_V49_electron_capture_weaktab) - screened_rates(k_Cr49_to_n_Cr48_reaclib) - screened_rates(k_Cr49_to_p_V48_reaclib); jac.set(Cr49, Cr49, scratch); scratch = screened_rates(k_Cr50_to_n_Cr49_reaclib); @@ -44105,7 +41914,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr49, Mn51, 0.0); - scratch = screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(H1)*state.rho; jac.set(Cr49, Mn52, scratch); jac.set(Cr49, Mn53, 0.0); @@ -44114,7 +41923,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr49, Mn55, 0.0); - scratch = screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(N)*state.rho; jac.set(Cr49, Fe52, scratch); scratch = screened_rates(k_Fe53_to_He4_Cr49_reaclib); @@ -44206,17 +42015,17 @@ void jac_nuc(const burn_t& state, jac.set(Cr49, Ge64, 0.0); - scratch = screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(Cr49)*state.rho - screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(Cr50)*state.rho - screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(Fe53)*state.rho + screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(Mn50)*state.rho; + scratch = screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(Mn50)*state.rho; jac.set(Cr50, N, scratch); - scratch = -screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(Cr50)*state.rho - screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(Mn53)*state.rho + screened_rates(k_p_V49_to_Cr50_reaclib)*Y(V49)*state.rho + screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(V50)*state.rho; + scratch = -screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(Mn53)*state.rho + screened_rates(k_V49_p_to_Cr50_reaclib)*Y(V49)*state.rho + screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(V50)*state.rho; jac.set(Cr50, H1, scratch); jac.set(Cr50, H2, 0.0); jac.set(Cr50, He3, 0.0); - scratch = -screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(Cr50)*state.rho - screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(Cr50)*state.rho + screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(Ti46)*state.rho + screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(Ti47)*state.rho + screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(V47)*state.rho; + scratch = -screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(Ti46)*state.rho + screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(Ti47)*state.rho + screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(V47)*state.rho; jac.set(Cr50, He4, scratch); jac.set(Cr50, Li6, 0.0); @@ -44387,10 +42196,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr50, Ti45, 0.0); - scratch = screened_rates(k_He4_Ti46_to_Cr50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti46_He4_to_Cr50_reaclib)*Y(He4)*state.rho; jac.set(Cr50, Ti46, scratch); - scratch = screened_rates(k_He4_Ti47_to_n_Cr50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti47_He4_to_n_Cr50_reaclib)*Y(He4)*state.rho; jac.set(Cr50, Ti47, scratch); jac.set(Cr50, Ti48, 0.0); @@ -44403,15 +42212,15 @@ void jac_nuc(const burn_t& state, jac.set(Cr50, V46, 0.0); - scratch = screened_rates(k_He4_V47_to_p_Cr50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V47_He4_to_p_Cr50_reaclib)*Y(He4)*state.rho; jac.set(Cr50, V47, scratch); jac.set(Cr50, V48, 0.0); - scratch = screened_rates(k_p_V49_to_Cr50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V49_p_to_Cr50_reaclib)*Y(H1)*state.rho; jac.set(Cr50, V49, scratch); - scratch = screened_rates(k_V50_to_Cr50_weaktab) + screened_rates(k_p_V50_to_n_Cr50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V50_p_to_n_Cr50_reaclib)*Y(H1)*state.rho + screened_rates(k_V50_to_Cr50_beta_neg_weaktab); jac.set(Cr50, V50, scratch); jac.set(Cr50, V51, 0.0); @@ -44420,10 +42229,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr50, Cr48, 0.0); - scratch = screened_rates(k_n_Cr49_to_Cr50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr49_n_to_Cr50_reaclib)*Y(N)*state.rho; jac.set(Cr50, Cr49, scratch); - scratch = -screened_rates(k_Cr50_to_He4_Ti46_reaclib) - screened_rates(k_Cr50_to_Mn50_weaktab) - screened_rates(k_Cr50_to_V50_weaktab) - screened_rates(k_Cr50_to_n_Cr49_reaclib) - screened_rates(k_Cr50_to_p_V49_reaclib) - screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr50_to_He4_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr50_to_p_V50_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr50_to_He4_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_Cr50_n_to_He4_Ti47_reaclib)*Y(N)*state.rho - screened_rates(k_Cr50_n_to_p_V50_reaclib)*Y(N)*state.rho - screened_rates(k_Cr50_p_to_He4_V47_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr50_to_He4_Ti46_reaclib) - screened_rates(k_Cr50_to_Mn50_beta_neg_weaktab) - screened_rates(k_Cr50_to_V50_electron_capture_weaktab) - screened_rates(k_Cr50_to_n_Cr49_reaclib) - screened_rates(k_Cr50_to_p_V49_reaclib); jac.set(Cr50, Cr50, scratch); scratch = screened_rates(k_Cr51_to_n_Cr50_reaclib); @@ -44435,7 +42244,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr50, Cr54, 0.0); - scratch = screened_rates(k_Mn50_to_Cr50_weaktab) + screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(N)*state.rho + screened_rates(k_Mn50_to_Cr50_electron_capture_weaktab); jac.set(Cr50, Mn50, scratch); scratch = screened_rates(k_Mn51_to_p_Cr50_reaclib); @@ -44443,7 +42252,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr50, Mn52, 0.0); - scratch = screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(H1)*state.rho; jac.set(Cr50, Mn53, scratch); jac.set(Cr50, Mn54, 0.0); @@ -44452,7 +42261,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr50, Fe52, 0.0); - scratch = screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(N)*state.rho; jac.set(Cr50, Fe53, scratch); scratch = screened_rates(k_Fe54_to_He4_Cr50_reaclib); @@ -44542,17 +42351,17 @@ void jac_nuc(const burn_t& state, jac.set(Cr50, Ge64, 0.0); - scratch = screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(Cr51)*state.rho - screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(Fe54)*state.rho + screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(Mn51)*state.rho; jac.set(Cr51, N, scratch); - scratch = -screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(Cr51)*state.rho - screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(Mn54)*state.rho + screened_rates(k_p_V50_to_Cr51_reaclib)*Y(V50)*state.rho + screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(V51)*state.rho; + scratch = -screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(Mn54)*state.rho + screened_rates(k_V50_p_to_Cr51_reaclib)*Y(V50)*state.rho + screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(V51)*state.rho; jac.set(Cr51, H1, scratch); jac.set(Cr51, H2, 0.0); jac.set(Cr51, He3, 0.0); - scratch = -screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(Cr51)*state.rho - screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(Cr51)*state.rho + screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(Ti47)*state.rho + screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(Ti48)*state.rho + screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(V48)*state.rho; + scratch = -screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(Ti47)*state.rho + screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(Ti48)*state.rho + screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(V48)*state.rho; jac.set(Cr51, He4, scratch); jac.set(Cr51, Li6, 0.0); @@ -44725,10 +42534,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr51, Ti46, 0.0); - scratch = screened_rates(k_He4_Ti47_to_Cr51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti47_He4_to_Cr51_reaclib)*Y(He4)*state.rho; jac.set(Cr51, Ti47, scratch); - scratch = screened_rates(k_He4_Ti48_to_n_Cr51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti48_He4_to_n_Cr51_reaclib)*Y(He4)*state.rho; jac.set(Cr51, Ti48, scratch); jac.set(Cr51, Ti49, 0.0); @@ -44741,15 +42550,15 @@ void jac_nuc(const burn_t& state, jac.set(Cr51, V47, 0.0); - scratch = screened_rates(k_He4_V48_to_p_Cr51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V48_He4_to_p_Cr51_reaclib)*Y(He4)*state.rho; jac.set(Cr51, V48, scratch); jac.set(Cr51, V49, 0.0); - scratch = screened_rates(k_p_V50_to_Cr51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V50_p_to_Cr51_reaclib)*Y(H1)*state.rho; jac.set(Cr51, V50, scratch); - scratch = screened_rates(k_V51_to_Cr51_weaktab) + screened_rates(k_p_V51_to_n_Cr51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V51_p_to_n_Cr51_reaclib)*Y(H1)*state.rho + screened_rates(k_V51_to_Cr51_beta_neg_weaktab); jac.set(Cr51, V51, scratch); jac.set(Cr51, V52, 0.0); @@ -44758,10 +42567,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr51, Cr49, 0.0); - scratch = screened_rates(k_n_Cr50_to_Cr51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr50_n_to_Cr51_reaclib)*Y(N)*state.rho; jac.set(Cr51, Cr50, scratch); - scratch = -screened_rates(k_Cr51_to_He4_Ti47_reaclib) - screened_rates(k_Cr51_to_Mn51_weaktab) - screened_rates(k_Cr51_to_V51_weaktab) - screened_rates(k_Cr51_to_n_Cr50_reaclib) - screened_rates(k_Cr51_to_p_V50_reaclib) - screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr51_to_He4_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr51_to_p_V51_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr51_to_He4_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_Cr51_n_to_He4_Ti48_reaclib)*Y(N)*state.rho - screened_rates(k_Cr51_n_to_p_V51_reaclib)*Y(N)*state.rho - screened_rates(k_Cr51_p_to_He4_V48_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr51_to_He4_Ti47_reaclib) - screened_rates(k_Cr51_to_Mn51_beta_neg_weaktab) - screened_rates(k_Cr51_to_V51_electron_capture_weaktab) - screened_rates(k_Cr51_to_n_Cr50_reaclib) - screened_rates(k_Cr51_to_p_V50_reaclib); jac.set(Cr51, Cr51, scratch); scratch = screened_rates(k_Cr52_to_n_Cr51_reaclib); @@ -44773,7 +42582,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr51, Mn50, 0.0); - scratch = screened_rates(k_Mn51_to_Cr51_weaktab) + screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(N)*state.rho + screened_rates(k_Mn51_to_Cr51_electron_capture_weaktab); jac.set(Cr51, Mn51, scratch); scratch = screened_rates(k_Mn52_to_p_Cr51_reaclib); @@ -44781,7 +42590,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr51, Mn53, 0.0); - scratch = screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(H1)*state.rho; jac.set(Cr51, Mn54, scratch); jac.set(Cr51, Mn55, 0.0); @@ -44790,7 +42599,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr51, Fe53, 0.0); - scratch = screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(N)*state.rho; jac.set(Cr51, Fe54, scratch); scratch = screened_rates(k_Fe55_to_He4_Cr51_reaclib); @@ -44878,17 +42687,17 @@ void jac_nuc(const burn_t& state, jac.set(Cr51, Ge64, 0.0); - scratch = screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(Cr52)*state.rho - screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(Fe55)*state.rho + screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(Mn52)*state.rho; + scratch = screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(Mn52)*state.rho; jac.set(Cr52, N, scratch); - scratch = -screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(Cr52)*state.rho - screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(Mn55)*state.rho + screened_rates(k_p_V51_to_Cr52_reaclib)*Y(V51)*state.rho + screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(V52)*state.rho; + scratch = -screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(Mn55)*state.rho + screened_rates(k_V51_p_to_Cr52_reaclib)*Y(V51)*state.rho + screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(V52)*state.rho; jac.set(Cr52, H1, scratch); jac.set(Cr52, H2, 0.0); jac.set(Cr52, He3, 0.0); - scratch = -screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(Cr52)*state.rho - screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(Cr52)*state.rho + screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(Ti48)*state.rho + screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(Ti49)*state.rho + screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(V49)*state.rho; + scratch = -screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(Ti48)*state.rho + screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(Ti49)*state.rho + screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(V49)*state.rho; jac.set(Cr52, He4, scratch); jac.set(Cr52, Li6, 0.0); @@ -45063,10 +42872,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr52, Ti47, 0.0); - scratch = screened_rates(k_He4_Ti48_to_Cr52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti48_He4_to_Cr52_reaclib)*Y(He4)*state.rho; jac.set(Cr52, Ti48, scratch); - scratch = screened_rates(k_He4_Ti49_to_n_Cr52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti49_He4_to_n_Cr52_reaclib)*Y(He4)*state.rho; jac.set(Cr52, Ti49, scratch); jac.set(Cr52, Ti50, 0.0); @@ -45079,15 +42888,15 @@ void jac_nuc(const burn_t& state, jac.set(Cr52, V48, 0.0); - scratch = screened_rates(k_He4_V49_to_p_Cr52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V49_He4_to_p_Cr52_reaclib)*Y(He4)*state.rho; jac.set(Cr52, V49, scratch); jac.set(Cr52, V50, 0.0); - scratch = screened_rates(k_p_V51_to_Cr52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V51_p_to_Cr52_reaclib)*Y(H1)*state.rho; jac.set(Cr52, V51, scratch); - scratch = screened_rates(k_V52_to_Cr52_weaktab) + screened_rates(k_p_V52_to_n_Cr52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V52_p_to_n_Cr52_reaclib)*Y(H1)*state.rho + screened_rates(k_V52_to_Cr52_beta_neg_weaktab); jac.set(Cr52, V52, scratch); jac.set(Cr52, Cr48, 0.0); @@ -45096,10 +42905,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr52, Cr50, 0.0); - scratch = screened_rates(k_n_Cr51_to_Cr52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr51_n_to_Cr52_reaclib)*Y(N)*state.rho; jac.set(Cr52, Cr51, scratch); - scratch = -screened_rates(k_Cr52_to_He4_Ti48_reaclib) - screened_rates(k_Cr52_to_Mn52_weaktab) - screened_rates(k_Cr52_to_V52_weaktab) - screened_rates(k_Cr52_to_n_Cr51_reaclib) - screened_rates(k_Cr52_to_p_V51_reaclib) - screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr52_to_He4_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr52_to_p_V52_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr52_to_He4_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_Cr52_n_to_He4_Ti49_reaclib)*Y(N)*state.rho - screened_rates(k_Cr52_n_to_p_V52_reaclib)*Y(N)*state.rho - screened_rates(k_Cr52_p_to_He4_V49_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr52_to_He4_Ti48_reaclib) - screened_rates(k_Cr52_to_Mn52_beta_neg_weaktab) - screened_rates(k_Cr52_to_V52_electron_capture_weaktab) - screened_rates(k_Cr52_to_n_Cr51_reaclib) - screened_rates(k_Cr52_to_p_V51_reaclib); jac.set(Cr52, Cr52, scratch); scratch = screened_rates(k_Cr53_to_n_Cr52_reaclib); @@ -45111,7 +42920,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr52, Mn51, 0.0); - scratch = screened_rates(k_Mn52_to_Cr52_weaktab) + screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(N)*state.rho + screened_rates(k_Mn52_to_Cr52_electron_capture_weaktab); jac.set(Cr52, Mn52, scratch); scratch = screened_rates(k_Mn53_to_p_Cr52_reaclib); @@ -45119,7 +42928,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr52, Mn54, 0.0); - scratch = screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(H1)*state.rho; jac.set(Cr52, Mn55, scratch); jac.set(Cr52, Fe52, 0.0); @@ -45128,7 +42937,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr52, Fe54, 0.0); - scratch = screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(N)*state.rho; jac.set(Cr52, Fe55, scratch); scratch = screened_rates(k_Fe56_to_He4_Cr52_reaclib); @@ -45214,17 +43023,17 @@ void jac_nuc(const burn_t& state, jac.set(Cr52, Ge64, 0.0); - scratch = screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(Fe56)*state.rho + screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(Mn53)*state.rho; + scratch = screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(Mn53)*state.rho; jac.set(Cr53, N, scratch); - scratch = -screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(Cr53)*state.rho - screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(Cr53)*state.rho + screened_rates(k_p_V52_to_Cr53_reaclib)*Y(V52)*state.rho; + scratch = -screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(Cr53)*state.rho + screened_rates(k_V52_p_to_Cr53_reaclib)*Y(V52)*state.rho; jac.set(Cr53, H1, scratch); jac.set(Cr53, H2, 0.0); jac.set(Cr53, He3, 0.0); - scratch = -screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(Cr53)*state.rho - screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(Cr53)*state.rho + screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(Ti49)*state.rho + screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(Ti50)*state.rho + screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(V50)*state.rho; + scratch = -screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(Ti49)*state.rho + screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(Ti50)*state.rho + screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(V50)*state.rho; jac.set(Cr53, He4, scratch); jac.set(Cr53, Li6, 0.0); @@ -45401,10 +43210,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr53, Ti48, 0.0); - scratch = screened_rates(k_He4_Ti49_to_Cr53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti49_He4_to_Cr53_reaclib)*Y(He4)*state.rho; jac.set(Cr53, Ti49, scratch); - scratch = screened_rates(k_He4_Ti50_to_n_Cr53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti50_He4_to_n_Cr53_reaclib)*Y(He4)*state.rho; jac.set(Cr53, Ti50, scratch); jac.set(Cr53, Ti51, 0.0); @@ -45417,12 +43226,12 @@ void jac_nuc(const burn_t& state, jac.set(Cr53, V49, 0.0); - scratch = screened_rates(k_He4_V50_to_p_Cr53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V50_He4_to_p_Cr53_reaclib)*Y(He4)*state.rho; jac.set(Cr53, V50, scratch); jac.set(Cr53, V51, 0.0); - scratch = screened_rates(k_p_V52_to_Cr53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_V52_p_to_Cr53_reaclib)*Y(H1)*state.rho; jac.set(Cr53, V52, scratch); jac.set(Cr53, Cr48, 0.0); @@ -45433,10 +43242,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr53, Cr51, 0.0); - scratch = screened_rates(k_n_Cr52_to_Cr53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr52_n_to_Cr53_reaclib)*Y(N)*state.rho; jac.set(Cr53, Cr52, scratch); - scratch = -screened_rates(k_Cr53_to_He4_Ti49_reaclib) - screened_rates(k_Cr53_to_Mn53_weaktab) - screened_rates(k_Cr53_to_n_Cr52_reaclib) - screened_rates(k_Cr53_to_p_V52_reaclib) - screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cr53_to_He4_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr53_to_He4_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_Cr53_n_to_He4_Ti50_reaclib)*Y(N)*state.rho - screened_rates(k_Cr53_p_to_He4_V50_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr53_to_He4_Ti49_reaclib) - screened_rates(k_Cr53_to_Mn53_beta_neg_weaktab) - screened_rates(k_Cr53_to_n_Cr52_reaclib) - screened_rates(k_Cr53_to_p_V52_reaclib); jac.set(Cr53, Cr53, scratch); scratch = screened_rates(k_Cr54_to_n_Cr53_reaclib); @@ -45448,7 +43257,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr53, Mn52, 0.0); - scratch = screened_rates(k_Mn53_to_Cr53_weaktab) + screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(N)*state.rho + screened_rates(k_Mn53_to_Cr53_electron_capture_weaktab); jac.set(Cr53, Mn53, scratch); scratch = screened_rates(k_Mn54_to_p_Cr53_reaclib); @@ -45464,7 +43273,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr53, Fe55, 0.0); - scratch = screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(N)*state.rho; jac.set(Cr53, Fe56, scratch); scratch = screened_rates(k_Fe57_to_He4_Cr53_reaclib); @@ -45548,17 +43357,17 @@ void jac_nuc(const burn_t& state, jac.set(Cr53, Ge64, 0.0); - scratch = screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(Fe57)*state.rho + screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(Mn54)*state.rho; + scratch = screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(Mn54)*state.rho; jac.set(Cr54, N, scratch); - scratch = -screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(Cr54)*state.rho - screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(Cr54)*state.rho - screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(Cr54)*state.rho; + scratch = -screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(Cr54)*state.rho; jac.set(Cr54, H1, scratch); jac.set(Cr54, H2, 0.0); jac.set(Cr54, He3, 0.0); - scratch = -screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(Cr54)*state.rho - screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(Cr54)*state.rho + screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(Ti50)*state.rho + screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(Ti51)*state.rho + screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(V51)*state.rho; + scratch = -screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(Ti50)*state.rho + screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(Ti51)*state.rho + screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(V51)*state.rho; jac.set(Cr54, He4, scratch); jac.set(Cr54, Li6, 0.0); @@ -45737,10 +43546,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr54, Ti49, 0.0); - scratch = screened_rates(k_He4_Ti50_to_Cr54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti50_He4_to_Cr54_reaclib)*Y(He4)*state.rho; jac.set(Cr54, Ti50, scratch); - scratch = screened_rates(k_He4_Ti51_to_n_Cr54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ti51_He4_to_n_Cr54_reaclib)*Y(He4)*state.rho; jac.set(Cr54, Ti51, scratch); jac.set(Cr54, V46, 0.0); @@ -45753,7 +43562,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr54, V50, 0.0); - scratch = screened_rates(k_He4_V51_to_p_Cr54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V51_He4_to_p_Cr54_reaclib)*Y(He4)*state.rho; jac.set(Cr54, V51, scratch); jac.set(Cr54, V52, 0.0); @@ -45768,10 +43577,10 @@ void jac_nuc(const burn_t& state, jac.set(Cr54, Cr52, 0.0); - scratch = screened_rates(k_n_Cr53_to_Cr54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cr53_n_to_Cr54_reaclib)*Y(N)*state.rho; jac.set(Cr54, Cr53, scratch); - scratch = -screened_rates(k_Cr54_to_He4_Ti50_reaclib) - screened_rates(k_Cr54_to_Mn54_weaktab) - screened_rates(k_Cr54_to_n_Cr53_reaclib) - screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cr54_to_He4_Ti51_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cr54_to_He4_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_Cr54_n_to_He4_Ti51_reaclib)*Y(N)*state.rho - screened_rates(k_Cr54_p_to_He4_V51_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_Cr54_to_He4_Ti50_reaclib) - screened_rates(k_Cr54_to_Mn54_beta_neg_weaktab) - screened_rates(k_Cr54_to_n_Cr53_reaclib); jac.set(Cr54, Cr54, scratch); jac.set(Cr54, Mn50, 0.0); @@ -45782,7 +43591,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr54, Mn53, 0.0); - scratch = screened_rates(k_Mn54_to_Cr54_weaktab) + screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(N)*state.rho + screened_rates(k_Mn54_to_Cr54_electron_capture_weaktab); jac.set(Cr54, Mn54, scratch); scratch = screened_rates(k_Mn55_to_p_Cr54_reaclib); @@ -45798,7 +43607,7 @@ void jac_nuc(const burn_t& state, jac.set(Cr54, Fe56, 0.0); - scratch = screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(N)*state.rho; jac.set(Cr54, Fe57, scratch); scratch = screened_rates(k_Fe58_to_He4_Cr54_reaclib); @@ -45880,17 +43689,17 @@ void jac_nuc(const burn_t& state, jac.set(Cr54, Ge64, 0.0); - scratch = screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(Co53)*state.rho - screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(Mn50)*state.rho - screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(Mn50)*state.rho - screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(Mn50)*state.rho; + scratch = screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(Co53)*state.rho - screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(Mn50)*state.rho; jac.set(Mn50, N, scratch); - scratch = screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(Cr49)*state.rho + screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(Fe53)*state.rho; + scratch = screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(Fe53)*state.rho; jac.set(Mn50, H1, scratch); jac.set(Mn50, H2, 0.0); jac.set(Mn50, He3, 0.0); - scratch = -screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(Mn50)*state.rho - screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(Mn50)*state.rho - screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(Mn50)*state.rho + screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(V46)*state.rho + screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(V47)*state.rho; + scratch = -screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(Mn50)*state.rho + screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(V46)*state.rho + screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(V47)*state.rho; jac.set(Mn50, He4, scratch); jac.set(Mn50, Li6, 0.0); @@ -46073,10 +43882,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn50, Ti51, 0.0); - scratch = screened_rates(k_He4_V46_to_Mn50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V46_He4_to_Mn50_reaclib)*Y(He4)*state.rho; jac.set(Mn50, V46, scratch); - scratch = screened_rates(k_He4_V47_to_n_Mn50_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V47_He4_to_n_Mn50_reaclib)*Y(He4)*state.rho; jac.set(Mn50, V47, scratch); jac.set(Mn50, V48, 0.0); @@ -46091,10 +43900,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn50, Cr48, 0.0); - scratch = screened_rates(k_p_Cr49_to_Mn50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr49_p_to_Mn50_reaclib)*Y(H1)*state.rho; jac.set(Mn50, Cr49, scratch); - scratch = screened_rates(k_Cr50_to_Mn50_weaktab) + screened_rates(k_p_Cr50_to_n_Mn50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr50_p_to_n_Mn50_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr50_to_Mn50_beta_neg_weaktab); jac.set(Mn50, Cr50, scratch); jac.set(Mn50, Cr51, 0.0); @@ -46105,7 +43914,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn50, Cr54, 0.0); - scratch = -screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn50_to_Cr50_weaktab) - screened_rates(k_Mn50_to_He4_V46_reaclib) - screened_rates(k_Mn50_to_p_Cr49_reaclib) - screened_rates(k_n_Mn50_to_He4_V47_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn50_to_p_Cr50_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn50_n_to_He4_V47_reaclib)*Y(N)*state.rho - screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(N)*state.rho - screened_rates(k_Mn50_n_to_p_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_Mn50_to_Cr50_electron_capture_weaktab) - screened_rates(k_Mn50_to_He4_V46_reaclib) - screened_rates(k_Mn50_to_p_Cr49_reaclib); jac.set(Mn50, Mn50, scratch); scratch = screened_rates(k_Mn51_to_n_Mn50_reaclib); @@ -46121,7 +43930,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn50, Fe52, 0.0); - scratch = screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(H1)*state.rho; jac.set(Mn50, Fe53, scratch); jac.set(Mn50, Fe54, 0.0); @@ -46134,7 +43943,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn50, Fe58, 0.0); - scratch = screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(N)*state.rho; jac.set(Mn50, Co53, scratch); scratch = screened_rates(k_Co54_to_He4_Mn50_reaclib); @@ -46212,17 +44021,17 @@ void jac_nuc(const burn_t& state, jac.set(Mn50, Ge64, 0.0); - scratch = screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(Co54)*state.rho + screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(Mn50)*state.rho - screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(Mn51)*state.rho - screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(Co54)*state.rho + screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(Mn50)*state.rho - screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(Mn51)*state.rho; jac.set(Mn51, N, scratch); - scratch = screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(Cr50)*state.rho + screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(Mn51)*state.rho; jac.set(Mn51, H1, scratch); jac.set(Mn51, H2, 0.0); jac.set(Mn51, He3, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(V47)*state.rho + screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(V48)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(Cr48)*state.rho - screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho + screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(V47)*state.rho + screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(V48)*state.rho; jac.set(Mn51, He4, scratch); jac.set(Mn51, Li6, 0.0); @@ -46407,10 +44216,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, V46, 0.0); - scratch = screened_rates(k_He4_V47_to_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V47_He4_to_Mn51_reaclib)*Y(He4)*state.rho; jac.set(Mn51, V47, scratch); - scratch = screened_rates(k_He4_V48_to_n_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V48_He4_to_n_Mn51_reaclib)*Y(He4)*state.rho; jac.set(Mn51, V48, scratch); jac.set(Mn51, V49, 0.0); @@ -46421,15 +44230,15 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, V52, 0.0); - scratch = screened_rates(k_He4_Cr48_to_p_Mn51_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_p_Mn51_reaclib)*Y(He4)*state.rho; jac.set(Mn51, Cr48, scratch); jac.set(Mn51, Cr49, 0.0); - scratch = screened_rates(k_p_Cr50_to_Mn51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr50_p_to_Mn51_reaclib)*Y(H1)*state.rho; jac.set(Mn51, Cr50, scratch); - scratch = screened_rates(k_Cr51_to_Mn51_weaktab) + screened_rates(k_p_Cr51_to_n_Mn51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr51_p_to_n_Mn51_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr51_to_Mn51_beta_neg_weaktab); jac.set(Mn51, Cr51, scratch); jac.set(Mn51, Cr52, 0.0); @@ -46438,10 +44247,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Cr54, 0.0); - scratch = screened_rates(k_n_Mn50_to_Mn51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn50_n_to_Mn51_reaclib)*Y(N)*state.rho; jac.set(Mn51, Mn50, scratch); - scratch = -screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_to_Cr51_weaktab) - screened_rates(k_Mn51_to_He4_V47_reaclib) - screened_rates(k_Mn51_to_n_Mn50_reaclib) - screened_rates(k_Mn51_to_p_Cr50_reaclib) - screened_rates(k_n_Mn51_to_He4_V48_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn51_to_p_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn51_to_He4_Cr48_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn51_n_to_He4_V48_reaclib)*Y(N)*state.rho - screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_Mn51_n_to_p_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn51_p_to_He4_Cr48_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn51_to_Cr51_electron_capture_weaktab) - screened_rates(k_Mn51_to_He4_V47_reaclib) - screened_rates(k_Mn51_to_n_Mn50_reaclib) - screened_rates(k_Mn51_to_p_Cr50_reaclib); jac.set(Mn51, Mn51, scratch); scratch = screened_rates(k_Mn52_to_n_Mn51_reaclib); @@ -46458,7 +44267,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Fe53, 0.0); - scratch = screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(H1)*state.rho; jac.set(Mn51, Fe54, scratch); jac.set(Mn51, Fe55, 0.0); @@ -46471,7 +44280,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Co53, 0.0); - scratch = screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(N)*state.rho; jac.set(Mn51, Co54, scratch); scratch = screened_rates(k_Co55_to_He4_Mn51_reaclib); @@ -46547,17 +44356,17 @@ void jac_nuc(const burn_t& state, jac.set(Mn51, Ge64, 0.0); - scratch = screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(Co55)*state.rho + screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(Fe52)*state.rho + screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(Mn52)*state.rho - screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(Mn52)*state.rho; + scratch = screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(Mn51)*state.rho - screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(Mn52)*state.rho; jac.set(Mn52, N, scratch); - scratch = screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(Cr51)*state.rho + screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(Mn52)*state.rho - screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(Mn52)*state.rho; + scratch = screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(Mn52)*state.rho; jac.set(Mn52, H1, scratch); jac.set(Mn52, H2, 0.0); jac.set(Mn52, He3, 0.0); - scratch = screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(Mn52)*state.rho - screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(Mn52)*state.rho - screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(Mn52)*state.rho + screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(V48)*state.rho + screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(V49)*state.rho; + scratch = screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(Mn52)*state.rho + screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(V48)*state.rho + screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(V49)*state.rho; jac.set(Mn52, He4, scratch); jac.set(Mn52, Li6, 0.0); @@ -46744,10 +44553,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn52, V47, 0.0); - scratch = screened_rates(k_He4_V48_to_Mn52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V48_He4_to_Mn52_reaclib)*Y(He4)*state.rho; jac.set(Mn52, V48, scratch); - scratch = screened_rates(k_He4_V49_to_n_Mn52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V49_He4_to_n_Mn52_reaclib)*Y(He4)*state.rho; jac.set(Mn52, V49, scratch); jac.set(Mn52, V50, 0.0); @@ -46758,15 +44567,15 @@ void jac_nuc(const burn_t& state, jac.set(Mn52, Cr48, 0.0); - scratch = screened_rates(k_He4_Cr49_to_p_Mn52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr49_He4_to_p_Mn52_reaclib)*Y(He4)*state.rho; jac.set(Mn52, Cr49, scratch); jac.set(Mn52, Cr50, 0.0); - scratch = screened_rates(k_p_Cr51_to_Mn52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr51_p_to_Mn52_reaclib)*Y(H1)*state.rho; jac.set(Mn52, Cr51, scratch); - scratch = screened_rates(k_Cr52_to_Mn52_weaktab) + screened_rates(k_p_Cr52_to_n_Mn52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr52_p_to_n_Mn52_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr52_to_Mn52_beta_neg_weaktab); jac.set(Mn52, Cr52, scratch); jac.set(Mn52, Cr53, 0.0); @@ -46775,10 +44584,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn52, Mn50, 0.0); - scratch = screened_rates(k_n_Mn51_to_Mn52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn51_n_to_Mn52_reaclib)*Y(N)*state.rho; jac.set(Mn52, Mn51, scratch); - scratch = -screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn52_to_Cr52_weaktab) - screened_rates(k_Mn52_to_Fe52_weaktab) - screened_rates(k_Mn52_to_He4_V48_reaclib) - screened_rates(k_Mn52_to_n_Mn51_reaclib) - screened_rates(k_Mn52_to_p_Cr51_reaclib) - screened_rates(k_n_Mn52_to_He4_V49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn52_to_p_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn52_to_He4_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn52_n_to_He4_V49_reaclib)*Y(N)*state.rho - screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_Mn52_n_to_p_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn52_p_to_He4_Cr49_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn52_to_Cr52_electron_capture_weaktab) - screened_rates(k_Mn52_to_Fe52_beta_neg_weaktab) - screened_rates(k_Mn52_to_He4_V48_reaclib) - screened_rates(k_Mn52_to_n_Mn51_reaclib) - screened_rates(k_Mn52_to_p_Cr51_reaclib); jac.set(Mn52, Mn52, scratch); scratch = screened_rates(k_Mn53_to_n_Mn52_reaclib); @@ -46788,7 +44597,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn52, Mn55, 0.0); - scratch = screened_rates(k_Fe52_to_Mn52_weaktab) + screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(N)*state.rho + screened_rates(k_Fe52_to_Mn52_electron_capture_weaktab); jac.set(Mn52, Fe52, scratch); scratch = screened_rates(k_Fe53_to_p_Mn52_reaclib); @@ -46796,7 +44605,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn52, Fe54, 0.0); - scratch = screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(H1)*state.rho; jac.set(Mn52, Fe55, scratch); jac.set(Mn52, Fe56, 0.0); @@ -46809,7 +44618,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn52, Co54, 0.0); - scratch = screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(N)*state.rho; jac.set(Mn52, Co55, scratch); scratch = screened_rates(k_Co56_to_He4_Mn52_reaclib); @@ -46883,17 +44692,17 @@ void jac_nuc(const burn_t& state, jac.set(Mn52, Ge64, 0.0); - scratch = screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(Mn53)*state.rho - screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(Mn53)*state.rho; + scratch = screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(Co56)*state.rho + screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(Mn52)*state.rho - screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(Mn53)*state.rho; jac.set(Mn53, N, scratch); - scratch = screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(Cr52)*state.rho + screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(Cr53)*state.rho + screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(Mn53)*state.rho - screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(Mn53)*state.rho; + scratch = screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(Mn53)*state.rho; jac.set(Mn53, H1, scratch); jac.set(Mn53, H2, 0.0); jac.set(Mn53, He3, 0.0); - scratch = screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(Mn53)*state.rho - screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(Mn53)*state.rho - screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(Mn53)*state.rho + screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(V49)*state.rho + screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(V50)*state.rho; + scratch = screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(Mn53)*state.rho + screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(V49)*state.rho + screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(V50)*state.rho; jac.set(Mn53, He4, scratch); jac.set(Mn53, Li6, 0.0); @@ -47082,10 +44891,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn53, V48, 0.0); - scratch = screened_rates(k_He4_V49_to_Mn53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V49_He4_to_Mn53_reaclib)*Y(He4)*state.rho; jac.set(Mn53, V49, scratch); - scratch = screened_rates(k_He4_V50_to_n_Mn53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V50_He4_to_n_Mn53_reaclib)*Y(He4)*state.rho; jac.set(Mn53, V50, scratch); jac.set(Mn53, V51, 0.0); @@ -47096,15 +44905,15 @@ void jac_nuc(const burn_t& state, jac.set(Mn53, Cr49, 0.0); - scratch = screened_rates(k_He4_Cr50_to_p_Mn53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr50_He4_to_p_Mn53_reaclib)*Y(He4)*state.rho; jac.set(Mn53, Cr50, scratch); jac.set(Mn53, Cr51, 0.0); - scratch = screened_rates(k_p_Cr52_to_Mn53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr52_p_to_Mn53_reaclib)*Y(H1)*state.rho; jac.set(Mn53, Cr52, scratch); - scratch = screened_rates(k_Cr53_to_Mn53_weaktab) + screened_rates(k_p_Cr53_to_n_Mn53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr53_p_to_n_Mn53_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr53_to_Mn53_beta_neg_weaktab); jac.set(Mn53, Cr53, scratch); jac.set(Mn53, Cr54, 0.0); @@ -47113,10 +44922,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn53, Mn51, 0.0); - scratch = screened_rates(k_n_Mn52_to_Mn53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn52_n_to_Mn53_reaclib)*Y(N)*state.rho; jac.set(Mn53, Mn52, scratch); - scratch = -screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn53_to_Cr53_weaktab) - screened_rates(k_Mn53_to_Fe53_weaktab) - screened_rates(k_Mn53_to_He4_V49_reaclib) - screened_rates(k_Mn53_to_n_Mn52_reaclib) - screened_rates(k_Mn53_to_p_Cr52_reaclib) - screened_rates(k_n_Mn53_to_He4_V50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn53_to_p_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn53_to_He4_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn53_n_to_He4_V50_reaclib)*Y(N)*state.rho - screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_Mn53_n_to_p_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn53_p_to_He4_Cr50_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn53_to_Cr53_electron_capture_weaktab) - screened_rates(k_Mn53_to_Fe53_beta_neg_weaktab) - screened_rates(k_Mn53_to_He4_V49_reaclib) - screened_rates(k_Mn53_to_n_Mn52_reaclib) - screened_rates(k_Mn53_to_p_Cr52_reaclib); jac.set(Mn53, Mn53, scratch); scratch = screened_rates(k_Mn54_to_n_Mn53_reaclib); @@ -47126,7 +44935,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn53, Fe52, 0.0); - scratch = screened_rates(k_Fe53_to_Mn53_weaktab) + screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(N)*state.rho + screened_rates(k_Fe53_to_Mn53_electron_capture_weaktab); jac.set(Mn53, Fe53, scratch); scratch = screened_rates(k_Fe54_to_p_Mn53_reaclib); @@ -47134,7 +44943,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn53, Fe55, 0.0); - scratch = screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(H1)*state.rho; jac.set(Mn53, Fe56, scratch); jac.set(Mn53, Fe57, 0.0); @@ -47147,7 +44956,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn53, Co55, 0.0); - scratch = screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(N)*state.rho; jac.set(Mn53, Co56, scratch); scratch = screened_rates(k_Co57_to_He4_Mn53_reaclib); @@ -47219,17 +45028,17 @@ void jac_nuc(const burn_t& state, jac.set(Mn53, Ge64, 0.0); - scratch = screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(Co57)*state.rho + screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(Mn54)*state.rho - screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(Mn54)*state.rho; + scratch = screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(Co57)*state.rho + screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(Mn53)*state.rho - screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(Mn54)*state.rho; jac.set(Mn54, N, scratch); - scratch = screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(Cr53)*state.rho + screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(Cr54)*state.rho + screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(Fe57)*state.rho - screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(Mn54)*state.rho - screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(Mn54)*state.rho; + scratch = screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(Mn54)*state.rho; jac.set(Mn54, H1, scratch); jac.set(Mn54, H2, 0.0); jac.set(Mn54, He3, 0.0); - scratch = screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(Mn54)*state.rho - screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(Mn54)*state.rho - screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(Mn54)*state.rho + screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(V50)*state.rho + screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(V51)*state.rho; + scratch = screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(Mn54)*state.rho + screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(V50)*state.rho + screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(V51)*state.rho; jac.set(Mn54, He4, scratch); jac.set(Mn54, Li6, 0.0); @@ -47420,10 +45229,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn54, V49, 0.0); - scratch = screened_rates(k_He4_V50_to_Mn54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V50_He4_to_Mn54_reaclib)*Y(He4)*state.rho; jac.set(Mn54, V50, scratch); - scratch = screened_rates(k_He4_V51_to_n_Mn54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V51_He4_to_n_Mn54_reaclib)*Y(He4)*state.rho; jac.set(Mn54, V51, scratch); jac.set(Mn54, V52, 0.0); @@ -47434,15 +45243,15 @@ void jac_nuc(const burn_t& state, jac.set(Mn54, Cr50, 0.0); - scratch = screened_rates(k_He4_Cr51_to_p_Mn54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr51_He4_to_p_Mn54_reaclib)*Y(He4)*state.rho; jac.set(Mn54, Cr51, scratch); jac.set(Mn54, Cr52, 0.0); - scratch = screened_rates(k_p_Cr53_to_Mn54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr53_p_to_Mn54_reaclib)*Y(H1)*state.rho; jac.set(Mn54, Cr53, scratch); - scratch = screened_rates(k_Cr54_to_Mn54_weaktab) + screened_rates(k_p_Cr54_to_n_Mn54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr54_p_to_n_Mn54_reaclib)*Y(H1)*state.rho + screened_rates(k_Cr54_to_Mn54_beta_neg_weaktab); jac.set(Mn54, Cr54, scratch); jac.set(Mn54, Mn50, 0.0); @@ -47451,10 +45260,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn54, Mn52, 0.0); - scratch = screened_rates(k_n_Mn53_to_Mn54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn53_n_to_Mn54_reaclib)*Y(N)*state.rho; jac.set(Mn54, Mn53, scratch); - scratch = -screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn54_to_Cr54_weaktab) - screened_rates(k_Mn54_to_Fe54_weaktab) - screened_rates(k_Mn54_to_He4_V50_reaclib) - screened_rates(k_Mn54_to_n_Mn53_reaclib) - screened_rates(k_Mn54_to_p_Cr53_reaclib) - screened_rates(k_n_Mn54_to_He4_V51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Mn54_to_p_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn54_to_He4_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn54_n_to_He4_V51_reaclib)*Y(N)*state.rho - screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_Mn54_n_to_p_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn54_p_to_He4_Cr51_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn54_to_Cr54_electron_capture_weaktab) - screened_rates(k_Mn54_to_Fe54_beta_neg_weaktab) - screened_rates(k_Mn54_to_He4_V50_reaclib) - screened_rates(k_Mn54_to_n_Mn53_reaclib) - screened_rates(k_Mn54_to_p_Cr53_reaclib); jac.set(Mn54, Mn54, scratch); scratch = screened_rates(k_Mn55_to_n_Mn54_reaclib); @@ -47464,7 +45273,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn54, Fe53, 0.0); - scratch = screened_rates(k_Fe54_to_Mn54_weaktab) + screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(N)*state.rho + screened_rates(k_Fe54_to_Mn54_electron_capture_weaktab); jac.set(Mn54, Fe54, scratch); scratch = screened_rates(k_Fe55_to_p_Mn54_reaclib); @@ -47472,7 +45281,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn54, Fe56, 0.0); - scratch = screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(H1)*state.rho; jac.set(Mn54, Fe57, scratch); jac.set(Mn54, Fe58, 0.0); @@ -47485,7 +45294,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn54, Co56, 0.0); - scratch = screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(N)*state.rho; jac.set(Mn54, Co57, scratch); scratch = screened_rates(k_Co58_to_He4_Mn54_reaclib); @@ -47555,17 +45364,17 @@ void jac_nuc(const burn_t& state, jac.set(Mn54, Ge64, 0.0); - scratch = screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(Co58)*state.rho + screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(Mn55)*state.rho; + scratch = screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(Co58)*state.rho + screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(Mn54)*state.rho - screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(Mn55)*state.rho; jac.set(Mn55, N, scratch); - scratch = screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(Cr54)*state.rho + screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(Fe58)*state.rho - screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*state.rho - screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(Mn55)*state.rho - screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(Mn55)*state.rho; + scratch = screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(Cr54)*state.rho + screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(Mn55)*state.rho; jac.set(Mn55, H1, scratch); jac.set(Mn55, H2, 0.0); jac.set(Mn55, He3, 0.0); - scratch = screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(Mn55)*state.rho - screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(Mn55)*state.rho - screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(Mn55)*state.rho + screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(V51)*state.rho + screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(V52)*state.rho; + scratch = screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(Mn55)*state.rho - screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(Mn55)*state.rho + screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(V51)*state.rho + screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(V52)*state.rho; jac.set(Mn55, He4, scratch); jac.set(Mn55, Li6, 0.0); @@ -47758,10 +45567,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, V50, 0.0); - scratch = screened_rates(k_He4_V51_to_Mn55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V51_He4_to_Mn55_reaclib)*Y(He4)*state.rho; jac.set(Mn55, V51, scratch); - scratch = screened_rates(k_He4_V52_to_n_Mn55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_V52_He4_to_n_Mn55_reaclib)*Y(He4)*state.rho; jac.set(Mn55, V52, scratch); jac.set(Mn55, Cr48, 0.0); @@ -47772,12 +45581,12 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Cr51, 0.0); - scratch = screened_rates(k_He4_Cr52_to_p_Mn55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr52_He4_to_p_Mn55_reaclib)*Y(He4)*state.rho; jac.set(Mn55, Cr52, scratch); jac.set(Mn55, Cr53, 0.0); - scratch = screened_rates(k_p_Cr54_to_Mn55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cr54_p_to_Mn55_reaclib)*Y(H1)*state.rho; jac.set(Mn55, Cr54, scratch); jac.set(Mn55, Mn50, 0.0); @@ -47788,10 +45597,10 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Mn53, 0.0); - scratch = screened_rates(k_n_Mn54_to_Mn55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Mn54_n_to_Mn55_reaclib)*Y(N)*state.rho; jac.set(Mn55, Mn54, scratch); - scratch = -screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn55_to_Fe55_weaktab) - screened_rates(k_Mn55_to_He4_V51_reaclib) - screened_rates(k_Mn55_to_n_Mn54_reaclib) - screened_rates(k_Mn55_to_p_Cr54_reaclib) - screened_rates(k_n_Mn55_to_He4_V52_reaclib)*Y(N)*state.rho - screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn55_to_He4_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(He4)*state.rho - screened_rates(k_Mn55_n_to_He4_V52_reaclib)*Y(N)*state.rho - screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn55_p_to_He4_Cr52_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab) - screened_rates(k_Mn55_to_He4_V51_reaclib) - screened_rates(k_Mn55_to_n_Mn54_reaclib) - screened_rates(k_Mn55_to_p_Cr54_reaclib); jac.set(Mn55, Mn55, scratch); jac.set(Mn55, Fe52, 0.0); @@ -47800,7 +45609,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Fe54, 0.0); - scratch = screened_rates(k_Fe55_to_Mn55_weaktab) + screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(N)*state.rho + screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab); jac.set(Mn55, Fe55, scratch); scratch = screened_rates(k_Fe56_to_p_Mn55_reaclib); @@ -47808,7 +45617,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Fe57, 0.0); - scratch = screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(H1)*state.rho; jac.set(Mn55, Fe58, scratch); jac.set(Mn55, Co53, 0.0); @@ -47821,7 +45630,7 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Co57, 0.0); - scratch = screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(N)*state.rho; jac.set(Mn55, Co58, scratch); scratch = screened_rates(k_Co59_to_He4_Mn55_reaclib); @@ -47889,17 +45698,17 @@ void jac_nuc(const burn_t& state, jac.set(Mn55, Ge64, 0.0); - scratch = -screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(Fe52)*state.rho - screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(Fe52)*state.rho; + scratch = -screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(Fe52)*state.rho; jac.set(Fe52, N, scratch); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(Co55)*state.rho - screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(Fe52)*state.rho + screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(Mn51)*state.rho + screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(Mn52)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(Co55)*state.rho - screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(Mn51)*state.rho + screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(Mn52)*state.rho; jac.set(Fe52, H1, scratch); jac.set(Fe52, H2, 0.0); jac.set(Fe52, He3, 0.0); - scratch = screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(Cr48)*state.rho + screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(Cr48)*state.rho + screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(Cr49)*state.rho - screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho; jac.set(Fe52, He4, scratch); jac.set(Fe52, Li6, 0.0); @@ -48096,10 +45905,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, V52, 0.0); - scratch = screened_rates(k_He4_Cr48_to_Fe52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr48_He4_to_Fe52_reaclib)*Y(He4)*state.rho; jac.set(Fe52, Cr48, scratch); - scratch = screened_rates(k_He4_Cr49_to_n_Fe52_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr49_He4_to_n_Fe52_reaclib)*Y(He4)*state.rho; jac.set(Fe52, Cr49, scratch); jac.set(Fe52, Cr50, 0.0); @@ -48114,10 +45923,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Mn50, 0.0); - scratch = screened_rates(k_p_Mn51_to_Fe52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn51_p_to_Fe52_reaclib)*Y(H1)*state.rho; jac.set(Fe52, Mn51, scratch); - scratch = screened_rates(k_Mn52_to_Fe52_weaktab) + screened_rates(k_p_Mn52_to_n_Fe52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn52_p_to_n_Fe52_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn52_to_Fe52_beta_neg_weaktab); jac.set(Fe52, Mn52, scratch); jac.set(Fe52, Mn53, 0.0); @@ -48126,7 +45935,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Mn55, 0.0); - scratch = -screened_rates(k_Fe52_to_He4_Cr48_reaclib) - screened_rates(k_Fe52_to_Mn52_weaktab) - screened_rates(k_Fe52_to_p_Mn51_reaclib) - screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe52_to_He4_Cr49_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe52_to_p_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_Fe52_n_to_He4_Cr49_reaclib)*Y(N)*state.rho - screened_rates(k_Fe52_n_to_p_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe52_to_He4_Cr48_reaclib) - screened_rates(k_Fe52_to_Mn52_electron_capture_weaktab) - screened_rates(k_Fe52_to_p_Mn51_reaclib); jac.set(Fe52, Fe52, scratch); scratch = screened_rates(k_Fe53_to_n_Fe52_reaclib); @@ -48147,7 +45956,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Co54, 0.0); - scratch = screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(H1)*state.rho; jac.set(Fe52, Co55, scratch); jac.set(Fe52, Co56, 0.0); @@ -48221,17 +46030,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe52, Ge64, 0.0); - scratch = screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(Co53)*state.rho + screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(Fe53)*state.rho - screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(Co53)*state.rho + screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(Fe52)*state.rho - screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho; jac.set(Fe53, N, scratch); - scratch = screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(Co56)*state.rho - screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(Fe53)*state.rho - screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(Mn52)*state.rho + screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(Mn53)*state.rho; + scratch = screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(Co56)*state.rho - screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(Mn52)*state.rho + screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(Mn53)*state.rho; jac.set(Fe53, H1, scratch); jac.set(Fe53, H2, 0.0); jac.set(Fe53, He3, 0.0); - scratch = screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(Cr49)*state.rho + screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(Mn50)*state.rho; + scratch = screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(Cr49)*state.rho + screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(Cr50)*state.rho - screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(Mn50)*state.rho; jac.set(Fe53, He4, scratch); jac.set(Fe53, Li6, 0.0); @@ -48430,10 +46239,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Cr48, 0.0); - scratch = screened_rates(k_He4_Cr49_to_Fe53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr49_He4_to_Fe53_reaclib)*Y(He4)*state.rho; jac.set(Fe53, Cr49, scratch); - scratch = screened_rates(k_He4_Cr50_to_n_Fe53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr50_He4_to_n_Fe53_reaclib)*Y(He4)*state.rho; jac.set(Fe53, Cr50, scratch); jac.set(Fe53, Cr51, 0.0); @@ -48444,25 +46253,25 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Cr54, 0.0); - scratch = screened_rates(k_He4_Mn50_to_p_Fe53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn50_He4_to_p_Fe53_reaclib)*Y(He4)*state.rho; jac.set(Fe53, Mn50, scratch); jac.set(Fe53, Mn51, 0.0); - scratch = screened_rates(k_p_Mn52_to_Fe53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn52_p_to_Fe53_reaclib)*Y(H1)*state.rho; jac.set(Fe53, Mn52, scratch); - scratch = screened_rates(k_Mn53_to_Fe53_weaktab) + screened_rates(k_p_Mn53_to_n_Fe53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn53_p_to_n_Fe53_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn53_to_Fe53_beta_neg_weaktab); jac.set(Fe53, Mn53, scratch); jac.set(Fe53, Mn54, 0.0); jac.set(Fe53, Mn55, 0.0); - scratch = screened_rates(k_n_Fe52_to_Fe53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe52_n_to_Fe53_reaclib)*Y(N)*state.rho; jac.set(Fe53, Fe52, scratch); - scratch = -screened_rates(k_Fe53_to_Co53_weaktab) - screened_rates(k_Fe53_to_He4_Cr49_reaclib) - screened_rates(k_Fe53_to_Mn53_weaktab) - screened_rates(k_Fe53_to_n_Fe52_reaclib) - screened_rates(k_Fe53_to_p_Mn52_reaclib) - screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe53_to_He4_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe53_to_p_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe53_to_He4_Mn50_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_Fe53_n_to_He4_Cr50_reaclib)*Y(N)*state.rho - screened_rates(k_Fe53_n_to_p_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe53_p_to_He4_Mn50_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe53_to_Co53_beta_neg_weaktab) - screened_rates(k_Fe53_to_He4_Cr49_reaclib) - screened_rates(k_Fe53_to_Mn53_electron_capture_weaktab) - screened_rates(k_Fe53_to_n_Fe52_reaclib) - screened_rates(k_Fe53_to_p_Mn52_reaclib); jac.set(Fe53, Fe53, scratch); scratch = screened_rates(k_Fe54_to_n_Fe53_reaclib); @@ -48476,7 +46285,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Fe58, 0.0); - scratch = screened_rates(k_Co53_to_Fe53_weaktab) + screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(N)*state.rho + screened_rates(k_Co53_to_Fe53_electron_capture_weaktab); jac.set(Fe53, Co53, scratch); scratch = screened_rates(k_Co54_to_p_Fe53_reaclib); @@ -48484,7 +46293,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Co55, 0.0); - scratch = screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(H1)*state.rho; jac.set(Fe53, Co56, scratch); jac.set(Fe53, Co57, 0.0); @@ -48493,7 +46302,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Co59, 0.0); - scratch = screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(N)*state.rho; jac.set(Fe53, Ni56, scratch); scratch = screened_rates(k_Ni57_to_He4_Fe53_reaclib); @@ -48557,17 +46366,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe53, Ge64, 0.0); - scratch = screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(Co54)*state.rho + screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(Co54)*state.rho + screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho; jac.set(Fe54, N, scratch); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(Mn53)*state.rho + screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(Mn54)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(Mn53)*state.rho + screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(Mn54)*state.rho; jac.set(Fe54, H1, scratch); jac.set(Fe54, H2, 0.0); jac.set(Fe54, He3, 0.0); - scratch = screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(Cr50)*state.rho + screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(Fe54)*state.rho + screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; + scratch = screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(Cr50)*state.rho + screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(Cr51)*state.rho - screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(Mn51)*state.rho; jac.set(Fe54, He4, scratch); jac.set(Fe54, Li6, 0.0); @@ -48768,10 +46577,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Cr49, 0.0); - scratch = screened_rates(k_He4_Cr50_to_Fe54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr50_He4_to_Fe54_reaclib)*Y(He4)*state.rho; jac.set(Fe54, Cr50, scratch); - scratch = screened_rates(k_He4_Cr51_to_n_Fe54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr51_He4_to_n_Fe54_reaclib)*Y(He4)*state.rho; jac.set(Fe54, Cr51, scratch); jac.set(Fe54, Cr52, 0.0); @@ -48782,25 +46591,25 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Mn50, 0.0); - scratch = screened_rates(k_He4_Mn51_to_p_Fe54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_p_Fe54_reaclib)*Y(He4)*state.rho; jac.set(Fe54, Mn51, scratch); jac.set(Fe54, Mn52, 0.0); - scratch = screened_rates(k_p_Mn53_to_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn53_p_to_Fe54_reaclib)*Y(H1)*state.rho; jac.set(Fe54, Mn53, scratch); - scratch = screened_rates(k_Mn54_to_Fe54_weaktab) + screened_rates(k_p_Mn54_to_n_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn54_p_to_n_Fe54_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn54_to_Fe54_beta_neg_weaktab); jac.set(Fe54, Mn54, scratch); jac.set(Fe54, Mn55, 0.0); jac.set(Fe54, Fe52, 0.0); - scratch = screened_rates(k_n_Fe53_to_Fe54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe53_n_to_Fe54_reaclib)*Y(N)*state.rho; jac.set(Fe54, Fe53, scratch); - scratch = -screened_rates(k_Fe54_to_Co54_weaktab) - screened_rates(k_Fe54_to_He4_Cr50_reaclib) - screened_rates(k_Fe54_to_Mn54_weaktab) - screened_rates(k_Fe54_to_n_Fe53_reaclib) - screened_rates(k_Fe54_to_p_Mn53_reaclib) - screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe54_to_He4_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe54_to_p_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_He4_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Fe54_n_to_He4_Cr51_reaclib)*Y(N)*state.rho - screened_rates(k_Fe54_n_to_p_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_He4_Mn51_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe54_to_Co54_beta_neg_weaktab) - screened_rates(k_Fe54_to_He4_Cr50_reaclib) - screened_rates(k_Fe54_to_Mn54_electron_capture_weaktab) - screened_rates(k_Fe54_to_n_Fe53_reaclib) - screened_rates(k_Fe54_to_p_Mn53_reaclib); jac.set(Fe54, Fe54, scratch); scratch = screened_rates(k_Fe55_to_n_Fe54_reaclib); @@ -48814,7 +46623,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Co53, 0.0); - scratch = screened_rates(k_Co54_to_Fe54_weaktab) + screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(N)*state.rho + screened_rates(k_Co54_to_Fe54_electron_capture_weaktab); jac.set(Fe54, Co54, scratch); scratch = screened_rates(k_Co55_to_p_Fe54_reaclib); @@ -48822,7 +46631,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Co56, 0.0); - scratch = screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho; jac.set(Fe54, Co57, scratch); jac.set(Fe54, Co58, 0.0); @@ -48831,7 +46640,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Ni56, 0.0); - scratch = screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(N)*state.rho; jac.set(Fe54, Ni57, scratch); scratch = screened_rates(k_Ni58_to_He4_Fe54_reaclib); @@ -48893,17 +46702,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe54, Ge64, 0.0); - scratch = screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho; jac.set(Fe55, N, scratch); - scratch = screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(Co58)*state.rho - screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(Mn54)*state.rho + screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(Mn55)*state.rho; + scratch = screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(Co58)*state.rho - screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(Mn54)*state.rho + screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(Mn55)*state.rho; jac.set(Fe55, H1, scratch); jac.set(Fe55, H2, 0.0); jac.set(Fe55, He3, 0.0); - scratch = screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(Cr51)*state.rho + screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(Fe55)*state.rho - screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(Fe55)*state.rho - screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(Fe55)*state.rho + screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(Mn52)*state.rho; + scratch = screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(Cr51)*state.rho + screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(Cr52)*state.rho - screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(Mn52)*state.rho; jac.set(Fe55, He4, scratch); jac.set(Fe55, Li6, 0.0); @@ -49106,10 +46915,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe55, Cr50, 0.0); - scratch = screened_rates(k_He4_Cr51_to_Fe55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr51_He4_to_Fe55_reaclib)*Y(He4)*state.rho; jac.set(Fe55, Cr51, scratch); - scratch = screened_rates(k_He4_Cr52_to_n_Fe55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr52_He4_to_n_Fe55_reaclib)*Y(He4)*state.rho; jac.set(Fe55, Cr52, scratch); jac.set(Fe55, Cr53, 0.0); @@ -49120,25 +46929,25 @@ void jac_nuc(const burn_t& state, jac.set(Fe55, Mn51, 0.0); - scratch = screened_rates(k_He4_Mn52_to_p_Fe55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn52_He4_to_p_Fe55_reaclib)*Y(He4)*state.rho; jac.set(Fe55, Mn52, scratch); jac.set(Fe55, Mn53, 0.0); - scratch = screened_rates(k_p_Mn54_to_Fe55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn54_p_to_Fe55_reaclib)*Y(H1)*state.rho; jac.set(Fe55, Mn54, scratch); - scratch = screened_rates(k_Mn55_to_Fe55_weaktab) + screened_rates(k_p_Mn55_to_n_Fe55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn55_p_to_n_Fe55_reaclib)*Y(H1)*state.rho + screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab); jac.set(Fe55, Mn55, scratch); jac.set(Fe55, Fe52, 0.0); jac.set(Fe55, Fe53, 0.0); - scratch = screened_rates(k_n_Fe54_to_Fe55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe54_n_to_Fe55_reaclib)*Y(N)*state.rho; jac.set(Fe55, Fe54, scratch); - scratch = -screened_rates(k_Fe55_to_Co55_weaktab) - screened_rates(k_Fe55_to_He4_Cr51_reaclib) - screened_rates(k_Fe55_to_Mn55_weaktab) - screened_rates(k_Fe55_to_n_Fe54_reaclib) - screened_rates(k_Fe55_to_p_Mn54_reaclib) - screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe55_to_He4_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe55_to_p_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe55_to_He4_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_n_to_He4_Cr52_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_n_to_p_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe55_p_to_He4_Mn52_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe55_to_Co55_beta_neg_weaktab) - screened_rates(k_Fe55_to_He4_Cr51_reaclib) - screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab) - screened_rates(k_Fe55_to_n_Fe54_reaclib) - screened_rates(k_Fe55_to_p_Mn54_reaclib); jac.set(Fe55, Fe55, scratch); scratch = screened_rates(k_Fe56_to_n_Fe55_reaclib); @@ -49152,7 +46961,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe55, Co54, 0.0); - scratch = screened_rates(k_Co55_to_Fe55_weaktab) + screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(N)*state.rho + screened_rates(k_Co55_to_Fe55_electron_capture_weaktab); jac.set(Fe55, Co55, scratch); scratch = screened_rates(k_Co56_to_p_Fe55_reaclib); @@ -49160,7 +46969,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe55, Co57, 0.0); - scratch = screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(H1)*state.rho; jac.set(Fe55, Co58, scratch); jac.set(Fe55, Co59, 0.0); @@ -49169,7 +46978,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe55, Ni57, 0.0); - scratch = screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(N)*state.rho; jac.set(Fe55, Ni58, scratch); scratch = screened_rates(k_Ni59_to_He4_Fe55_reaclib); @@ -49229,17 +47038,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe55, Ge64, 0.0); - scratch = screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(Fe56)*state.rho + screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(Ni59)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(Ni59)*state.rho; jac.set(Fe56, N, scratch); - scratch = screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(Co59)*state.rho - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(Fe56)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(Fe56)*state.rho + screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(Mn55)*state.rho; + scratch = screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(Co59)*state.rho - screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(Mn55)*state.rho; jac.set(Fe56, H1, scratch); jac.set(Fe56, H2, 0.0); jac.set(Fe56, He3, 0.0); - scratch = screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(Cr52)*state.rho + screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(Cr53)*state.rho - screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(Fe56)*state.rho - screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(Fe56)*state.rho - screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(Fe56)*state.rho + screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(Mn53)*state.rho; + scratch = screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(Cr52)*state.rho + screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(Cr53)*state.rho - screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(Mn53)*state.rho; jac.set(Fe56, He4, scratch); jac.set(Fe56, Li6, 0.0); @@ -49444,10 +47253,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Cr51, 0.0); - scratch = screened_rates(k_He4_Cr52_to_Fe56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr52_He4_to_Fe56_reaclib)*Y(He4)*state.rho; jac.set(Fe56, Cr52, scratch); - scratch = screened_rates(k_He4_Cr53_to_n_Fe56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr53_He4_to_n_Fe56_reaclib)*Y(He4)*state.rho; jac.set(Fe56, Cr53, scratch); jac.set(Fe56, Cr54, 0.0); @@ -49458,12 +47267,12 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Mn52, 0.0); - scratch = screened_rates(k_He4_Mn53_to_p_Fe56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn53_He4_to_p_Fe56_reaclib)*Y(He4)*state.rho; jac.set(Fe56, Mn53, scratch); jac.set(Fe56, Mn54, 0.0); - scratch = screened_rates(k_p_Mn55_to_Fe56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Mn55_p_to_Fe56_reaclib)*Y(H1)*state.rho; jac.set(Fe56, Mn55, scratch); jac.set(Fe56, Fe52, 0.0); @@ -49472,10 +47281,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Fe54, 0.0); - scratch = screened_rates(k_n_Fe55_to_Fe56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe55_n_to_Fe56_reaclib)*Y(N)*state.rho; jac.set(Fe56, Fe55, scratch); - scratch = -screened_rates(k_Fe56_to_Co56_weaktab) - screened_rates(k_Fe56_to_He4_Cr52_reaclib) - screened_rates(k_Fe56_to_n_Fe55_reaclib) - screened_rates(k_Fe56_to_p_Mn55_reaclib) - screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe56_to_He4_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_He4_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_Fe56_n_to_He4_Cr53_reaclib)*Y(N)*state.rho - screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_He4_Mn53_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) - screened_rates(k_Fe56_to_He4_Cr52_reaclib) - screened_rates(k_Fe56_to_n_Fe55_reaclib) - screened_rates(k_Fe56_to_p_Mn55_reaclib); jac.set(Fe56, Fe56, scratch); scratch = screened_rates(k_Fe57_to_n_Fe56_reaclib); @@ -49489,7 +47298,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Co55, 0.0); - scratch = screened_rates(k_Co56_to_Fe56_weaktab) + screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho + screened_rates(k_Co56_to_Fe56_electron_capture_weaktab); jac.set(Fe56, Co56, scratch); scratch = screened_rates(k_Co57_to_p_Fe56_reaclib); @@ -49497,7 +47306,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Co58, 0.0); - scratch = screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(H1)*state.rho; jac.set(Fe56, Co59, scratch); jac.set(Fe56, Ni56, 0.0); @@ -49506,7 +47315,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Ni58, 0.0); - scratch = screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(N)*state.rho; jac.set(Fe56, Ni59, scratch); scratch = screened_rates(k_Ni60_to_He4_Fe56_reaclib); @@ -49564,17 +47373,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe56, Ge64, 0.0); - scratch = screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(Co57)*state.rho + screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(Fe57)*state.rho - screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(Fe57)*state.rho + screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(Ni60)*state.rho; + scratch = screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(Co57)*state.rho + screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(Ni60)*state.rho; jac.set(Fe57, N, scratch); - scratch = -screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(Fe57)*state.rho - screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(Fe57)*state.rho - screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(Fe57)*state.rho; + scratch = -screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(Fe57)*state.rho; jac.set(Fe57, H1, scratch); jac.set(Fe57, H2, 0.0); jac.set(Fe57, He3, 0.0); - scratch = screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(Cr53)*state.rho + screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(Cr54)*state.rho - screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(Fe57)*state.rho - screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(Fe57)*state.rho + screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(Mn54)*state.rho; + scratch = screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(Cr53)*state.rho + screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(Mn54)*state.rho; jac.set(Fe57, He4, scratch); jac.set(Fe57, Li6, 0.0); @@ -49781,10 +47590,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe57, Cr52, 0.0); - scratch = screened_rates(k_He4_Cr53_to_Fe57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr53_He4_to_Fe57_reaclib)*Y(He4)*state.rho; jac.set(Fe57, Cr53, scratch); - scratch = screened_rates(k_He4_Cr54_to_n_Fe57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr54_He4_to_n_Fe57_reaclib)*Y(He4)*state.rho; jac.set(Fe57, Cr54, scratch); jac.set(Fe57, Mn50, 0.0); @@ -49795,7 +47604,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe57, Mn53, 0.0); - scratch = screened_rates(k_He4_Mn54_to_p_Fe57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn54_He4_to_p_Fe57_reaclib)*Y(He4)*state.rho; jac.set(Fe57, Mn54, scratch); jac.set(Fe57, Mn55, 0.0); @@ -49808,10 +47617,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe57, Fe55, 0.0); - scratch = screened_rates(k_n_Fe56_to_Fe57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe56_n_to_Fe57_reaclib)*Y(N)*state.rho; jac.set(Fe57, Fe56, scratch); - scratch = -screened_rates(k_Fe57_to_Co57_weaktab) - screened_rates(k_Fe57_to_He4_Cr53_reaclib) - screened_rates(k_Fe57_to_n_Fe56_reaclib) - screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Fe57_to_He4_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe57_to_He4_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_Fe57_n_to_He4_Cr54_reaclib)*Y(N)*state.rho - screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe57_p_to_He4_Mn54_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe57_to_Co57_beta_neg_weaktab) - screened_rates(k_Fe57_to_He4_Cr53_reaclib) - screened_rates(k_Fe57_to_n_Fe56_reaclib); jac.set(Fe57, Fe57, scratch); scratch = screened_rates(k_Fe58_to_n_Fe57_reaclib); @@ -49825,7 +47634,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe57, Co56, 0.0); - scratch = screened_rates(k_Co57_to_Fe57_weaktab) + screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(N)*state.rho + screened_rates(k_Co57_to_Fe57_electron_capture_weaktab); jac.set(Fe57, Co57, scratch); scratch = screened_rates(k_Co58_to_p_Fe57_reaclib); @@ -49841,7 +47650,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe57, Ni59, 0.0); - scratch = screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(N)*state.rho; jac.set(Fe57, Ni60, scratch); scratch = screened_rates(k_Ni61_to_He4_Fe57_reaclib); @@ -49897,17 +47706,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe57, Ge64, 0.0); - scratch = screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(Co58)*state.rho + screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(Fe57)*state.rho + screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(Ni61)*state.rho; + scratch = screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(Co58)*state.rho + screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(Ni61)*state.rho; jac.set(Fe58, N, scratch); - scratch = -screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(Fe58)*state.rho - screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(Fe58)*state.rho - screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(Fe58)*state.rho; + scratch = -screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(Fe58)*state.rho; jac.set(Fe58, H1, scratch); jac.set(Fe58, H2, 0.0); jac.set(Fe58, He3, 0.0); - scratch = screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(Cr54)*state.rho - screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(Fe58)*state.rho - screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(Fe58)*state.rho + screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(Mn55)*state.rho; + scratch = screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(Cr54)*state.rho - screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(Fe58)*state.rho + screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(Mn55)*state.rho; jac.set(Fe58, He4, scratch); jac.set(Fe58, Li6, 0.0); @@ -50116,7 +47925,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe58, Cr53, 0.0); - scratch = screened_rates(k_He4_Cr54_to_Fe58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cr54_He4_to_Fe58_reaclib)*Y(He4)*state.rho; jac.set(Fe58, Cr54, scratch); jac.set(Fe58, Mn50, 0.0); @@ -50129,7 +47938,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe58, Mn54, 0.0); - scratch = screened_rates(k_He4_Mn55_to_p_Fe58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn55_He4_to_p_Fe58_reaclib)*Y(He4)*state.rho; jac.set(Fe58, Mn55, scratch); jac.set(Fe58, Fe52, 0.0); @@ -50142,10 +47951,10 @@ void jac_nuc(const burn_t& state, jac.set(Fe58, Fe56, 0.0); - scratch = screened_rates(k_n_Fe57_to_Fe58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Fe57_n_to_Fe58_reaclib)*Y(N)*state.rho; jac.set(Fe58, Fe57, scratch); - scratch = -screened_rates(k_Fe58_to_Co58_weaktab) - screened_rates(k_Fe58_to_He4_Cr54_reaclib) - screened_rates(k_Fe58_to_n_Fe57_reaclib) - screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe58_to_He4_Mn55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(He4)*state.rho - screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe58_p_to_He4_Mn55_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_Fe58_to_Co58_beta_neg_weaktab) - screened_rates(k_Fe58_to_He4_Cr54_reaclib) - screened_rates(k_Fe58_to_n_Fe57_reaclib); jac.set(Fe58, Fe58, scratch); jac.set(Fe58, Co53, 0.0); @@ -50158,7 +47967,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe58, Co57, 0.0); - scratch = screened_rates(k_Co58_to_Fe58_weaktab) + screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(N)*state.rho + screened_rates(k_Co58_to_Fe58_electron_capture_weaktab); jac.set(Fe58, Co58, scratch); scratch = screened_rates(k_Co59_to_p_Fe58_reaclib); @@ -50174,7 +47983,7 @@ void jac_nuc(const burn_t& state, jac.set(Fe58, Ni60, 0.0); - scratch = screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(N)*state.rho; jac.set(Fe58, Ni61, scratch); scratch = screened_rates(k_Ni62_to_He4_Fe58_reaclib); @@ -50228,17 +48037,17 @@ void jac_nuc(const burn_t& state, jac.set(Fe58, Ge64, 0.0); - scratch = -screened_rates(k_n_Co53_to_Co54_reaclib)*Y(Co53)*state.rho - screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(Co53)*state.rho - screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(Co53)*state.rho; + scratch = -screened_rates(k_Co53_n_to_Co54_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(Co53)*state.rho; jac.set(Co53, N, scratch); - scratch = screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(Fe52)*state.rho + screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(Ni56)*state.rho; jac.set(Co53, H1, scratch); jac.set(Co53, H2, 0.0); jac.set(Co53, He3, 0.0); - scratch = -screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(Co53)*state.rho - screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(Co53)*state.rho + screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(Mn50)*state.rho; + scratch = -screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(Co53)*state.rho + screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(Mn50)*state.rho; jac.set(Co53, He4, scratch); jac.set(Co53, Li6, 0.0); @@ -50449,7 +48258,7 @@ void jac_nuc(const burn_t& state, jac.set(Co53, Cr54, 0.0); - scratch = screened_rates(k_He4_Mn50_to_n_Co53_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn50_He4_to_n_Co53_reaclib)*Y(He4)*state.rho; jac.set(Co53, Mn50, scratch); jac.set(Co53, Mn51, 0.0); @@ -50462,10 +48271,10 @@ void jac_nuc(const burn_t& state, jac.set(Co53, Mn55, 0.0); - scratch = screened_rates(k_p_Fe52_to_Co53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe52_p_to_Co53_reaclib)*Y(H1)*state.rho; jac.set(Co53, Fe52, scratch); - scratch = screened_rates(k_Fe53_to_Co53_weaktab) + screened_rates(k_p_Fe53_to_n_Co53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe53_p_to_n_Co53_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe53_to_Co53_beta_neg_weaktab); jac.set(Co53, Fe53, scratch); jac.set(Co53, Fe54, 0.0); @@ -50478,7 +48287,7 @@ void jac_nuc(const burn_t& state, jac.set(Co53, Fe58, 0.0); - scratch = -screened_rates(k_Co53_to_Fe53_weaktab) - screened_rates(k_Co53_to_p_Fe52_reaclib) - screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co53_to_Co54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co53_to_He4_Mn50_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co53_to_p_Fe53_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(He4)*state.rho - screened_rates(k_Co53_n_to_Co54_reaclib)*Y(N)*state.rho - screened_rates(k_Co53_n_to_He4_Mn50_reaclib)*Y(N)*state.rho - screened_rates(k_Co53_n_to_p_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_Co53_to_Fe53_electron_capture_weaktab) - screened_rates(k_Co53_to_p_Fe52_reaclib); jac.set(Co53, Co53, scratch); scratch = screened_rates(k_Co54_to_n_Co53_reaclib); @@ -50494,7 +48303,7 @@ void jac_nuc(const burn_t& state, jac.set(Co53, Co59, 0.0); - scratch = screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(H1)*state.rho; jac.set(Co53, Ni56, scratch); jac.set(Co53, Ni57, 0.0); @@ -50558,17 +48367,17 @@ void jac_nuc(const burn_t& state, jac.set(Co53, Ge64, 0.0); - scratch = screened_rates(k_n_Co53_to_Co54_reaclib)*Y(Co53)*state.rho - screened_rates(k_n_Co54_to_Co55_reaclib)*Y(Co54)*state.rho - screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(Co54)*state.rho - screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(Co54)*state.rho + screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(Cu57)*state.rho; + scratch = screened_rates(k_Co53_n_to_Co54_reaclib)*Y(Co53)*state.rho - screened_rates(k_Co54_n_to_Co55_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(Co54)*state.rho + screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(Cu57)*state.rho; jac.set(Co54, N, scratch); - scratch = screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(Fe53)*state.rho + screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(Ni57)*state.rho; jac.set(Co54, H1, scratch); jac.set(Co54, H2, 0.0); jac.set(Co54, He3, 0.0); - scratch = -screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(Co54)*state.rho - screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(Co54)*state.rho - screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(Co54)*state.rho + screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(Mn50)*state.rho + screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(Mn51)*state.rho; + scratch = -screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(Co54)*state.rho + screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(Mn50)*state.rho + screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(Mn51)*state.rho; jac.set(Co54, He4, scratch); jac.set(Co54, Li6, 0.0); @@ -50779,10 +48588,10 @@ void jac_nuc(const burn_t& state, jac.set(Co54, Cr54, 0.0); - scratch = screened_rates(k_He4_Mn50_to_Co54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn50_He4_to_Co54_reaclib)*Y(He4)*state.rho; jac.set(Co54, Mn50, scratch); - scratch = screened_rates(k_He4_Mn51_to_n_Co54_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_n_Co54_reaclib)*Y(He4)*state.rho; jac.set(Co54, Mn51, scratch); jac.set(Co54, Mn52, 0.0); @@ -50795,10 +48604,10 @@ void jac_nuc(const burn_t& state, jac.set(Co54, Fe52, 0.0); - scratch = screened_rates(k_p_Fe53_to_Co54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe53_p_to_Co54_reaclib)*Y(H1)*state.rho; jac.set(Co54, Fe53, scratch); - scratch = screened_rates(k_Fe54_to_Co54_weaktab) + screened_rates(k_p_Fe54_to_n_Co54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_n_Co54_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe54_to_Co54_beta_neg_weaktab); jac.set(Co54, Fe54, scratch); jac.set(Co54, Fe55, 0.0); @@ -50809,10 +48618,10 @@ void jac_nuc(const burn_t& state, jac.set(Co54, Fe58, 0.0); - scratch = screened_rates(k_n_Co53_to_Co54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co53_n_to_Co54_reaclib)*Y(N)*state.rho; jac.set(Co54, Co53, scratch); - scratch = -screened_rates(k_Co54_to_Fe54_weaktab) - screened_rates(k_Co54_to_He4_Mn50_reaclib) - screened_rates(k_Co54_to_n_Co53_reaclib) - screened_rates(k_Co54_to_p_Fe53_reaclib) - screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co54_to_Co55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co54_to_He4_Mn51_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co54_to_p_Fe54_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(He4)*state.rho - screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(He4)*state.rho - screened_rates(k_Co54_n_to_Co55_reaclib)*Y(N)*state.rho - screened_rates(k_Co54_n_to_He4_Mn51_reaclib)*Y(N)*state.rho - screened_rates(k_Co54_n_to_p_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_Co54_to_Fe54_electron_capture_weaktab) - screened_rates(k_Co54_to_He4_Mn50_reaclib) - screened_rates(k_Co54_to_n_Co53_reaclib) - screened_rates(k_Co54_to_p_Fe53_reaclib); jac.set(Co54, Co54, scratch); scratch = screened_rates(k_Co55_to_n_Co54_reaclib); @@ -50828,7 +48637,7 @@ void jac_nuc(const burn_t& state, jac.set(Co54, Ni56, 0.0); - scratch = screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(H1)*state.rho; jac.set(Co54, Ni57, scratch); jac.set(Co54, Ni58, 0.0); @@ -50845,7 +48654,7 @@ void jac_nuc(const burn_t& state, jac.set(Co54, Ni64, 0.0); - scratch = screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(N)*state.rho; jac.set(Co54, Cu57, scratch); scratch = screened_rates(k_Cu58_to_He4_Co54_reaclib); @@ -50891,17 +48700,17 @@ void jac_nuc(const burn_t& state, jac.set(Co54, Ge64, 0.0); - scratch = screened_rates(k_n_Co54_to_Co55_reaclib)*Y(Co54)*state.rho - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(Cu58)*state.rho; + scratch = screened_rates(k_Co54_n_to_Co55_reaclib)*Y(Co54)*state.rho - screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(Co55)*state.rho + screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(Cu58)*state.rho; jac.set(Co55, N, scratch); - scratch = -screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(Co55)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(Ni58)*state.rho; + scratch = -screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(Ni58)*state.rho; jac.set(Co55, H1, scratch); jac.set(Co55, H2, 0.0); jac.set(Co55, He3, 0.0); - scratch = -screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(Mn51)*state.rho + screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(Mn52)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(Mn51)*state.rho + screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(Mn52)*state.rho; jac.set(Co55, He4, scratch); jac.set(Co55, Li6, 0.0); @@ -51114,10 +48923,10 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Mn50, 0.0); - scratch = screened_rates(k_He4_Mn51_to_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn51_He4_to_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Mn51, scratch); - scratch = screened_rates(k_He4_Mn52_to_n_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn52_He4_to_n_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Mn52, scratch); jac.set(Co55, Mn53, 0.0); @@ -51126,15 +48935,15 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Mn55, 0.0); - scratch = screened_rates(k_He4_Fe52_to_p_Co55_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_p_Co55_reaclib)*Y(He4)*state.rho; jac.set(Co55, Fe52, scratch); jac.set(Co55, Fe53, 0.0); - scratch = screened_rates(k_p_Fe54_to_Co55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe54_p_to_Co55_reaclib)*Y(H1)*state.rho; jac.set(Co55, Fe54, scratch); - scratch = screened_rates(k_Fe55_to_Co55_weaktab) + screened_rates(k_p_Fe55_to_n_Co55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_p_to_n_Co55_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe55_to_Co55_beta_neg_weaktab); jac.set(Co55, Fe55, scratch); jac.set(Co55, Fe56, 0.0); @@ -51145,10 +48954,10 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Co53, 0.0); - scratch = screened_rates(k_n_Co54_to_Co55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co54_n_to_Co55_reaclib)*Y(N)*state.rho; jac.set(Co55, Co54, scratch); - scratch = -screened_rates(k_Co55_to_Fe55_weaktab) - screened_rates(k_Co55_to_He4_Mn51_reaclib) - screened_rates(k_Co55_to_n_Co54_reaclib) - screened_rates(k_Co55_to_p_Fe54_reaclib) - screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co55_to_He4_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co55_to_p_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co55_to_He4_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho - screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_n_to_He4_Mn52_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_n_to_p_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Co55_p_to_He4_Fe52_reaclib)*Y(H1)*state.rho - screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Co55_to_Fe55_electron_capture_weaktab) - screened_rates(k_Co55_to_He4_Mn51_reaclib) - screened_rates(k_Co55_to_n_Co54_reaclib) - screened_rates(k_Co55_to_p_Fe54_reaclib); jac.set(Co55, Co55, scratch); scratch = screened_rates(k_Co56_to_n_Co55_reaclib); @@ -51165,7 +48974,7 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Ni57, 0.0); - scratch = screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(H1)*state.rho; jac.set(Co55, Ni58, scratch); jac.set(Co55, Ni59, 0.0); @@ -51182,7 +48991,7 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Cu57, 0.0); - scratch = screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(N)*state.rho; jac.set(Co55, Cu58, scratch); scratch = screened_rates(k_Cu59_to_He4_Co55_reaclib); @@ -51226,17 +49035,17 @@ void jac_nuc(const burn_t& state, jac.set(Co55, Ge64, 0.0); - scratch = screened_rates(k_n_Co55_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_reaclib)*Y(Co55)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho; jac.set(Co56, N, scratch); - scratch = -screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(Co56)*state.rho - screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(Co56)*state.rho + screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(Fe55)*state.rho + screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(Fe56)*state.rho + screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(Ni59)*state.rho; + scratch = -screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(Ni59)*state.rho; jac.set(Co56, H1, scratch); jac.set(Co56, H2, 0.0); jac.set(Co56, He3, 0.0); - scratch = -screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(Co56)*state.rho - screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(Co56)*state.rho - screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(Co56)*state.rho + screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(Mn52)*state.rho + screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(Mn53)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(Co56)*state.rho + screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(Mn52)*state.rho + screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(Mn53)*state.rho; jac.set(Co56, He4, scratch); jac.set(Co56, Li6, 0.0); @@ -51451,10 +49260,10 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Mn51, 0.0); - scratch = screened_rates(k_He4_Mn52_to_Co56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn52_He4_to_Co56_reaclib)*Y(He4)*state.rho; jac.set(Co56, Mn52, scratch); - scratch = screened_rates(k_He4_Mn53_to_n_Co56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn53_He4_to_n_Co56_reaclib)*Y(He4)*state.rho; jac.set(Co56, Mn53, scratch); jac.set(Co56, Mn54, 0.0); @@ -51463,15 +49272,15 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe53_to_p_Co56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_p_Co56_reaclib)*Y(He4)*state.rho; jac.set(Co56, Fe53, scratch); jac.set(Co56, Fe54, 0.0); - scratch = screened_rates(k_p_Fe55_to_Co56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe55_p_to_Co56_reaclib)*Y(H1)*state.rho; jac.set(Co56, Fe55, scratch); - scratch = screened_rates(k_Fe56_to_Co56_weaktab) + screened_rates(k_p_Fe56_to_n_Co56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_n_Co56_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe56_to_Co56_beta_neg_weaktab); jac.set(Co56, Fe56, scratch); jac.set(Co56, Fe57, 0.0); @@ -51482,10 +49291,10 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Co54, 0.0); - scratch = screened_rates(k_n_Co55_to_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co55_n_to_Co56_reaclib)*Y(N)*state.rho; jac.set(Co56, Co55, scratch); - scratch = -screened_rates(k_Co56_to_Fe56_weaktab) - screened_rates(k_Co56_to_He4_Mn52_reaclib) - screened_rates(k_Co56_to_Ni56_weaktab) - screened_rates(k_Co56_to_n_Co55_reaclib) - screened_rates(k_Co56_to_p_Fe55_reaclib) - screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_He4_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co56_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co56_to_He4_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(He4)*state.rho - screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_He4_Mn53_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_n_to_p_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Co56_p_to_He4_Fe53_reaclib)*Y(H1)*state.rho - screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) - screened_rates(k_Co56_to_He4_Mn52_reaclib) - screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) - screened_rates(k_Co56_to_n_Co55_reaclib) - screened_rates(k_Co56_to_p_Fe55_reaclib); jac.set(Co56, Co56, scratch); scratch = screened_rates(k_Co57_to_n_Co56_reaclib); @@ -51495,7 +49304,7 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Co59, 0.0); - scratch = screened_rates(k_Ni56_to_Co56_weaktab) + screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho + screened_rates(k_Ni56_to_Co56_electron_capture_weaktab); jac.set(Co56, Ni56, scratch); scratch = screened_rates(k_Ni57_to_p_Co56_reaclib); @@ -51503,7 +49312,7 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Ni58, 0.0); - scratch = screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(H1)*state.rho; jac.set(Co56, Ni59, scratch); jac.set(Co56, Ni60, 0.0); @@ -51520,7 +49329,7 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Cu58, 0.0); - scratch = screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho; jac.set(Co56, Cu59, scratch); scratch = screened_rates(k_Cu60_to_He4_Co56_reaclib); @@ -51562,17 +49371,17 @@ void jac_nuc(const burn_t& state, jac.set(Co56, Ge64, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_n_Co57_to_Co58_reaclib)*Y(Co57)*state.rho - screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(Co57)*state.rho - screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(Co57)*state.rho + screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(Cu60)*state.rho + screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_reaclib)*Y(Co56)*state.rho - screened_rates(k_Co57_n_to_Co58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(Co57)*state.rho + screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*state.rho; jac.set(Co57, N, scratch); - scratch = -screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(Fe56)*state.rho + screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(Fe57)*state.rho + screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(Ni60)*state.rho; + scratch = -screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(Co57)*state.rho + screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(Ni60)*state.rho; jac.set(Co57, H1, scratch); jac.set(Co57, H2, 0.0); jac.set(Co57, He3, 0.0); - scratch = -screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(Co57)*state.rho - screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(Co57)*state.rho - screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(Co57)*state.rho + screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(Fe54)*state.rho + screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(Mn53)*state.rho + screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(Mn54)*state.rho; + scratch = -screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(Co57)*state.rho + screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(Mn53)*state.rho + screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(Mn54)*state.rho; jac.set(Co57, He4, scratch); jac.set(Co57, Li6, 0.0); @@ -51789,10 +49598,10 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Mn52, 0.0); - scratch = screened_rates(k_He4_Mn53_to_Co57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn53_He4_to_Co57_reaclib)*Y(He4)*state.rho; jac.set(Co57, Mn53, scratch); - scratch = screened_rates(k_He4_Mn54_to_n_Co57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn54_He4_to_n_Co57_reaclib)*Y(He4)*state.rho; jac.set(Co57, Mn54, scratch); jac.set(Co57, Mn55, 0.0); @@ -51801,15 +49610,15 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Fe53, 0.0); - scratch = screened_rates(k_He4_Fe54_to_p_Co57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_p_Co57_reaclib)*Y(He4)*state.rho; jac.set(Co57, Fe54, scratch); jac.set(Co57, Fe55, 0.0); - scratch = screened_rates(k_p_Fe56_to_Co57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe56_p_to_Co57_reaclib)*Y(H1)*state.rho; jac.set(Co57, Fe56, scratch); - scratch = screened_rates(k_Fe57_to_Co57_weaktab) + screened_rates(k_p_Fe57_to_n_Co57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe57_p_to_n_Co57_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe57_to_Co57_beta_neg_weaktab); jac.set(Co57, Fe57, scratch); jac.set(Co57, Fe58, 0.0); @@ -51820,10 +49629,10 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Co55, 0.0); - scratch = screened_rates(k_n_Co56_to_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co56_n_to_Co57_reaclib)*Y(N)*state.rho; jac.set(Co57, Co56, scratch); - scratch = -screened_rates(k_Co57_to_Fe57_weaktab) - screened_rates(k_Co57_to_He4_Mn53_reaclib) - screened_rates(k_Co57_to_Ni57_weaktab) - screened_rates(k_Co57_to_n_Co56_reaclib) - screened_rates(k_Co57_to_p_Fe56_reaclib) - screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co57_to_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co57_to_He4_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co57_to_p_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co57_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(He4)*state.rho - screened_rates(k_Co57_n_to_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_Co57_n_to_He4_Mn54_reaclib)*Y(N)*state.rho - screened_rates(k_Co57_n_to_p_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_Co57_p_to_He4_Fe54_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_Co57_to_Fe57_electron_capture_weaktab) - screened_rates(k_Co57_to_He4_Mn53_reaclib) - screened_rates(k_Co57_to_Ni57_beta_neg_weaktab) - screened_rates(k_Co57_to_n_Co56_reaclib) - screened_rates(k_Co57_to_p_Fe56_reaclib); jac.set(Co57, Co57, scratch); scratch = screened_rates(k_Co58_to_n_Co57_reaclib); @@ -51833,7 +49642,7 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Ni56, 0.0); - scratch = screened_rates(k_Ni57_to_Co57_weaktab) + screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(N)*state.rho + screened_rates(k_Ni57_to_Co57_electron_capture_weaktab); jac.set(Co57, Ni57, scratch); scratch = screened_rates(k_Ni58_to_p_Co57_reaclib); @@ -51841,7 +49650,7 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Ni59, 0.0); - scratch = screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(H1)*state.rho; jac.set(Co57, Ni60, scratch); jac.set(Co57, Ni61, 0.0); @@ -51858,7 +49667,7 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Cu59, 0.0); - scratch = screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(N)*state.rho; jac.set(Co57, Cu60, scratch); scratch = screened_rates(k_Cu61_to_He4_Co57_reaclib); @@ -51898,17 +49707,17 @@ void jac_nuc(const burn_t& state, jac.set(Co57, Ge64, 0.0); - scratch = screened_rates(k_n_Co57_to_Co58_reaclib)*Y(Co57)*state.rho - screened_rates(k_n_Co58_to_Co59_reaclib)*Y(Co58)*state.rho - screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(Co58)*state.rho - screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(Co58)*state.rho + screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(Cu61)*state.rho + screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co57_n_to_Co58_reaclib)*Y(Co57)*state.rho - screened_rates(k_Co58_n_to_Co59_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(Co58)*state.rho + screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(Ni58)*state.rho; jac.set(Co58, N, scratch); - scratch = -screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(Co58)*state.rho - screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(Co58)*state.rho - screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(Co58)*state.rho + screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(Fe57)*state.rho + screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(Fe58)*state.rho + screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(Ni61)*state.rho; + scratch = -screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(Co58)*state.rho + screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(Fe58)*state.rho + screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(Ni61)*state.rho; jac.set(Co58, H1, scratch); jac.set(Co58, H2, 0.0); jac.set(Co58, He3, 0.0); - scratch = -screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(Co58)*state.rho - screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(Co58)*state.rho - screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(Co58)*state.rho + screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(Fe55)*state.rho + screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(Mn54)*state.rho + screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(Mn55)*state.rho; + scratch = -screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(Co58)*state.rho - screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(Co58)*state.rho + screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(Mn54)*state.rho + screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(Mn55)*state.rho; jac.set(Co58, He4, scratch); jac.set(Co58, Li6, 0.0); @@ -52127,10 +49936,10 @@ void jac_nuc(const burn_t& state, jac.set(Co58, Mn53, 0.0); - scratch = screened_rates(k_He4_Mn54_to_Co58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn54_He4_to_Co58_reaclib)*Y(He4)*state.rho; jac.set(Co58, Mn54, scratch); - scratch = screened_rates(k_He4_Mn55_to_n_Co58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn55_He4_to_n_Co58_reaclib)*Y(He4)*state.rho; jac.set(Co58, Mn55, scratch); jac.set(Co58, Fe52, 0.0); @@ -52139,15 +49948,15 @@ void jac_nuc(const burn_t& state, jac.set(Co58, Fe54, 0.0); - scratch = screened_rates(k_He4_Fe55_to_p_Co58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe55_He4_to_p_Co58_reaclib)*Y(He4)*state.rho; jac.set(Co58, Fe55, scratch); jac.set(Co58, Fe56, 0.0); - scratch = screened_rates(k_p_Fe57_to_Co58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe57_p_to_Co58_reaclib)*Y(H1)*state.rho; jac.set(Co58, Fe57, scratch); - scratch = screened_rates(k_Fe58_to_Co58_weaktab) + screened_rates(k_p_Fe58_to_n_Co58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe58_p_to_n_Co58_reaclib)*Y(H1)*state.rho + screened_rates(k_Fe58_to_Co58_beta_neg_weaktab); jac.set(Co58, Fe58, scratch); jac.set(Co58, Co53, 0.0); @@ -52158,10 +49967,10 @@ void jac_nuc(const burn_t& state, jac.set(Co58, Co56, 0.0); - scratch = screened_rates(k_n_Co57_to_Co58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co57_n_to_Co58_reaclib)*Y(N)*state.rho; jac.set(Co58, Co57, scratch); - scratch = -screened_rates(k_Co58_to_Fe58_weaktab) - screened_rates(k_Co58_to_He4_Mn54_reaclib) - screened_rates(k_Co58_to_Ni58_weaktab) - screened_rates(k_Co58_to_n_Co57_reaclib) - screened_rates(k_Co58_to_p_Fe57_reaclib) - screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Co58_to_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co58_to_He4_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Co58_to_p_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_p_Co58_to_He4_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(He4)*state.rho - screened_rates(k_Co58_n_to_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_Co58_n_to_He4_Mn55_reaclib)*Y(N)*state.rho - screened_rates(k_Co58_n_to_p_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_Co58_p_to_He4_Fe55_reaclib)*Y(H1)*state.rho - screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_Co58_to_Fe58_electron_capture_weaktab) - screened_rates(k_Co58_to_He4_Mn54_reaclib) - screened_rates(k_Co58_to_Ni58_beta_neg_weaktab) - screened_rates(k_Co58_to_n_Co57_reaclib) - screened_rates(k_Co58_to_p_Fe57_reaclib); jac.set(Co58, Co58, scratch); scratch = screened_rates(k_Co59_to_n_Co58_reaclib); @@ -52171,7 +49980,7 @@ void jac_nuc(const burn_t& state, jac.set(Co58, Ni57, 0.0); - scratch = screened_rates(k_Ni58_to_Co58_weaktab) + screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(N)*state.rho + screened_rates(k_Ni58_to_Co58_electron_capture_weaktab); jac.set(Co58, Ni58, scratch); scratch = screened_rates(k_Ni59_to_p_Co58_reaclib); @@ -52179,7 +49988,7 @@ void jac_nuc(const burn_t& state, jac.set(Co58, Ni60, 0.0); - scratch = screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(H1)*state.rho; jac.set(Co58, Ni61, scratch); jac.set(Co58, Ni62, 0.0); @@ -52196,7 +50005,7 @@ void jac_nuc(const burn_t& state, jac.set(Co58, Cu60, 0.0); - scratch = screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(N)*state.rho; jac.set(Co58, Cu61, scratch); scratch = screened_rates(k_Cu62_to_He4_Co58_reaclib); @@ -52234,17 +50043,17 @@ void jac_nuc(const burn_t& state, jac.set(Co58, Ge64, 0.0); - scratch = screened_rates(k_n_Co58_to_Co59_reaclib)*Y(Co58)*state.rho + screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(Cu62)*state.rho + screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(Ni59)*state.rho; + scratch = screened_rates(k_Co58_n_to_Co59_reaclib)*Y(Co58)*state.rho + screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(Ni59)*state.rho; jac.set(Co59, N, scratch); - scratch = -screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(Co59)*state.rho - screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(Co59)*state.rho - screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(Co59)*state.rho + screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(Fe58)*state.rho + screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(Ni62)*state.rho; + scratch = -screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(Co59)*state.rho - screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(Co59)*state.rho - screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(Co59)*state.rho + screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(Fe58)*state.rho + screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(Ni62)*state.rho; jac.set(Co59, H1, scratch); jac.set(Co59, H2, 0.0); jac.set(Co59, He3, 0.0); - scratch = -screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(Co59)*state.rho - screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(Co59)*state.rho - screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(Co59)*state.rho + screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(Fe56)*state.rho + screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(Mn55)*state.rho; + scratch = -screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(Co59)*state.rho - screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(Co59)*state.rho - screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(Co59)*state.rho + screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(Mn55)*state.rho; jac.set(Co59, He4, scratch); jac.set(Co59, Li6, 0.0); @@ -52465,7 +50274,7 @@ void jac_nuc(const burn_t& state, jac.set(Co59, Mn54, 0.0); - scratch = screened_rates(k_He4_Mn55_to_Co59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Mn55_He4_to_Co59_reaclib)*Y(He4)*state.rho; jac.set(Co59, Mn55, scratch); jac.set(Co59, Fe52, 0.0); @@ -52476,12 +50285,12 @@ void jac_nuc(const burn_t& state, jac.set(Co59, Fe55, 0.0); - scratch = screened_rates(k_He4_Fe56_to_p_Co59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe56_He4_to_p_Co59_reaclib)*Y(He4)*state.rho; jac.set(Co59, Fe56, scratch); jac.set(Co59, Fe57, 0.0); - scratch = screened_rates(k_p_Fe58_to_Co59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Fe58_p_to_Co59_reaclib)*Y(H1)*state.rho; jac.set(Co59, Fe58, scratch); jac.set(Co59, Co53, 0.0); @@ -52494,10 +50303,10 @@ void jac_nuc(const burn_t& state, jac.set(Co59, Co57, 0.0); - scratch = screened_rates(k_n_Co58_to_Co59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Co58_n_to_Co59_reaclib)*Y(N)*state.rho; jac.set(Co59, Co58, scratch); - scratch = -screened_rates(k_Co59_to_He4_Mn55_reaclib) - screened_rates(k_Co59_to_Ni59_weaktab) - screened_rates(k_Co59_to_n_Co58_reaclib) - screened_rates(k_Co59_to_p_Fe58_reaclib) - screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(He4)*state.rho - screened_rates(k_p_Co59_to_He4_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(He4)*state.rho - screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(He4)*state.rho - screened_rates(k_Co59_p_to_He4_Fe56_reaclib)*Y(H1)*state.rho - screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(H1)*state.rho - screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_Co59_to_He4_Mn55_reaclib) - screened_rates(k_Co59_to_Ni59_beta_neg_weaktab) - screened_rates(k_Co59_to_n_Co58_reaclib) - screened_rates(k_Co59_to_p_Fe58_reaclib); jac.set(Co59, Co59, scratch); jac.set(Co59, Ni56, 0.0); @@ -52506,7 +50315,7 @@ void jac_nuc(const burn_t& state, jac.set(Co59, Ni58, 0.0); - scratch = screened_rates(k_Ni59_to_Co59_weaktab) + screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(N)*state.rho + screened_rates(k_Ni59_to_Co59_electron_capture_weaktab); jac.set(Co59, Ni59, scratch); scratch = screened_rates(k_Ni60_to_p_Co59_reaclib); @@ -52514,7 +50323,7 @@ void jac_nuc(const burn_t& state, jac.set(Co59, Ni61, 0.0); - scratch = screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(H1)*state.rho; jac.set(Co59, Ni62, scratch); jac.set(Co59, Ni63, 0.0); @@ -52531,7 +50340,7 @@ void jac_nuc(const burn_t& state, jac.set(Co59, Cu61, 0.0); - scratch = screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(N)*state.rho; jac.set(Co59, Cu62, scratch); scratch = screened_rates(k_Cu63_to_He4_Co59_reaclib); @@ -52567,17 +50376,17 @@ void jac_nuc(const burn_t& state, jac.set(Co59, Ge64, 0.0); - scratch = -screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(Ni56)*state.rho + screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(Zn59)*state.rho; + scratch = -screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(Zn59)*state.rho; jac.set(Ni56, N, scratch); - scratch = screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(Co56)*state.rho + screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(Co56)*state.rho + screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(Ni56)*state.rho; jac.set(Ni56, H1, scratch); jac.set(Ni56, H2, 0.0); jac.set(Ni56, He3, 0.0); - scratch = screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(Co53)*state.rho + screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(Fe52)*state.rho + screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(Co53)*state.rho + screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(Fe52)*state.rho + screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(Fe53)*state.rho - screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(Ni56)*state.rho; jac.set(Ni56, He4, scratch); jac.set(Ni56, Li6, 0.0); @@ -52800,10 +50609,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Mn55, 0.0); - scratch = screened_rates(k_He4_Fe52_to_Ni56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe52_He4_to_Ni56_reaclib)*Y(He4)*state.rho; jac.set(Ni56, Fe52, scratch); - scratch = screened_rates(k_He4_Fe53_to_n_Ni56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_n_Ni56_reaclib)*Y(He4)*state.rho; jac.set(Ni56, Fe53, scratch); jac.set(Ni56, Fe54, 0.0); @@ -52816,15 +50625,15 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Fe58, 0.0); - scratch = screened_rates(k_He4_Co53_to_p_Ni56_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co53_He4_to_p_Ni56_reaclib)*Y(He4)*state.rho; jac.set(Ni56, Co53, scratch); jac.set(Ni56, Co54, 0.0); - scratch = screened_rates(k_p_Co55_to_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co55_p_to_Ni56_reaclib)*Y(H1)*state.rho; jac.set(Ni56, Co55, scratch); - scratch = screened_rates(k_Co56_to_Ni56_weaktab) + screened_rates(k_p_Co56_to_n_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_p_to_n_Ni56_reaclib)*Y(H1)*state.rho + screened_rates(k_Co56_to_Ni56_beta_neg_weaktab); jac.set(Ni56, Co56, scratch); jac.set(Ni56, Co57, 0.0); @@ -52833,7 +50642,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Co59, 0.0); - scratch = -screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_to_Co56_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_reaclib) - screened_rates(k_Ni56_to_p_Co55_reaclib) - screened_rates(k_n_Ni56_to_He4_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni56_to_p_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni56_to_He4_Co53_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni56_n_to_He4_Fe53_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_n_to_p_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni56_p_to_He4_Co53_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) - screened_rates(k_Ni56_to_He4_Fe52_reaclib) - screened_rates(k_Ni56_to_p_Co55_reaclib); jac.set(Ni56, Ni56, scratch); scratch = screened_rates(k_Ni57_to_n_Ni56_reaclib); @@ -52858,7 +50667,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Cu58, 0.0); - scratch = screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho; jac.set(Ni56, Cu59, scratch); jac.set(Ni56, Cu60, 0.0); @@ -52873,7 +50682,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Cu65, 0.0); - scratch = screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(N)*state.rho; jac.set(Ni56, Zn59, scratch); scratch = screened_rates(k_Zn60_to_He4_Ni56_reaclib); @@ -52901,17 +50710,17 @@ void jac_nuc(const burn_t& state, jac.set(Ni56, Ge64, 0.0); - scratch = screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(Cu57)*state.rho + screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(Cu57)*state.rho + screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho; jac.set(Ni57, N, scratch); - scratch = screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(Co56)*state.rho + screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(Co57)*state.rho + screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(Ni57)*state.rho; jac.set(Ni57, H1, scratch); jac.set(Ni57, H2, 0.0); jac.set(Ni57, He3, 0.0); - scratch = screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(Co54)*state.rho + screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(Fe53)*state.rho + screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(Fe54)*state.rho - screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(Ni57)*state.rho - screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(Ni57)*state.rho - screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(Co54)*state.rho + screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(Fe53)*state.rho + screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(Fe54)*state.rho - screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(Ni57)*state.rho; jac.set(Ni57, He4, scratch); jac.set(Ni57, Li6, 0.0); @@ -53136,10 +50945,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Fe52, 0.0); - scratch = screened_rates(k_He4_Fe53_to_Ni57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe53_He4_to_Ni57_reaclib)*Y(He4)*state.rho; jac.set(Ni57, Fe53, scratch); - scratch = screened_rates(k_He4_Fe54_to_n_Ni57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_n_Ni57_reaclib)*Y(He4)*state.rho; jac.set(Ni57, Fe54, scratch); jac.set(Ni57, Fe55, 0.0); @@ -53152,25 +50961,25 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Co53, 0.0); - scratch = screened_rates(k_He4_Co54_to_p_Ni57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co54_He4_to_p_Ni57_reaclib)*Y(He4)*state.rho; jac.set(Ni57, Co54, scratch); jac.set(Ni57, Co55, 0.0); - scratch = screened_rates(k_p_Co56_to_Ni57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co56_p_to_Ni57_reaclib)*Y(H1)*state.rho; jac.set(Ni57, Co56, scratch); - scratch = screened_rates(k_Co57_to_Ni57_weaktab) + screened_rates(k_p_Co57_to_n_Ni57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_n_Ni57_reaclib)*Y(H1)*state.rho + screened_rates(k_Co57_to_Ni57_beta_neg_weaktab); jac.set(Ni57, Co57, scratch); jac.set(Ni57, Co58, 0.0); jac.set(Ni57, Co59, 0.0); - scratch = screened_rates(k_n_Ni56_to_Ni57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni56_n_to_Ni57_reaclib)*Y(N)*state.rho; jac.set(Ni57, Ni56, scratch); - scratch = -screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni57_to_Co57_weaktab) - screened_rates(k_Ni57_to_Cu57_weaktab) - screened_rates(k_Ni57_to_He4_Fe53_reaclib) - screened_rates(k_Ni57_to_n_Ni56_reaclib) - screened_rates(k_Ni57_to_p_Co56_reaclib) - screened_rates(k_n_Ni57_to_He4_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni57_to_p_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni57_to_He4_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni57_n_to_He4_Fe54_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_n_to_p_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni57_p_to_He4_Co54_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni57_to_Co57_electron_capture_weaktab) - screened_rates(k_Ni57_to_Cu57_beta_neg_weaktab) - screened_rates(k_Ni57_to_He4_Fe53_reaclib) - screened_rates(k_Ni57_to_n_Ni56_reaclib) - screened_rates(k_Ni57_to_p_Co56_reaclib); jac.set(Ni57, Ni57, scratch); scratch = screened_rates(k_Ni58_to_n_Ni57_reaclib); @@ -53188,7 +50997,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Ni64, 0.0); - scratch = screened_rates(k_Cu57_to_Ni57_weaktab) + screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(N)*state.rho + screened_rates(k_Cu57_to_Ni57_electron_capture_weaktab); jac.set(Ni57, Cu57, scratch); scratch = screened_rates(k_Cu58_to_p_Ni57_reaclib); @@ -53196,7 +51005,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Cu59, 0.0); - scratch = screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(H1)*state.rho; jac.set(Ni57, Cu60, scratch); jac.set(Ni57, Cu61, 0.0); @@ -53211,7 +51020,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Zn59, 0.0); - scratch = screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(N)*state.rho; jac.set(Ni57, Zn60, scratch); scratch = screened_rates(k_Zn61_to_He4_Ni57_reaclib); @@ -53237,17 +51046,17 @@ void jac_nuc(const burn_t& state, jac.set(Ni57, Ge64, 0.0); - scratch = screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(Cu58)*state.rho + screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(Ni58)*state.rho + screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(Zn61)*state.rho; + scratch = screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(Cu58)*state.rho + screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(Zn61)*state.rho; jac.set(Ni58, N, scratch); - scratch = screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(Co57)*state.rho + screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(Co58)*state.rho + screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(Co57)*state.rho + screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(Co58)*state.rho + screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(Ni58)*state.rho; jac.set(Ni58, H1, scratch); jac.set(Ni58, H2, 0.0); jac.set(Ni58, He3, 0.0); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(Fe54)*state.rho + screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(Fe55)*state.rho - screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(Ni58)*state.rho - screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(Ni58)*state.rho - screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(Co55)*state.rho + screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(Fe54)*state.rho + screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(Fe55)*state.rho - screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(Ni58)*state.rho; jac.set(Ni58, He4, scratch); jac.set(Ni58, Li6, 0.0); @@ -53474,10 +51283,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Fe53, 0.0); - scratch = screened_rates(k_He4_Fe54_to_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe54_He4_to_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Fe54, scratch); - scratch = screened_rates(k_He4_Fe55_to_n_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe55_He4_to_n_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Fe55, scratch); jac.set(Ni58, Fe56, 0.0); @@ -53490,25 +51299,25 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Co54, 0.0); - scratch = screened_rates(k_He4_Co55_to_p_Ni58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_p_Ni58_reaclib)*Y(He4)*state.rho; jac.set(Ni58, Co55, scratch); jac.set(Ni58, Co56, 0.0); - scratch = screened_rates(k_p_Co57_to_Ni58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co57_p_to_Ni58_reaclib)*Y(H1)*state.rho; jac.set(Ni58, Co57, scratch); - scratch = screened_rates(k_Co58_to_Ni58_weaktab) + screened_rates(k_p_Co58_to_n_Ni58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co58_p_to_n_Ni58_reaclib)*Y(H1)*state.rho + screened_rates(k_Co58_to_Ni58_beta_neg_weaktab); jac.set(Ni58, Co58, scratch); jac.set(Ni58, Co59, 0.0); jac.set(Ni58, Ni56, 0.0); - scratch = screened_rates(k_n_Ni57_to_Ni58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni57_n_to_Ni58_reaclib)*Y(N)*state.rho; jac.set(Ni58, Ni57, scratch); - scratch = -screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni58_to_Co58_weaktab) - screened_rates(k_Ni58_to_Cu58_weaktab) - screened_rates(k_Ni58_to_He4_Fe54_reaclib) - screened_rates(k_Ni58_to_n_Ni57_reaclib) - screened_rates(k_Ni58_to_p_Co57_reaclib) - screened_rates(k_n_Ni58_to_He4_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni58_to_p_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_He4_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni58_n_to_He4_Fe55_reaclib)*Y(N)*state.rho - screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_Ni58_n_to_p_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_He4_Co55_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni58_to_Co58_electron_capture_weaktab) - screened_rates(k_Ni58_to_Cu58_beta_neg_weaktab) - screened_rates(k_Ni58_to_He4_Fe54_reaclib) - screened_rates(k_Ni58_to_n_Ni57_reaclib) - screened_rates(k_Ni58_to_p_Co57_reaclib); jac.set(Ni58, Ni58, scratch); scratch = screened_rates(k_Ni59_to_n_Ni58_reaclib); @@ -53526,7 +51335,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Cu57, 0.0); - scratch = screened_rates(k_Cu58_to_Ni58_weaktab) + screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(N)*state.rho + screened_rates(k_Cu58_to_Ni58_electron_capture_weaktab); jac.set(Ni58, Cu58, scratch); scratch = screened_rates(k_Cu59_to_p_Ni58_reaclib); @@ -53534,7 +51343,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Cu60, 0.0); - scratch = screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(H1)*state.rho; jac.set(Ni58, Cu61, scratch); jac.set(Ni58, Cu62, 0.0); @@ -53545,12 +51354,12 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Cu65, 0.0); - scratch = screened_rates(k_Zn59_to_p_Ni58_reaclib); + scratch = screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib); jac.set(Ni58, Zn59, scratch); jac.set(Ni58, Zn60, 0.0); - scratch = screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(N)*state.rho; jac.set(Ni58, Zn61, scratch); scratch = screened_rates(k_Zn62_to_He4_Ni58_reaclib); @@ -53574,17 +51383,17 @@ void jac_nuc(const burn_t& state, jac.set(Ni58, Ge64, 0.0); - scratch = screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(Ni59)*state.rho - screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(Ni59)*state.rho + screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(Zn62)*state.rho; + scratch = screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(Zn62)*state.rho; jac.set(Ni59, N, scratch); - scratch = screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(Co58)*state.rho + screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(Co59)*state.rho + screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(Ni59)*state.rho - screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(Ni59)*state.rho; + scratch = screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(Co58)*state.rho + screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(Co59)*state.rho + screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(Ni59)*state.rho; jac.set(Ni59, H1, scratch); jac.set(Ni59, H2, 0.0); jac.set(Ni59, He3, 0.0); - scratch = screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(Co56)*state.rho + screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(Fe55)*state.rho + screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(Fe56)*state.rho - screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(Ni59)*state.rho - screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(Ni59)*state.rho - screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(Ni59)*state.rho; + scratch = screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(Co56)*state.rho + screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(Fe55)*state.rho + screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(Fe56)*state.rho - screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(Ni59)*state.rho; jac.set(Ni59, He4, scratch); jac.set(Ni59, Li6, 0.0); @@ -53813,10 +51622,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni59, Fe54, 0.0); - scratch = screened_rates(k_He4_Fe55_to_Ni59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe55_He4_to_Ni59_reaclib)*Y(He4)*state.rho; jac.set(Ni59, Fe55, scratch); - scratch = screened_rates(k_He4_Fe56_to_n_Ni59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe56_He4_to_n_Ni59_reaclib)*Y(He4)*state.rho; jac.set(Ni59, Fe56, scratch); jac.set(Ni59, Fe57, 0.0); @@ -53829,25 +51638,25 @@ void jac_nuc(const burn_t& state, jac.set(Ni59, Co55, 0.0); - scratch = screened_rates(k_He4_Co56_to_p_Ni59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co56_He4_to_p_Ni59_reaclib)*Y(He4)*state.rho; jac.set(Ni59, Co56, scratch); jac.set(Ni59, Co57, 0.0); - scratch = screened_rates(k_p_Co58_to_Ni59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co58_p_to_Ni59_reaclib)*Y(H1)*state.rho; jac.set(Ni59, Co58, scratch); - scratch = screened_rates(k_Co59_to_Ni59_weaktab) + screened_rates(k_p_Co59_to_n_Ni59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co59_p_to_n_Ni59_reaclib)*Y(H1)*state.rho + screened_rates(k_Co59_to_Ni59_beta_neg_weaktab); jac.set(Ni59, Co59, scratch); jac.set(Ni59, Ni56, 0.0); jac.set(Ni59, Ni57, 0.0); - scratch = screened_rates(k_n_Ni58_to_Ni59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni58_n_to_Ni59_reaclib)*Y(N)*state.rho; jac.set(Ni59, Ni58, scratch); - scratch = -screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni59_to_Co59_weaktab) - screened_rates(k_Ni59_to_Cu59_weaktab) - screened_rates(k_Ni59_to_He4_Fe55_reaclib) - screened_rates(k_Ni59_to_n_Ni58_reaclib) - screened_rates(k_Ni59_to_p_Co58_reaclib) - screened_rates(k_n_Ni59_to_He4_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni59_to_p_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni59_to_He4_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni59_n_to_He4_Fe56_reaclib)*Y(N)*state.rho - screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_Ni59_n_to_p_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni59_p_to_He4_Co56_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni59_to_Co59_electron_capture_weaktab) - screened_rates(k_Ni59_to_Cu59_beta_neg_weaktab) - screened_rates(k_Ni59_to_He4_Fe55_reaclib) - screened_rates(k_Ni59_to_n_Ni58_reaclib) - screened_rates(k_Ni59_to_p_Co58_reaclib); jac.set(Ni59, Ni59, scratch); scratch = screened_rates(k_Ni60_to_n_Ni59_reaclib); @@ -53865,7 +51674,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni59, Cu58, 0.0); - scratch = screened_rates(k_Cu59_to_Ni59_weaktab) + screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(N)*state.rho + screened_rates(k_Cu59_to_Ni59_electron_capture_weaktab); jac.set(Ni59, Cu59, scratch); scratch = screened_rates(k_Cu60_to_p_Ni59_reaclib); @@ -53873,7 +51682,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni59, Cu61, 0.0); - scratch = screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(H1)*state.rho; jac.set(Ni59, Cu62, scratch); jac.set(Ni59, Cu63, 0.0); @@ -53888,7 +51697,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni59, Zn61, 0.0); - scratch = screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(N)*state.rho; jac.set(Ni59, Zn62, scratch); scratch = screened_rates(k_Zn63_to_He4_Ni59_reaclib); @@ -53910,17 +51719,17 @@ void jac_nuc(const burn_t& state, jac.set(Ni59, Ge64, 0.0); - scratch = screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(Ni60)*state.rho - screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(Ni60)*state.rho + screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(Zn63)*state.rho; + scratch = screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(Ni59)*state.rho - screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(Zn63)*state.rho; jac.set(Ni60, N, scratch); - scratch = screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(Co59)*state.rho + screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(Cu63)*state.rho - screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(Ni60)*state.rho - screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(Ni60)*state.rho - screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(Ni60)*state.rho; + scratch = screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(Co59)*state.rho + screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(Ni60)*state.rho; jac.set(Ni60, H1, scratch); jac.set(Ni60, H2, 0.0); jac.set(Ni60, He3, 0.0); - scratch = screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(Co57)*state.rho + screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(Fe56)*state.rho + screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(Fe57)*state.rho - screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(Ni60)*state.rho - screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(Ni60)*state.rho - screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(Ni60)*state.rho; + scratch = screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(Co57)*state.rho + screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(Fe56)*state.rho + screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(Fe57)*state.rho - screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(Ni60)*state.rho; jac.set(Ni60, He4, scratch); jac.set(Ni60, Li6, 0.0); @@ -54151,10 +51960,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni60, Fe55, 0.0); - scratch = screened_rates(k_He4_Fe56_to_Ni60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe56_He4_to_Ni60_reaclib)*Y(He4)*state.rho; jac.set(Ni60, Fe56, scratch); - scratch = screened_rates(k_He4_Fe57_to_n_Ni60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe57_He4_to_n_Ni60_reaclib)*Y(He4)*state.rho; jac.set(Ni60, Fe57, scratch); jac.set(Ni60, Fe58, 0.0); @@ -54167,12 +51976,12 @@ void jac_nuc(const burn_t& state, jac.set(Ni60, Co56, 0.0); - scratch = screened_rates(k_He4_Co57_to_p_Ni60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co57_He4_to_p_Ni60_reaclib)*Y(He4)*state.rho; jac.set(Ni60, Co57, scratch); jac.set(Ni60, Co58, 0.0); - scratch = screened_rates(k_p_Co59_to_Ni60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Co59_p_to_Ni60_reaclib)*Y(H1)*state.rho; jac.set(Ni60, Co59, scratch); jac.set(Ni60, Ni56, 0.0); @@ -54181,10 +51990,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni60, Ni58, 0.0); - scratch = screened_rates(k_n_Ni59_to_Ni60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni59_n_to_Ni60_reaclib)*Y(N)*state.rho; jac.set(Ni60, Ni59, scratch); - scratch = -screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni60_to_Cu60_weaktab) - screened_rates(k_Ni60_to_He4_Fe56_reaclib) - screened_rates(k_Ni60_to_n_Ni59_reaclib) - screened_rates(k_Ni60_to_p_Co59_reaclib) - screened_rates(k_n_Ni60_to_He4_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni60_to_He4_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni60_n_to_He4_Fe57_reaclib)*Y(N)*state.rho - screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni60_p_to_He4_Co57_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni60_to_Cu60_beta_neg_weaktab) - screened_rates(k_Ni60_to_He4_Fe56_reaclib) - screened_rates(k_Ni60_to_n_Ni59_reaclib) - screened_rates(k_Ni60_to_p_Co59_reaclib); jac.set(Ni60, Ni60, scratch); scratch = screened_rates(k_Ni61_to_n_Ni60_reaclib); @@ -54202,7 +52011,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni60, Cu59, 0.0); - scratch = screened_rates(k_Cu60_to_Ni60_weaktab) + screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(N)*state.rho + screened_rates(k_Cu60_to_Ni60_electron_capture_weaktab); jac.set(Ni60, Cu60, scratch); scratch = screened_rates(k_Cu61_to_p_Ni60_reaclib); @@ -54210,7 +52019,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni60, Cu62, 0.0); - scratch = screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(H1)*state.rho; jac.set(Ni60, Cu63, scratch); jac.set(Ni60, Cu64, 0.0); @@ -54225,7 +52034,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni60, Zn62, 0.0); - scratch = screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(N)*state.rho; jac.set(Ni60, Zn63, scratch); scratch = screened_rates(k_Zn64_to_He4_Ni60_reaclib); @@ -54245,17 +52054,17 @@ void jac_nuc(const burn_t& state, jac.set(Ni60, Ge64, 0.0); - scratch = screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(Ni60)*state.rho - screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(Ni61)*state.rho - screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(Ni61)*state.rho + screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(Zn64)*state.rho; + scratch = screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(Ni60)*state.rho - screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(Ni61)*state.rho + screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(Zn64)*state.rho; jac.set(Ni61, N, scratch); - scratch = screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(Cu64)*state.rho - screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(Ni61)*state.rho - screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(Ni61)*state.rho - screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(Ni61)*state.rho; + scratch = screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(Ni61)*state.rho; jac.set(Ni61, H1, scratch); jac.set(Ni61, H2, 0.0); jac.set(Ni61, He3, 0.0); - scratch = screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(Co58)*state.rho + screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(Fe57)*state.rho + screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(Fe58)*state.rho - screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(Ni61)*state.rho - screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(Ni61)*state.rho - screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(Ni61)*state.rho; + scratch = screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(Co58)*state.rho + screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(Fe57)*state.rho + screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(Ni61)*state.rho; jac.set(Ni61, He4, scratch); jac.set(Ni61, Li6, 0.0); @@ -54488,10 +52297,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni61, Fe56, 0.0); - scratch = screened_rates(k_He4_Fe57_to_Ni61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe57_He4_to_Ni61_reaclib)*Y(He4)*state.rho; jac.set(Ni61, Fe57, scratch); - scratch = screened_rates(k_He4_Fe58_to_n_Ni61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe58_He4_to_n_Ni61_reaclib)*Y(He4)*state.rho; jac.set(Ni61, Fe58, scratch); jac.set(Ni61, Co53, 0.0); @@ -54504,7 +52313,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni61, Co57, 0.0); - scratch = screened_rates(k_He4_Co58_to_p_Ni61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co58_He4_to_p_Ni61_reaclib)*Y(He4)*state.rho; jac.set(Ni61, Co58, scratch); jac.set(Ni61, Co59, 0.0); @@ -54517,10 +52326,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni61, Ni59, 0.0); - scratch = screened_rates(k_n_Ni60_to_Ni61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni60_n_to_Ni61_reaclib)*Y(N)*state.rho; jac.set(Ni61, Ni60, scratch); - scratch = -screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni61_to_Cu61_weaktab) - screened_rates(k_Ni61_to_He4_Fe57_reaclib) - screened_rates(k_Ni61_to_n_Ni60_reaclib) - screened_rates(k_n_Ni61_to_He4_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni61_to_He4_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni61_n_to_He4_Fe58_reaclib)*Y(N)*state.rho - screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni61_p_to_He4_Co58_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni61_to_Cu61_beta_neg_weaktab) - screened_rates(k_Ni61_to_He4_Fe57_reaclib) - screened_rates(k_Ni61_to_n_Ni60_reaclib); jac.set(Ni61, Ni61, scratch); scratch = screened_rates(k_Ni62_to_n_Ni61_reaclib); @@ -54538,7 +52347,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni61, Cu60, 0.0); - scratch = screened_rates(k_Cu61_to_Ni61_weaktab) + screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(N)*state.rho + screened_rates(k_Cu61_to_Ni61_electron_capture_weaktab); jac.set(Ni61, Cu61, scratch); scratch = screened_rates(k_Cu62_to_p_Ni61_reaclib); @@ -54546,7 +52355,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni61, Cu63, 0.0); - scratch = screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(H1)*state.rho; jac.set(Ni61, Cu64, scratch); jac.set(Ni61, Cu65, 0.0); @@ -54561,7 +52370,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni61, Zn63, 0.0); - scratch = screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(N)*state.rho; jac.set(Ni61, Zn64, scratch); scratch = screened_rates(k_Zn65_to_He4_Ni61_reaclib); @@ -54579,17 +52388,17 @@ void jac_nuc(const burn_t& state, jac.set(Ni61, Ge64, 0.0); - scratch = screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(Ni61)*state.rho - screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(Ni62)*state.rho + screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(Zn65)*state.rho; + scratch = screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(Ni61)*state.rho - screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(Ni62)*state.rho + screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(Zn65)*state.rho; jac.set(Ni62, N, scratch); - scratch = screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(Cu65)*state.rho - screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(Ni62)*state.rho - screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(Ni62)*state.rho - screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(Ni62)*state.rho; + scratch = screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(Cu65)*state.rho - screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(Ni62)*state.rho; jac.set(Ni62, H1, scratch); jac.set(Ni62, H2, 0.0); jac.set(Ni62, He3, 0.0); - scratch = screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(Co59)*state.rho + screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(Fe58)*state.rho - screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(Ni62)*state.rho - screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(Ni62)*state.rho - screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(Ni62)*state.rho; + scratch = screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(Co59)*state.rho + screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(Fe58)*state.rho - screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(Ni62)*state.rho; jac.set(Ni62, He4, scratch); jac.set(Ni62, Li6, 0.0); @@ -54824,7 +52633,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni62, Fe57, 0.0); - scratch = screened_rates(k_He4_Fe58_to_Ni62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Fe58_He4_to_Ni62_reaclib)*Y(He4)*state.rho; jac.set(Ni62, Fe58, scratch); jac.set(Ni62, Co53, 0.0); @@ -54839,7 +52648,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni62, Co58, 0.0); - scratch = screened_rates(k_He4_Co59_to_p_Ni62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co59_He4_to_p_Ni62_reaclib)*Y(He4)*state.rho; jac.set(Ni62, Co59, scratch); jac.set(Ni62, Ni56, 0.0); @@ -54852,10 +52661,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni62, Ni60, 0.0); - scratch = screened_rates(k_n_Ni61_to_Ni62_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni61_n_to_Ni62_reaclib)*Y(N)*state.rho; jac.set(Ni62, Ni61, scratch); - scratch = -screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni62_to_Cu62_weaktab) - screened_rates(k_Ni62_to_He4_Fe58_reaclib) - screened_rates(k_Ni62_to_n_Ni61_reaclib) - screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni62_to_He4_Co59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(N)*state.rho - screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni62_p_to_He4_Co59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni62_to_Cu62_beta_neg_weaktab) - screened_rates(k_Ni62_to_He4_Fe58_reaclib) - screened_rates(k_Ni62_to_n_Ni61_reaclib); jac.set(Ni62, Ni62, scratch); scratch = screened_rates(k_Ni63_to_n_Ni62_reaclib); @@ -54873,7 +52682,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni62, Cu61, 0.0); - scratch = screened_rates(k_Cu62_to_Ni62_weaktab) + screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(N)*state.rho + screened_rates(k_Cu62_to_Ni62_electron_capture_weaktab); jac.set(Ni62, Cu62, scratch); scratch = screened_rates(k_Cu63_to_p_Ni62_reaclib); @@ -54881,7 +52690,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni62, Cu64, 0.0); - scratch = screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(H1)*state.rho; jac.set(Ni62, Cu65, scratch); jac.set(Ni62, Zn59, 0.0); @@ -54896,7 +52705,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni62, Zn64, 0.0); - scratch = screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(N)*state.rho; jac.set(Ni62, Zn65, scratch); scratch = screened_rates(k_Zn66_to_He4_Ni62_reaclib); @@ -54912,17 +52721,17 @@ void jac_nuc(const burn_t& state, jac.set(Ni62, Ge64, 0.0); - scratch = screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(Ni62)*state.rho - screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(Ni63)*state.rho + screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(Zn66)*state.rho; + scratch = screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(Ni62)*state.rho - screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(Ni63)*state.rho + screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(Zn66)*state.rho; jac.set(Ni63, N, scratch); - scratch = -screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(Ni63)*state.rho - screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(Ni63)*state.rho; + scratch = -screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(Ni63)*state.rho - screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(Ni63)*state.rho; jac.set(Ni63, H1, scratch); jac.set(Ni63, H2, 0.0); jac.set(Ni63, He3, 0.0); - scratch = -screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(Ni63)*state.rho; + scratch = -screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(Ni63)*state.rho; jac.set(Ni63, He4, scratch); jac.set(Ni63, Li6, 0.0); @@ -55185,10 +52994,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni63, Ni61, 0.0); - scratch = screened_rates(k_n_Ni62_to_Ni63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni62_n_to_Ni63_reaclib)*Y(N)*state.rho; jac.set(Ni63, Ni62, scratch); - scratch = -screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni63_to_Cu63_weaktab) - screened_rates(k_Ni63_to_n_Ni62_reaclib) - screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(N)*state.rho - screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni63_to_Cu63_beta_neg_weaktab) - screened_rates(k_Ni63_to_n_Ni62_reaclib); jac.set(Ni63, Ni63, scratch); scratch = screened_rates(k_Ni64_to_n_Ni63_reaclib); @@ -55206,7 +53015,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni63, Cu62, 0.0); - scratch = screened_rates(k_Cu63_to_Ni63_weaktab) + screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(N)*state.rho + screened_rates(k_Cu63_to_Ni63_electron_capture_weaktab); jac.set(Ni63, Cu63, scratch); scratch = screened_rates(k_Cu64_to_p_Ni63_reaclib); @@ -55228,7 +53037,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni63, Zn65, 0.0); - scratch = screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(N)*state.rho; jac.set(Ni63, Zn66, scratch); jac.set(Ni63, Ga62, 0.0); @@ -55241,10 +53050,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni63, Ge64, 0.0); - scratch = screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(Ni63)*state.rho; + scratch = screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(Ni63)*state.rho; jac.set(Ni64, N, scratch); - scratch = -screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(Ni64)*state.rho - screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(Ni64)*state.rho; + scratch = -screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(Ni64)*state.rho - screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(Ni64)*state.rho; jac.set(Ni64, H1, scratch); jac.set(Ni64, H2, 0.0); @@ -55515,10 +53324,10 @@ void jac_nuc(const burn_t& state, jac.set(Ni64, Ni62, 0.0); - scratch = screened_rates(k_n_Ni63_to_Ni64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ni63_n_to_Ni64_reaclib)*Y(N)*state.rho; jac.set(Ni64, Ni63, scratch); - scratch = -screened_rates(k_Ni64_to_Cu64_weaktab) - screened_rates(k_Ni64_to_n_Ni63_reaclib) - screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(H1)*state.rho - screened_rates(k_Ni64_to_Cu64_beta_neg_weaktab) - screened_rates(k_Ni64_to_n_Ni63_reaclib); jac.set(Ni64, Ni64, scratch); jac.set(Ni64, Cu57, 0.0); @@ -55535,7 +53344,7 @@ void jac_nuc(const burn_t& state, jac.set(Ni64, Cu63, 0.0); - scratch = screened_rates(k_Cu64_to_Ni64_weaktab) + screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(N)*state.rho + screened_rates(k_Cu64_to_Ni64_electron_capture_weaktab); jac.set(Ni64, Cu64, scratch); scratch = screened_rates(k_Cu65_to_p_Ni64_reaclib); @@ -55567,17 +53376,17 @@ void jac_nuc(const burn_t& state, jac.set(Ni64, Ge64, 0.0); - scratch = -screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(Cu57)*state.rho - screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(Cu57)*state.rho - screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(Cu57)*state.rho; + scratch = -screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(Cu57)*state.rho - screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(Cu57)*state.rho - screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(Cu57)*state.rho; jac.set(Cu57, N, scratch); - scratch = screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(Ni56)*state.rho + screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(Zn60)*state.rho; jac.set(Cu57, H1, scratch); jac.set(Cu57, H2, 0.0); jac.set(Cu57, He3, 0.0); - scratch = screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(Co53)*state.rho + screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(Co54)*state.rho - screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(Cu57)*state.rho; + scratch = screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(Co53)*state.rho + screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(Co54)*state.rho - screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(Cu57)*state.rho; jac.set(Cu57, He4, scratch); jac.set(Cu57, Li6, 0.0); @@ -55814,10 +53623,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu57, Fe58, 0.0); - scratch = screened_rates(k_He4_Co53_to_Cu57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co53_He4_to_Cu57_reaclib)*Y(He4)*state.rho; jac.set(Cu57, Co53, scratch); - scratch = screened_rates(k_He4_Co54_to_n_Cu57_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co54_He4_to_n_Cu57_reaclib)*Y(He4)*state.rho; jac.set(Cu57, Co54, scratch); jac.set(Cu57, Co55, 0.0); @@ -55830,10 +53639,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu57, Co59, 0.0); - scratch = screened_rates(k_p_Ni56_to_Cu57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni56_p_to_Cu57_reaclib)*Y(H1)*state.rho; jac.set(Cu57, Ni56, scratch); - scratch = screened_rates(k_Ni57_to_Cu57_weaktab) + screened_rates(k_p_Ni57_to_n_Cu57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni57_p_to_n_Cu57_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni57_to_Cu57_beta_neg_weaktab); jac.set(Cu57, Ni57, scratch); jac.set(Cu57, Ni58, 0.0); @@ -55850,7 +53659,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu57, Ni64, 0.0); - scratch = -screened_rates(k_Cu57_to_He4_Co53_reaclib) - screened_rates(k_Cu57_to_Ni57_weaktab) - screened_rates(k_Cu57_to_p_Ni56_reaclib) - screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu57_to_He4_Co54_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu57_to_p_Ni57_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(N)*state.rho - screened_rates(k_Cu57_n_to_He4_Co54_reaclib)*Y(N)*state.rho - screened_rates(k_Cu57_n_to_p_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_Cu57_to_He4_Co53_reaclib) - screened_rates(k_Cu57_to_Ni57_electron_capture_weaktab) - screened_rates(k_Cu57_to_p_Ni56_reaclib); jac.set(Cu57, Cu57, scratch); scratch = screened_rates(k_Cu58_to_n_Cu57_reaclib); @@ -55872,7 +53681,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu57, Zn59, 0.0); - scratch = screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(H1)*state.rho; jac.set(Cu57, Zn60, scratch); jac.set(Cu57, Zn61, 0.0); @@ -55897,17 +53706,17 @@ void jac_nuc(const burn_t& state, jac.set(Cu57, Ge64, 0.0); - scratch = screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(Cu57)*state.rho - screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(Cu58)*state.rho - screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(Cu58)*state.rho - screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(Cu58)*state.rho; + scratch = screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(Cu57)*state.rho - screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(Cu58)*state.rho; jac.set(Cu58, N, scratch); - scratch = -screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(Cu58)*state.rho + screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(Ni57)*state.rho + screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(Ni58)*state.rho + screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(Zn61)*state.rho; + scratch = -screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(Cu58)*state.rho + screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(Zn61)*state.rho; jac.set(Cu58, H1, scratch); jac.set(Cu58, H2, 0.0); jac.set(Cu58, He3, 0.0); - scratch = screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(Co54)*state.rho + screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(Co55)*state.rho - screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(Cu58)*state.rho - screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(Cu58)*state.rho; + scratch = screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(Co54)*state.rho + screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(Co55)*state.rho - screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(Cu58)*state.rho; jac.set(Cu58, He4, scratch); jac.set(Cu58, Li6, 0.0); @@ -56146,10 +53955,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu58, Co53, 0.0); - scratch = screened_rates(k_He4_Co54_to_Cu58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co54_He4_to_Cu58_reaclib)*Y(He4)*state.rho; jac.set(Cu58, Co54, scratch); - scratch = screened_rates(k_He4_Co55_to_n_Cu58_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_n_Cu58_reaclib)*Y(He4)*state.rho; jac.set(Cu58, Co55, scratch); jac.set(Cu58, Co56, 0.0); @@ -56162,10 +53971,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu58, Ni56, 0.0); - scratch = screened_rates(k_p_Ni57_to_Cu58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni57_p_to_Cu58_reaclib)*Y(H1)*state.rho; jac.set(Cu58, Ni57, scratch); - scratch = screened_rates(k_Ni58_to_Cu58_weaktab) + screened_rates(k_p_Ni58_to_n_Cu58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_n_Cu58_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni58_to_Cu58_beta_neg_weaktab); jac.set(Cu58, Ni58, scratch); jac.set(Cu58, Ni59, 0.0); @@ -56180,10 +53989,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu58, Ni64, 0.0); - scratch = screened_rates(k_n_Cu57_to_Cu58_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu57_n_to_Cu58_reaclib)*Y(N)*state.rho; jac.set(Cu58, Cu57, scratch); - scratch = -screened_rates(k_Cu58_to_He4_Co54_reaclib) - screened_rates(k_Cu58_to_Ni58_weaktab) - screened_rates(k_Cu58_to_n_Cu57_reaclib) - screened_rates(k_Cu58_to_p_Ni57_reaclib) - screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu58_to_He4_Co55_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu58_to_p_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_Cu58_n_to_He4_Co55_reaclib)*Y(N)*state.rho - screened_rates(k_Cu58_n_to_p_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu58_to_He4_Co54_reaclib) - screened_rates(k_Cu58_to_Ni58_electron_capture_weaktab) - screened_rates(k_Cu58_to_n_Cu57_reaclib) - screened_rates(k_Cu58_to_p_Ni57_reaclib); jac.set(Cu58, Cu58, scratch); scratch = screened_rates(k_Cu59_to_n_Cu58_reaclib); @@ -56206,7 +54015,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu58, Zn60, 0.0); - scratch = screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(H1)*state.rho; jac.set(Cu58, Zn61, scratch); jac.set(Cu58, Zn62, 0.0); @@ -56230,17 +54039,17 @@ void jac_nuc(const burn_t& state, jac.set(Cu58, Ge64, 0.0); - scratch = screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(Cu58)*state.rho - screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(Ga62)*state.rho + screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(Zn59)*state.rho; + scratch = screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(Cu58)*state.rho - screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(Ga62)*state.rho + screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(Zn59)*state.rho; jac.set(Cu59, N, scratch); - scratch = -screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(Ni58)*state.rho + screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(Ni59)*state.rho + screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(Zn62)*state.rho; + scratch = -screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(Zn62)*state.rho; jac.set(Cu59, H1, scratch); jac.set(Cu59, H2, 0.0); jac.set(Cu59, He3, 0.0); - scratch = screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(Co55)*state.rho + screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(Co56)*state.rho - screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(Cu59)*state.rho - screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(Cu59)*state.rho - screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(Ni56)*state.rho; + scratch = screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(Co55)*state.rho + screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(Co56)*state.rho - screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(Ni56)*state.rho; jac.set(Cu59, He4, scratch); jac.set(Cu59, Li6, 0.0); @@ -56481,10 +54290,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Co54, 0.0); - scratch = screened_rates(k_He4_Co55_to_Cu59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co55_He4_to_Cu59_reaclib)*Y(He4)*state.rho; jac.set(Cu59, Co55, scratch); - scratch = screened_rates(k_He4_Co56_to_n_Cu59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co56_He4_to_n_Cu59_reaclib)*Y(He4)*state.rho; jac.set(Cu59, Co56, scratch); jac.set(Cu59, Co57, 0.0); @@ -56493,15 +54302,15 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Co59, 0.0); - scratch = screened_rates(k_He4_Ni56_to_p_Cu59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_p_Cu59_reaclib)*Y(He4)*state.rho; jac.set(Cu59, Ni56, scratch); jac.set(Cu59, Ni57, 0.0); - scratch = screened_rates(k_p_Ni58_to_Cu59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni58_p_to_Cu59_reaclib)*Y(H1)*state.rho; jac.set(Cu59, Ni58, scratch); - scratch = screened_rates(k_Ni59_to_Cu59_weaktab) + screened_rates(k_p_Ni59_to_n_Cu59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni59_p_to_n_Cu59_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni59_to_Cu59_beta_neg_weaktab); jac.set(Cu59, Ni59, scratch); jac.set(Cu59, Ni60, 0.0); @@ -56516,10 +54325,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Cu57, 0.0); - scratch = screened_rates(k_n_Cu58_to_Cu59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu58_n_to_Cu59_reaclib)*Y(N)*state.rho; jac.set(Cu59, Cu58, scratch); - scratch = -screened_rates(k_Cu59_to_He4_Co55_reaclib) - screened_rates(k_Cu59_to_Ni59_weaktab) - screened_rates(k_Cu59_to_n_Cu58_reaclib) - screened_rates(k_Cu59_to_p_Ni58_reaclib) - screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu59_to_He4_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu59_to_p_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu59_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_Cu59_n_to_He4_Co56_reaclib)*Y(N)*state.rho - screened_rates(k_Cu59_n_to_p_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_Cu59_p_to_He4_Ni56_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu59_to_He4_Co55_reaclib) - screened_rates(k_Cu59_to_Ni59_electron_capture_weaktab) - screened_rates(k_Cu59_to_n_Cu58_reaclib) - screened_rates(k_Cu59_to_p_Ni58_reaclib); jac.set(Cu59, Cu59, scratch); scratch = screened_rates(k_Cu60_to_n_Cu59_reaclib); @@ -56535,7 +54344,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Cu65, 0.0); - scratch = screened_rates(k_Zn59_to_Cu59_reaclib) + screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(N)*state.rho + screened_rates(k_Zn59_to_Cu59_beta_pos_reaclib); jac.set(Cu59, Zn59, scratch); scratch = screened_rates(k_Zn60_to_p_Cu59_reaclib); @@ -56543,7 +54352,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Zn61, 0.0); - scratch = screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(H1)*state.rho; jac.set(Cu59, Zn62, scratch); jac.set(Cu59, Zn63, 0.0); @@ -56554,7 +54363,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Zn66, 0.0); - scratch = screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(N)*state.rho; jac.set(Cu59, Ga62, scratch); scratch = screened_rates(k_Ga63_to_He4_Cu59_reaclib); @@ -56566,17 +54375,17 @@ void jac_nuc(const burn_t& state, jac.set(Cu59, Ge64, 0.0); - scratch = screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(Ga63)*state.rho + screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(Cu59)*state.rho - screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(Zn60)*state.rho; jac.set(Cu60, N, scratch); - scratch = -screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(Ni59)*state.rho + screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(Ni60)*state.rho + screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(Zn63)*state.rho; + scratch = -screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(Zn63)*state.rho; jac.set(Cu60, H1, scratch); jac.set(Cu60, H2, 0.0); jac.set(Cu60, He3, 0.0); - scratch = screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(Co56)*state.rho + screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(Co57)*state.rho - screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(Cu60)*state.rho - screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(Cu60)*state.rho - screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(Ni57)*state.rho; + scratch = screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(Co56)*state.rho + screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(Co57)*state.rho - screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(Ni57)*state.rho; jac.set(Cu60, He4, scratch); jac.set(Cu60, Li6, 0.0); @@ -56819,10 +54628,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu60, Co55, 0.0); - scratch = screened_rates(k_He4_Co56_to_Cu60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co56_He4_to_Cu60_reaclib)*Y(He4)*state.rho; jac.set(Cu60, Co56, scratch); - scratch = screened_rates(k_He4_Co57_to_n_Cu60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co57_He4_to_n_Cu60_reaclib)*Y(He4)*state.rho; jac.set(Cu60, Co57, scratch); jac.set(Cu60, Co58, 0.0); @@ -56831,15 +54640,15 @@ void jac_nuc(const burn_t& state, jac.set(Cu60, Ni56, 0.0); - scratch = screened_rates(k_He4_Ni57_to_p_Cu60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni57_He4_to_p_Cu60_reaclib)*Y(He4)*state.rho; jac.set(Cu60, Ni57, scratch); jac.set(Cu60, Ni58, 0.0); - scratch = screened_rates(k_p_Ni59_to_Cu60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni59_p_to_Cu60_reaclib)*Y(H1)*state.rho; jac.set(Cu60, Ni59, scratch); - scratch = screened_rates(k_Ni60_to_Cu60_weaktab) + screened_rates(k_p_Ni60_to_n_Cu60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni60_p_to_n_Cu60_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni60_to_Cu60_beta_neg_weaktab); jac.set(Cu60, Ni60, scratch); jac.set(Cu60, Ni61, 0.0); @@ -56854,10 +54663,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu60, Cu58, 0.0); - scratch = screened_rates(k_n_Cu59_to_Cu60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu59_n_to_Cu60_reaclib)*Y(N)*state.rho; jac.set(Cu60, Cu59, scratch); - scratch = -screened_rates(k_Cu60_to_He4_Co56_reaclib) - screened_rates(k_Cu60_to_Ni60_weaktab) - screened_rates(k_Cu60_to_Zn60_weaktab) - screened_rates(k_Cu60_to_n_Cu59_reaclib) - screened_rates(k_Cu60_to_p_Ni59_reaclib) - screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu60_to_He4_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu60_to_p_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu60_to_He4_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_Cu60_n_to_He4_Co57_reaclib)*Y(N)*state.rho - screened_rates(k_Cu60_n_to_p_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_Cu60_p_to_He4_Ni57_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu60_to_He4_Co56_reaclib) - screened_rates(k_Cu60_to_Ni60_electron_capture_weaktab) - screened_rates(k_Cu60_to_Zn60_beta_neg_weaktab) - screened_rates(k_Cu60_to_n_Cu59_reaclib) - screened_rates(k_Cu60_to_p_Ni59_reaclib); jac.set(Cu60, Cu60, scratch); scratch = screened_rates(k_Cu61_to_n_Cu60_reaclib); @@ -56873,7 +54682,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu60, Zn59, 0.0); - scratch = screened_rates(k_Zn60_to_Cu60_weaktab) + screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(N)*state.rho + screened_rates(k_Zn60_to_Cu60_electron_capture_weaktab); jac.set(Cu60, Zn60, scratch); scratch = screened_rates(k_Zn61_to_p_Cu60_reaclib); @@ -56881,7 +54690,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu60, Zn62, 0.0); - scratch = screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(H1)*state.rho; jac.set(Cu60, Zn63, scratch); jac.set(Cu60, Zn64, 0.0); @@ -56892,7 +54701,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu60, Ga62, 0.0); - scratch = screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(N)*state.rho; jac.set(Cu60, Ga63, scratch); scratch = screened_rates(k_Ga64_to_He4_Cu60_reaclib); @@ -56902,17 +54711,17 @@ void jac_nuc(const burn_t& state, jac.set(Cu60, Ge64, 0.0); - scratch = screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(Ga64)*state.rho + screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(Zn61)*state.rho; + scratch = screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(Cu60)*state.rho - screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(Ga64)*state.rho + screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(Zn61)*state.rho; jac.set(Cu61, N, scratch); - scratch = -screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(Ni60)*state.rho + screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(Ni61)*state.rho + screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(Zn64)*state.rho; + scratch = -screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(Ni61)*state.rho + screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(Zn64)*state.rho; jac.set(Cu61, H1, scratch); jac.set(Cu61, H2, 0.0); jac.set(Cu61, He3, 0.0); - scratch = screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(Co57)*state.rho + screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(Co58)*state.rho - screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(Cu61)*state.rho - screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(Ni58)*state.rho; + scratch = screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(Co57)*state.rho + screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(Co58)*state.rho - screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(Ni58)*state.rho; jac.set(Cu61, He4, scratch); jac.set(Cu61, Li6, 0.0); @@ -57157,10 +54966,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu61, Co56, 0.0); - scratch = screened_rates(k_He4_Co57_to_Cu61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co57_He4_to_Cu61_reaclib)*Y(He4)*state.rho; jac.set(Cu61, Co57, scratch); - scratch = screened_rates(k_He4_Co58_to_n_Cu61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co58_He4_to_n_Cu61_reaclib)*Y(He4)*state.rho; jac.set(Cu61, Co58, scratch); jac.set(Cu61, Co59, 0.0); @@ -57169,15 +54978,15 @@ void jac_nuc(const burn_t& state, jac.set(Cu61, Ni57, 0.0); - scratch = screened_rates(k_He4_Ni58_to_p_Cu61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni58_He4_to_p_Cu61_reaclib)*Y(He4)*state.rho; jac.set(Cu61, Ni58, scratch); jac.set(Cu61, Ni59, 0.0); - scratch = screened_rates(k_p_Ni60_to_Cu61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni60_p_to_Cu61_reaclib)*Y(H1)*state.rho; jac.set(Cu61, Ni60, scratch); - scratch = screened_rates(k_Ni61_to_Cu61_weaktab) + screened_rates(k_p_Ni61_to_n_Cu61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni61_p_to_n_Cu61_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni61_to_Cu61_beta_neg_weaktab); jac.set(Cu61, Ni61, scratch); jac.set(Cu61, Ni62, 0.0); @@ -57192,10 +55001,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu61, Cu59, 0.0); - scratch = screened_rates(k_n_Cu60_to_Cu61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu60_n_to_Cu61_reaclib)*Y(N)*state.rho; jac.set(Cu61, Cu60, scratch); - scratch = -screened_rates(k_Cu61_to_He4_Co57_reaclib) - screened_rates(k_Cu61_to_Ni61_weaktab) - screened_rates(k_Cu61_to_Zn61_weaktab) - screened_rates(k_Cu61_to_n_Cu60_reaclib) - screened_rates(k_Cu61_to_p_Ni60_reaclib) - screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu61_to_He4_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu61_to_p_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu61_to_He4_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(N)*state.rho - screened_rates(k_Cu61_n_to_He4_Co58_reaclib)*Y(N)*state.rho - screened_rates(k_Cu61_n_to_p_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_Cu61_p_to_He4_Ni58_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu61_to_He4_Co57_reaclib) - screened_rates(k_Cu61_to_Ni61_electron_capture_weaktab) - screened_rates(k_Cu61_to_Zn61_beta_neg_weaktab) - screened_rates(k_Cu61_to_n_Cu60_reaclib) - screened_rates(k_Cu61_to_p_Ni60_reaclib); jac.set(Cu61, Cu61, scratch); scratch = screened_rates(k_Cu62_to_n_Cu61_reaclib); @@ -57211,7 +55020,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu61, Zn60, 0.0); - scratch = screened_rates(k_Zn61_to_Cu61_weaktab) + screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(N)*state.rho + screened_rates(k_Zn61_to_Cu61_electron_capture_weaktab); jac.set(Cu61, Zn61, scratch); scratch = screened_rates(k_Zn62_to_p_Cu61_reaclib); @@ -57219,7 +55028,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu61, Zn63, 0.0); - scratch = screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(H1)*state.rho; jac.set(Cu61, Zn64, scratch); jac.set(Cu61, Zn65, 0.0); @@ -57230,24 +55039,24 @@ void jac_nuc(const burn_t& state, jac.set(Cu61, Ga63, 0.0); - scratch = screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(N)*state.rho; jac.set(Cu61, Ga64, scratch); jac.set(Cu61, Ge63, 0.0); jac.set(Cu61, Ge64, 0.0); - scratch = screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(Zn62)*state.rho; + scratch = screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(Cu61)*state.rho - screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(Zn62)*state.rho; jac.set(Cu62, N, scratch); - scratch = -screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(Ni61)*state.rho + screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(Ni62)*state.rho + screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(Zn65)*state.rho; + scratch = -screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(Ni61)*state.rho + screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(Ni62)*state.rho + screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(Zn65)*state.rho; jac.set(Cu62, H1, scratch); jac.set(Cu62, H2, 0.0); jac.set(Cu62, He3, 0.0); - scratch = screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(Co58)*state.rho + screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(Co59)*state.rho - screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(Cu62)*state.rho + screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(Ni59)*state.rho; + scratch = screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(Co58)*state.rho + screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(Co59)*state.rho - screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(Ni59)*state.rho; jac.set(Cu62, He4, scratch); jac.set(Cu62, Li6, 0.0); @@ -57494,10 +55303,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu62, Co57, 0.0); - scratch = screened_rates(k_He4_Co58_to_Cu62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co58_He4_to_Cu62_reaclib)*Y(He4)*state.rho; jac.set(Cu62, Co58, scratch); - scratch = screened_rates(k_He4_Co59_to_n_Cu62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co59_He4_to_n_Cu62_reaclib)*Y(He4)*state.rho; jac.set(Cu62, Co59, scratch); jac.set(Cu62, Ni56, 0.0); @@ -57506,15 +55315,15 @@ void jac_nuc(const burn_t& state, jac.set(Cu62, Ni58, 0.0); - scratch = screened_rates(k_He4_Ni59_to_p_Cu62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni59_He4_to_p_Cu62_reaclib)*Y(He4)*state.rho; jac.set(Cu62, Ni59, scratch); jac.set(Cu62, Ni60, 0.0); - scratch = screened_rates(k_p_Ni61_to_Cu62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni61_p_to_Cu62_reaclib)*Y(H1)*state.rho; jac.set(Cu62, Ni61, scratch); - scratch = screened_rates(k_Ni62_to_Cu62_weaktab) + screened_rates(k_p_Ni62_to_n_Cu62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni62_p_to_n_Cu62_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni62_to_Cu62_beta_neg_weaktab); jac.set(Cu62, Ni62, scratch); jac.set(Cu62, Ni63, 0.0); @@ -57529,10 +55338,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu62, Cu60, 0.0); - scratch = screened_rates(k_n_Cu61_to_Cu62_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu61_n_to_Cu62_reaclib)*Y(N)*state.rho; jac.set(Cu62, Cu61, scratch); - scratch = -screened_rates(k_Cu62_to_He4_Co58_reaclib) - screened_rates(k_Cu62_to_Ni62_weaktab) - screened_rates(k_Cu62_to_Zn62_weaktab) - screened_rates(k_Cu62_to_n_Cu61_reaclib) - screened_rates(k_Cu62_to_p_Ni61_reaclib) - screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu62_to_He4_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu62_to_p_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu62_to_He4_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(N)*state.rho - screened_rates(k_Cu62_n_to_He4_Co59_reaclib)*Y(N)*state.rho - screened_rates(k_Cu62_n_to_p_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_Cu62_p_to_He4_Ni59_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu62_to_He4_Co58_reaclib) - screened_rates(k_Cu62_to_Ni62_electron_capture_weaktab) - screened_rates(k_Cu62_to_Zn62_beta_neg_weaktab) - screened_rates(k_Cu62_to_n_Cu61_reaclib) - screened_rates(k_Cu62_to_p_Ni61_reaclib); jac.set(Cu62, Cu62, scratch); scratch = screened_rates(k_Cu63_to_n_Cu62_reaclib); @@ -57548,7 +55357,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu62, Zn61, 0.0); - scratch = screened_rates(k_Zn62_to_Cu62_weaktab) + screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(N)*state.rho + screened_rates(k_Zn62_to_Cu62_electron_capture_weaktab); jac.set(Cu62, Zn62, scratch); scratch = screened_rates(k_Zn63_to_p_Cu62_reaclib); @@ -57556,7 +55365,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu62, Zn64, 0.0); - scratch = screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(H1)*state.rho; jac.set(Cu62, Zn65, scratch); jac.set(Cu62, Zn66, 0.0); @@ -57571,17 +55380,17 @@ void jac_nuc(const burn_t& state, jac.set(Cu62, Ge64, 0.0); - scratch = screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(Zn63)*state.rho; + scratch = screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(Zn63)*state.rho; jac.set(Cu63, N, scratch); - scratch = -screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(Cu63)*state.rho - screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(Ni62)*state.rho + screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(Ni63)*state.rho + screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(Zn66)*state.rho; + scratch = -screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(Ni62)*state.rho + screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(Ni63)*state.rho + screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(Zn66)*state.rho; jac.set(Cu63, H1, scratch); jac.set(Cu63, H2, 0.0); jac.set(Cu63, He3, 0.0); - scratch = screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(Co59)*state.rho - screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(Cu63)*state.rho + screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(Ni60)*state.rho; + scratch = screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(Co59)*state.rho - screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(Ni60)*state.rho; jac.set(Cu63, He4, scratch); jac.set(Cu63, Li6, 0.0); @@ -57830,7 +55639,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu63, Co58, 0.0); - scratch = screened_rates(k_He4_Co59_to_Cu63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Co59_He4_to_Cu63_reaclib)*Y(He4)*state.rho; jac.set(Cu63, Co59, scratch); jac.set(Cu63, Ni56, 0.0); @@ -57841,15 +55650,15 @@ void jac_nuc(const burn_t& state, jac.set(Cu63, Ni59, 0.0); - scratch = screened_rates(k_He4_Ni60_to_p_Cu63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni60_He4_to_p_Cu63_reaclib)*Y(He4)*state.rho; jac.set(Cu63, Ni60, scratch); jac.set(Cu63, Ni61, 0.0); - scratch = screened_rates(k_p_Ni62_to_Cu63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni62_p_to_Cu63_reaclib)*Y(H1)*state.rho; jac.set(Cu63, Ni62, scratch); - scratch = screened_rates(k_Ni63_to_Cu63_weaktab) + screened_rates(k_p_Ni63_to_n_Cu63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni63_p_to_n_Cu63_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni63_to_Cu63_beta_neg_weaktab); jac.set(Cu63, Ni63, scratch); jac.set(Cu63, Ni64, 0.0); @@ -57864,10 +55673,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu63, Cu61, 0.0); - scratch = screened_rates(k_n_Cu62_to_Cu63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu62_n_to_Cu63_reaclib)*Y(N)*state.rho; jac.set(Cu63, Cu62, scratch); - scratch = -screened_rates(k_Cu63_to_He4_Co59_reaclib) - screened_rates(k_Cu63_to_Ni63_weaktab) - screened_rates(k_Cu63_to_Zn63_weaktab) - screened_rates(k_Cu63_to_n_Cu62_reaclib) - screened_rates(k_Cu63_to_p_Ni62_reaclib) - screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu63_to_p_Ni63_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu63_to_He4_Ni60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(He4)*state.rho - screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(N)*state.rho - screened_rates(k_Cu63_n_to_p_Ni63_reaclib)*Y(N)*state.rho - screened_rates(k_Cu63_p_to_He4_Ni60_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu63_to_He4_Co59_reaclib) - screened_rates(k_Cu63_to_Ni63_electron_capture_weaktab) - screened_rates(k_Cu63_to_Zn63_beta_neg_weaktab) - screened_rates(k_Cu63_to_n_Cu62_reaclib) - screened_rates(k_Cu63_to_p_Ni62_reaclib); jac.set(Cu63, Cu63, scratch); scratch = screened_rates(k_Cu64_to_n_Cu63_reaclib); @@ -57883,7 +55692,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu63, Zn62, 0.0); - scratch = screened_rates(k_Zn63_to_Cu63_weaktab) + screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(N)*state.rho + screened_rates(k_Zn63_to_Cu63_electron_capture_weaktab); jac.set(Cu63, Zn63, scratch); scratch = screened_rates(k_Zn64_to_p_Cu63_reaclib); @@ -57891,7 +55700,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu63, Zn65, 0.0); - scratch = screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(H1)*state.rho; jac.set(Cu63, Zn66, scratch); jac.set(Cu63, Ga62, 0.0); @@ -57904,17 +55713,17 @@ void jac_nuc(const burn_t& state, jac.set(Cu63, Ge64, 0.0); - scratch = screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(Cu64)*state.rho - screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(Zn64)*state.rho; + scratch = screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(Zn64)*state.rho; jac.set(Cu64, N, scratch); - scratch = -screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(Cu64)*state.rho - screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(Cu64)*state.rho - screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(Ni63)*state.rho + screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(Ni64)*state.rho; + scratch = -screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(Cu64)*state.rho + screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(Ni63)*state.rho + screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(Ni64)*state.rho; jac.set(Cu64, H1, scratch); jac.set(Cu64, H2, 0.0); jac.set(Cu64, He3, 0.0); - scratch = screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(Ni61)*state.rho; + scratch = screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(Ni61)*state.rho; jac.set(Cu64, He4, scratch); jac.set(Cu64, Li6, 0.0); @@ -58175,15 +55984,15 @@ void jac_nuc(const burn_t& state, jac.set(Cu64, Ni60, 0.0); - scratch = screened_rates(k_He4_Ni61_to_p_Cu64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni61_He4_to_p_Cu64_reaclib)*Y(He4)*state.rho; jac.set(Cu64, Ni61, scratch); jac.set(Cu64, Ni62, 0.0); - scratch = screened_rates(k_p_Ni63_to_Cu64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni63_p_to_Cu64_reaclib)*Y(H1)*state.rho; jac.set(Cu64, Ni63, scratch); - scratch = screened_rates(k_Ni64_to_Cu64_weaktab) + screened_rates(k_p_Ni64_to_n_Cu64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni64_p_to_n_Cu64_reaclib)*Y(H1)*state.rho + screened_rates(k_Ni64_to_Cu64_beta_neg_weaktab); jac.set(Cu64, Ni64, scratch); jac.set(Cu64, Cu57, 0.0); @@ -58198,10 +56007,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu64, Cu62, 0.0); - scratch = screened_rates(k_n_Cu63_to_Cu64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu63_n_to_Cu64_reaclib)*Y(N)*state.rho; jac.set(Cu64, Cu63, scratch); - scratch = -screened_rates(k_Cu64_to_Ni64_weaktab) - screened_rates(k_Cu64_to_Zn64_weaktab) - screened_rates(k_Cu64_to_n_Cu63_reaclib) - screened_rates(k_Cu64_to_p_Ni63_reaclib) - screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(N)*state.rho - screened_rates(k_n_Cu64_to_p_Ni64_reaclib)*Y(N)*state.rho - screened_rates(k_p_Cu64_to_He4_Ni61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(N)*state.rho - screened_rates(k_Cu64_n_to_p_Ni64_reaclib)*Y(N)*state.rho - screened_rates(k_Cu64_p_to_He4_Ni61_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu64_to_Ni64_electron_capture_weaktab) - screened_rates(k_Cu64_to_Zn64_beta_neg_weaktab) - screened_rates(k_Cu64_to_n_Cu63_reaclib) - screened_rates(k_Cu64_to_p_Ni63_reaclib); jac.set(Cu64, Cu64, scratch); scratch = screened_rates(k_Cu65_to_n_Cu64_reaclib); @@ -58217,7 +56026,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu64, Zn63, 0.0); - scratch = screened_rates(k_Zn64_to_Cu64_weaktab) + screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(N)*state.rho + screened_rates(k_Zn64_to_Cu64_electron_capture_weaktab); jac.set(Cu64, Zn64, scratch); scratch = screened_rates(k_Zn65_to_p_Cu64_reaclib); @@ -58235,17 +56044,17 @@ void jac_nuc(const burn_t& state, jac.set(Cu64, Ge64, 0.0); - scratch = screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(Cu64)*state.rho + screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(Zn65)*state.rho; + scratch = screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(Cu64)*state.rho + screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(Zn65)*state.rho; jac.set(Cu65, N, scratch); - scratch = -screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(Cu65)*state.rho - screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(Cu65)*state.rho - screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(Cu65)*state.rho + screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(Ni64)*state.rho; + scratch = -screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(Cu65)*state.rho - screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(Cu65)*state.rho - screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(Cu65)*state.rho + screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(Ni64)*state.rho; jac.set(Cu65, H1, scratch); jac.set(Cu65, H2, 0.0); jac.set(Cu65, He3, 0.0); - scratch = screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(Ni62)*state.rho; + scratch = screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(Ni62)*state.rho; jac.set(Cu65, He4, scratch); jac.set(Cu65, Li6, 0.0); @@ -58508,12 +56317,12 @@ void jac_nuc(const burn_t& state, jac.set(Cu65, Ni61, 0.0); - scratch = screened_rates(k_He4_Ni62_to_p_Cu65_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni62_He4_to_p_Cu65_reaclib)*Y(He4)*state.rho; jac.set(Cu65, Ni62, scratch); jac.set(Cu65, Ni63, 0.0); - scratch = screened_rates(k_p_Ni64_to_Cu65_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ni64_p_to_Cu65_reaclib)*Y(H1)*state.rho; jac.set(Cu65, Ni64, scratch); jac.set(Cu65, Cu57, 0.0); @@ -58530,10 +56339,10 @@ void jac_nuc(const burn_t& state, jac.set(Cu65, Cu63, 0.0); - scratch = screened_rates(k_n_Cu64_to_Cu65_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Cu64_n_to_Cu65_reaclib)*Y(N)*state.rho; jac.set(Cu65, Cu64, scratch); - scratch = -screened_rates(k_Cu65_to_Zn65_weaktab) - screened_rates(k_Cu65_to_n_Cu64_reaclib) - screened_rates(k_Cu65_to_p_Ni64_reaclib) - screened_rates(k_p_Cu65_to_He4_Ni62_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Cu65_p_to_He4_Ni62_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(H1)*state.rho - screened_rates(k_Cu65_to_Zn65_beta_neg_weaktab) - screened_rates(k_Cu65_to_n_Cu64_reaclib) - screened_rates(k_Cu65_to_p_Ni64_reaclib); jac.set(Cu65, Cu65, scratch); jac.set(Cu65, Zn59, 0.0); @@ -58548,7 +56357,7 @@ void jac_nuc(const burn_t& state, jac.set(Cu65, Zn64, 0.0); - scratch = screened_rates(k_Zn65_to_Cu65_weaktab) + screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(N)*state.rho + screened_rates(k_Zn65_to_Cu65_electron_capture_weaktab); jac.set(Cu65, Zn65, scratch); scratch = screened_rates(k_Zn66_to_p_Cu65_reaclib); @@ -58564,17 +56373,17 @@ void jac_nuc(const burn_t& state, jac.set(Cu65, Ge64, 0.0); - scratch = -screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(Zn59)*state.rho - screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(Zn59)*state.rho - screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(Zn59)*state.rho; + scratch = -screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(Zn59)*state.rho; jac.set(Zn59, N, scratch); - scratch = screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(Cu58)*state.rho + screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(Ga62)*state.rho; + scratch = screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(Cu58)*state.rho + screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(Ga62)*state.rho; jac.set(Zn59, H1, scratch); jac.set(Zn59, H2, 0.0); jac.set(Zn59, He3, 0.0); - scratch = screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(Ni56)*state.rho - screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(Zn59)*state.rho - screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(Zn59)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(Ni56)*state.rho - screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(Zn59)*state.rho; jac.set(Zn59, He4, scratch); jac.set(Zn59, Li6, 0.0); @@ -58825,7 +56634,7 @@ void jac_nuc(const burn_t& state, jac.set(Zn59, Co59, 0.0); - scratch = screened_rates(k_He4_Ni56_to_n_Zn59_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_n_Zn59_reaclib)*Y(He4)*state.rho; jac.set(Zn59, Ni56, scratch); jac.set(Zn59, Ni57, 0.0); @@ -58846,10 +56655,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn59, Cu57, 0.0); - scratch = screened_rates(k_p_Cu58_to_Zn59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu58_p_to_Zn59_reaclib)*Y(H1)*state.rho; jac.set(Zn59, Cu58, scratch); - scratch = screened_rates(k_p_Cu59_to_n_Zn59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_n_Zn59_reaclib)*Y(H1)*state.rho; jac.set(Zn59, Cu59, scratch); jac.set(Zn59, Cu60, 0.0); @@ -58864,7 +56673,7 @@ void jac_nuc(const burn_t& state, jac.set(Zn59, Cu65, 0.0); - scratch = -screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn59_to_Cu59_reaclib) - screened_rates(k_Zn59_to_p_Cu58_reaclib) - screened_rates(k_Zn59_to_p_Ni58_reaclib) - screened_rates(k_n_Zn59_to_He4_Ni56_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn59_to_p_Cu59_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn59_n_to_He4_Ni56_reaclib)*Y(N)*state.rho - screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(N)*state.rho - screened_rates(k_Zn59_n_to_p_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_Zn59_to_Cu59_beta_pos_reaclib) - screened_rates(k_Zn59_to_p_Cu58_reaclib) - screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib); jac.set(Zn59, Zn59, scratch); scratch = screened_rates(k_Zn60_to_n_Zn59_reaclib); @@ -58882,7 +56691,7 @@ void jac_nuc(const burn_t& state, jac.set(Zn59, Zn66, 0.0); - scratch = screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(H1)*state.rho; jac.set(Zn59, Ga62, scratch); jac.set(Zn59, Ga63, 0.0); @@ -58894,17 +56703,17 @@ void jac_nuc(const burn_t& state, jac.set(Zn59, Ge64, 0.0); - scratch = screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(Ge63)*state.rho + screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(Zn59)*state.rho - screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho - screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(Zn60)*state.rho - screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(Ge63)*state.rho + screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(Zn59)*state.rho - screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(Zn60)*state.rho; jac.set(Zn60, N, scratch); - scratch = screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(Cu59)*state.rho + screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(Zn60)*state.rho; jac.set(Zn60, H1, scratch); jac.set(Zn60, H2, 0.0); jac.set(Zn60, He3, 0.0); - scratch = screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(Cu57)*state.rho + screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(Ni56)*state.rho + screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(Ni57)*state.rho - screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(Zn60)*state.rho - screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(Zn60)*state.rho - screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(Cu57)*state.rho + screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(Ni56)*state.rho + screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(Ni57)*state.rho - screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(Zn60)*state.rho; jac.set(Zn60, He4, scratch); jac.set(Zn60, Li6, 0.0); @@ -59155,10 +56964,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, Co59, 0.0); - scratch = screened_rates(k_He4_Ni56_to_Zn60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni56_He4_to_Zn60_reaclib)*Y(He4)*state.rho; jac.set(Zn60, Ni56, scratch); - scratch = screened_rates(k_He4_Ni57_to_n_Zn60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni57_He4_to_n_Zn60_reaclib)*Y(He4)*state.rho; jac.set(Zn60, Ni57, scratch); jac.set(Zn60, Ni58, 0.0); @@ -59175,15 +56984,15 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, Ni64, 0.0); - scratch = screened_rates(k_He4_Cu57_to_p_Zn60_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu57_He4_to_p_Zn60_reaclib)*Y(He4)*state.rho; jac.set(Zn60, Cu57, scratch); jac.set(Zn60, Cu58, 0.0); - scratch = screened_rates(k_p_Cu59_to_Zn60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu59_p_to_Zn60_reaclib)*Y(H1)*state.rho; jac.set(Zn60, Cu59, scratch); - scratch = screened_rates(k_Cu60_to_Zn60_weaktab) + screened_rates(k_p_Cu60_to_n_Zn60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu60_p_to_n_Zn60_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu60_to_Zn60_beta_neg_weaktab); jac.set(Zn60, Cu60, scratch); jac.set(Zn60, Cu61, 0.0); @@ -59196,10 +57005,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, Cu65, 0.0); - scratch = screened_rates(k_n_Zn59_to_Zn60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn59_n_to_Zn60_reaclib)*Y(N)*state.rho; jac.set(Zn60, Zn59, scratch); - scratch = -screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn60_to_Cu60_weaktab) - screened_rates(k_Zn60_to_He4_Ni56_reaclib) - screened_rates(k_Zn60_to_n_Zn59_reaclib) - screened_rates(k_Zn60_to_p_Cu59_reaclib) - screened_rates(k_n_Zn60_to_He4_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn60_to_p_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn60_to_He4_Cu57_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn60_n_to_He4_Ni57_reaclib)*Y(N)*state.rho - screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(N)*state.rho - screened_rates(k_Zn60_n_to_p_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_Zn60_p_to_He4_Cu57_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn60_to_Cu60_electron_capture_weaktab) - screened_rates(k_Zn60_to_He4_Ni56_reaclib) - screened_rates(k_Zn60_to_n_Zn59_reaclib) - screened_rates(k_Zn60_to_p_Cu59_reaclib); jac.set(Zn60, Zn60, scratch); scratch = screened_rates(k_Zn61_to_n_Zn60_reaclib); @@ -59217,28 +57026,28 @@ void jac_nuc(const burn_t& state, jac.set(Zn60, Ga62, 0.0); - scratch = screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(H1)*state.rho; jac.set(Zn60, Ga63, scratch); jac.set(Zn60, Ga64, 0.0); - scratch = screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(N)*state.rho; jac.set(Zn60, Ge63, scratch); scratch = screened_rates(k_Ge64_to_He4_Zn60_reaclib); jac.set(Zn60, Ge64, scratch); - scratch = screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(Ge64)*state.rho + screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(Zn60)*state.rho - screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(Zn61)*state.rho - screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(Zn61)*state.rho; + scratch = screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(Ge64)*state.rho + screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(Zn60)*state.rho - screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(Zn61)*state.rho; jac.set(Zn61, N, scratch); - scratch = screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(Cu60)*state.rho + screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(Zn61)*state.rho; + scratch = screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(Zn61)*state.rho; jac.set(Zn61, H1, scratch); jac.set(Zn61, H2, 0.0); jac.set(Zn61, He3, 0.0); - scratch = screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(Cu58)*state.rho + screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(Ni57)*state.rho + screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(Ni58)*state.rho - screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(Zn61)*state.rho - screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(Zn61)*state.rho; + scratch = screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(Cu58)*state.rho + screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(Ni57)*state.rho + screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(Ni58)*state.rho - screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(Zn61)*state.rho; jac.set(Zn61, He4, scratch); jac.set(Zn61, Li6, 0.0); @@ -59491,10 +57300,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn61, Ni56, 0.0); - scratch = screened_rates(k_He4_Ni57_to_Zn61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni57_He4_to_Zn61_reaclib)*Y(He4)*state.rho; jac.set(Zn61, Ni57, scratch); - scratch = screened_rates(k_He4_Ni58_to_n_Zn61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni58_He4_to_n_Zn61_reaclib)*Y(He4)*state.rho; jac.set(Zn61, Ni58, scratch); jac.set(Zn61, Ni59, 0.0); @@ -59511,15 +57320,15 @@ void jac_nuc(const burn_t& state, jac.set(Zn61, Cu57, 0.0); - scratch = screened_rates(k_He4_Cu58_to_p_Zn61_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu58_He4_to_p_Zn61_reaclib)*Y(He4)*state.rho; jac.set(Zn61, Cu58, scratch); jac.set(Zn61, Cu59, 0.0); - scratch = screened_rates(k_p_Cu60_to_Zn61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu60_p_to_Zn61_reaclib)*Y(H1)*state.rho; jac.set(Zn61, Cu60, scratch); - scratch = screened_rates(k_Cu61_to_Zn61_weaktab) + screened_rates(k_p_Cu61_to_n_Zn61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu61_p_to_n_Zn61_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu61_to_Zn61_beta_neg_weaktab); jac.set(Zn61, Cu61, scratch); jac.set(Zn61, Cu62, 0.0); @@ -59532,10 +57341,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn61, Zn59, 0.0); - scratch = screened_rates(k_n_Zn60_to_Zn61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn60_n_to_Zn61_reaclib)*Y(N)*state.rho; jac.set(Zn61, Zn60, scratch); - scratch = -screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn61_to_Cu61_weaktab) - screened_rates(k_Zn61_to_He4_Ni57_reaclib) - screened_rates(k_Zn61_to_n_Zn60_reaclib) - screened_rates(k_Zn61_to_p_Cu60_reaclib) - screened_rates(k_n_Zn61_to_He4_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn61_to_p_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn61_to_He4_Cu58_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(He4)*state.rho - screened_rates(k_Zn61_n_to_He4_Ni58_reaclib)*Y(N)*state.rho - screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(N)*state.rho - screened_rates(k_Zn61_n_to_p_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn61_p_to_He4_Cu58_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn61_to_Cu61_electron_capture_weaktab) - screened_rates(k_Zn61_to_He4_Ni57_reaclib) - screened_rates(k_Zn61_to_n_Zn60_reaclib) - screened_rates(k_Zn61_to_p_Cu60_reaclib); jac.set(Zn61, Zn61, scratch); scratch = screened_rates(k_Zn62_to_n_Zn61_reaclib); @@ -59554,25 +57363,25 @@ void jac_nuc(const burn_t& state, jac.set(Zn61, Ga63, 0.0); - scratch = screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(H1)*state.rho; jac.set(Zn61, Ga64, scratch); jac.set(Zn61, Ge63, 0.0); - scratch = screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(N)*state.rho; jac.set(Zn61, Ge64, scratch); - scratch = screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(Ga62)*state.rho + screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(Zn62)*state.rho - screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(Zn62)*state.rho; + scratch = screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(Ga62)*state.rho + screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(Zn61)*state.rho - screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(Zn62)*state.rho; jac.set(Zn62, N, scratch); - scratch = screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(Cu61)*state.rho + screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(Cu62)*state.rho - screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(Zn62)*state.rho - screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(Zn62)*state.rho; + scratch = screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(Cu62)*state.rho - screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(Zn62)*state.rho; jac.set(Zn62, H1, scratch); jac.set(Zn62, H2, 0.0); jac.set(Zn62, He3, 0.0); - scratch = screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(Ni58)*state.rho + screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(Ni59)*state.rho; + scratch = screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(Ni58)*state.rho + screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(Ni59)*state.rho; jac.set(Zn62, He4, scratch); jac.set(Zn62, Li6, 0.0); @@ -59827,10 +57636,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn62, Ni57, 0.0); - scratch = screened_rates(k_He4_Ni58_to_Zn62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni58_He4_to_Zn62_reaclib)*Y(He4)*state.rho; jac.set(Zn62, Ni58, scratch); - scratch = screened_rates(k_He4_Ni59_to_n_Zn62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni59_He4_to_n_Zn62_reaclib)*Y(He4)*state.rho; jac.set(Zn62, Ni59, scratch); jac.set(Zn62, Ni60, 0.0); @@ -59847,15 +57656,15 @@ void jac_nuc(const burn_t& state, jac.set(Zn62, Cu58, 0.0); - scratch = screened_rates(k_He4_Cu59_to_p_Zn62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu59_He4_to_p_Zn62_reaclib)*Y(He4)*state.rho; jac.set(Zn62, Cu59, scratch); jac.set(Zn62, Cu60, 0.0); - scratch = screened_rates(k_p_Cu61_to_Zn62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu61_p_to_Zn62_reaclib)*Y(H1)*state.rho; jac.set(Zn62, Cu61, scratch); - scratch = screened_rates(k_Cu62_to_Zn62_weaktab) + screened_rates(k_p_Cu62_to_n_Zn62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu62_p_to_n_Zn62_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu62_to_Zn62_beta_neg_weaktab); jac.set(Zn62, Cu62, scratch); jac.set(Zn62, Cu63, 0.0); @@ -59868,10 +57677,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn62, Zn60, 0.0); - scratch = screened_rates(k_n_Zn61_to_Zn62_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn61_n_to_Zn62_reaclib)*Y(N)*state.rho; jac.set(Zn62, Zn61, scratch); - scratch = -screened_rates(k_Zn62_to_Cu62_weaktab) - screened_rates(k_Zn62_to_Ga62_weaktab) - screened_rates(k_Zn62_to_He4_Ni58_reaclib) - screened_rates(k_Zn62_to_n_Zn61_reaclib) - screened_rates(k_Zn62_to_p_Cu61_reaclib) - screened_rates(k_n_Zn62_to_He4_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn62_to_p_Cu62_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn62_to_He4_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn62_n_to_He4_Ni59_reaclib)*Y(N)*state.rho - screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(N)*state.rho - screened_rates(k_Zn62_n_to_p_Cu62_reaclib)*Y(N)*state.rho - screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn62_p_to_He4_Cu59_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn62_to_Cu62_electron_capture_weaktab) - screened_rates(k_Zn62_to_Ga62_beta_neg_weaktab) - screened_rates(k_Zn62_to_He4_Ni58_reaclib) - screened_rates(k_Zn62_to_n_Zn61_reaclib) - screened_rates(k_Zn62_to_p_Cu61_reaclib); jac.set(Zn62, Zn62, scratch); scratch = screened_rates(k_Zn63_to_n_Zn62_reaclib); @@ -59883,7 +57692,7 @@ void jac_nuc(const burn_t& state, jac.set(Zn62, Zn66, 0.0); - scratch = screened_rates(k_Ga62_to_Zn62_weaktab) + screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(N)*state.rho + screened_rates(k_Ga62_to_Zn62_electron_capture_weaktab); jac.set(Zn62, Ga62, scratch); scratch = screened_rates(k_Ga63_to_p_Zn62_reaclib); @@ -59895,17 +57704,17 @@ void jac_nuc(const burn_t& state, jac.set(Zn62, Ge64, 0.0); - scratch = screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(Zn63)*state.rho - screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(Zn63)*state.rho; + scratch = screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(Zn62)*state.rho - screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(Zn63)*state.rho; jac.set(Zn63, N, scratch); - scratch = screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(Cu62)*state.rho + screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(Cu63)*state.rho - screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(Zn63)*state.rho - screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(Zn63)*state.rho; + scratch = screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(Cu63)*state.rho - screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(Zn63)*state.rho; jac.set(Zn63, H1, scratch); jac.set(Zn63, H2, 0.0); jac.set(Zn63, He3, 0.0); - scratch = screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(Ni59)*state.rho + screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(Ni60)*state.rho; + scratch = screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(Ni59)*state.rho + screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(Ni60)*state.rho; jac.set(Zn63, He4, scratch); jac.set(Zn63, Li6, 0.0); @@ -60162,10 +57971,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn63, Ni58, 0.0); - scratch = screened_rates(k_He4_Ni59_to_Zn63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni59_He4_to_Zn63_reaclib)*Y(He4)*state.rho; jac.set(Zn63, Ni59, scratch); - scratch = screened_rates(k_He4_Ni60_to_n_Zn63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni60_He4_to_n_Zn63_reaclib)*Y(He4)*state.rho; jac.set(Zn63, Ni60, scratch); jac.set(Zn63, Ni61, 0.0); @@ -60182,15 +57991,15 @@ void jac_nuc(const burn_t& state, jac.set(Zn63, Cu59, 0.0); - scratch = screened_rates(k_He4_Cu60_to_p_Zn63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu60_He4_to_p_Zn63_reaclib)*Y(He4)*state.rho; jac.set(Zn63, Cu60, scratch); jac.set(Zn63, Cu61, 0.0); - scratch = screened_rates(k_p_Cu62_to_Zn63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu62_p_to_Zn63_reaclib)*Y(H1)*state.rho; jac.set(Zn63, Cu62, scratch); - scratch = screened_rates(k_Cu63_to_Zn63_weaktab) + screened_rates(k_p_Cu63_to_n_Zn63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu63_p_to_n_Zn63_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu63_to_Zn63_beta_neg_weaktab); jac.set(Zn63, Cu63, scratch); jac.set(Zn63, Cu64, 0.0); @@ -60203,10 +58012,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn63, Zn61, 0.0); - scratch = screened_rates(k_n_Zn62_to_Zn63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn62_n_to_Zn63_reaclib)*Y(N)*state.rho; jac.set(Zn63, Zn62, scratch); - scratch = -screened_rates(k_Zn63_to_Cu63_weaktab) - screened_rates(k_Zn63_to_Ga63_weaktab) - screened_rates(k_Zn63_to_He4_Ni59_reaclib) - screened_rates(k_Zn63_to_n_Zn62_reaclib) - screened_rates(k_Zn63_to_p_Cu62_reaclib) - screened_rates(k_n_Zn63_to_He4_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn63_to_p_Cu63_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn63_to_He4_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn63_n_to_He4_Ni60_reaclib)*Y(N)*state.rho - screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(N)*state.rho - screened_rates(k_Zn63_n_to_p_Cu63_reaclib)*Y(N)*state.rho - screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn63_p_to_He4_Cu60_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn63_to_Cu63_electron_capture_weaktab) - screened_rates(k_Zn63_to_Ga63_beta_neg_weaktab) - screened_rates(k_Zn63_to_He4_Ni59_reaclib) - screened_rates(k_Zn63_to_n_Zn62_reaclib) - screened_rates(k_Zn63_to_p_Cu62_reaclib); jac.set(Zn63, Zn63, scratch); scratch = screened_rates(k_Zn64_to_n_Zn63_reaclib); @@ -60218,7 +58027,7 @@ void jac_nuc(const burn_t& state, jac.set(Zn63, Ga62, 0.0); - scratch = screened_rates(k_Ga63_to_Zn63_weaktab) + screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(N)*state.rho + screened_rates(k_Ga63_to_Zn63_electron_capture_weaktab); jac.set(Zn63, Ga63, scratch); scratch = screened_rates(k_Ga64_to_p_Zn63_reaclib); @@ -60228,17 +58037,17 @@ void jac_nuc(const burn_t& state, jac.set(Zn63, Ge64, 0.0); - scratch = screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(Ga64)*state.rho + screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(Zn64)*state.rho - screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(Zn64)*state.rho - screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(Zn64)*state.rho; + scratch = screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(Ga64)*state.rho + screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(Zn63)*state.rho - screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(Zn64)*state.rho; jac.set(Zn64, N, scratch); - scratch = screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(Cu63)*state.rho + screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(Cu64)*state.rho - screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(Zn64)*state.rho - screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(Zn64)*state.rho; + scratch = screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(Cu64)*state.rho - screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(Zn64)*state.rho; jac.set(Zn64, H1, scratch); jac.set(Zn64, H2, 0.0); jac.set(Zn64, He3, 0.0); - scratch = screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(Ni60)*state.rho + screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(Ni61)*state.rho; + scratch = screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(Ni60)*state.rho + screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(Ni61)*state.rho; jac.set(Zn64, He4, scratch); jac.set(Zn64, Li6, 0.0); @@ -60497,10 +58306,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn64, Ni59, 0.0); - scratch = screened_rates(k_He4_Ni60_to_Zn64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni60_He4_to_Zn64_reaclib)*Y(He4)*state.rho; jac.set(Zn64, Ni60, scratch); - scratch = screened_rates(k_He4_Ni61_to_n_Zn64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni61_He4_to_n_Zn64_reaclib)*Y(He4)*state.rho; jac.set(Zn64, Ni61, scratch); jac.set(Zn64, Ni62, 0.0); @@ -60517,15 +58326,15 @@ void jac_nuc(const burn_t& state, jac.set(Zn64, Cu60, 0.0); - scratch = screened_rates(k_He4_Cu61_to_p_Zn64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu61_He4_to_p_Zn64_reaclib)*Y(He4)*state.rho; jac.set(Zn64, Cu61, scratch); jac.set(Zn64, Cu62, 0.0); - scratch = screened_rates(k_p_Cu63_to_Zn64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu63_p_to_Zn64_reaclib)*Y(H1)*state.rho; jac.set(Zn64, Cu63, scratch); - scratch = screened_rates(k_Cu64_to_Zn64_weaktab) + screened_rates(k_p_Cu64_to_n_Zn64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu64_p_to_n_Zn64_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu64_to_Zn64_beta_neg_weaktab); jac.set(Zn64, Cu64, scratch); jac.set(Zn64, Cu65, 0.0); @@ -60538,10 +58347,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn64, Zn62, 0.0); - scratch = screened_rates(k_n_Zn63_to_Zn64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn63_n_to_Zn64_reaclib)*Y(N)*state.rho; jac.set(Zn64, Zn63, scratch); - scratch = -screened_rates(k_Zn64_to_Cu64_weaktab) - screened_rates(k_Zn64_to_Ga64_weaktab) - screened_rates(k_Zn64_to_He4_Ni60_reaclib) - screened_rates(k_Zn64_to_n_Zn63_reaclib) - screened_rates(k_Zn64_to_p_Cu63_reaclib) - screened_rates(k_n_Zn64_to_He4_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn64_to_p_Cu64_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn64_to_He4_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn64_n_to_He4_Ni61_reaclib)*Y(N)*state.rho - screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(N)*state.rho - screened_rates(k_Zn64_n_to_p_Cu64_reaclib)*Y(N)*state.rho - screened_rates(k_Zn64_p_to_He4_Cu61_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn64_to_Cu64_electron_capture_weaktab) - screened_rates(k_Zn64_to_Ga64_beta_neg_weaktab) - screened_rates(k_Zn64_to_He4_Ni60_reaclib) - screened_rates(k_Zn64_to_n_Zn63_reaclib) - screened_rates(k_Zn64_to_p_Cu63_reaclib); jac.set(Zn64, Zn64, scratch); scratch = screened_rates(k_Zn65_to_n_Zn64_reaclib); @@ -60553,24 +58362,24 @@ void jac_nuc(const burn_t& state, jac.set(Zn64, Ga63, 0.0); - scratch = screened_rates(k_Ga64_to_Zn64_weaktab) + screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(N)*state.rho + screened_rates(k_Ga64_to_Zn64_electron_capture_weaktab); jac.set(Zn64, Ga64, scratch); jac.set(Zn64, Ge63, 0.0); jac.set(Zn64, Ge64, 0.0); - scratch = screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(Zn64)*state.rho - screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(Zn65)*state.rho - screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(Zn65)*state.rho - screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(Zn65)*state.rho; + scratch = screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(Zn64)*state.rho - screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(Zn65)*state.rho - screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(Zn65)*state.rho - screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(Zn65)*state.rho; jac.set(Zn65, N, scratch); - scratch = screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(Cu64)*state.rho + screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(Cu65)*state.rho - screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(Zn65)*state.rho; + scratch = screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(Cu64)*state.rho + screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(Cu65)*state.rho - screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(Zn65)*state.rho; jac.set(Zn65, H1, scratch); jac.set(Zn65, H2, 0.0); jac.set(Zn65, He3, 0.0); - scratch = screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(Cu62)*state.rho + screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(Ni61)*state.rho + screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(Ni62)*state.rho; + scratch = screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(Cu62)*state.rho + screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(Ni61)*state.rho + screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(Ni62)*state.rho; jac.set(Zn65, He4, scratch); jac.set(Zn65, Li6, 0.0); @@ -60831,10 +58640,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn65, Ni60, 0.0); - scratch = screened_rates(k_He4_Ni61_to_Zn65_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni61_He4_to_Zn65_reaclib)*Y(He4)*state.rho; jac.set(Zn65, Ni61, scratch); - scratch = screened_rates(k_He4_Ni62_to_n_Zn65_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni62_He4_to_n_Zn65_reaclib)*Y(He4)*state.rho; jac.set(Zn65, Ni62, scratch); jac.set(Zn65, Ni63, 0.0); @@ -60851,15 +58660,15 @@ void jac_nuc(const burn_t& state, jac.set(Zn65, Cu61, 0.0); - scratch = screened_rates(k_He4_Cu62_to_p_Zn65_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu62_He4_to_p_Zn65_reaclib)*Y(He4)*state.rho; jac.set(Zn65, Cu62, scratch); jac.set(Zn65, Cu63, 0.0); - scratch = screened_rates(k_p_Cu64_to_Zn65_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu64_p_to_Zn65_reaclib)*Y(H1)*state.rho; jac.set(Zn65, Cu64, scratch); - scratch = screened_rates(k_Cu65_to_Zn65_weaktab) + screened_rates(k_p_Cu65_to_n_Zn65_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu65_p_to_n_Zn65_reaclib)*Y(H1)*state.rho + screened_rates(k_Cu65_to_Zn65_beta_neg_weaktab); jac.set(Zn65, Cu65, scratch); jac.set(Zn65, Zn59, 0.0); @@ -60872,10 +58681,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn65, Zn63, 0.0); - scratch = screened_rates(k_n_Zn64_to_Zn65_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn64_n_to_Zn65_reaclib)*Y(N)*state.rho; jac.set(Zn65, Zn64, scratch); - scratch = -screened_rates(k_Zn65_to_Cu65_weaktab) - screened_rates(k_Zn65_to_He4_Ni61_reaclib) - screened_rates(k_Zn65_to_n_Zn64_reaclib) - screened_rates(k_Zn65_to_p_Cu64_reaclib) - screened_rates(k_n_Zn65_to_He4_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(N)*state.rho - screened_rates(k_n_Zn65_to_p_Cu65_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn65_to_He4_Cu62_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn65_n_to_He4_Ni62_reaclib)*Y(N)*state.rho - screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(N)*state.rho - screened_rates(k_Zn65_n_to_p_Cu65_reaclib)*Y(N)*state.rho - screened_rates(k_Zn65_p_to_He4_Cu62_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn65_to_Cu65_electron_capture_weaktab) - screened_rates(k_Zn65_to_He4_Ni61_reaclib) - screened_rates(k_Zn65_to_n_Zn64_reaclib) - screened_rates(k_Zn65_to_p_Cu64_reaclib); jac.set(Zn65, Zn65, scratch); scratch = screened_rates(k_Zn66_to_n_Zn65_reaclib); @@ -60891,17 +58700,17 @@ void jac_nuc(const burn_t& state, jac.set(Zn65, Ge64, 0.0); - scratch = screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(Zn65)*state.rho - screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(Zn66)*state.rho; + scratch = screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(Zn65)*state.rho - screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(Zn66)*state.rho; jac.set(Zn66, N, scratch); - scratch = screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(Cu65)*state.rho - screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(Zn66)*state.rho; + scratch = screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(Cu65)*state.rho - screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(Zn66)*state.rho; jac.set(Zn66, H1, scratch); jac.set(Zn66, H2, 0.0); jac.set(Zn66, He3, 0.0); - scratch = screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(Cu63)*state.rho + screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(Ni62)*state.rho + screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(Ni63)*state.rho; + scratch = screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(Cu63)*state.rho + screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(Ni62)*state.rho + screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(Ni63)*state.rho; jac.set(Zn66, He4, scratch); jac.set(Zn66, Li6, 0.0); @@ -61164,10 +58973,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn66, Ni61, 0.0); - scratch = screened_rates(k_He4_Ni62_to_Zn66_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni62_He4_to_Zn66_reaclib)*Y(He4)*state.rho; jac.set(Zn66, Ni62, scratch); - scratch = screened_rates(k_He4_Ni63_to_n_Zn66_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Ni63_He4_to_n_Zn66_reaclib)*Y(He4)*state.rho; jac.set(Zn66, Ni63, scratch); jac.set(Zn66, Ni64, 0.0); @@ -61184,12 +58993,12 @@ void jac_nuc(const burn_t& state, jac.set(Zn66, Cu62, 0.0); - scratch = screened_rates(k_He4_Cu63_to_p_Zn66_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu63_He4_to_p_Zn66_reaclib)*Y(He4)*state.rho; jac.set(Zn66, Cu63, scratch); jac.set(Zn66, Cu64, 0.0); - scratch = screened_rates(k_p_Cu65_to_Zn66_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Cu65_p_to_Zn66_reaclib)*Y(H1)*state.rho; jac.set(Zn66, Cu65, scratch); jac.set(Zn66, Zn59, 0.0); @@ -61204,10 +59013,10 @@ void jac_nuc(const burn_t& state, jac.set(Zn66, Zn64, 0.0); - scratch = screened_rates(k_n_Zn65_to_Zn66_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Zn65_n_to_Zn66_reaclib)*Y(N)*state.rho; jac.set(Zn66, Zn65, scratch); - scratch = -screened_rates(k_Zn66_to_He4_Ni62_reaclib) - screened_rates(k_Zn66_to_n_Zn65_reaclib) - screened_rates(k_Zn66_to_p_Cu65_reaclib) - screened_rates(k_n_Zn66_to_He4_Ni63_reaclib)*Y(N)*state.rho - screened_rates(k_p_Zn66_to_He4_Cu63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Zn66_n_to_He4_Ni63_reaclib)*Y(N)*state.rho - screened_rates(k_Zn66_p_to_He4_Cu63_reaclib)*Y(H1)*state.rho - screened_rates(k_Zn66_to_He4_Ni62_reaclib) - screened_rates(k_Zn66_to_n_Zn65_reaclib) - screened_rates(k_Zn66_to_p_Cu65_reaclib); jac.set(Zn66, Zn66, scratch); jac.set(Zn66, Ga62, 0.0); @@ -61220,17 +59029,17 @@ void jac_nuc(const burn_t& state, jac.set(Zn66, Ge64, 0.0); - scratch = -screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(Ga62)*state.rho - screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(Ga62)*state.rho; + scratch = -screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(Ga62)*state.rho; jac.set(Ga62, N, scratch); - scratch = -screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(Ga62)*state.rho + screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(Zn61)*state.rho + screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(Zn62)*state.rho; + scratch = -screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(Ga62)*state.rho + screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(Zn61)*state.rho + screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(Zn62)*state.rho; jac.set(Ga62, H1, scratch); jac.set(Ga62, H2, 0.0); jac.set(Ga62, He3, 0.0); - scratch = screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(Cu58)*state.rho + screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(Zn59)*state.rho; + scratch = screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(Cu58)*state.rho + screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(Zn59)*state.rho; jac.set(Ga62, He4, scratch); jac.set(Ga62, Li6, 0.0); @@ -61501,10 +59310,10 @@ void jac_nuc(const burn_t& state, jac.set(Ga62, Cu57, 0.0); - scratch = screened_rates(k_He4_Cu58_to_Ga62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu58_He4_to_Ga62_reaclib)*Y(He4)*state.rho; jac.set(Ga62, Cu58, scratch); - scratch = screened_rates(k_He4_Cu59_to_n_Ga62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu59_He4_to_n_Ga62_reaclib)*Y(He4)*state.rho; jac.set(Ga62, Cu59, scratch); jac.set(Ga62, Cu60, 0.0); @@ -61519,15 +59328,15 @@ void jac_nuc(const burn_t& state, jac.set(Ga62, Cu65, 0.0); - scratch = screened_rates(k_He4_Zn59_to_p_Ga62_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Zn59_He4_to_p_Ga62_reaclib)*Y(He4)*state.rho; jac.set(Ga62, Zn59, scratch); jac.set(Ga62, Zn60, 0.0); - scratch = screened_rates(k_p_Zn61_to_Ga62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn61_p_to_Ga62_reaclib)*Y(H1)*state.rho; jac.set(Ga62, Zn61, scratch); - scratch = screened_rates(k_Zn62_to_Ga62_weaktab) + screened_rates(k_p_Zn62_to_n_Ga62_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn62_p_to_n_Ga62_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn62_to_Ga62_beta_neg_weaktab); jac.set(Ga62, Zn62, scratch); jac.set(Ga62, Zn63, 0.0); @@ -61538,7 +59347,7 @@ void jac_nuc(const burn_t& state, jac.set(Ga62, Zn66, 0.0); - scratch = -screened_rates(k_Ga62_to_He4_Cu58_reaclib) - screened_rates(k_Ga62_to_Zn62_weaktab) - screened_rates(k_Ga62_to_p_Zn61_reaclib) - screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga62_to_He4_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga62_to_p_Zn62_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ga62_to_He4_Zn59_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(N)*state.rho - screened_rates(k_Ga62_n_to_He4_Cu59_reaclib)*Y(N)*state.rho - screened_rates(k_Ga62_n_to_p_Zn62_reaclib)*Y(N)*state.rho - screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga62_p_to_He4_Zn59_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga62_to_He4_Cu58_reaclib) - screened_rates(k_Ga62_to_Zn62_electron_capture_weaktab) - screened_rates(k_Ga62_to_p_Zn61_reaclib); jac.set(Ga62, Ga62, scratch); scratch = screened_rates(k_Ga63_to_n_Ga62_reaclib); @@ -61551,17 +59360,17 @@ void jac_nuc(const burn_t& state, jac.set(Ga62, Ge64, 0.0); - scratch = screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(Ge63)*state.rho; + scratch = screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(Ga62)*state.rho - screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(Ge63)*state.rho; jac.set(Ga63, N, scratch); - scratch = -screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(Zn62)*state.rho + screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(Zn63)*state.rho; + scratch = -screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(Zn62)*state.rho + screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(Zn63)*state.rho; jac.set(Ga63, H1, scratch); jac.set(Ga63, H2, 0.0); jac.set(Ga63, He3, 0.0); - scratch = screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(Cu59)*state.rho + screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(Cu59)*state.rho + screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(Zn60)*state.rho; jac.set(Ga63, He4, scratch); jac.set(Ga63, Li6, 0.0); @@ -61834,10 +59643,10 @@ void jac_nuc(const burn_t& state, jac.set(Ga63, Cu58, 0.0); - scratch = screened_rates(k_He4_Cu59_to_Ga63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu59_He4_to_Ga63_reaclib)*Y(He4)*state.rho; jac.set(Ga63, Cu59, scratch); - scratch = screened_rates(k_He4_Cu60_to_n_Ga63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu60_He4_to_n_Ga63_reaclib)*Y(He4)*state.rho; jac.set(Ga63, Cu60, scratch); jac.set(Ga63, Cu61, 0.0); @@ -61852,15 +59661,15 @@ void jac_nuc(const burn_t& state, jac.set(Ga63, Zn59, 0.0); - scratch = screened_rates(k_He4_Zn60_to_p_Ga63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Zn60_He4_to_p_Ga63_reaclib)*Y(He4)*state.rho; jac.set(Ga63, Zn60, scratch); jac.set(Ga63, Zn61, 0.0); - scratch = screened_rates(k_p_Zn62_to_Ga63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn62_p_to_Ga63_reaclib)*Y(H1)*state.rho; jac.set(Ga63, Zn62, scratch); - scratch = screened_rates(k_Zn63_to_Ga63_weaktab) + screened_rates(k_p_Zn63_to_n_Ga63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn63_p_to_n_Ga63_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn63_to_Ga63_beta_neg_weaktab); jac.set(Ga63, Zn63, scratch); jac.set(Ga63, Zn64, 0.0); @@ -61869,32 +59678,32 @@ void jac_nuc(const burn_t& state, jac.set(Ga63, Zn66, 0.0); - scratch = screened_rates(k_n_Ga62_to_Ga63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ga62_n_to_Ga63_reaclib)*Y(N)*state.rho; jac.set(Ga63, Ga62, scratch); - scratch = -screened_rates(k_Ga63_to_He4_Cu59_reaclib) - screened_rates(k_Ga63_to_Zn63_weaktab) - screened_rates(k_Ga63_to_n_Ga62_reaclib) - screened_rates(k_Ga63_to_p_Zn62_reaclib) - screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga63_to_He4_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga63_to_p_Zn63_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ga63_to_He4_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(N)*state.rho - screened_rates(k_Ga63_n_to_He4_Cu60_reaclib)*Y(N)*state.rho - screened_rates(k_Ga63_n_to_p_Zn63_reaclib)*Y(N)*state.rho - screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga63_p_to_He4_Zn60_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga63_to_He4_Cu59_reaclib) - screened_rates(k_Ga63_to_Zn63_electron_capture_weaktab) - screened_rates(k_Ga63_to_n_Ga62_reaclib) - screened_rates(k_Ga63_to_p_Zn62_reaclib); jac.set(Ga63, Ga63, scratch); scratch = screened_rates(k_Ga64_to_n_Ga63_reaclib); jac.set(Ga63, Ga64, scratch); - scratch = screened_rates(k_Ge63_to_Ga63_reaclib) + screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(N)*state.rho + screened_rates(k_Ge63_to_Ga63_beta_pos_reaclib); jac.set(Ga63, Ge63, scratch); scratch = screened_rates(k_Ge64_to_p_Ga63_reaclib); jac.set(Ga63, Ge64, scratch); - scratch = screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(Ga64)*state.rho + screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(Ge64)*state.rho; + scratch = screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(Ga63)*state.rho - screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(Ga64)*state.rho + screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(Ge64)*state.rho; jac.set(Ga64, N, scratch); - scratch = -screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(Ga64)*state.rho + screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(Zn63)*state.rho + screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(Zn64)*state.rho; + scratch = -screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(Ga64)*state.rho - screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(Ga64)*state.rho + screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(Zn63)*state.rho + screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(Zn64)*state.rho; jac.set(Ga64, H1, scratch); jac.set(Ga64, H2, 0.0); jac.set(Ga64, He3, 0.0); - scratch = screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(Cu60)*state.rho + screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(Zn61)*state.rho; + scratch = screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(Cu60)*state.rho + screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(Cu61)*state.rho + screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(Zn61)*state.rho; jac.set(Ga64, He4, scratch); jac.set(Ga64, Li6, 0.0); @@ -62169,10 +59978,10 @@ void jac_nuc(const burn_t& state, jac.set(Ga64, Cu59, 0.0); - scratch = screened_rates(k_He4_Cu60_to_Ga64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu60_He4_to_Ga64_reaclib)*Y(He4)*state.rho; jac.set(Ga64, Cu60, scratch); - scratch = screened_rates(k_He4_Cu61_to_n_Ga64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Cu61_He4_to_n_Ga64_reaclib)*Y(He4)*state.rho; jac.set(Ga64, Cu61, scratch); jac.set(Ga64, Cu62, 0.0); @@ -62187,15 +59996,15 @@ void jac_nuc(const burn_t& state, jac.set(Ga64, Zn60, 0.0); - scratch = screened_rates(k_He4_Zn61_to_p_Ga64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Zn61_He4_to_p_Ga64_reaclib)*Y(He4)*state.rho; jac.set(Ga64, Zn61, scratch); jac.set(Ga64, Zn62, 0.0); - scratch = screened_rates(k_p_Zn63_to_Ga64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn63_p_to_Ga64_reaclib)*Y(H1)*state.rho; jac.set(Ga64, Zn63, scratch); - scratch = screened_rates(k_Zn64_to_Ga64_weaktab) + screened_rates(k_p_Zn64_to_n_Ga64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Zn64_p_to_n_Ga64_reaclib)*Y(H1)*state.rho + screened_rates(k_Zn64_to_Ga64_beta_neg_weaktab); jac.set(Ga64, Zn64, scratch); jac.set(Ga64, Zn65, 0.0); @@ -62204,28 +60013,28 @@ void jac_nuc(const burn_t& state, jac.set(Ga64, Ga62, 0.0); - scratch = screened_rates(k_n_Ga63_to_Ga64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ga63_n_to_Ga64_reaclib)*Y(N)*state.rho; jac.set(Ga64, Ga63, scratch); - scratch = -screened_rates(k_Ga64_to_Ge64_weaktab) - screened_rates(k_Ga64_to_He4_Cu60_reaclib) - screened_rates(k_Ga64_to_Zn64_weaktab) - screened_rates(k_Ga64_to_n_Ga63_reaclib) - screened_rates(k_Ga64_to_p_Zn63_reaclib) - screened_rates(k_n_Ga64_to_He4_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ga64_to_p_Zn64_reaclib)*Y(N)*state.rho - screened_rates(k_p_Ga64_to_He4_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(H1)*state.rho; + scratch = -screened_rates(k_Ga64_n_to_He4_Cu61_reaclib)*Y(N)*state.rho - screened_rates(k_Ga64_n_to_p_Zn64_reaclib)*Y(N)*state.rho - screened_rates(k_Ga64_p_to_He4_Zn61_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(H1)*state.rho - screened_rates(k_Ga64_to_Ge64_beta_neg_weaktab) - screened_rates(k_Ga64_to_He4_Cu60_reaclib) - screened_rates(k_Ga64_to_Zn64_electron_capture_weaktab) - screened_rates(k_Ga64_to_n_Ga63_reaclib) - screened_rates(k_Ga64_to_p_Zn63_reaclib); jac.set(Ga64, Ga64, scratch); jac.set(Ga64, Ge63, 0.0); - scratch = screened_rates(k_Ge64_to_Ga64_weaktab) + screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(N)*state.rho + screened_rates(k_Ge64_to_Ga64_electron_capture_weaktab); jac.set(Ga64, Ge64, scratch); - scratch = -screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(Ge63)*state.rho - screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(Ge63)*state.rho - screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(Ge63)*state.rho; + scratch = -screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(Ge63)*state.rho - screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(Ge63)*state.rho - screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(Ge63)*state.rho; jac.set(Ge63, N, scratch); - scratch = screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(Ga62)*state.rho + screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(Ga63)*state.rho; + scratch = screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(Ga62)*state.rho + screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(Ga63)*state.rho; jac.set(Ge63, H1, scratch); jac.set(Ge63, H2, 0.0); jac.set(Ge63, He3, 0.0); - scratch = screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(Zn59)*state.rho + screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(Zn60)*state.rho; + scratch = screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(Zn59)*state.rho + screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(Zn60)*state.rho; jac.set(Ge63, He4, scratch); jac.set(Ge63, Li6, 0.0); @@ -62512,10 +60321,10 @@ void jac_nuc(const burn_t& state, jac.set(Ge63, Cu65, 0.0); - scratch = screened_rates(k_He4_Zn59_to_Ge63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Zn59_He4_to_Ge63_reaclib)*Y(He4)*state.rho; jac.set(Ge63, Zn59, scratch); - scratch = screened_rates(k_He4_Zn60_to_n_Ge63_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Zn60_He4_to_n_Ge63_reaclib)*Y(He4)*state.rho; jac.set(Ge63, Zn60, scratch); jac.set(Ge63, Zn61, 0.0); @@ -62530,31 +60339,31 @@ void jac_nuc(const burn_t& state, jac.set(Ge63, Zn66, 0.0); - scratch = screened_rates(k_p_Ga62_to_Ge63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga62_p_to_Ge63_reaclib)*Y(H1)*state.rho; jac.set(Ge63, Ga62, scratch); - scratch = screened_rates(k_p_Ga63_to_n_Ge63_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga63_p_to_n_Ge63_reaclib)*Y(H1)*state.rho; jac.set(Ge63, Ga63, scratch); jac.set(Ge63, Ga64, 0.0); - scratch = -screened_rates(k_Ge63_to_Ga63_reaclib) - screened_rates(k_Ge63_to_He4_Zn59_reaclib) - screened_rates(k_Ge63_to_p_Ga62_reaclib) - screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ge63_to_He4_Zn60_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ge63_to_p_Ga63_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(N)*state.rho - screened_rates(k_Ge63_n_to_He4_Zn60_reaclib)*Y(N)*state.rho - screened_rates(k_Ge63_n_to_p_Ga63_reaclib)*Y(N)*state.rho - screened_rates(k_Ge63_to_Ga63_beta_pos_reaclib) - screened_rates(k_Ge63_to_He4_Zn59_reaclib) - screened_rates(k_Ge63_to_p_Ga62_reaclib); jac.set(Ge63, Ge63, scratch); scratch = screened_rates(k_Ge64_to_n_Ge63_reaclib); jac.set(Ge63, Ge64, scratch); - scratch = screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(Ge63)*state.rho - screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(Ge64)*state.rho - screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(Ge64)*state.rho; + scratch = screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(Ge63)*state.rho - screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(Ge64)*state.rho - screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(Ge64)*state.rho; jac.set(Ge64, N, scratch); - scratch = screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(Ga63)*state.rho + screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(Ga64)*state.rho; + scratch = screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(Ga63)*state.rho + screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(Ga64)*state.rho; jac.set(Ge64, H1, scratch); jac.set(Ge64, H2, 0.0); jac.set(Ge64, He3, 0.0); - scratch = screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(Zn60)*state.rho + screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(Zn61)*state.rho; + scratch = screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(Zn60)*state.rho + screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(Zn61)*state.rho; jac.set(Ge64, He4, scratch); jac.set(Ge64, Li6, 0.0); @@ -62843,10 +60652,10 @@ void jac_nuc(const burn_t& state, jac.set(Ge64, Zn59, 0.0); - scratch = screened_rates(k_He4_Zn60_to_Ge64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Zn60_He4_to_Ge64_reaclib)*Y(He4)*state.rho; jac.set(Ge64, Zn60, scratch); - scratch = screened_rates(k_He4_Zn61_to_n_Ge64_reaclib)*Y(He4)*state.rho; + scratch = screened_rates(k_Zn61_He4_to_n_Ge64_reaclib)*Y(He4)*state.rho; jac.set(Ge64, Zn61, scratch); jac.set(Ge64, Zn62, 0.0); @@ -62861,16 +60670,16 @@ void jac_nuc(const burn_t& state, jac.set(Ge64, Ga62, 0.0); - scratch = screened_rates(k_p_Ga63_to_Ge64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga63_p_to_Ge64_reaclib)*Y(H1)*state.rho; jac.set(Ge64, Ga63, scratch); - scratch = screened_rates(k_Ga64_to_Ge64_weaktab) + screened_rates(k_p_Ga64_to_n_Ge64_reaclib)*Y(H1)*state.rho; + scratch = screened_rates(k_Ga64_p_to_n_Ge64_reaclib)*Y(H1)*state.rho + screened_rates(k_Ga64_to_Ge64_beta_neg_weaktab); jac.set(Ge64, Ga64, scratch); - scratch = screened_rates(k_n_Ge63_to_Ge64_reaclib)*Y(N)*state.rho; + scratch = screened_rates(k_Ge63_n_to_Ge64_reaclib)*Y(N)*state.rho; jac.set(Ge64, Ge63, scratch); - scratch = -screened_rates(k_Ge64_to_Ga64_weaktab) - screened_rates(k_Ge64_to_He4_Zn60_reaclib) - screened_rates(k_Ge64_to_n_Ge63_reaclib) - screened_rates(k_Ge64_to_p_Ga63_reaclib) - screened_rates(k_n_Ge64_to_He4_Zn61_reaclib)*Y(N)*state.rho - screened_rates(k_n_Ge64_to_p_Ga64_reaclib)*Y(N)*state.rho; + scratch = -screened_rates(k_Ge64_n_to_He4_Zn61_reaclib)*Y(N)*state.rho - screened_rates(k_Ge64_n_to_p_Ga64_reaclib)*Y(N)*state.rho - screened_rates(k_Ge64_to_Ga64_electron_capture_weaktab) - screened_rates(k_Ge64_to_He4_Zn60_reaclib) - screened_rates(k_Ge64_to_n_Ge63_reaclib) - screened_rates(k_Ge64_to_p_Ga63_reaclib); jac.set(Ge64, Ge64, scratch); diff --git a/networks/sn160/approximate_rates.H b/networks/sn160/approximate_rates.H index 14d44a740..3c6d46e25 100644 --- a/networks/sn160/approximate_rates.H +++ b/networks/sn160/approximate_rates.H @@ -8,24 +8,26 @@ #include #include -using namespace Rates; -using namespace Species; +namespace approximate_rates { + using namespace Rates; + using namespace Species; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_approx_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] const amrex::Real rho, - [[maybe_unused]] const amrex::Array1D& Y, - [[maybe_unused]] T& rate_eval) -{ - [[maybe_unused]] amrex::Real rate{}; - [[maybe_unused]] amrex::Real drate_dT{}; + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] const amrex::Real rho, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + [[maybe_unused]] amrex::Real rate{}; + [[maybe_unused]] amrex::Real drate_dT{}; -} + } +} #endif diff --git a/networks/sn160/branched_rates.H b/networks/sn160/branched_rates.H new file mode 100644 index 000000000..903382523 --- /dev/null +++ b/networks/sn160/branched_rates.H @@ -0,0 +1,33 @@ +#ifndef BRANCHED_RATES_H +#define BRANCHED_RATES_H + +#include +#include + +#include +#include +#include +#include +#include + +namespace branched_rates { + + using namespace Rates; + + using namespace temp_tabular; + + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { + + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + + + } +} +#endif diff --git a/networks/sn160/derived_rates.H b/networks/sn160/derived_rates.H index 579d7dd3d..2d8da657a 100644 --- a/networks/sn160/derived_rates.H +++ b/networks/sn160/derived_rates.H @@ -7,21 +7,23 @@ #include #include -using namespace Rates; +namespace derived_rates { + using namespace Rates; -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_derived_rates(const tf_t& tfactors, T& rate_eval) -{ - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; + } + } #endif diff --git a/networks/sn160/modified_rates.H b/networks/sn160/modified_rates.H index 37deb2947..74c545a1b 100644 --- a/networks/sn160/modified_rates.H +++ b/networks/sn160/modified_rates.H @@ -12,11 +12,14 @@ namespace modified_rates { + using namespace Rates; + + using namespace reaclib_rates; using namespace temp_tabular; template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void fill_rates([[maybe_unused]] const tf_t& tfactors, [[maybe_unused]] T& rate_eval) diff --git a/networks/sn160/pynucastro-info.txt b/networks/sn160/pynucastro-info.txt index 204ad605a..29560334b 100644 --- a/networks/sn160/pynucastro-info.txt +++ b/networks/sn160/pynucastro-info.txt @@ -1 +1 @@ -pynucastro version: 2.12.0 +pynucastro version: 3.0.0-38-gd4179ae35 diff --git a/networks/sn160/reaclib_rates.H b/networks/sn160/reaclib_rates.H index 640e68ae6..43675dd9f 100644 --- a/networks/sn160/reaclib_rates.H +++ b/networks/sn160/reaclib_rates.H @@ -8,83589 +8,83592 @@ #include #include -using namespace Rates; -using namespace Species; -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Be7_to_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { +namespace reaclib_rates { - // Be7 --> Li7 + using namespace Rates; + using namespace Species; - rate = 0.0; - drate_dT = 0.0; + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_to_Li7_electron_capture_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Be7 --> Li7 - // ecw - ln_set_rate = -23.8328 + 3.02033 * tfactors.T913 - + -0.0742132 * tfactors.T9 + -0.00792386 * tfactors.T953 + -0.650113 * tfactors.lnT9; + rate = 0.0; + drate_dT = 0.0; - ln_set_rate += log_scor; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 3.02033 * tfactors.T923i - + -0.0742132 + (5.0/3.0) * -0.00792386 * tfactors.T923 + -0.650113 * tfactors.T9i; + // ecw + ln_set_rate = -23.8328 + 3.02033 * tfactors.T913 + + -0.0742132 * tfactors.T9 + -0.00792386 * tfactors.T953 + -0.650113 * tfactors.lnT9; - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + ln_set_rate += log_scor; + + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 3.02033 * tfactors.T923i + + -0.0742132 + (5.0/3.0) * -0.00792386 * tfactors.T923 + -0.650113 * tfactors.T9i; + + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } + + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C14_to_N14_beta_neg_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C14_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C14 --> N14 - // C14 --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -26.2827; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -26.2827; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_C13_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 --> C13 - // N13 --> C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -6.7601; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -6.7601; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_N14_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 --> N14 - // O14 --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -4.62354; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -4.62354; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_N15_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 --> N15 - // O15 --> N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -5.17053; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -5.17053; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_to_O17_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F17_to_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 --> O17 - // F17 --> O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -4.53318; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -4.53318; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_O18_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 --> O18 - // F18 --> O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -9.15982; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -9.15982; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_F18_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 --> F18 - // Ne18 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -0.879336; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -0.879336; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_F19_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 --> F19 - // Ne19 --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -3.21142; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -3.21142; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn59_to_Cu59_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn59_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn59 --> Cu59 - // Zn59 --> Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = 1.33624; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = 1.33624; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge63_to_Ga63_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ge63_to_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge63 --> Ga63 - // Ge63 --> Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = 1.53061; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = 1.53061; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_to_n_p_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_to_n_p_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d --> n + p - // d --> n + p + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // an06n + ln_set_rate = 34.6293 + -25.815 * tfactors.T9i + -2.70618 * tfactors.T913 + + 0.11718 * tfactors.T9 + -0.00312788 * tfactors.T953 + 1.96913 * tfactors.lnT9; - // an06n - ln_set_rate = 34.6293 + -25.815 * tfactors.T9i + -2.70618 * tfactors.T913 - + 0.11718 * tfactors.T9 + -0.00312788 * tfactors.T953 + 1.96913 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.815 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.70618 * tfactors.T923i + + 0.11718 + (5.0/3.0) * -0.00312788 * tfactors.T923 + 1.96913 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.815 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.70618 * tfactors.T923i - + 0.11718 + (5.0/3.0) * -0.00312788 * tfactors.T923 + 1.96913 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // an06n + ln_set_rate = 31.1075 + -25.815 * tfactors.T9i + -0.0102082 * tfactors.T913 + + -0.0893959 * tfactors.T9 + 0.00696704 * tfactors.T953 + 2.5 * tfactors.lnT9; - // an06n - ln_set_rate = 31.1075 + -25.815 * tfactors.T9i + -0.0102082 * tfactors.T913 - + -0.0893959 * tfactors.T9 + 0.00696704 * tfactors.T953 + 2.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.815 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0102082 * tfactors.T923i + + -0.0893959 + (5.0/3.0) * 0.00696704 * tfactors.T923 + 2.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.815 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0102082 * tfactors.T923i - + -0.0893959 + (5.0/3.0) * 0.00696704 * tfactors.T923 + 2.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // an06n + ln_set_rate = 33.0154 + -25.815 * tfactors.T9i + -2.30472 * tfactors.T913 + + -0.887862 * tfactors.T9 + 0.137663 * tfactors.T953 + 1.5 * tfactors.lnT9; - // an06n - ln_set_rate = 33.0154 + -25.815 * tfactors.T9i + -2.30472 * tfactors.T913 - + -0.887862 * tfactors.T9 + 0.137663 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.815 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.30472 * tfactors.T923i + + -0.887862 + (5.0/3.0) * 0.137663 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.815 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.30472 * tfactors.T923i - + -0.887862 + (5.0/3.0) * 0.137663 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_to_p_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He3_to_p_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 --> p + d - // He3 --> p + d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04 + ln_set_rate = 32.4383 + -63.7435 * tfactors.T9i + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 + + 1.83333 * tfactors.lnT9; - // de04 - ln_set_rate = 32.4383 + -63.7435 * tfactors.T9i + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 - + 1.83333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 63.7435 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i + + 1.83333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 63.7435 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i - + 1.83333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04n + ln_set_rate = 31.032 + -63.7435 * tfactors.T9i + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 + + 0.833333 * tfactors.lnT9; - // de04n - ln_set_rate = 31.032 + -63.7435 * tfactors.T9i + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 - + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 63.7435 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i + + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 63.7435 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i - + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_to_n_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_to_n_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 --> n + He3 - // He4 --> n + He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02n + ln_set_rate = 33.0131 + -238.79 * tfactors.T9i + -1.50147 * tfactors.T913 + + 2.5 * tfactors.lnT9; - // ka02n - ln_set_rate = 33.0131 + -238.79 * tfactors.T9i + -1.50147 * tfactors.T913 - + 2.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 238.79 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.50147 * tfactors.T923i + + 2.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 238.79 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.50147 * tfactors.T923i - + 2.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02n + ln_set_rate = 29.4845 + -238.79 * tfactors.T9i + + 1.5 * tfactors.lnT9; - // ka02n - ln_set_rate = 29.4845 + -238.79 * tfactors.T9i - + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 238.79 * tfactors.T9i * tfactors.T9i + + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 238.79 * tfactors.T9i * tfactors.T9i - + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_to_d_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_to_d_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 --> d + d - // He4 --> d + d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 28.2984 + -276.744 * tfactors.T9i + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 + + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nacrn - ln_set_rate = 28.2984 + -276.744 * tfactors.T9i + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 - + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 276.744 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i + + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 276.744 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i - + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_to_He4_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Li6_to_He4_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 --> He4 + d - // Li6 --> He4 + d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // tu19r + ln_set_rate = 27.5672 + -24.9919 * tfactors.T9i; - // tu19r - ln_set_rate = 27.5672 + -24.9919 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.9919 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.9919 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // tu19n + ln_set_rate = 22.7676 + -17.1028 * tfactors.T9i + -7.55198 * tfactors.T913i + 5.77546 * tfactors.T913 + + -0.487854 * tfactors.T9 + 0.032833 * tfactors.T953 + 0.376948 * tfactors.lnT9; - // tu19n - ln_set_rate = 22.7676 + -17.1028 * tfactors.T9i + -7.55198 * tfactors.T913i + 5.77546 * tfactors.T913 - + -0.487854 * tfactors.T9 + 0.032833 * tfactors.T953 + 0.376948 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 17.1028 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.55198 * tfactors.T943i + (1.0/3.0) * 5.77546 * tfactors.T923i + + -0.487854 + (5.0/3.0) * 0.032833 * tfactors.T923 + 0.376948 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 17.1028 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.55198 * tfactors.T943i + (1.0/3.0) * 5.77546 * tfactors.T923i - + -0.487854 + (5.0/3.0) * 0.032833 * tfactors.T923 + 0.376948 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_to_n_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Li7_to_n_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 --> n + Li6 - // Li7 --> n + Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // jz10n + ln_set_rate = 32.2347 + -84.1369 * tfactors.T9i + + 1.5 * tfactors.lnT9; - // jz10n - ln_set_rate = 32.2347 + -84.1369 * tfactors.T9i - + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.1369 * tfactors.T9i * tfactors.T9i + + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.1369 * tfactors.T9i * tfactors.T9i - + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_to_p_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Be7_to_p_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 --> p + Li6 - // Be7 --> p + Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 37.4661 + -65.0548 * tfactors.T9i + -8.4372 * tfactors.T913i + -0.515473 * tfactors.T913 + + 0.0285578 * tfactors.T9 + 0.00879731 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nacrn - ln_set_rate = 37.4661 + -65.0548 * tfactors.T9i + -8.4372 * tfactors.T913i + -0.515473 * tfactors.T913 - + 0.0285578 * tfactors.T9 + 0.00879731 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.0548 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.4372 * tfactors.T943i + (1.0/3.0) * -0.515473 * tfactors.T923i + + 0.0285578 + (5.0/3.0) * 0.00879731 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.0548 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.4372 * tfactors.T943i + (1.0/3.0) * -0.515473 * tfactors.T923i - + 0.0285578 + (5.0/3.0) * 0.00879731 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_to_He4_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Be7_to_He4_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 --> He4 + He3 - // Be7 --> He4 + He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cd08n + ln_set_rate = 38.7379 + -18.4059 * tfactors.T9i + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 + + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // cd08n - ln_set_rate = 38.7379 + -18.4059 * tfactors.T9i + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 - + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.4059 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i + + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.4059 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i - + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cd08n + ln_set_rate = 40.8355 + -18.4059 * tfactors.T9i + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 + + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 2.83333 * tfactors.lnT9; - // cd08n - ln_set_rate = 40.8355 + -18.4059 * tfactors.T9i + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 - + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 2.83333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.4059 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i + + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 2.83333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.4059 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i - + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 2.83333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B8_to_p_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B8_to_p_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B8 --> p + Be7 - // B8 --> p + Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 31.0163 + -8.93482 * tfactors.T9i; - // nacrr - ln_set_rate = 31.0163 + -8.93482 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.93482 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.93482 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 35.8138 + -1.58982 * tfactors.T9i + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 + + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nacrn - ln_set_rate = 35.8138 + -1.58982 * tfactors.T9i + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 - + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.58982 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i + + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.58982 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i - + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B8_to_He4_He4_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B8_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B8 --> He4 + He4 - // B8 --> He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -0.105148; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -0.105148; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B10_to_p_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B10_to_p_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B10 --> p + Be9 - // B10 --> p + Be9 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 37.9538 + -87.9663 * tfactors.T9i; - // nacrr - ln_set_rate = 37.9538 + -87.9663 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 87.9663 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.9663 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 30.6751 + -79.0223 * tfactors.T9i; - // nacrr - ln_set_rate = 30.6751 + -79.0223 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.0223 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.0223 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 39.2789 + -76.4272 * tfactors.T9i + -10.361 * tfactors.T913i + 0.695179 * tfactors.T913 + + 0.342365 * tfactors.T9 + -0.356569 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nacrn - ln_set_rate = 39.2789 + -76.4272 * tfactors.T9i + -10.361 * tfactors.T913i + 0.695179 * tfactors.T913 - + 0.342365 * tfactors.T9 + -0.356569 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 76.4272 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.361 * tfactors.T943i + (1.0/3.0) * 0.695179 * tfactors.T923i + + 0.342365 + (5.0/3.0) * -0.356569 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 76.4272 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.361 * tfactors.T943i + (1.0/3.0) * 0.695179 * tfactors.T923i - + 0.342365 + (5.0/3.0) * -0.356569 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B10_to_He4_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B10_to_He4_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B10 --> He4 + Li6 - // B10 --> He4 + Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 38.6952 + -51.7561 * tfactors.T9i + -18.79 * tfactors.T913i + 0.234225 * tfactors.T913 + + 3.23344 * tfactors.T9 + -1.14529 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // cf88n - ln_set_rate = 38.6952 + -51.7561 * tfactors.T9i + -18.79 * tfactors.T913i + 0.234225 * tfactors.T913 - + 3.23344 * tfactors.T9 + -1.14529 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 51.7561 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.79 * tfactors.T943i + (1.0/3.0) * 0.234225 * tfactors.T923i + + 3.23344 + (5.0/3.0) * -1.14529 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.7561 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.79 * tfactors.T943i + (1.0/3.0) * 0.234225 * tfactors.T923i - + 3.23344 + (5.0/3.0) * -1.14529 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 24.5212 + -55.4692 * tfactors.T9i + 3.33334 * tfactors.T913i + 3.25335 * tfactors.T913 + + 0.374434 * tfactors.T9 + -0.0706244 * tfactors.T953; - // cf88r - ln_set_rate = 24.5212 + -55.4692 * tfactors.T9i + 3.33334 * tfactors.T913i + 3.25335 * tfactors.T913 - + 0.374434 * tfactors.T9 + -0.0706244 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.4692 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.33334 * tfactors.T943i + (1.0/3.0) * 3.25335 * tfactors.T923i + + 0.374434 + (5.0/3.0) * -0.0706244 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.4692 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.33334 * tfactors.T943i + (1.0/3.0) * 3.25335 * tfactors.T923i - + 0.374434 + (5.0/3.0) * -0.0706244 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B11_to_n_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B11_to_n_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B11 --> n + B10 - // B11 --> n + B10 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 35.2227 + -132.928 * tfactors.T9i + 2.65756e-10 * tfactors.T913i + -9.63588e-10 * tfactors.T913 + + 1.07466e-10 * tfactors.T9 + -9.87569e-12 * tfactors.T953 + 1.5 * tfactors.lnT9; - // wagn - ln_set_rate = 35.2227 + -132.928 * tfactors.T9i + 2.65756e-10 * tfactors.T913i + -9.63588e-10 * tfactors.T913 - + 1.07466e-10 * tfactors.T9 + -9.87569e-12 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 132.928 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.65756e-10 * tfactors.T943i + (1.0/3.0) * -9.63588e-10 * tfactors.T923i + + 1.07466e-10 + (5.0/3.0) * -9.87569e-12 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 132.928 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.65756e-10 * tfactors.T943i + (1.0/3.0) * -9.63588e-10 * tfactors.T923i - + 1.07466e-10 + (5.0/3.0) * -9.87569e-12 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B11_to_He4_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_B11_to_He4_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B11 --> He4 + Li7 - // B11 --> He4 + Li7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 42.8425 + -100.541 * tfactors.T9i + -19.163 * tfactors.T913i + 0.0587651 * tfactors.T913 + + 0.773338 * tfactors.T9 + -0.201519 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nacrn - ln_set_rate = 42.8425 + -100.541 * tfactors.T9i + -19.163 * tfactors.T913i + 0.0587651 * tfactors.T913 - + 0.773338 * tfactors.T9 + -0.201519 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.541 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.163 * tfactors.T943i + (1.0/3.0) * 0.0587651 * tfactors.T923i + + 0.773338 + (5.0/3.0) * -0.201519 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.541 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.163 * tfactors.T943i + (1.0/3.0) * 0.0587651 * tfactors.T923i - + 0.773338 + (5.0/3.0) * -0.201519 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 35.1078 + -106.983 * tfactors.T9i + + 0.190698 * tfactors.T9; - // nacrr - ln_set_rate = 35.1078 + -106.983 * tfactors.T9i - + 0.190698 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.983 * tfactors.T9i * tfactors.T9i + + 0.190698; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.983 * tfactors.T9i * tfactors.T9i - + 0.190698; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 30.2249 + -103.501 * tfactors.T9i; - // nacrr - ln_set_rate = 30.2249 + -103.501 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.501 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.501 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_p_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_p_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 --> p + B11 - // C12 --> p + B11 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nw00n + ln_set_rate = 43.578 + -185.173 * tfactors.T9i + -12.095 * tfactors.T913i + -1.95046 * tfactors.T913 + + 9.56928 * tfactors.T9 + -10.0637 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nw00n - ln_set_rate = 43.578 + -185.173 * tfactors.T9i + -12.095 * tfactors.T913i + -1.95046 * tfactors.T913 - + 9.56928 * tfactors.T9 + -10.0637 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 185.173 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -1.95046 * tfactors.T923i + + 9.56928 + (5.0/3.0) * -10.0637 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 185.173 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -1.95046 * tfactors.T923i - + 9.56928 + (5.0/3.0) * -10.0637 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nw00r + ln_set_rate = 33.6351 + -186.885 * tfactors.T9i; - // nw00r - ln_set_rate = 33.6351 + -186.885 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 186.885 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 186.885 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nw00n + ln_set_rate = 50.5262 + -185.173 * tfactors.T9i + -12.095 * tfactors.T913i + -6.68421 * tfactors.T913 + + -0.0148736 * tfactors.T9 + 0.0364288 * tfactors.T953 + 2.83333 * tfactors.lnT9; - // nw00n - ln_set_rate = 50.5262 + -185.173 * tfactors.T9i + -12.095 * tfactors.T913i + -6.68421 * tfactors.T913 - + -0.0148736 * tfactors.T9 + 0.0364288 * tfactors.T953 + 2.83333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 185.173 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -6.68421 * tfactors.T923i + + -0.0148736 + (5.0/3.0) * 0.0364288 * tfactors.T923 + 2.83333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 185.173 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -6.68421 * tfactors.T923i - + -0.0148736 + (5.0/3.0) * 0.0364288 * tfactors.T923 + 2.83333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_to_n_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C13_to_n_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 --> n + C12 - // C13 --> n + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 30.8808 + -57.4077 * tfactors.T9i + 1.49573 * tfactors.T913i + -0.841102 * tfactors.T913 + + 0.0340543 * tfactors.T9 + -0.0026392 * tfactors.T953 + 3.1662 * tfactors.lnT9; - // ks03 - ln_set_rate = 30.8808 + -57.4077 * tfactors.T9i + 1.49573 * tfactors.T913i + -0.841102 * tfactors.T913 - + 0.0340543 * tfactors.T9 + -0.0026392 * tfactors.T953 + 3.1662 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 57.4077 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.49573 * tfactors.T943i + (1.0/3.0) * -0.841102 * tfactors.T923i + + 0.0340543 + (5.0/3.0) * -0.0026392 * tfactors.T923 + 3.1662 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 57.4077 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.49573 * tfactors.T943i + (1.0/3.0) * -0.841102 * tfactors.T923i - + 0.0340543 + (5.0/3.0) * -0.0026392 * tfactors.T923 + 3.1662 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C14_to_n_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C14_to_n_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C14 --> n + C13 - // C14 --> n + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 59.5926 + -95.0156 * tfactors.T9i + 18.3578 * tfactors.T913i + -46.5786 * tfactors.T913 + + 2.58472 * tfactors.T9 + -0.118622 * tfactors.T953 + 21.4142 * tfactors.lnT9; - // ks03 - ln_set_rate = 59.5926 + -95.0156 * tfactors.T9i + 18.3578 * tfactors.T913i + -46.5786 * tfactors.T913 - + 2.58472 * tfactors.T9 + -0.118622 * tfactors.T953 + 21.4142 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 95.0156 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.3578 * tfactors.T943i + (1.0/3.0) * -46.5786 * tfactors.T923i + + 2.58472 + (5.0/3.0) * -0.118622 * tfactors.T923 + 21.4142 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 95.0156 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.3578 * tfactors.T943i + (1.0/3.0) * -46.5786 * tfactors.T923i - + 2.58472 + (5.0/3.0) * -0.118622 * tfactors.T923 + 21.4142 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_to_p_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N13_to_p_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 --> p + C12 - // N13 --> p + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ls09r + ln_set_rate = 40.4354 + -26.326 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9; - // ls09r - ln_set_rate = 40.4354 + -26.326 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.326 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.326 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ls09n + ln_set_rate = 40.0408 + -22.5475 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ls09n - ln_set_rate = 40.0408 + -22.5475 * tfactors.T9i + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.5475 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.5475 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_to_n_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N14_to_n_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 --> n + N13 - // N14 --> n + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wiesr + ln_set_rate = 19.5584 + -125.474 * tfactors.T9i + 9.44873e-10 * tfactors.T913i + -2.33713e-09 * tfactors.T913 + + 1.97507e-10 * tfactors.T9 + -1.49747e-11 * tfactors.T953; - // wiesr - ln_set_rate = 19.5584 + -125.474 * tfactors.T9i + 9.44873e-10 * tfactors.T913i + -2.33713e-09 * tfactors.T913 - + 1.97507e-10 * tfactors.T9 + -1.49747e-11 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 125.474 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.44873e-10 * tfactors.T943i + (1.0/3.0) * -2.33713e-09 * tfactors.T923i + + 1.97507e-10 + (5.0/3.0) * -1.49747e-11 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 125.474 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.44873e-10 * tfactors.T943i + (1.0/3.0) * -2.33713e-09 * tfactors.T923i - + 1.97507e-10 + (5.0/3.0) * -1.49747e-11 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wiesn + ln_set_rate = 37.1268 + -122.484 * tfactors.T9i + 1.72241e-10 * tfactors.T913i + -5.62522e-10 * tfactors.T913 + + 5.59212e-11 * tfactors.T9 + -4.6549e-12 * tfactors.T953 + 1.5 * tfactors.lnT9; - // wiesn - ln_set_rate = 37.1268 + -122.484 * tfactors.T9i + 1.72241e-10 * tfactors.T913i + -5.62522e-10 * tfactors.T913 - + 5.59212e-11 * tfactors.T9 + -4.6549e-12 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 122.484 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.72241e-10 * tfactors.T943i + (1.0/3.0) * -5.62522e-10 * tfactors.T923i + + 5.59212e-11 + (5.0/3.0) * -4.6549e-12 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 122.484 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.72241e-10 * tfactors.T943i + (1.0/3.0) * -5.62522e-10 * tfactors.T923i - + 5.59212e-11 + (5.0/3.0) * -4.6549e-12 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_to_p_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N14_to_p_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 --> p + C13 - // N14 --> p + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 37.1528 + -93.4071 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; - // nacrr - ln_set_rate = 37.1528 + -93.4071 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.4071 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.4071 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 38.3716 + -101.18 * tfactors.T9i; - // nacrr - ln_set_rate = 38.3716 + -101.18 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.18 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.18 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 41.7046 + -87.6256 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nacrn - ln_set_rate = 41.7046 + -87.6256 * tfactors.T9i + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 87.6256 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.6256 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_to_n_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N15_to_n_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 --> n + N14 - // N15 --> n + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 34.1728 + -125.726 * tfactors.T9i + 1.396 * tfactors.T913i + -3.47552 * tfactors.T913 + + 0.351773 * tfactors.T9 + -0.0229344 * tfactors.T953 + 2.52161 * tfactors.lnT9; - // ks03 - ln_set_rate = 34.1728 + -125.726 * tfactors.T9i + 1.396 * tfactors.T913i + -3.47552 * tfactors.T913 - + 0.351773 * tfactors.T9 + -0.0229344 * tfactors.T953 + 2.52161 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 125.726 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.396 * tfactors.T943i + (1.0/3.0) * -3.47552 * tfactors.T923i + + 0.351773 + (5.0/3.0) * -0.0229344 * tfactors.T923 + 2.52161 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 125.726 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.396 * tfactors.T943i + (1.0/3.0) * -3.47552 * tfactors.T923i - + 0.351773 + (5.0/3.0) * -0.0229344 * tfactors.T923 + 2.52161 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_to_p_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_N15_to_p_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 --> p + C14 - // N15 --> p + C14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 40.0115 + -119.975 * tfactors.T9i + -10.658 * tfactors.T913i + 1.73644 * tfactors.T913 + + -0.350498 * tfactors.T9 + 0.0279902 * tfactors.T953; - // il10r - ln_set_rate = 40.0115 + -119.975 * tfactors.T9i + -10.658 * tfactors.T913i + 1.73644 * tfactors.T913 - + -0.350498 * tfactors.T9 + 0.0279902 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 119.975 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.658 * tfactors.T943i + (1.0/3.0) * 1.73644 * tfactors.T923i + + -0.350498 + (5.0/3.0) * 0.0279902 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 119.975 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.658 * tfactors.T943i + (1.0/3.0) * 1.73644 * tfactors.T923i - + -0.350498 + (5.0/3.0) * 0.0279902 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 43.0281 + -118.452 * tfactors.T9i + -13.9619 * tfactors.T913i + -4.34315 * tfactors.T913 + + 6.64922 * tfactors.T9 + -3.22592 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 43.0281 + -118.452 * tfactors.T9i + -13.9619 * tfactors.T913i + -4.34315 * tfactors.T913 - + 6.64922 * tfactors.T9 + -3.22592 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 118.452 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.9619 * tfactors.T943i + (1.0/3.0) * -4.34315 * tfactors.T923i + + 6.64922 + (5.0/3.0) * -3.22592 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 118.452 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.9619 * tfactors.T943i + (1.0/3.0) * -4.34315 * tfactors.T923i - + 6.64922 + (5.0/3.0) * -3.22592 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_to_p_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O14_to_p_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 --> p + N13 - // O14 --> p + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lg06r + ln_set_rate = 35.2849 + -59.8313 * tfactors.T9i + 1.57122 * tfactors.T913i; - // lg06r - ln_set_rate = 35.2849 + -59.8313 * tfactors.T9i + 1.57122 * tfactors.T913i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.8313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.8313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lg06n + ln_set_rate = 42.4234 + -53.7053 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // lg06n - ln_set_rate = 42.4234 + -53.7053 * tfactors.T9i + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 53.7053 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.7053 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_n_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_n_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 --> n + O14 - // O15 --> n + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 32.7811 + -153.419 * tfactors.T9i + -1.38986 * tfactors.T913i + 1.74662 * tfactors.T913 + + -0.0276897 * tfactors.T9 + 0.00321014 * tfactors.T953 + 0.438778 * tfactors.lnT9; - // rpsmr - ln_set_rate = 32.7811 + -153.419 * tfactors.T9i + -1.38986 * tfactors.T913i + 1.74662 * tfactors.T913 - + -0.0276897 * tfactors.T9 + 0.00321014 * tfactors.T953 + 0.438778 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 153.419 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.38986 * tfactors.T943i + (1.0/3.0) * 1.74662 * tfactors.T923i + + -0.0276897 + (5.0/3.0) * 0.00321014 * tfactors.T923 + 0.438778 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 153.419 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.38986 * tfactors.T943i + (1.0/3.0) * 1.74662 * tfactors.T923i - + -0.0276897 + (5.0/3.0) * 0.00321014 * tfactors.T923 + 0.438778 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_to_p_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O15_to_p_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 --> p + N14 - // O15 --> p + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // im05r + ln_set_rate = 30.7435 + -89.5667 * tfactors.T9i + + 1.5682 * tfactors.lnT9; - // im05r - ln_set_rate = 30.7435 + -89.5667 * tfactors.T9i - + 1.5682 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 89.5667 * tfactors.T9i * tfactors.T9i + + 1.5682 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.5667 * tfactors.T9i * tfactors.T9i - + 1.5682 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05r + ln_set_rate = 31.6622 + -87.6737 * tfactors.T9i; - // im05r - ln_set_rate = 31.6622 + -87.6737 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 87.6737 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.6737 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 44.1246 + -84.6757 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.83333 * tfactors.lnT9; - // im05n - ln_set_rate = 44.1246 + -84.6757 * tfactors.T9i + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 1.83333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.6757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.83333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.6757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 1.83333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 41.0177 + -84.6757 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // im05n - ln_set_rate = 41.0177 + -84.6757 * tfactors.T9i + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.6757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.6757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_n_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_n_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 --> n + O15 - // O16 --> n + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 32.3869 + -181.759 * tfactors.T9i + -1.11761 * tfactors.T913i + 1.0167 * tfactors.T913 + + 0.0449976 * tfactors.T9 + -0.00204682 * tfactors.T953 + 0.710783 * tfactors.lnT9; - // rpsmr - ln_set_rate = 32.3869 + -181.759 * tfactors.T9i + -1.11761 * tfactors.T913i + 1.0167 * tfactors.T913 - + 0.0449976 * tfactors.T9 + -0.00204682 * tfactors.T953 + 0.710783 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 181.759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.11761 * tfactors.T943i + (1.0/3.0) * 1.0167 * tfactors.T923i + + 0.0449976 + (5.0/3.0) * -0.00204682 * tfactors.T923 + 0.710783 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 181.759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.11761 * tfactors.T943i + (1.0/3.0) * 1.0167 * tfactors.T923i - + 0.0449976 + (5.0/3.0) * -0.00204682 * tfactors.T923 + 0.710783 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_p_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_p_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 --> p + N15 - // O16 --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li10r + ln_set_rate = 38.8465 + -150.962 * tfactors.T9i + + 0.0459037 * tfactors.T9; - // li10r - ln_set_rate = 38.8465 + -150.962 * tfactors.T9i - + 0.0459037 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 150.962 * tfactors.T9i * tfactors.T9i + + 0.0459037; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 150.962 * tfactors.T9i * tfactors.T9i - + 0.0459037; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10r + ln_set_rate = 30.8927 + -143.656 * tfactors.T9i; - // li10r - ln_set_rate = 30.8927 + -143.656 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 143.656 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 143.656 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10n + ln_set_rate = 44.3197 + -140.732 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // li10n - ln_set_rate = 44.3197 + -140.732 * tfactors.T9i + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 140.732 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 140.732 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 --> He4 + C12 - // O16 --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 94.3131 + -84.503 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; - // nac2 - ln_set_rate = 94.3131 + -84.503 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 71.8554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.503 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 71.8554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 279.295 + -84.9515 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; - // nac2 - ln_set_rate = 279.295 + -84.9515 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 138.803 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.9515 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.9515 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 138.803 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_to_n_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O17_to_n_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 --> n + O16 - // O17 --> n + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 29.0385 + -48.0574 * tfactors.T9i + -2.11246 * tfactors.T913i + 4.87742 * tfactors.T913 + + -0.314426 * tfactors.T9 + 0.0169515 * tfactors.T953 + 0.515216 * tfactors.lnT9; - // ks03 - ln_set_rate = 29.0385 + -48.0574 * tfactors.T9i + -2.11246 * tfactors.T913i + 4.87742 * tfactors.T913 - + -0.314426 * tfactors.T9 + 0.0169515 * tfactors.T953 + 0.515216 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 48.0574 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.11246 * tfactors.T943i + (1.0/3.0) * 4.87742 * tfactors.T923i + + -0.314426 + (5.0/3.0) * 0.0169515 * tfactors.T923 + 0.515216 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 48.0574 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.11246 * tfactors.T943i + (1.0/3.0) * 4.87742 * tfactors.T923i - + -0.314426 + (5.0/3.0) * 0.0169515 * tfactors.T923 + 0.515216 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_to_n_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O18_to_n_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 --> n + O17 - // O18 --> n + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bb92n + ln_set_rate = 29.682 + -93.3549 * tfactors.T9i + 7.48144e-11 * tfactors.T913i + -2.47239e-10 * tfactors.T913 + + 2.48052e-11 * tfactors.T9 + -2.07736e-12 * tfactors.T953 + 1.5 * tfactors.lnT9; - // bb92n - ln_set_rate = 29.682 + -93.3549 * tfactors.T9i + 7.48144e-11 * tfactors.T913i + -2.47239e-10 * tfactors.T913 - + 2.48052e-11 * tfactors.T9 + -2.07736e-12 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.3549 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.48144e-11 * tfactors.T943i + (1.0/3.0) * -2.47239e-10 * tfactors.T923i + + 2.48052e-11 + (5.0/3.0) * -2.07736e-12 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.3549 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.48144e-11 * tfactors.T943i + (1.0/3.0) * -2.47239e-10 * tfactors.T923i - + 2.48052e-11 + (5.0/3.0) * -2.07736e-12 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92r + ln_set_rate = 45.5915 + -95.4845 * tfactors.T9i + 16.8052 * tfactors.T913i + -30.138 * tfactors.T913 + + 1.14711 * tfactors.T9 + -0.0220312 * tfactors.T953 + 15.2452 * tfactors.lnT9; - // bb92r - ln_set_rate = 45.5915 + -95.4845 * tfactors.T9i + 16.8052 * tfactors.T913i + -30.138 * tfactors.T913 - + 1.14711 * tfactors.T9 + -0.0220312 * tfactors.T953 + 15.2452 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 95.4845 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 16.8052 * tfactors.T943i + (1.0/3.0) * -30.138 * tfactors.T923i + + 1.14711 + (5.0/3.0) * -0.0220312 * tfactors.T923 + 15.2452 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 95.4845 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 16.8052 * tfactors.T943i + (1.0/3.0) * -30.138 * tfactors.T923i - + 1.14711 + (5.0/3.0) * -0.0220312 * tfactors.T923 + 15.2452 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_to_He4_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O18_to_He4_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 --> He4 + C14 - // O18 --> He4 + C14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 36.546 + -82.6514 * tfactors.T9i + -3.83188 * tfactors.T913 + + 1.64358 * tfactors.T9 + -0.177785 * tfactors.T953; - // il10r - ln_set_rate = 36.546 + -82.6514 * tfactors.T9i + -3.83188 * tfactors.T913 - + 1.64358 * tfactors.T9 + -0.177785 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 82.6514 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.83188 * tfactors.T923i + + 1.64358 + (5.0/3.0) * -0.177785 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 82.6514 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.83188 * tfactors.T923i - + 1.64358 + (5.0/3.0) * -0.177785 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.910093 + -74.3219 * tfactors.T9i; - // il10r - ln_set_rate = 0.910093 + -74.3219 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.3219 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.3219 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 43.2028 + -72.2531 * tfactors.T9i + -31.7222 * tfactors.T913i + 11.3923 * tfactors.T913 + + -9.92249 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 43.2028 + -72.2531 * tfactors.T9i + -31.7222 * tfactors.T913i + 11.3923 * tfactors.T913 - + -9.92249 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 72.2531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.7222 * tfactors.T943i + (1.0/3.0) * 11.3923 * tfactors.T923i + + -9.92249 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 72.2531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.7222 * tfactors.T943i + (1.0/3.0) * 11.3923 * tfactors.T923i - + -9.92249 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F17_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 --> p + O16 - // F17 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 40.9135 + -6.96583 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ia08n - ln_set_rate = 40.9135 + -6.96583 * tfactors.T9i + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.96583 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.96583 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_n_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_n_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 --> n + F17 - // F18 --> n + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 27.7411 + -106.154 * tfactors.T9i + -2.71353 * tfactors.T913i + 6.19871 * tfactors.T913 + + -0.26836 * tfactors.T9 + 0.0115489 * tfactors.T953 + -1.02002 * tfactors.lnT9; - // rpsmr - ln_set_rate = 27.7411 + -106.154 * tfactors.T9i + -2.71353 * tfactors.T913i + 6.19871 * tfactors.T913 - + -0.26836 * tfactors.T9 + 0.0115489 * tfactors.T953 + -1.02002 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.154 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.71353 * tfactors.T943i + (1.0/3.0) * 6.19871 * tfactors.T923i + + -0.26836 + (5.0/3.0) * 0.0115489 * tfactors.T923 + -1.02002 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.154 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.71353 * tfactors.T943i + (1.0/3.0) * 6.19871 * tfactors.T923i - + -0.26836 + (5.0/3.0) * 0.0115489 * tfactors.T923 + -1.02002 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_p_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_p_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 --> p + O17 - // F18 --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 33.7037 + -71.2889 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; - // il10r - ln_set_rate = 33.7037 + -71.2889 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 71.2889 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 71.2889 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 11.2362 + -65.8069 * tfactors.T9i; - // il10r - ln_set_rate = 11.2362 + -65.8069 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.8069 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.8069 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 40.2061 + -65.0606 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 40.2061 + -65.0606 * tfactors.T9i + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.0606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.0606 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F18_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 --> He4 + N14 - // F18 --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 38.6146 + -62.1948 * tfactors.T9i + -5.6227 * tfactors.T913i; - // il10r - ln_set_rate = 38.6146 + -62.1948 * tfactors.T9i + -5.6227 * tfactors.T913i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 62.1948 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 62.1948 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 24.9119 + -56.3896 * tfactors.T9i; - // il10r - ln_set_rate = 24.9119 + -56.3896 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 56.3896 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 56.3896 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 46.249 + -51.2292 * tfactors.T9i + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 46.249 + -51.2292 * tfactors.T9i + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 51.2292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.2292 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_n_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_n_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 --> n + F18 - // F19 --> n + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 24.8451 + -120.998 * tfactors.T9i + -6.65988 * tfactors.T913i + 18.3243 * tfactors.T913 + + -1.47263 * tfactors.T9 + 0.0955082 * tfactors.T953 + -5.25505 * tfactors.lnT9; - // rpsmr - ln_set_rate = 24.8451 + -120.998 * tfactors.T9i + -6.65988 * tfactors.T913i + 18.3243 * tfactors.T913 - + -1.47263 * tfactors.T9 + 0.0955082 * tfactors.T953 + -5.25505 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.998 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.65988 * tfactors.T943i + (1.0/3.0) * 18.3243 * tfactors.T923i + + -1.47263 + (5.0/3.0) * 0.0955082 * tfactors.T923 + -5.25505 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.998 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.65988 * tfactors.T943i + (1.0/3.0) * 18.3243 * tfactors.T923i - + -1.47263 + (5.0/3.0) * 0.0955082 * tfactors.T923 + -5.25505 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_p_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_p_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 --> p + O18 - // F19 --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 30.2003 + -99.501 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; - // il10r - ln_set_rate = 30.2003 + -99.501 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.501 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.501 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 28.008 + -94.4325 * tfactors.T9i; - // il10r - ln_set_rate = 28.008 + -94.4325 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.4325 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.4325 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.0764 + -93.0204 * tfactors.T9i; - // il10r - ln_set_rate = -12.0764 + -93.0204 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.0204 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.0204 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 42.8485 + -92.7757 * tfactors.T9i + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 42.8485 + -92.7757 * tfactors.T9i + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.7757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.7757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_F19_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 --> He4 + N15 - // F19 --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -4.06142 + -50.7773 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; - // il10r - ln_set_rate = -4.06142 + -50.7773 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 50.7773 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.7773 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 28.2717 + -53.5621 * tfactors.T9i; - // il10r - ln_set_rate = 28.2717 + -53.5621 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 53.5621 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.5621 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 15.3186 + -50.7554 * tfactors.T9i; - // il10r - ln_set_rate = 15.3186 + -50.7554 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 50.7554 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.7554 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 50.1291 + -46.5774 * tfactors.T9i + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 50.1291 + -46.5774 * tfactors.T9i + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.5774 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.5774 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 --> p + F17 - // Ne18 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cb09 + ln_set_rate = 52.9895 + -50.492 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; - // cb09 - ln_set_rate = 52.9895 + -50.492 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -5.86014 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 50.492 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.492 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -5.86014 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cb09 + ln_set_rate = 17.5646 + -45.5647 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.63376 * tfactors.lnT9; - // cb09 - ln_set_rate = 17.5646 + -45.5647 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -0.63376 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 45.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.63376 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 45.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -0.63376 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_to_He4_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne18_to_He4_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 --> He4 + O14 - // Ne18 --> He4 + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wh87r + ln_set_rate = 20.0156 + -71.5044 * tfactors.T9i + + 6.5 * tfactors.lnT9; - // wh87r - ln_set_rate = 20.0156 + -71.5044 * tfactors.T9i - + 6.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 71.5044 * tfactors.T9i * tfactors.T9i + + 6.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 71.5044 * tfactors.T9i * tfactors.T9i - + 6.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = 28.2415 + -81.9554 * tfactors.T9i; - // wh87r - ln_set_rate = 28.2415 + -81.9554 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 81.9554 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 81.9554 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = 22.5609 + -71.0754 * tfactors.T9i; - // wh87r - ln_set_rate = 22.5609 + -71.0754 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 71.0754 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 71.0754 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87n + ln_set_rate = 51.158 + -59.3454 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // wh87n - ln_set_rate = 51.158 + -59.3454 * tfactors.T9i + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.3454 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.3454 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_n_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_n_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 --> n + Ne18 - // Ne19 --> n + Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 32.1805 + -135.042 * tfactors.T9i + 0.937162 * tfactors.T913 + + -0.0221952 * tfactors.T9 + -0.00101206 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 32.1805 + -135.042 * tfactors.T9i + 0.937162 * tfactors.T913 - + -0.0221952 * tfactors.T9 + -0.00101206 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 135.042 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.937162 * tfactors.T923i + + -0.0221952 + (5.0/3.0) * -0.00101206 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 135.042 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.937162 * tfactors.T923i - + -0.0221952 + (5.0/3.0) * -0.00101206 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_p_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_p_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 --> p + F18 - // Ne19 --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 81.4385 + -74.3988 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 81.4385 + -74.3988 * tfactors.T9i + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.3988 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.3988 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 18.1729 + -77.2902 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; - // il10r - ln_set_rate = 18.1729 + -77.2902 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.2902 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.2902 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.41887 + -74.7977 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; - // il10r - ln_set_rate = -5.41887 + -74.7977 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.7977 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.7977 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne19_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 --> He4 + O15 - // Ne19 --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // dc11r + ln_set_rate = -7.51212 + -45.1578 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; - // dc11r - ln_set_rate = -7.51212 + -45.1578 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 45.1578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 45.1578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11r + ln_set_rate = 24.6922 + -46.8378 * tfactors.T9i; - // dc11r - ln_set_rate = 24.6922 + -46.8378 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.8378 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.8378 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11n + ln_set_rate = 51.0289 + -40.9534 * tfactors.T9i + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // dc11n - ln_set_rate = 51.0289 + -40.9534 * tfactors.T9i + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 40.9534 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.9534 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_n_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_n_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 --> n + Ne19 - // Ne20 --> n + Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 30.7283 + -195.706 * tfactors.T9i + 1.57592 * tfactors.T913 + + -0.11175 * tfactors.T9 + 0.00226473 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 30.7283 + -195.706 * tfactors.T9i + 1.57592 * tfactors.T913 - + -0.11175 * tfactors.T9 + 0.00226473 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 195.706 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.57592 * tfactors.T923i + + -0.11175 + (5.0/3.0) * 0.00226473 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 195.706 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.57592 * tfactors.T923i - + -0.11175 + (5.0/3.0) * 0.00226473 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_p_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_p_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 --> p + F19 - // Ne20 --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 18.691 + -156.781 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; - // nacrr - ln_set_rate = 18.691 + -156.781 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 156.781 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 156.781 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 36.7036 + -150.75 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; - // nacrr - ln_set_rate = 36.7036 + -150.75 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 150.75 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 150.75 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 42.6027 + -149.037 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // nacrn - ln_set_rate = 42.6027 + -149.037 * tfactors.T9i + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 149.037 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 149.037 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne20_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 --> He4 + O16 - // Ne20 --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 28.6431 + -65.246 * tfactors.T9i; - // co10r - ln_set_rate = 28.6431 + -65.246 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.246 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.246 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 48.6604 + -54.8875 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // co10n - ln_set_rate = 48.6604 + -54.8875 * tfactors.T9i + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 54.8875 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 54.8875 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 34.2658 + -67.6518 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; - // co10r - ln_set_rate = 34.2658 + -67.6518 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 67.6518 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.6518 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_to_n_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne21_to_n_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 --> n + Ne20 - // Ne21 --> n + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02n + ln_set_rate = 30.8228 + -78.458 * tfactors.T9i + + 1.5 * tfactors.lnT9; - // ka02n - ln_set_rate = 30.8228 + -78.458 * tfactors.T9i - + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.458 * tfactors.T9i * tfactors.T9i + + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.458 * tfactors.T9i * tfactors.T9i - + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02r + ln_set_rate = 34.9807 + -80.162 * tfactors.T9i; - // ka02r - ln_set_rate = 34.9807 + -80.162 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 80.162 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 80.162 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_to_He4_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne21_to_He4_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 --> He4 + O17 - // Ne21 --> He4 + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // be13r + ln_set_rate = 0.0906657 + -90.782 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 83.7218 * tfactors.lnT9; - // be13r - ln_set_rate = 0.0906657 + -90.782 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 83.7218 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.782 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 83.7218 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.782 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 83.7218 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = -91.954 + -98.9487 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -41.2753 * tfactors.lnT9; - // be13r - ln_set_rate = -91.954 + -98.9487 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -41.2753 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.9487 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -41.2753 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.9487 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -41.2753 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = 27.3205 + -91.2722 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 6.25778 * tfactors.lnT9; - // be13r - ln_set_rate = 27.3205 + -91.2722 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 6.25778 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 91.2722 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 6.25778 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 91.2722 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 6.25778 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_to_n_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne22_to_n_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne22 --> n + Ne21 - // Ne22 --> n + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 48.5428 + -120.224 * tfactors.T9i + -0.238173 * tfactors.T913i + -12.2336 * tfactors.T913 + + 1.14968 * tfactors.T9 + -0.0768882 * tfactors.T953 + 4.13636 * tfactors.lnT9; - // ks03 - ln_set_rate = 48.5428 + -120.224 * tfactors.T9i + -0.238173 * tfactors.T913i + -12.2336 * tfactors.T913 - + 1.14968 * tfactors.T9 + -0.0768882 * tfactors.T953 + 4.13636 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.238173 * tfactors.T943i + (1.0/3.0) * -12.2336 * tfactors.T923i + + 1.14968 + (5.0/3.0) * -0.0768882 * tfactors.T923 + 4.13636 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.224 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.238173 * tfactors.T943i + (1.0/3.0) * -12.2336 * tfactors.T923i - + 1.14968 + (5.0/3.0) * -0.0768882 * tfactors.T923 + 4.13636 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_to_He4_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ne22_to_He4_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne22 --> He4 + O18 - // Ne22 --> He4 + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 106.996 + -113.779 * tfactors.T9i + -44.3823 * tfactors.T913i + -46.6617 * tfactors.T913 + + 7.88059 * tfactors.T9 + -0.590829 * tfactors.T953; - // il10r - ln_set_rate = 106.996 + -113.779 * tfactors.T9i + -44.3823 * tfactors.T913i + -46.6617 * tfactors.T913 - + 7.88059 * tfactors.T9 + -0.590829 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 113.779 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -44.3823 * tfactors.T943i + (1.0/3.0) * -46.6617 * tfactors.T923i + + 7.88059 + (5.0/3.0) * -0.590829 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 113.779 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -44.3823 * tfactors.T943i + (1.0/3.0) * -46.6617 * tfactors.T923i - + 7.88059 + (5.0/3.0) * -0.590829 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.12154 + -114.197 * tfactors.T9i; - // il10r - ln_set_rate = -7.12154 + -114.197 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 114.197 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 114.197 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -56.5125 + -112.87 * tfactors.T9i; - // il10r - ln_set_rate = -56.5125 + -112.87 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 112.87 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 112.87 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 39.7659 + -143.24 * tfactors.T9i; - // il10r - ln_set_rate = 39.7659 + -143.24 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 143.24 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 143.24 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_to_p_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na21_to_p_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na21 --> p + Ne20 - // Na21 --> p + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ly18 + ln_set_rate = 230.123 + -28.3722 * tfactors.T9i + 15.325 * tfactors.T913i + -294.859 * tfactors.T913 + + 107.692 * tfactors.T9 + -46.2072 * tfactors.T953 + 59.3398 * tfactors.lnT9; - // ly18 - ln_set_rate = 230.123 + -28.3722 * tfactors.T9i + 15.325 * tfactors.T913i + -294.859 * tfactors.T913 - + 107.692 * tfactors.T9 + -46.2072 * tfactors.T953 + 59.3398 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 28.3722 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.325 * tfactors.T943i + (1.0/3.0) * -294.859 * tfactors.T923i + + 107.692 + (5.0/3.0) * -46.2072 * tfactors.T923 + 59.3398 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 28.3722 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.325 * tfactors.T943i + (1.0/3.0) * -294.859 * tfactors.T923i - + 107.692 + (5.0/3.0) * -46.2072 * tfactors.T923 + 59.3398 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 28.0772 + -37.0575 * tfactors.T9i + 20.5893 * tfactors.T913i + -17.5841 * tfactors.T913 + + 0.243226 * tfactors.T9 + -0.000231418 * tfactors.T953 + 14.3398 * tfactors.lnT9; - // ly18 - ln_set_rate = 28.0772 + -37.0575 * tfactors.T9i + 20.5893 * tfactors.T913i + -17.5841 * tfactors.T913 - + 0.243226 * tfactors.T9 + -0.000231418 * tfactors.T953 + 14.3398 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 37.0575 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 20.5893 * tfactors.T943i + (1.0/3.0) * -17.5841 * tfactors.T923i + + 0.243226 + (5.0/3.0) * -0.000231418 * tfactors.T923 + 14.3398 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 37.0575 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 20.5893 * tfactors.T943i + (1.0/3.0) * -17.5841 * tfactors.T923i - + 0.243226 + (5.0/3.0) * -0.000231418 * tfactors.T923 + 14.3398 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 252.265 + -32.6731 * tfactors.T9i + 258.57 * tfactors.T913i + -506.387 * tfactors.T913 + + 22.1576 * tfactors.T9 + -0.721182 * tfactors.T953 + 231.788 * tfactors.lnT9; - // ly18 - ln_set_rate = 252.265 + -32.6731 * tfactors.T9i + 258.57 * tfactors.T913i + -506.387 * tfactors.T913 - + 22.1576 * tfactors.T9 + -0.721182 * tfactors.T953 + 231.788 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 32.6731 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 258.57 * tfactors.T943i + (1.0/3.0) * -506.387 * tfactors.T923i + + 22.1576 + (5.0/3.0) * -0.721182 * tfactors.T923 + 231.788 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 32.6731 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 258.57 * tfactors.T943i + (1.0/3.0) * -506.387 * tfactors.T923i - + 22.1576 + (5.0/3.0) * -0.721182 * tfactors.T923 + 231.788 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 195320.0 + -89.3596 * tfactors.T9i + 21894.7 * tfactors.T913i + -319153.0 * tfactors.T913 + + 224369.0 * tfactors.T9 + -188049.0 * tfactors.T953 + 48704.9 * tfactors.lnT9; - // ly18 - ln_set_rate = 195320.0 + -89.3596 * tfactors.T9i + 21894.7 * tfactors.T913i + -319153.0 * tfactors.T913 - + 224369.0 * tfactors.T9 + -188049.0 * tfactors.T953 + 48704.9 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 89.3596 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21894.7 * tfactors.T943i + (1.0/3.0) * -319153.0 * tfactors.T923i + + 224369.0 + (5.0/3.0) * -188049.0 * tfactors.T923 + 48704.9 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.3596 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21894.7 * tfactors.T943i + (1.0/3.0) * -319153.0 * tfactors.T923i - + 224369.0 + (5.0/3.0) * -188049.0 * tfactors.T923 + 48704.9 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na21_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na21 --> He4 + F17 - // Na21 --> He4 + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 66.3334 + -77.8653 * tfactors.T9i + 15.559 * tfactors.T913i + -68.3231 * tfactors.T913 + + 2.54275 * tfactors.T9 + -0.0989207 * tfactors.T953 + 38.3877 * tfactors.lnT9; - // rpsmr - ln_set_rate = 66.3334 + -77.8653 * tfactors.T9i + 15.559 * tfactors.T913i + -68.3231 * tfactors.T913 - + 2.54275 * tfactors.T9 + -0.0989207 * tfactors.T953 + 38.3877 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.8653 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.559 * tfactors.T943i + (1.0/3.0) * -68.3231 * tfactors.T923i + + 2.54275 + (5.0/3.0) * -0.0989207 * tfactors.T923 + 38.3877 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.8653 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.559 * tfactors.T943i + (1.0/3.0) * -68.3231 * tfactors.T923i - + 2.54275 + (5.0/3.0) * -0.0989207 * tfactors.T923 + 38.3877 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_to_n_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na22_to_n_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 --> n + Na21 - // Na22 --> n + Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 30.6596 + -128.457 * tfactors.T9i + 1.31089 * tfactors.T913 + + -0.164931 * tfactors.T9 + 0.00903374 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 30.6596 + -128.457 * tfactors.T9i + 1.31089 * tfactors.T913 - + -0.164931 * tfactors.T9 + 0.00903374 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 128.457 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.31089 * tfactors.T923i + + -0.164931 + (5.0/3.0) * 0.00903374 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 128.457 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.31089 * tfactors.T923i - + -0.164931 + (5.0/3.0) * 0.00903374 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na22_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 --> p + Ne21 - // Na22 --> p + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 24.8334 + -79.6093 * tfactors.T9i; - // il10r - ln_set_rate = 24.8334 + -79.6093 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.6093 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.6093 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -24.579 + -78.4059 * tfactors.T9i; - // il10r - ln_set_rate = -24.579 + -78.4059 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.4059 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.4059 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 42.146 + -78.2097 * tfactors.T9i + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 42.146 + -78.2097 * tfactors.T9i + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.2097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.2097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -16.4098 + -82.4235 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; - // il10r - ln_set_rate = -16.4098 + -82.4235 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 82.4235 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 82.4235 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_to_He4_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na22_to_He4_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 --> He4 + F18 - // Na22 --> He4 + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 59.3224 + -100.236 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; - // rpsmr - ln_set_rate = 59.3224 + -100.236 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 39.3396 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.236 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.236 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 39.3396 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_to_n_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na23_to_n_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 --> n + Na22 - // Na23 --> n + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.0665 + -144.113 * tfactors.T9i + 1.02148 * tfactors.T913 + + -0.334638 * tfactors.T9 + 0.0258708 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.0665 + -144.113 * tfactors.T9i + 1.02148 * tfactors.T913 - + -0.334638 * tfactors.T9 + 0.0258708 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 144.113 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.02148 * tfactors.T923i + + -0.334638 + (5.0/3.0) * 0.0258708 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 144.113 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.02148 * tfactors.T923i - + -0.334638 + (5.0/3.0) * 0.0258708 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_to_p_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na23_to_p_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 --> p + Ne22 - // Na23 --> p + Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ke17r + ln_set_rate = 21.6534 + -103.776 * tfactors.T9i + + 1.18923 * tfactors.lnT9; - // ke17r - ln_set_rate = 21.6534 + -103.776 * tfactors.T9i - + 1.18923 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.776 * tfactors.T9i * tfactors.T9i + + 1.18923 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.776 * tfactors.T9i * tfactors.T9i - + 1.18923 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 0.818178 + -102.466 * tfactors.T9i + + 0.009812 * tfactors.lnT9; - // ke17r - ln_set_rate = 0.818178 + -102.466 * tfactors.T9i - + 0.009812 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.466 * tfactors.T9i * tfactors.T9i + + 0.009812 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.466 * tfactors.T9i * tfactors.T9i - + 0.009812 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 18.1624 + -102.855 * tfactors.T9i + + 4.73558 * tfactors.lnT9; - // ke17r - ln_set_rate = 18.1624 + -102.855 * tfactors.T9i - + 4.73558 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.855 * tfactors.T9i * tfactors.T9i + + 4.73558 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.855 * tfactors.T9i * tfactors.T9i - + 4.73558 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 36.29 + -110.779 * tfactors.T9i + + 0.732533 * tfactors.lnT9; - // ke17r - ln_set_rate = 36.29 + -110.779 * tfactors.T9i - + 0.732533 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.779 * tfactors.T9i * tfactors.T9i + + 0.732533 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.779 * tfactors.T9i * tfactors.T9i - + 0.732533 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 33.8935 + -106.655 * tfactors.T9i + + 1.65623 * tfactors.lnT9; - // ke17r - ln_set_rate = 33.8935 + -106.655 * tfactors.T9i - + 1.65623 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.655 * tfactors.T9i * tfactors.T9i + + 1.65623 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.655 * tfactors.T9i * tfactors.T9i - + 1.65623 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 18.2467 + -104.673 * tfactors.T9i + + -2.79964 * tfactors.lnT9; - // ke17r - ln_set_rate = 18.2467 + -104.673 * tfactors.T9i - + -2.79964 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 104.673 * tfactors.T9i * tfactors.T9i + + -2.79964 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 104.673 * tfactors.T9i * tfactors.T9i - + -2.79964 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_to_He4_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Na23_to_He4_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 --> He4 + F19 - // Na23 --> He4 + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 76.8979 + -123.578 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 + + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 55.9823 * tfactors.lnT9; - // rpsmr - ln_set_rate = 76.8979 + -123.578 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 - + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 55.9823 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 123.578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i + + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 55.9823 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 123.578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i - + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 55.9823 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_to_p_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg23_to_p_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 --> p + Na22 - // Mg23 --> p + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 7.95641 + -88.7434 * tfactors.T9i; - // il10r - ln_set_rate = 7.95641 + -88.7434 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 88.7434 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.7434 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -1.07519 + -88.4655 * tfactors.T9i; - // il10r - ln_set_rate = -1.07519 + -88.4655 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 88.4655 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.4655 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 12.9256 + -90.3923 * tfactors.T9i + 4.86658 * tfactors.T913i + 16.4592 * tfactors.T913 + + -1.95129 * tfactors.T9 + 0.132972 * tfactors.T953; - // il10r - ln_set_rate = 12.9256 + -90.3923 * tfactors.T9i + 4.86658 * tfactors.T913i + 16.4592 * tfactors.T913 - + -1.95129 * tfactors.T9 + 0.132972 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.3923 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.86658 * tfactors.T943i + (1.0/3.0) * 16.4592 * tfactors.T923i + + -1.95129 + (5.0/3.0) * 0.132972 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.3923 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.86658 * tfactors.T943i + (1.0/3.0) * 16.4592 * tfactors.T923i - + -1.95129 + (5.0/3.0) * 0.132972 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_to_He4_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg23_to_He4_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 --> He4 + Ne19 - // Mg23 --> He4 + Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.3121 + -111.985 * tfactors.T9i + -46.6346 * tfactors.T913i + -1.1007 * tfactors.T913 + + -0.794097 * tfactors.T9 + 0.0813036 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.3121 + -111.985 * tfactors.T9i + -46.6346 * tfactors.T913i + -1.1007 * tfactors.T913 - + -0.794097 * tfactors.T9 + 0.0813036 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 111.985 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * -1.1007 * tfactors.T923i + + -0.794097 + (5.0/3.0) * 0.0813036 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 111.985 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * -1.1007 * tfactors.T923i - + -0.794097 + (5.0/3.0) * 0.0813036 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 --> n + Mg23 - // Mg24 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 32.0344 + -191.835 * tfactors.T9i + 2.66964 * tfactors.T913 + + -0.448904 * tfactors.T9 + 0.0326505 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 32.0344 + -191.835 * tfactors.T9i + 2.66964 * tfactors.T913 - + -0.448904 * tfactors.T9 + 0.0326505 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 191.835 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.66964 * tfactors.T923i + + -0.448904 + (5.0/3.0) * 0.0326505 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 191.835 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.66964 * tfactors.T923i - + -0.448904 + (5.0/3.0) * 0.0326505 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 --> p + Na23 - // Mg24 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 34.0876 + -138.968 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; - // il10r - ln_set_rate = 34.0876 + -138.968 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 138.968 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 138.968 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 20.0024 + -137.3 * tfactors.T9i; - // il10r - ln_set_rate = 20.0024 + -137.3 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 137.3 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 137.3 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 43.9357 + -135.688 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 43.9357 + -135.688 * tfactors.T9i + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 135.688 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 135.688 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg24_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 --> He4 + Ne20 - // Mg24 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 16.0203 + -120.895 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; - // il10r - ln_set_rate = 16.0203 + -120.895 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 26.8017 + -117.334 * tfactors.T9i; - // il10r - ln_set_rate = 26.8017 + -117.334 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 117.334 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 117.334 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -13.8869 + -110.62 * tfactors.T9i; - // il10r - ln_set_rate = -13.8869 + -110.62 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.62 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.62 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 49.3244 + -108.114 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 49.3244 + -108.114 * tfactors.T9i + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 108.114 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 108.114 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_to_n_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg25_to_n_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 --> n + Mg24 - // Mg25 --> n + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 86.4748 + -84.9032 * tfactors.T9i + -0.142939 * tfactors.T913i + -57.7499 * tfactors.T913 + + 7.01981 * tfactors.T9 + -0.582057 * tfactors.T953 + 14.3133 * tfactors.lnT9; - // ks03 - ln_set_rate = 86.4748 + -84.9032 * tfactors.T9i + -0.142939 * tfactors.T913i + -57.7499 * tfactors.T913 - + 7.01981 * tfactors.T9 + -0.582057 * tfactors.T953 + 14.3133 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.9032 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.142939 * tfactors.T943i + (1.0/3.0) * -57.7499 * tfactors.T923i + + 7.01981 + (5.0/3.0) * -0.582057 * tfactors.T923 + 14.3133 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.9032 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.142939 * tfactors.T943i + (1.0/3.0) * -57.7499 * tfactors.T923i - + 7.01981 + (5.0/3.0) * -0.582057 * tfactors.T923 + 14.3133 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_to_He4_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg25_to_He4_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 --> He4 + Ne21 - // Mg25 --> He4 + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 50.668 + -136.725 * tfactors.T9i + -29.4583 * tfactors.T913 + + 14.6328 * tfactors.T9 + -3.47392 * tfactors.T953; - // cf88r - ln_set_rate = 50.668 + -136.725 * tfactors.T9i + -29.4583 * tfactors.T913 - + 14.6328 * tfactors.T9 + -3.47392 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 136.725 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -29.4583 * tfactors.T923i + + 14.6328 + (5.0/3.0) * -3.47392 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 136.725 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -29.4583 * tfactors.T923i - + 14.6328 + (5.0/3.0) * -3.47392 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 61.1178 + -114.676 * tfactors.T9i + -46.89 * tfactors.T913i + -0.72642 * tfactors.T913 + + -0.76406 * tfactors.T9 + 0.0797483 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // cf88n - ln_set_rate = 61.1178 + -114.676 * tfactors.T9i + -46.89 * tfactors.T913i + -0.72642 * tfactors.T913 - + -0.76406 * tfactors.T9 + 0.0797483 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 114.676 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.89 * tfactors.T943i + (1.0/3.0) * -0.72642 * tfactors.T923i + + -0.76406 + (5.0/3.0) * 0.0797483 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 114.676 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.89 * tfactors.T943i + (1.0/3.0) * -0.72642 * tfactors.T923i - + -0.76406 + (5.0/3.0) * 0.0797483 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg26_to_n_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg26_to_n_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg26 --> n + Mg25 - // Mg26 --> n + Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 63.7787 + -128.778 * tfactors.T9i + 9.392 * tfactors.T913i + -36.6784 * tfactors.T913 + + 3.09567 * tfactors.T9 + -0.223882 * tfactors.T953 + 13.8852 * tfactors.lnT9; - // ks03 - ln_set_rate = 63.7787 + -128.778 * tfactors.T9i + 9.392 * tfactors.T913i + -36.6784 * tfactors.T913 - + 3.09567 * tfactors.T9 + -0.223882 * tfactors.T953 + 13.8852 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 128.778 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.392 * tfactors.T943i + (1.0/3.0) * -36.6784 * tfactors.T923i + + 3.09567 + (5.0/3.0) * -0.223882 * tfactors.T923 + 13.8852 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 128.778 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.392 * tfactors.T943i + (1.0/3.0) * -36.6784 * tfactors.T923i - + 3.09567 + (5.0/3.0) * -0.223882 * tfactors.T923 + 13.8852 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg26_to_He4_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mg26_to_He4_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg26 --> He4 + Ne22 - // Mg26 --> He4 + Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li12r + ln_set_rate = -67.5662 + -124.09 * tfactors.T9i; - // li12r - ln_set_rate = -67.5662 + -124.09 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 124.09 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 124.09 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = -9.88392 + -129.544 * tfactors.T9i + 35.9878 * tfactors.T913 + + -4.10684 * tfactors.T9 + 0.259345 * tfactors.T953; - // li12r - ln_set_rate = -9.88392 + -129.544 * tfactors.T9i + 35.9878 * tfactors.T913 - + -4.10684 * tfactors.T9 + 0.259345 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 129.544 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.9878 * tfactors.T923i + + -4.10684 + (5.0/3.0) * 0.259345 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 129.544 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.9878 * tfactors.T923i - + -4.10684 + (5.0/3.0) * 0.259345 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = -4.47312 + -129.627 * tfactors.T9i + 43.2654 * tfactors.T913 + + -18.5982 * tfactors.T9 + 2.80101 * tfactors.T953; - // li12r - ln_set_rate = -4.47312 + -129.627 * tfactors.T9i + 43.2654 * tfactors.T913 - + -18.5982 * tfactors.T9 + 2.80101 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 129.627 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 43.2654 * tfactors.T923i + + -18.5982 + (5.0/3.0) * 2.80101 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 129.627 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 43.2654 * tfactors.T923i - + -18.5982 + (5.0/3.0) * 2.80101 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = 1.08878 + -127.062 * tfactors.T9i; - // li12r - ln_set_rate = 1.08878 + -127.062 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 127.062 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 127.062 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = -18.0225 + -125.401 * tfactors.T9i; - // li12r - ln_set_rate = -18.0225 + -125.401 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 125.401 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 125.401 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al25_to_p_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al25_to_p_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al25 --> p + Mg24 - // Al25 --> p + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 30.093 + -28.8453 * tfactors.T9i + -1.57811 * tfactors.T913 + + 1.52232 * tfactors.T9 + -0.183001 * tfactors.T953; - // il10r - ln_set_rate = 30.093 + -28.8453 * tfactors.T9i + -1.57811 * tfactors.T913 - + 1.52232 * tfactors.T9 + -0.183001 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 28.8453 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.57811 * tfactors.T923i + + 1.52232 + (5.0/3.0) * -0.183001 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 28.8453 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.57811 * tfactors.T923i - + 1.52232 + (5.0/3.0) * -0.183001 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 41.7494 + -26.3608 * tfactors.T9i + -22.0227 * tfactors.T913i + 0.361297 * tfactors.T913 + + 2.61292 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 41.7494 + -26.3608 * tfactors.T9i + -22.0227 * tfactors.T913i + 0.361297 * tfactors.T913 - + 2.61292 * tfactors.T9 + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.3608 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -22.0227 * tfactors.T943i + (1.0/3.0) * 0.361297 * tfactors.T923i + + 2.61292 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.3608 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -22.0227 * tfactors.T943i + (1.0/3.0) * 0.361297 * tfactors.T923i - + 2.61292 + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al25_to_He4_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al25_to_He4_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al25 --> He4 + Na21 - // Al25 --> He4 + Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.7257 + -106.262 * tfactors.T9i + -49.9709 * tfactors.T913i + 1.63835 * tfactors.T913 + + -1.18562 * tfactors.T9 + 0.101965 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.7257 + -106.262 * tfactors.T9i + -49.9709 * tfactors.T913i + 1.63835 * tfactors.T913 - + -1.18562 * tfactors.T9 + 0.101965 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.262 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -49.9709 * tfactors.T943i + (1.0/3.0) * 1.63835 * tfactors.T923i + + -1.18562 + (5.0/3.0) * 0.101965 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.262 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -49.9709 * tfactors.T943i + (1.0/3.0) * 1.63835 * tfactors.T923i - + -1.18562 + (5.0/3.0) * 0.101965 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_to_n_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al26_to_n_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 --> n + Al25 - // Al26 --> n + Al25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 30.9667 + -131.891 * tfactors.T9i + 1.17141 * tfactors.T913 + + -0.162515 * tfactors.T9 + 0.0126275 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 30.9667 + -131.891 * tfactors.T9i + 1.17141 * tfactors.T913 - + -0.162515 * tfactors.T9 + 0.0126275 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 131.891 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.17141 * tfactors.T923i + + -0.162515 + (5.0/3.0) * 0.0126275 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 131.891 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.17141 * tfactors.T923i - + -0.162515 + (5.0/3.0) * 0.0126275 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_to_p_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al26_to_p_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 --> p + Mg25 - // Al26 --> p + Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 25.2686 + -76.4067 * tfactors.T9i + 8.46334 * tfactors.T913 + + -0.907024 * tfactors.T9 + 0.0642981 * tfactors.T953; - // il10r - ln_set_rate = 25.2686 + -76.4067 * tfactors.T9i + 8.46334 * tfactors.T913 - + -0.907024 * tfactors.T9 + 0.0642981 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 76.4067 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.46334 * tfactors.T923i + + -0.907024 + (5.0/3.0) * 0.0642981 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 76.4067 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.46334 * tfactors.T923i - + -0.907024 + (5.0/3.0) * 0.0642981 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 27.2591 + -73.903 * tfactors.T9i + -88.9297 * tfactors.T913 + + 302.948 * tfactors.T9 + -346.461 * tfactors.T953; - // il10r - ln_set_rate = 27.2591 + -73.903 * tfactors.T9i + -88.9297 * tfactors.T913 - + 302.948 * tfactors.T9 + -346.461 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 73.903 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -88.9297 * tfactors.T923i + + 302.948 + (5.0/3.0) * -346.461 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 73.903 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -88.9297 * tfactors.T923i - + 302.948 + (5.0/3.0) * -346.461 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -14.1555 + -73.6126 * tfactors.T9i; - // il10r - ln_set_rate = -14.1555 + -73.6126 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 73.6126 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 73.6126 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_to_He4_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al26_to_He4_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 --> He4 + Na22 - // Al26 --> He4 + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.7692 + -109.695 * tfactors.T9i + -50.0924 * tfactors.T913i + -0.390826 * tfactors.T913 + + -0.99531 * tfactors.T9 + 0.101354 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.7692 + -109.695 * tfactors.T9i + -50.0924 * tfactors.T913i + -0.390826 * tfactors.T913 - + -0.99531 * tfactors.T9 + 0.101354 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 109.695 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * -0.390826 * tfactors.T923i + + -0.99531 + (5.0/3.0) * 0.101354 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 109.695 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * -0.390826 * tfactors.T923i - + -0.99531 + (5.0/3.0) * 0.101354 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_to_n_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al27_to_n_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 --> n + Al26 - // Al27 --> n + Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 39.0178 + -151.532 * tfactors.T9i + -0.171158 * tfactors.T913i + -1.77283 * tfactors.T913 + + 0.206192 * tfactors.T9 + -0.0191705 * tfactors.T953 + 1.63961 * tfactors.lnT9; - // ks03 - ln_set_rate = 39.0178 + -151.532 * tfactors.T9i + -0.171158 * tfactors.T913i + -1.77283 * tfactors.T913 - + 0.206192 * tfactors.T9 + -0.0191705 * tfactors.T953 + 1.63961 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 151.532 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.171158 * tfactors.T943i + (1.0/3.0) * -1.77283 * tfactors.T923i + + 0.206192 + (5.0/3.0) * -0.0191705 * tfactors.T923 + 1.63961 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 151.532 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.171158 * tfactors.T943i + (1.0/3.0) * -1.77283 * tfactors.T923i - + 0.206192 + (5.0/3.0) * -0.0191705 * tfactors.T923 + 1.63961 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_to_p_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al27_to_p_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 --> p + Mg26 - // Al27 --> p + Mg26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 27.118 + -99.3406 * tfactors.T9i + 6.78105 * tfactors.T913 + + -1.25771 * tfactors.T9 + 0.140754 * tfactors.T953; - // il10r - ln_set_rate = 27.118 + -99.3406 * tfactors.T9i + 6.78105 * tfactors.T913 - + -1.25771 * tfactors.T9 + 0.140754 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.3406 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.78105 * tfactors.T923i + + -1.25771 + (5.0/3.0) * 0.140754 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.3406 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.78105 * tfactors.T923i - + -1.25771 + (5.0/3.0) * 0.140754 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.3594 + -96.8701 * tfactors.T9i + 35.6312 * tfactors.T913 + + -5.27265 * tfactors.T9 + 0.392932 * tfactors.T953; - // il10r - ln_set_rate = -5.3594 + -96.8701 * tfactors.T9i + 35.6312 * tfactors.T913 - + -5.27265 * tfactors.T9 + 0.392932 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 96.8701 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.6312 * tfactors.T923i + + -5.27265 + (5.0/3.0) * 0.392932 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 96.8701 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.6312 * tfactors.T923i - + -5.27265 + (5.0/3.0) * 0.392932 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -62.6356 + -96.4509 * tfactors.T9i + 251.281 * tfactors.T913 + + -730.009 * tfactors.T9 + -224.016 * tfactors.T953; - // il10r - ln_set_rate = -62.6356 + -96.4509 * tfactors.T9i + 251.281 * tfactors.T913 - + -730.009 * tfactors.T9 + -224.016 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 96.4509 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 251.281 * tfactors.T923i + + -730.009 + (5.0/3.0) * -224.016 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 96.4509 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 251.281 * tfactors.T923i - + -730.009 + (5.0/3.0) * -224.016 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_to_He4_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Al27_to_He4_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 --> He4 + Na23 - // Al27 --> He4 + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 69.2185 + -117.109 * tfactors.T9i + -50.2042 * tfactors.T913i + -1.64239 * tfactors.T913 + + -1.59995 * tfactors.T9 + 0.184933 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 69.2185 + -117.109 * tfactors.T9i + -50.2042 * tfactors.T913i + -1.64239 * tfactors.T913 - + -1.59995 * tfactors.T9 + 0.184933 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 117.109 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * -1.64239 * tfactors.T923i + + -1.59995 + (5.0/3.0) * 0.184933 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 117.109 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * -1.64239 * tfactors.T923i - + -1.59995 + (5.0/3.0) * 0.184933 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 --> p + Al27 - // Si28 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 46.5494 + -134.445 * tfactors.T9i + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 46.5494 + -134.445 * tfactors.T9i + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 134.445 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 134.445 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 111.466 + -134.832 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; - // il10r - ln_set_rate = 111.466 + -134.832 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 134.832 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 134.832 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 11.7765 + -136.349 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; - // il10r - ln_set_rate = 11.7765 + -136.349 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 136.349 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 136.349 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si28_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 --> He4 + Mg24 - // Si28 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 32.9006 + -131.488 * tfactors.T9i; - // st08r - ln_set_rate = 32.9006 + -131.488 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 131.488 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 131.488 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -25.6886 + -128.693 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; - // st08r - ln_set_rate = -25.6886 + -128.693 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 128.693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 128.693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_to_n_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si29_to_n_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 --> n + Si28 - // Si29 --> n + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02 + ln_set_rate = 31.7355 + -98.3365 * tfactors.T9i + + 1.5 * tfactors.lnT9; - // ka02 - ln_set_rate = 31.7355 + -98.3365 * tfactors.T9i - + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.3365 * tfactors.T9i * tfactors.T9i + + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.3365 * tfactors.T9i * tfactors.T9i - + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02r + ln_set_rate = 29.8758 + -98.7165 * tfactors.T9i + 7.68863 * tfactors.T913 + + -1.7991 * tfactors.T9; - // ka02r - ln_set_rate = 29.8758 + -98.7165 * tfactors.T9i + 7.68863 * tfactors.T913 - + -1.7991 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.7165 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.68863 * tfactors.T923i + + -1.7991; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.7165 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.68863 * tfactors.T923i - + -1.7991; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_to_He4_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si29_to_He4_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 --> He4 + Mg25 - // Si29 --> He4 + Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 66.3395 + -129.123 * tfactors.T9i + -53.41 * tfactors.T913i + -1.83266 * tfactors.T913 + + -0.573073 * tfactors.T9 + 0.0462678 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // cf88n - ln_set_rate = 66.3395 + -129.123 * tfactors.T9i + -53.41 * tfactors.T913i + -1.83266 * tfactors.T913 - + -0.573073 * tfactors.T9 + 0.0462678 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 129.123 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.41 * tfactors.T943i + (1.0/3.0) * -1.83266 * tfactors.T923i + + -0.573073 + (5.0/3.0) * 0.0462678 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 129.123 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.41 * tfactors.T943i + (1.0/3.0) * -1.83266 * tfactors.T923i - + -0.573073 + (5.0/3.0) * 0.0462678 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_to_n_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si30_to_n_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 --> n + Si29 - // Si30 --> n + Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02n + ln_set_rate = 36.1504 + -123.112 * tfactors.T9i + 0.650904 * tfactors.T913 + + 1.5 * tfactors.lnT9; - // ka02n - ln_set_rate = 36.1504 + -123.112 * tfactors.T9i + 0.650904 * tfactors.T913 - + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 123.112 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.650904 * tfactors.T923i + + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 123.112 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.650904 * tfactors.T923i - + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02r + ln_set_rate = 33.9492 + -123.292 * tfactors.T9i + 5.50678 * tfactors.T913 + + -2.85656 * tfactors.T9; - // ka02r - ln_set_rate = 33.9492 + -123.292 * tfactors.T9i + 5.50678 * tfactors.T913 - + -2.85656 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 123.292 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.50678 * tfactors.T923i + + -2.85656; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 123.292 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.50678 * tfactors.T923i - + -2.85656; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_to_He4_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si30_to_He4_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 --> He4 + Mg26 - // Si30 --> He4 + Mg26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 26.2068 + -142.235 * tfactors.T9i + -1.87411 * tfactors.T913 + + 3.41299 * tfactors.T9 + -0.43226 * tfactors.T953; - // cf88r - ln_set_rate = 26.2068 + -142.235 * tfactors.T9i + -1.87411 * tfactors.T913 - + 3.41299 * tfactors.T9 + -0.43226 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 142.235 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.87411 * tfactors.T923i + + 3.41299 + (5.0/3.0) * -0.43226 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 142.235 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.87411 * tfactors.T923i - + 3.41299 + (5.0/3.0) * -0.43226 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 70.7561 + -123.518 * tfactors.T9i + -53.7518 * tfactors.T913i + -4.8647 * tfactors.T913 + + -1.51467 * tfactors.T9 + 0.833333 * tfactors.lnT9; - // cf88n - ln_set_rate = 70.7561 + -123.518 * tfactors.T9i + -53.7518 * tfactors.T913i + -4.8647 * tfactors.T913 - + -1.51467 * tfactors.T9 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 123.518 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.7518 * tfactors.T943i + (1.0/3.0) * -4.8647 * tfactors.T923i + + -1.51467 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 123.518 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.7518 * tfactors.T943i + (1.0/3.0) * -4.8647 * tfactors.T923i - + -1.51467 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si31_to_n_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si31_to_n_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si31 --> n + Si30 - // Si31 --> n + Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 13.0759 + -76.3737 * tfactors.T9i + -12.3502 * tfactors.T913i + 34.6486 * tfactors.T913 + + -1.89409 * tfactors.T9 + 0.0781979 * tfactors.T953 + -12.9601 * tfactors.lnT9; - // ks03 - ln_set_rate = 13.0759 + -76.3737 * tfactors.T9i + -12.3502 * tfactors.T913i + 34.6486 * tfactors.T913 - + -1.89409 * tfactors.T9 + 0.0781979 * tfactors.T953 + -12.9601 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 76.3737 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.3502 * tfactors.T943i + (1.0/3.0) * 34.6486 * tfactors.T923i + + -1.89409 + (5.0/3.0) * 0.0781979 * tfactors.T923 + -12.9601 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 76.3737 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.3502 * tfactors.T943i + (1.0/3.0) * 34.6486 * tfactors.T923i - + -1.89409 + (5.0/3.0) * 0.0781979 * tfactors.T923 + -12.9601 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si32_to_n_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Si32_to_n_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si32 --> n + Si31 - // Si32 --> n + Si31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 36.9895 + -106.811 * tfactors.T9i + 0.154735 * tfactors.T913i + 0.304696 * tfactors.T913 + + 0.0236238 * tfactors.T9 + -0.00396359 * tfactors.T953 + 1.06783 * tfactors.lnT9; - // rath - ln_set_rate = 36.9895 + -106.811 * tfactors.T9i + 0.154735 * tfactors.T913i + 0.304696 * tfactors.T913 - + 0.0236238 * tfactors.T9 + -0.00396359 * tfactors.T953 + 1.06783 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.811 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.154735 * tfactors.T943i + (1.0/3.0) * 0.304696 * tfactors.T923i + + 0.0236238 + (5.0/3.0) * -0.00396359 * tfactors.T923 + 1.06783 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.811 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.154735 * tfactors.T943i + (1.0/3.0) * 0.304696 * tfactors.T923i - + 0.0236238 + (5.0/3.0) * -0.00396359 * tfactors.T923 + 1.06783 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P29_to_p_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P29_to_p_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P29 --> p + Si28 - // P29 --> p + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 39.1379 + -31.8984 * tfactors.T9i + -23.8173 * tfactors.T913i + 7.08203 * tfactors.T913 + + -1.44753 * tfactors.T9 + 0.0804296 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 39.1379 + -31.8984 * tfactors.T9i + -23.8173 * tfactors.T913i + 7.08203 * tfactors.T913 - + -1.44753 * tfactors.T9 + 0.0804296 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.8984 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.8173 * tfactors.T943i + (1.0/3.0) * 7.08203 * tfactors.T923i + + -1.44753 + (5.0/3.0) * 0.0804296 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.8984 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.8173 * tfactors.T943i + (1.0/3.0) * 7.08203 * tfactors.T923i - + -1.44753 + (5.0/3.0) * 0.0804296 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 28.6997 + -36.0408 * tfactors.T9i; - // il10r - ln_set_rate = 28.6997 + -36.0408 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.0408 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.0408 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P29_to_He4_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P29_to_He4_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P29 --> He4 + Al25 - // P29 --> He4 + Al25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.8779 + -121.399 * tfactors.T9i + -56.3424 * tfactors.T913i + 0.542998 * tfactors.T913 + + -0.721716 * tfactors.T9 + 0.0469712 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.8779 + -121.399 * tfactors.T9i + -56.3424 * tfactors.T913i + 0.542998 * tfactors.T913 - + -0.721716 * tfactors.T9 + 0.0469712 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 121.399 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.3424 * tfactors.T943i + (1.0/3.0) * 0.542998 * tfactors.T923i + + -0.721716 + (5.0/3.0) * 0.0469712 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 121.399 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.3424 * tfactors.T943i + (1.0/3.0) * 0.542998 * tfactors.T923i - + -0.721716 + (5.0/3.0) * 0.0469712 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_to_n_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P30_to_n_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 --> n + P29 - // P30 --> n + P29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 32.0379 + -131.355 * tfactors.T9i + 0.15555 * tfactors.T913 + + 0.155359 * tfactors.T9 + -0.0208019 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 32.0379 + -131.355 * tfactors.T9i + 0.15555 * tfactors.T913 - + 0.155359 * tfactors.T9 + -0.0208019 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 131.355 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.15555 * tfactors.T923i + + 0.155359 + (5.0/3.0) * -0.0208019 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 131.355 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.15555 * tfactors.T923i - + 0.155359 + (5.0/3.0) * -0.0208019 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_to_p_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P30_to_p_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 --> p + Si29 - // P30 --> p + Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 22.0015 + -68.2607 * tfactors.T9i + 14.0921 * tfactors.T913 + + -3.92096 * tfactors.T9 + 0.447706 * tfactors.T953; - // il10r - ln_set_rate = 22.0015 + -68.2607 * tfactors.T9i + 14.0921 * tfactors.T913 - + -3.92096 * tfactors.T9 + 0.447706 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 68.2607 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 14.0921 * tfactors.T923i + + -3.92096 + (5.0/3.0) * 0.447706 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 68.2607 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 14.0921 * tfactors.T923i - + -3.92096 + (5.0/3.0) * 0.447706 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 9.77935 + -66.1716 * tfactors.T9i; - // il10r - ln_set_rate = 9.77935 + -66.1716 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 66.1716 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 66.1716 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 39.7677 + -64.9214 * tfactors.T9i + -23.9101 * tfactors.T913i + 10.7796 * tfactors.T913 + + -3.04181 * tfactors.T9 + 0.274565 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 39.7677 + -64.9214 * tfactors.T9i + -23.9101 * tfactors.T913i + 10.7796 * tfactors.T913 - + -3.04181 * tfactors.T9 + 0.274565 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 64.9214 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.9101 * tfactors.T943i + (1.0/3.0) * 10.7796 * tfactors.T923i + + -3.04181 + (5.0/3.0) * 0.274565 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 64.9214 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.9101 * tfactors.T943i + (1.0/3.0) * 10.7796 * tfactors.T923i - + -3.04181 + (5.0/3.0) * 0.274565 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_to_He4_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P30_to_He4_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 --> He4 + Al26 - // P30 --> He4 + Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 69.1545 + -120.863 * tfactors.T9i + -56.4422 * tfactors.T913i + -2.44848 * tfactors.T913 + + -1.17578 * tfactors.T9 + 0.150757 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 69.1545 + -120.863 * tfactors.T9i + -56.4422 * tfactors.T913i + -2.44848 * tfactors.T913 - + -1.17578 * tfactors.T9 + 0.150757 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.863 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.4422 * tfactors.T943i + (1.0/3.0) * -2.44848 * tfactors.T923i + + -1.17578 + (5.0/3.0) * 0.150757 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.863 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.4422 * tfactors.T943i + (1.0/3.0) * -2.44848 * tfactors.T923i - + -1.17578 + (5.0/3.0) * 0.150757 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_to_n_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P31_to_n_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 --> n + P30 - // P31 --> n + P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8808 + -142.87 * tfactors.T9i + 0.909911 * tfactors.T913 + + -0.162367 * tfactors.T9 + 0.00668293 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8808 + -142.87 * tfactors.T9i + 0.909911 * tfactors.T913 - + -0.162367 * tfactors.T9 + 0.00668293 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 142.87 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.909911 * tfactors.T923i + + -0.162367 + (5.0/3.0) * 0.00668293 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 142.87 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.909911 * tfactors.T923i - + -0.162367 + (5.0/3.0) * 0.00668293 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_to_p_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P31_to_p_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 --> p + Si30 - // P31 --> p + Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de20r + ln_set_rate = 18.7213 + -85.9282 * tfactors.T9i + + 6.49034 * tfactors.lnT9; - // de20r - ln_set_rate = 18.7213 + -85.9282 * tfactors.T9i - + 6.49034 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.9282 * tfactors.T9i * tfactors.T9i + + 6.49034 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.9282 * tfactors.T9i * tfactors.T9i - + 6.49034 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = 4.04359 + -85.6217 * tfactors.T9i + + 2.80331 * tfactors.lnT9; - // de20r - ln_set_rate = 4.04359 + -85.6217 * tfactors.T9i - + 2.80331 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.6217 * tfactors.T9i * tfactors.T9i + + 2.80331 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.6217 * tfactors.T9i * tfactors.T9i - + 2.80331 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = -1115.38 + -180.553 * tfactors.T9i + + -895.258 * tfactors.lnT9; - // de20r - ln_set_rate = -1115.38 + -180.553 * tfactors.T9i - + -895.258 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 180.553 * tfactors.T9i * tfactors.T9i + + -895.258 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 180.553 * tfactors.T9i * tfactors.T9i - + -895.258 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = 32.9288 + -90.2661 * tfactors.T9i + + -0.070816 * tfactors.lnT9; - // de20r - ln_set_rate = 32.9288 + -90.2661 * tfactors.T9i - + -0.070816 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.2661 * tfactors.T9i * tfactors.T9i + + -0.070816 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.2661 * tfactors.T9i * tfactors.T9i - + -0.070816 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = -11.8961 + -85.2694 * tfactors.T9i + + -0.128387 * tfactors.lnT9; - // de20r - ln_set_rate = -11.8961 + -85.2694 * tfactors.T9i - + -0.128387 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.2694 * tfactors.T9i * tfactors.T9i + + -0.128387 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.2694 * tfactors.T9i * tfactors.T9i - + -0.128387 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = 35.3329 + -91.3175 * tfactors.T9i + + 0.3809 * tfactors.lnT9; - // de20r - ln_set_rate = 35.3329 + -91.3175 * tfactors.T9i - + 0.3809 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 91.3175 * tfactors.T9i * tfactors.T9i + + 0.3809 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 91.3175 * tfactors.T9i * tfactors.T9i - + 0.3809 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = 31.761 + -89.8588 * tfactors.T9i + + 2.7883 * tfactors.lnT9; - // de20r - ln_set_rate = 31.761 + -89.8588 * tfactors.T9i - + 2.7883 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 89.8588 * tfactors.T9i * tfactors.T9i + + 2.7883 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.8588 * tfactors.T9i * tfactors.T9i - + 2.7883 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = -311.303 + -85.8097 * tfactors.T9i + + -77.047 * tfactors.lnT9; - // de20r - ln_set_rate = -311.303 + -85.8097 * tfactors.T9i - + -77.047 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.8097 * tfactors.T9i * tfactors.T9i + + -77.047 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.8097 * tfactors.T9i * tfactors.T9i - + -77.047 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_to_He4_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P31_to_He4_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 --> He4 + Al27 - // P31 --> He4 + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 73.2168 + -112.206 * tfactors.T9i + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 + + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 73.2168 + -112.206 * tfactors.T9i + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 - + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 112.206 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i + + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 112.206 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i - + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_to_n_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P32_to_n_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 --> n + P31 - // P32 --> n + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02r + ln_set_rate = 32.7384 + -92.3401 * tfactors.T9i + 2.13185 * tfactors.T913; - // ka02r - ln_set_rate = 32.7384 + -92.3401 * tfactors.T9i + 2.13185 * tfactors.T913; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.3401 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.13185 * tfactors.T923i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.3401 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.13185 * tfactors.T923i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02n + ln_set_rate = 35.7859 + -92.0933 * tfactors.T9i + 0.327031 * tfactors.T913 + + 2.5 * tfactors.lnT9; - // ka02n - ln_set_rate = 35.7859 + -92.0933 * tfactors.T9i + 0.327031 * tfactors.T913 - + 2.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.0933 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.327031 * tfactors.T923i + + 2.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.0933 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.327031 * tfactors.T923i - + 2.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_to_p_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P32_to_p_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 --> p + Si31 - // P32 --> p + Si31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 124.914 + -103.703 * tfactors.T9i + 123.4 * tfactors.T913i + -231.734 * tfactors.T913 + + 14.2724 * tfactors.T9 + -0.867645 * tfactors.T953 + 109.969 * tfactors.lnT9; - // rath - ln_set_rate = 124.914 + -103.703 * tfactors.T9i + 123.4 * tfactors.T913i + -231.734 * tfactors.T913 - + 14.2724 * tfactors.T9 + -0.867645 * tfactors.T953 + 109.969 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.703 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.4 * tfactors.T943i + (1.0/3.0) * -231.734 * tfactors.T923i + + 14.2724 + (5.0/3.0) * -0.867645 * tfactors.T923 + 109.969 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.703 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.4 * tfactors.T943i + (1.0/3.0) * -231.734 * tfactors.T923i - + 14.2724 + (5.0/3.0) * -0.867645 * tfactors.T923 + 109.969 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P33_to_n_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P33_to_n_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P33 --> n + P32 - // P33 --> n + P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 34.9128 + -117.195 * tfactors.T9i + -6.14814 * tfactors.T913i + 9.5582 * tfactors.T913 + + -0.244744 * tfactors.T9 + -0.012887 * tfactors.T953 + -3.92926 * tfactors.lnT9; - // rath - ln_set_rate = 34.9128 + -117.195 * tfactors.T9i + -6.14814 * tfactors.T913i + 9.5582 * tfactors.T913 - + -0.244744 * tfactors.T9 + -0.012887 * tfactors.T953 + -3.92926 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 117.195 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.14814 * tfactors.T943i + (1.0/3.0) * 9.5582 * tfactors.T923i + + -0.244744 + (5.0/3.0) * -0.012887 * tfactors.T923 + -3.92926 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 117.195 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.14814 * tfactors.T943i + (1.0/3.0) * 9.5582 * tfactors.T923i - + -0.244744 + (5.0/3.0) * -0.012887 * tfactors.T923 + -3.92926 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P33_to_p_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_P33_to_p_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P33 --> p + Si32 - // P33 --> p + Si32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 201.719 + -114.648 * tfactors.T9i + 174.94 * tfactors.T913i + -365.37 * tfactors.T913 + + 23.1636 * tfactors.T9 + -1.3429 * tfactors.T953 + 161.575 * tfactors.lnT9; - // rath - ln_set_rate = 201.719 + -114.648 * tfactors.T9i + 174.94 * tfactors.T913i + -365.37 * tfactors.T913 - + 23.1636 * tfactors.T9 + -1.3429 * tfactors.T953 + 161.575 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 114.648 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 174.94 * tfactors.T943i + (1.0/3.0) * -365.37 * tfactors.T923i + + 23.1636 + (5.0/3.0) * -1.3429 * tfactors.T923 + 161.575 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 114.648 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 174.94 * tfactors.T943i + (1.0/3.0) * -365.37 * tfactors.T923i - + 23.1636 + (5.0/3.0) * -1.3429 * tfactors.T923 + 161.575 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 --> p + P31 - // S32 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 25.1729 + -106.637 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; - // il10r - ln_set_rate = 25.1729 + -106.637 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.637 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.637 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 21.6829 + -105.119 * tfactors.T9i; - // il10r - ln_set_rate = 21.6829 + -105.119 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 105.119 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 105.119 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 43.6109 + -102.86 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 43.6109 + -102.86 * tfactors.T9i + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.86 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.86 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S32_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 --> He4 + Si28 - // S32 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 72.813 + -80.626 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 72.813 + -80.626 * tfactors.T9i + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 80.626 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 80.626 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_to_n_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S33_to_n_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 --> n + S32 - // S33 --> n + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 34.7199 + -100.079 * tfactors.T9i + -15.0178 * tfactors.T913i + 16.3567 * tfactors.T913 + + -0.436839 * tfactors.T9 + -0.00574462 * tfactors.T953 + -8.28034 * tfactors.lnT9; - // ks03 - ln_set_rate = 34.7199 + -100.079 * tfactors.T9i + -15.0178 * tfactors.T913i + 16.3567 * tfactors.T913 - + -0.436839 * tfactors.T9 + -0.00574462 * tfactors.T953 + -8.28034 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.079 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.0178 * tfactors.T943i + (1.0/3.0) * 16.3567 * tfactors.T923i + + -0.436839 + (5.0/3.0) * -0.00574462 * tfactors.T923 + -8.28034 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.079 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.0178 * tfactors.T943i + (1.0/3.0) * 16.3567 * tfactors.T923i - + -0.436839 + (5.0/3.0) * -0.00574462 * tfactors.T923 + -8.28034 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_to_p_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S33_to_p_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 --> p + P32 - // S33 --> p + P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 130.726 + -114.848 * tfactors.T9i + 147.624 * tfactors.T913i + -261.318 * tfactors.T913 + + 14.2732 * tfactors.T9 + -0.776243 * tfactors.T953 + 128.247 * tfactors.lnT9; - // rath - ln_set_rate = 130.726 + -114.848 * tfactors.T9i + 147.624 * tfactors.T913i + -261.318 * tfactors.T913 - + 14.2732 * tfactors.T9 + -0.776243 * tfactors.T953 + 128.247 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 114.848 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 147.624 * tfactors.T943i + (1.0/3.0) * -261.318 * tfactors.T923i + + 14.2732 + (5.0/3.0) * -0.776243 * tfactors.T923 + 128.247 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 114.848 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 147.624 * tfactors.T943i + (1.0/3.0) * -261.318 * tfactors.T923i - + 14.2732 + (5.0/3.0) * -0.776243 * tfactors.T923 + 128.247 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_to_He4_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S33_to_He4_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 --> He4 + Si29 - // S33 --> He4 + Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 73.7708 + -82.576 * tfactors.T9i + -59.5755 * tfactors.T913i + 1.06274 * tfactors.T913 + + -3.07529 * tfactors.T9 + 0.372011 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 73.7708 + -82.576 * tfactors.T9i + -59.5755 * tfactors.T913i + 1.06274 * tfactors.T913 - + -3.07529 * tfactors.T9 + 0.372011 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 82.576 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.5755 * tfactors.T943i + (1.0/3.0) * 1.06274 * tfactors.T923i + + -3.07529 + (5.0/3.0) * 0.372011 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 82.576 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.5755 * tfactors.T943i + (1.0/3.0) * 1.06274 * tfactors.T923i - + -3.07529 + (5.0/3.0) * 0.372011 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_to_n_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S34_to_n_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 --> n + S33 - // S34 --> n + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 20.868 + -132.246 * tfactors.T9i + -23.1351 * tfactors.T913i + 43.3623 * tfactors.T913 + + -2.74733 * tfactors.T9 + 0.159045 * tfactors.T953 + -18.1332 * tfactors.lnT9; - // ks03 - ln_set_rate = 20.868 + -132.246 * tfactors.T9i + -23.1351 * tfactors.T913i + 43.3623 * tfactors.T913 - + -2.74733 * tfactors.T9 + 0.159045 * tfactors.T953 + -18.1332 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 132.246 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.1351 * tfactors.T943i + (1.0/3.0) * 43.3623 * tfactors.T923i + + -2.74733 + (5.0/3.0) * 0.159045 * tfactors.T923 + -18.1332 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 132.246 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.1351 * tfactors.T943i + (1.0/3.0) * 43.3623 * tfactors.T923i - + -2.74733 + (5.0/3.0) * 0.159045 * tfactors.T923 + -18.1332 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_to_p_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S34_to_p_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 --> p + P33 - // S34 --> p + P33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 198.208 + -130.135 * tfactors.T9i + 161.691 * tfactors.T913i + -350.015 * tfactors.T913 + + 24.3597 * tfactors.T9 + -1.56396 * tfactors.T953 + 151.463 * tfactors.lnT9; - // rath - ln_set_rate = 198.208 + -130.135 * tfactors.T9i + 161.691 * tfactors.T913i + -350.015 * tfactors.T913 - + 24.3597 * tfactors.T9 + -1.56396 * tfactors.T953 + 151.463 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 130.135 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 161.691 * tfactors.T943i + (1.0/3.0) * -350.015 * tfactors.T923i + + 24.3597 + (5.0/3.0) * -1.56396 * tfactors.T923 + 151.463 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 130.135 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 161.691 * tfactors.T943i + (1.0/3.0) * -350.015 * tfactors.T923i - + 24.3597 + (5.0/3.0) * -1.56396 * tfactors.T923 + 151.463 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_to_He4_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S34_to_He4_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 --> He4 + Si30 - // S34 --> He4 + Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 72.4051 + -91.9515 * tfactors.T9i + -59.6559 * tfactors.T913i + 3.70141 * tfactors.T913 + + -3.12537 * tfactors.T9 + 0.307626 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 72.4051 + -91.9515 * tfactors.T9i + -59.6559 * tfactors.T913i + 3.70141 * tfactors.T913 - + -3.12537 * tfactors.T9 + 0.307626 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 91.9515 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.6559 * tfactors.T943i + (1.0/3.0) * 3.70141 * tfactors.T923i + + -3.12537 + (5.0/3.0) * 0.307626 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 91.9515 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -59.6559 * tfactors.T943i + (1.0/3.0) * 3.70141 * tfactors.T923i - + -3.12537 + (5.0/3.0) * 0.307626 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_to_n_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S35_to_n_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 --> n + S34 - // S35 --> n + S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 63.6891 + -81.2902 * tfactors.T9i + 25.2182 * tfactors.T913i + -59.2704 * tfactors.T913 + + 4.22256 * tfactors.T9 + -0.274247 * tfactors.T953 + 26.032 * tfactors.lnT9; - // ks03 - ln_set_rate = 63.6891 + -81.2902 * tfactors.T9i + 25.2182 * tfactors.T913i + -59.2704 * tfactors.T913 - + 4.22256 * tfactors.T9 + -0.274247 * tfactors.T953 + 26.032 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 81.2902 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 25.2182 * tfactors.T943i + (1.0/3.0) * -59.2704 * tfactors.T923i + + 4.22256 + (5.0/3.0) * -0.274247 * tfactors.T923 + 26.032 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 81.2902 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 25.2182 * tfactors.T943i + (1.0/3.0) * -59.2704 * tfactors.T923i - + 4.22256 + (5.0/3.0) * -0.274247 * tfactors.T923 + 26.032 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_to_He4_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S35_to_He4_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 --> He4 + Si31 - // S35 --> He4 + Si31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -48.3481 + -98.5134 * tfactors.T9i + -98.5176 * tfactors.T913i + 171.207 * tfactors.T913 + + -14.3839 * tfactors.T9 + 0.960708 * tfactors.T953 + -60.4936 * tfactors.lnT9; - // rath - ln_set_rate = -48.3481 + -98.5134 * tfactors.T9i + -98.5176 * tfactors.T913i + 171.207 * tfactors.T913 - + -14.3839 * tfactors.T9 + 0.960708 * tfactors.T953 + -60.4936 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.5134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.5176 * tfactors.T943i + (1.0/3.0) * 171.207 * tfactors.T923i + + -14.3839 + (5.0/3.0) * 0.960708 * tfactors.T923 + -60.4936 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.5134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.5176 * tfactors.T943i + (1.0/3.0) * 171.207 * tfactors.T923i - + -14.3839 + (5.0/3.0) * 0.960708 * tfactors.T923 + -60.4936 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S36_to_n_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S36_to_n_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S36 --> n + S35 - // S36 --> n + S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.1077 + -114.757 * tfactors.T9i + -2.51293 * tfactors.T913 + + 0.668068 * tfactors.T9 + -0.0786735 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.1077 + -114.757 * tfactors.T9i + -2.51293 * tfactors.T913 - + 0.668068 * tfactors.T9 + -0.0786735 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 114.757 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.51293 * tfactors.T923i + + 0.668068 + (5.0/3.0) * -0.0786735 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 114.757 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.51293 * tfactors.T923i - + 0.668068 + (5.0/3.0) * -0.0786735 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S36_to_He4_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_S36_to_He4_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S36 --> He4 + Si32 - // S36 --> He4 + Si32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -128.015 + -104.996 * tfactors.T9i + -232.306 * tfactors.T913i + 393.438 * tfactors.T913 + + -25.2071 * tfactors.T9 + 1.4457 * tfactors.T953 + -169.971 * tfactors.lnT9; - // rath - ln_set_rate = -128.015 + -104.996 * tfactors.T9i + -232.306 * tfactors.T913i + 393.438 * tfactors.T913 - + -25.2071 * tfactors.T9 + 1.4457 * tfactors.T953 + -169.971 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 104.996 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -232.306 * tfactors.T943i + (1.0/3.0) * 393.438 * tfactors.T923i + + -25.2071 + (5.0/3.0) * 1.4457 * tfactors.T923 + -169.971 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 104.996 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -232.306 * tfactors.T943i + (1.0/3.0) * 393.438 * tfactors.T923i - + -25.2071 + (5.0/3.0) * 1.4457 * tfactors.T923 + -169.971 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl33_to_p_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl33_to_p_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl33 --> p + S32 - // Cl33 --> p + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 91.6078 + -29.4248 * tfactors.T9i + -33.7204 * tfactors.T913i + -32.7355 * tfactors.T913 + + 3.92526 * tfactors.T9 + -0.250479 * tfactors.T953; - // il10r - ln_set_rate = 91.6078 + -29.4248 * tfactors.T9i + -33.7204 * tfactors.T913i + -32.7355 * tfactors.T913 - + 3.92526 * tfactors.T9 + -0.250479 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.4248 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.7204 * tfactors.T943i + (1.0/3.0) * -32.7355 * tfactors.T923i + + 3.92526 + (5.0/3.0) * -0.250479 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.4248 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.7204 * tfactors.T943i + (1.0/3.0) * -32.7355 * tfactors.T923i - + 3.92526 + (5.0/3.0) * -0.250479 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 74.7432 + -26.4211 * tfactors.T9i + -29.7741 * tfactors.T913i + -87.4473 * tfactors.T913 + + 182.189 * tfactors.T9 + -128.625 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 74.7432 + -26.4211 * tfactors.T9i + -29.7741 * tfactors.T913i + -87.4473 * tfactors.T913 - + 182.189 * tfactors.T9 + -128.625 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.4211 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.7741 * tfactors.T943i + (1.0/3.0) * -87.4473 * tfactors.T923i + + 182.189 + (5.0/3.0) * -128.625 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.4211 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.7741 * tfactors.T943i + (1.0/3.0) * -87.4473 * tfactors.T923i - + 182.189 + (5.0/3.0) * -128.625 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -4.96497 + -27.2952 * tfactors.T9i; - // il10r - ln_set_rate = -4.96497 + -27.2952 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.2952 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.2952 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl33_to_He4_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl33_to_He4_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl33 --> He4 + P29 - // Cl33 --> He4 + P29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.203 + -75.1475 * tfactors.T9i + -62.3802 * tfactors.T913i + 0.593062 * tfactors.T913 + + -1.14226 * tfactors.T9 + 0.0934776 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.203 + -75.1475 * tfactors.T9i + -62.3802 * tfactors.T913i + 0.593062 * tfactors.T913 - + -1.14226 * tfactors.T9 + 0.0934776 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 75.1475 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.3802 * tfactors.T943i + (1.0/3.0) * 0.593062 * tfactors.T923i + + -1.14226 + (5.0/3.0) * 0.0934776 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 75.1475 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.3802 * tfactors.T943i + (1.0/3.0) * 0.593062 * tfactors.T923i - + -1.14226 + (5.0/3.0) * 0.0934776 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_to_n_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl34_to_n_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 --> n + Cl33 - // Cl34 --> n + Cl33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 33.1968 + -133.541 * tfactors.T9i + 0.921411 * tfactors.T913 + + -0.0823764 * tfactors.T9 + 0.000852746 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 33.1968 + -133.541 * tfactors.T9i + 0.921411 * tfactors.T913 - + -0.0823764 * tfactors.T9 + 0.000852746 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 133.541 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.921411 * tfactors.T923i + + -0.0823764 + (5.0/3.0) * 0.000852746 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 133.541 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.921411 * tfactors.T923i - + -0.0823764 + (5.0/3.0) * 0.000852746 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_to_p_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl34_to_p_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 --> p + S33 - // Cl34 --> p + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.5381 + -59.679 * tfactors.T9i + -26.777 * tfactors.T913i + -5.96882 * tfactors.T913 + + -1.0706 * tfactors.T9 + 0.19692 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.5381 + -59.679 * tfactors.T9i + -26.777 * tfactors.T913i + -5.96882 * tfactors.T913 - + -1.0706 * tfactors.T9 + 0.19692 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.679 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.777 * tfactors.T943i + (1.0/3.0) * -5.96882 * tfactors.T923i + + -1.0706 + (5.0/3.0) * 0.19692 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.679 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.777 * tfactors.T943i + (1.0/3.0) * -5.96882 * tfactors.T923i - + -1.0706 + (5.0/3.0) * 0.19692 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_to_He4_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl34_to_He4_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 --> He4 + P30 - // Cl34 --> He4 + P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 71.335 + -77.3338 * tfactors.T9i + -62.4643 * tfactors.T913i + -3.19028 * tfactors.T913 + + -0.832633 * tfactors.T9 + 0.0987525 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 71.335 + -77.3338 * tfactors.T9i + -62.4643 * tfactors.T913i + -3.19028 * tfactors.T913 - + -0.832633 * tfactors.T9 + 0.0987525 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.3338 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.4643 * tfactors.T943i + (1.0/3.0) * -3.19028 * tfactors.T923i + + -0.832633 + (5.0/3.0) * 0.0987525 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.3338 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.4643 * tfactors.T943i + (1.0/3.0) * -3.19028 * tfactors.T923i - + -0.832633 + (5.0/3.0) * 0.0987525 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_to_n_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl35_to_n_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 --> n + Cl34 - // Cl35 --> n + Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.9299 + -146.74 * tfactors.T9i + 0.990222 * tfactors.T913 + + -0.146686 * tfactors.T9 + 0.00560251 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.9299 + -146.74 * tfactors.T9i + 0.990222 * tfactors.T913 - + -0.146686 * tfactors.T9 + 0.00560251 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 146.74 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.990222 * tfactors.T923i + + -0.146686 + (5.0/3.0) * 0.00560251 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 146.74 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.990222 * tfactors.T923i - + -0.146686 + (5.0/3.0) * 0.00560251 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_to_p_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl35_to_p_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 --> p + S34 - // Cl35 --> p + S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // se19r + ln_set_rate = 22.7104 + -77.1013 * tfactors.T9i; - // se19r - ln_set_rate = 22.7104 + -77.1013 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.1013 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.1013 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = -37.7488 + -101.622 * tfactors.T9i + 454.53 * tfactors.T913i + -375.557 * tfactors.T913 + + 12.6533 * tfactors.T9 + -0.408677 * tfactors.T953 + 246.618 * tfactors.lnT9; - // se19r - ln_set_rate = -37.7488 + -101.622 * tfactors.T9i + 454.53 * tfactors.T913i + -375.557 * tfactors.T913 - + 12.6533 * tfactors.T9 + -0.408677 * tfactors.T953 + 246.618 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.622 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 454.53 * tfactors.T943i + (1.0/3.0) * -375.557 * tfactors.T923i + + 12.6533 + (5.0/3.0) * -0.408677 * tfactors.T923 + 246.618 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.622 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 454.53 * tfactors.T943i + (1.0/3.0) * -375.557 * tfactors.T923i - + 12.6533 + (5.0/3.0) * -0.408677 * tfactors.T923 + 246.618 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 14.5754 + -75.9594 * tfactors.T9i; - // se19r - ln_set_rate = 14.5754 + -75.9594 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 75.9594 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 75.9594 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 30.5303 + -79.6891 * tfactors.T9i; - // se19r - ln_set_rate = 30.5303 + -79.6891 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.6891 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.6891 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 7.39781 + -75.3374 * tfactors.T9i; - // se19r - ln_set_rate = 7.39781 + -75.3374 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 75.3374 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 75.3374 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 29.2773 + -79.0392 * tfactors.T9i; - // se19r - ln_set_rate = 29.2773 + -79.0392 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.0392 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.0392 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 4.33927 + -75.1053 * tfactors.T9i; - // se19r - ln_set_rate = 4.33927 + -75.1053 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 75.1053 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 75.1053 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 28.0819 + -78.5751 * tfactors.T9i; - // se19r - ln_set_rate = 28.0819 + -78.5751 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.5751 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.5751 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_to_He4_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl35_to_He4_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 --> He4 + P31 - // Cl35 --> He4 + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 74.6679 + -81.2033 * tfactors.T9i + -62.5433 * tfactors.T913i + -2.95026 * tfactors.T913 + + -0.89652 * tfactors.T9 + 0.0774126 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 74.6679 + -81.2033 * tfactors.T9i + -62.5433 * tfactors.T913i + -2.95026 * tfactors.T913 - + -0.89652 * tfactors.T9 + 0.0774126 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 81.2033 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.5433 * tfactors.T943i + (1.0/3.0) * -2.95026 * tfactors.T923i + + -0.89652 + (5.0/3.0) * 0.0774126 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 81.2033 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.5433 * tfactors.T943i + (1.0/3.0) * -2.95026 * tfactors.T923i - + -0.89652 + (5.0/3.0) * 0.0774126 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_to_n_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl36_to_n_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 --> n + Cl35 - // Cl36 --> n + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 26.2181 + -99.453 * tfactors.T9i + -11.2145 * tfactors.T913i + 23.5701 * tfactors.T913 + + -1.44059 * tfactors.T9 + 0.0755834 * tfactors.T953 + -8.8832 * tfactors.lnT9; - // ks03 - ln_set_rate = 26.2181 + -99.453 * tfactors.T9i + -11.2145 * tfactors.T913i + 23.5701 * tfactors.T913 - + -1.44059 * tfactors.T9 + 0.0755834 * tfactors.T953 + -8.8832 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.2145 * tfactors.T943i + (1.0/3.0) * 23.5701 * tfactors.T923i + + -1.44059 + (5.0/3.0) * 0.0755834 * tfactors.T923 + -8.8832 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.2145 * tfactors.T943i + (1.0/3.0) * 23.5701 * tfactors.T923i - + -1.44059 + (5.0/3.0) * 0.0755834 * tfactors.T923 + -8.8832 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_to_p_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl36_to_p_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 --> p + S35 - // Cl36 --> p + S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.5526 + -92.4237 * tfactors.T9i + -26.7922 * tfactors.T913i + -1.83516 * tfactors.T913 + + -2.03932 * tfactors.T9 + 0.322305 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.5526 + -92.4237 * tfactors.T9i + -26.7922 * tfactors.T913i + -1.83516 * tfactors.T913 - + -2.03932 * tfactors.T9 + 0.322305 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.4237 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.7922 * tfactors.T943i + (1.0/3.0) * -1.83516 * tfactors.T923i + + -2.03932 + (5.0/3.0) * 0.322305 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.4237 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.7922 * tfactors.T943i + (1.0/3.0) * -1.83516 * tfactors.T923i - + -2.03932 + (5.0/3.0) * 0.322305 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_to_He4_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl36_to_He4_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 --> He4 + P32 - // Cl36 --> He4 + P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -95.0744 + -90.1599 * tfactors.T9i + -158.272 * tfactors.T913i + 281.836 * tfactors.T913 + + -20.652 * tfactors.T9 + 1.28543 * tfactors.T953 + -111.225 * tfactors.lnT9; - // rath - ln_set_rate = -95.0744 + -90.1599 * tfactors.T9i + -158.272 * tfactors.T913i + 281.836 * tfactors.T913 - + -20.652 * tfactors.T9 + 1.28543 * tfactors.T953 + -111.225 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.1599 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -158.272 * tfactors.T943i + (1.0/3.0) * 281.836 * tfactors.T923i + + -20.652 + (5.0/3.0) * 1.28543 * tfactors.T923 + -111.225 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.1599 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -158.272 * tfactors.T943i + (1.0/3.0) * 281.836 * tfactors.T923i - + -20.652 + (5.0/3.0) * 1.28543 * tfactors.T923 + -111.225 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_to_n_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl37_to_n_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 --> n + Cl36 - // Cl37 --> n + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 38.6282 + -119.659 * tfactors.T9i + -0.17256 * tfactors.T913i + -0.577904 * tfactors.T913 + + 0.229273 * tfactors.T9 + -0.0412624 * tfactors.T953 + 1.28554 * tfactors.lnT9; - // ks03 - ln_set_rate = 38.6282 + -119.659 * tfactors.T9i + -0.17256 * tfactors.T913i + -0.577904 * tfactors.T913 - + 0.229273 * tfactors.T9 + -0.0412624 * tfactors.T953 + 1.28554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 119.659 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.17256 * tfactors.T943i + (1.0/3.0) * -0.577904 * tfactors.T923i + + 0.229273 + (5.0/3.0) * -0.0412624 * tfactors.T923 + 1.28554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 119.659 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.17256 * tfactors.T943i + (1.0/3.0) * -0.577904 * tfactors.T923i - + 0.229273 + (5.0/3.0) * -0.0412624 * tfactors.T923 + 1.28554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_to_p_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl37_to_p_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 --> p + S36 - // Cl37 --> p + S36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.2542 + -97.3203 * tfactors.T9i + -26.7991 * tfactors.T913i + 0.0770118 * tfactors.T913 + + -1.71514 * tfactors.T9 + 0.205981 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.2542 + -97.3203 * tfactors.T9i + -26.7991 * tfactors.T913i + 0.0770118 * tfactors.T913 - + -1.71514 * tfactors.T9 + 0.205981 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 97.3203 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.7991 * tfactors.T943i + (1.0/3.0) * 0.0770118 * tfactors.T923i + + -1.71514 + (5.0/3.0) * 0.205981 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 97.3203 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.7991 * tfactors.T943i + (1.0/3.0) * 0.0770118 * tfactors.T923i - + -1.71514 + (5.0/3.0) * 0.205981 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_to_He4_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cl37_to_He4_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 --> He4 + P33 - // Cl37 --> He4 + P33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 75.154 + -94.4688 * tfactors.T9i + 21.2001 * tfactors.T913i + -84.0086 * tfactors.T913 + + 1.39426 * tfactors.T9 + 0.0896178 * tfactors.T953 + 49.3178 * tfactors.lnT9; - // rath - ln_set_rate = 75.154 + -94.4688 * tfactors.T9i + 21.2001 * tfactors.T913i + -84.0086 * tfactors.T913 - + 1.39426 * tfactors.T9 + 0.0896178 * tfactors.T953 + 49.3178 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.4688 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.2001 * tfactors.T943i + (1.0/3.0) * -84.0086 * tfactors.T923i + + 1.39426 + (5.0/3.0) * 0.0896178 * tfactors.T923 + 49.3178 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.4688 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.2001 * tfactors.T943i + (1.0/3.0) * -84.0086 * tfactors.T923i - + 1.39426 + (5.0/3.0) * 0.0896178 * tfactors.T923 + 49.3178 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_p_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_p_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 --> p + Cl35 - // Ar36 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 17.2028 + -102.37 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; - // il10r - ln_set_rate = 17.2028 + -102.37 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.37 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.37 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 16.0169 + -100.729 * tfactors.T9i; - // il10r - ln_set_rate = 16.0169 + -100.729 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.729 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.729 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -17.4751 + -99.2838 * tfactors.T9i; - // il10r - ln_set_rate = -17.4751 + -99.2838 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.2838 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.2838 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.7366 + -98.7191 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 60.7366 + -98.7191 * tfactors.T9i + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.7191 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.7191 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar36_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 --> He4 + S32 - // Ar36 --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 73.8164 + -77.0627 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 73.8164 + -77.0627 * tfactors.T9i + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.0627 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.0627 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_to_n_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar37_to_n_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 --> n + Ar36 - // Ar37 --> n + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 34.2933 + -101.941 * tfactors.T9i + -3.1764 * tfactors.T913i + 5.13191 * tfactors.T913 + + -0.00639688 * tfactors.T9 + -0.0292833 * tfactors.T953 + -1.24683 * tfactors.lnT9; - // ks03 - ln_set_rate = 34.2933 + -101.941 * tfactors.T9i + -3.1764 * tfactors.T913i + 5.13191 * tfactors.T913 - + -0.00639688 * tfactors.T9 + -0.0292833 * tfactors.T953 + -1.24683 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.941 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.1764 * tfactors.T943i + (1.0/3.0) * 5.13191 * tfactors.T923i + + -0.00639688 + (5.0/3.0) * -0.0292833 * tfactors.T923 + -1.24683 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.941 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.1764 * tfactors.T943i + (1.0/3.0) * 5.13191 * tfactors.T923i - + -0.00639688 + (5.0/3.0) * -0.0292833 * tfactors.T923 + -1.24683 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_to_p_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar37_to_p_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 --> p + Cl36 - // Ar37 --> p + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.9101 + -101.131 * tfactors.T9i + -27.9044 * tfactors.T913i + -0.481331 * tfactors.T913 + + -1.50793 * tfactors.T9 + 0.182531 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.9101 + -101.131 * tfactors.T9i + -27.9044 * tfactors.T913i + -0.481331 * tfactors.T913 - + -1.50793 * tfactors.T9 + 0.182531 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.131 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.9044 * tfactors.T943i + (1.0/3.0) * -0.481331 * tfactors.T923i + + -1.50793 + (5.0/3.0) * 0.182531 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.131 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.9044 * tfactors.T943i + (1.0/3.0) * -0.481331 * tfactors.T923i - + -1.50793 + (5.0/3.0) * 0.182531 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_to_He4_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar37_to_He4_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 --> He4 + S33 - // Ar37 --> He4 + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 74.852 + -78.7549 * tfactors.T9i + -65.4446 * tfactors.T913i + 3.59607 * tfactors.T913 + + -3.40501 * tfactors.T9 + 0.363961 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 74.852 + -78.7549 * tfactors.T9i + -65.4446 * tfactors.T913i + 3.59607 * tfactors.T913 - + -3.40501 * tfactors.T9 + 0.363961 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.7549 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.4446 * tfactors.T943i + (1.0/3.0) * 3.59607 * tfactors.T923i + + -3.40501 + (5.0/3.0) * 0.363961 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.7549 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.4446 * tfactors.T943i + (1.0/3.0) * 3.59607 * tfactors.T923i - + -3.40501 + (5.0/3.0) * 0.363961 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_to_n_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar38_to_n_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 --> n + Ar37 - // Ar38 --> n + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 39.8454 + -137.376 * tfactors.T9i + -0.825362 * tfactors.T913 + + 0.336634 * tfactors.T9 + -0.0509617 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 39.8454 + -137.376 * tfactors.T9i + -0.825362 * tfactors.T913 - + 0.336634 * tfactors.T9 + -0.0509617 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 137.376 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.825362 * tfactors.T923i + + 0.336634 + (5.0/3.0) * -0.0509617 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 137.376 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.825362 * tfactors.T923i - + 0.336634 + (5.0/3.0) * -0.0509617 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_to_p_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar38_to_p_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 --> p + Cl37 - // Ar38 --> p + Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.0616 + -118.853 * tfactors.T9i + -27.9113 * tfactors.T913i + 0.282028 * tfactors.T913 + + -1.80122 * tfactors.T9 + 0.21751 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.0616 + -118.853 * tfactors.T9i + -27.9113 * tfactors.T913i + 0.282028 * tfactors.T913 - + -1.80122 * tfactors.T9 + 0.21751 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 118.853 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.9113 * tfactors.T943i + (1.0/3.0) * 0.282028 * tfactors.T923i + + -1.80122 + (5.0/3.0) * 0.21751 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 118.853 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.9113 * tfactors.T943i + (1.0/3.0) * 0.282028 * tfactors.T923i - + -1.80122 + (5.0/3.0) * 0.21751 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_to_He4_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar38_to_He4_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 --> He4 + S34 - // Ar38 --> He4 + S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cn18 + ln_set_rate = 253.654 + -101.617 * tfactors.T9i + 635.332 * tfactors.T913i + -902.05 * tfactors.T913 + + 42.5623 * tfactors.T9 + -2.08434 * tfactors.T953 + 478.85 * tfactors.lnT9; - // cn18 - ln_set_rate = 253.654 + -101.617 * tfactors.T9i + 635.332 * tfactors.T913i + -902.05 * tfactors.T913 - + 42.5623 * tfactors.T9 + -2.08434 * tfactors.T953 + 478.85 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.617 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 635.332 * tfactors.T943i + (1.0/3.0) * -902.05 * tfactors.T923i + + 42.5623 + (5.0/3.0) * -2.08434 * tfactors.T923 + 478.85 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.617 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 635.332 * tfactors.T943i + (1.0/3.0) * -902.05 * tfactors.T923i - + 42.5623 + (5.0/3.0) * -2.08434 * tfactors.T923 + 478.85 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_to_n_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar39_to_n_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 --> n + Ar38 - // Ar39 --> n + Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 36.3134 + -76.6032 * tfactors.T9i + 2.38837 * tfactors.T913i + -4.76536 * tfactors.T913 + + 0.701311 * tfactors.T9 + -0.0705226 * tfactors.T953 + 3.30517 * tfactors.lnT9; - // ks03 - ln_set_rate = 36.3134 + -76.6032 * tfactors.T9i + 2.38837 * tfactors.T913i + -4.76536 * tfactors.T913 - + 0.701311 * tfactors.T9 + -0.0705226 * tfactors.T953 + 3.30517 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 76.6032 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.38837 * tfactors.T943i + (1.0/3.0) * -4.76536 * tfactors.T923i + + 0.701311 + (5.0/3.0) * -0.0705226 * tfactors.T923 + 3.30517 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 76.6032 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.38837 * tfactors.T943i + (1.0/3.0) * -4.76536 * tfactors.T923i - + 0.701311 + (5.0/3.0) * -0.0705226 * tfactors.T923 + 3.30517 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_to_He4_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar39_to_He4_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 --> He4 + S35 - // Ar39 --> He4 + S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 74.3976 + -79.1493 * tfactors.T9i + -65.58 * tfactors.T913i + 0.163229 * tfactors.T913 + + -2.20138 * tfactors.T9 + 0.232938 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 74.3976 + -79.1493 * tfactors.T9i + -65.58 * tfactors.T913i + 0.163229 * tfactors.T913 - + -2.20138 * tfactors.T9 + 0.232938 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.1493 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.58 * tfactors.T943i + (1.0/3.0) * 0.163229 * tfactors.T923i + + -2.20138 + (5.0/3.0) * 0.232938 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.1493 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.58 * tfactors.T943i + (1.0/3.0) * 0.163229 * tfactors.T923i - + -2.20138 + (5.0/3.0) * 0.232938 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar40_to_n_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar40_to_n_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar40 --> n + Ar39 - // Ar40 --> n + Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 41.5737 + -114.56 * tfactors.T9i + 2.09789 * tfactors.T913i + -4.77242 * tfactors.T913 + + 0.64032 * tfactors.T9 + -0.0694485 * tfactors.T953 + 3.01561 * tfactors.lnT9; - // ks03 - ln_set_rate = 41.5737 + -114.56 * tfactors.T9i + 2.09789 * tfactors.T913i + -4.77242 * tfactors.T913 - + 0.64032 * tfactors.T9 + -0.0694485 * tfactors.T953 + 3.01561 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 114.56 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.09789 * tfactors.T943i + (1.0/3.0) * -4.77242 * tfactors.T923i + + 0.64032 + (5.0/3.0) * -0.0694485 * tfactors.T923 + 3.01561 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 114.56 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.09789 * tfactors.T943i + (1.0/3.0) * -4.77242 * tfactors.T923i - + 0.64032 + (5.0/3.0) * -0.0694485 * tfactors.T923 + 3.01561 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar40_to_He4_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ar40_to_He4_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar40 --> He4 + S36 - // Ar40 --> He4 + S36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 74.9207 + -78.9192 * tfactors.T9i + -65.6425 * tfactors.T913i + 4.12861 * tfactors.T913 + + -3.33119 * tfactors.T9 + 0.31889 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 74.9207 + -78.9192 * tfactors.T9i + -65.6425 * tfactors.T913i + 4.12861 * tfactors.T913 - + -3.33119 * tfactors.T9 + 0.31889 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.9192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.6425 * tfactors.T943i + (1.0/3.0) * 4.12861 * tfactors.T923i + + -3.33119 + (5.0/3.0) * 0.31889 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.9192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.6425 * tfactors.T943i + (1.0/3.0) * 4.12861 * tfactors.T923i - + -3.33119 + (5.0/3.0) * 0.31889 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K37_to_p_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K37_to_p_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K37 --> p + Ar36 - // K37 --> p + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 26.976 + -25.1829 * tfactors.T9i; - // il10r - ln_set_rate = 26.976 + -25.1829 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.1829 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.1829 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 25.4611 + -30.5381 * tfactors.T9i + 7.50962 * tfactors.T913 + + -1.68675 * tfactors.T9 + 0.189725 * tfactors.T953; - // il10r - ln_set_rate = 25.4611 + -30.5381 * tfactors.T9i + 7.50962 * tfactors.T913 - + -1.68675 * tfactors.T9 + 0.189725 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.5381 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.50962 * tfactors.T923i + + -1.68675 + (5.0/3.0) * 0.189725 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.5381 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.50962 * tfactors.T923i - + -1.68675 + (5.0/3.0) * 0.189725 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 43.7706 + -21.5578 * tfactors.T9i + -28.9682 * tfactors.T913i + + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // il10n - ln_set_rate = 43.7706 + -21.5578 * tfactors.T9i + -28.9682 * tfactors.T913i - + -1.0 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.5578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -28.9682 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.5578 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -28.9682 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K37_to_He4_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K37_to_He4_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K37 --> He4 + Cl33 - // K37 --> He4 + Cl33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 71.6063 + -72.1995 * tfactors.T9i + -68.1442 * tfactors.T913i + -2.72746 * tfactors.T913 + + -0.317537 * tfactors.T9 + 0.0162782 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 71.6063 + -72.1995 * tfactors.T9i + -68.1442 * tfactors.T913i + -2.72746 * tfactors.T913 - + -0.317537 * tfactors.T9 + 0.0162782 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 72.1995 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.1442 * tfactors.T943i + (1.0/3.0) * -2.72746 * tfactors.T923i + + -0.317537 + (5.0/3.0) * 0.0162782 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 72.1995 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.1442 * tfactors.T943i + (1.0/3.0) * -2.72746 * tfactors.T923i - + -0.317537 + (5.0/3.0) * 0.0162782 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K38_to_n_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K38_to_n_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K38 --> n + K37 - // K38 --> n + K37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 32.0874 + -140.087 * tfactors.T9i + 0.538174 * tfactors.T913 + + -0.0208079 * tfactors.T9 + -0.00404949 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 32.0874 + -140.087 * tfactors.T9i + 0.538174 * tfactors.T913 - + -0.0208079 * tfactors.T9 + -0.00404949 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 140.087 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.538174 * tfactors.T923i + + -0.0208079 + (5.0/3.0) * -0.00404949 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 140.087 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.538174 * tfactors.T923i - + -0.0208079 + (5.0/3.0) * -0.00404949 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K38_to_p_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K38_to_p_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K38 --> p + Ar37 - // K38 --> p + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.8316 + -59.6703 * tfactors.T9i + -28.9954 * tfactors.T913i + -5.57966 * tfactors.T913 + + -1.27516 * tfactors.T9 + 0.217568 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.8316 + -59.6703 * tfactors.T9i + -28.9954 * tfactors.T913i + -5.57966 * tfactors.T913 - + -1.27516 * tfactors.T9 + 0.217568 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.6703 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -28.9954 * tfactors.T943i + (1.0/3.0) * -5.57966 * tfactors.T923i + + -1.27516 + (5.0/3.0) * 0.217568 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.6703 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -28.9954 * tfactors.T943i + (1.0/3.0) * -5.57966 * tfactors.T923i - + -1.27516 + (5.0/3.0) * 0.217568 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K38_to_He4_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K38_to_He4_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K38 --> He4 + Cl34 - // K38 --> He4 + Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 70.9382 + -78.7462 * tfactors.T9i + -68.2165 * tfactors.T913i + -2.18792 * tfactors.T913 + + -1.25322 * tfactors.T9 + 0.140901 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 70.9382 + -78.7462 * tfactors.T9i + -68.2165 * tfactors.T913i + -2.18792 * tfactors.T913 - + -1.25322 * tfactors.T9 + 0.140901 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.7462 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.2165 * tfactors.T943i + (1.0/3.0) * -2.18792 * tfactors.T923i + + -1.25322 + (5.0/3.0) * 0.140901 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.7462 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.2165 * tfactors.T943i + (1.0/3.0) * -2.18792 * tfactors.T923i - + -1.25322 + (5.0/3.0) * 0.140901 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_to_n_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K39_to_n_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 --> n + K38 - // K39 --> n + K38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.986 + -151.759 * tfactors.T9i + -0.161985 * tfactors.T913 + + 0.187817 * tfactors.T9 + -0.0320464 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.986 + -151.759 * tfactors.T9i + -0.161985 * tfactors.T913 - + 0.187817 * tfactors.T9 + -0.0320464 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 151.759 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.161985 * tfactors.T923i + + 0.187817 + (5.0/3.0) * -0.0320464 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 151.759 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.161985 * tfactors.T923i - + 0.187817 + (5.0/3.0) * -0.0320464 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_to_p_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K39_to_p_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 --> p + Ar38 - // K39 --> p + Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.5639 + -74.0533 * tfactors.T9i + -29.0021 * tfactors.T913i + -0.525968 * tfactors.T913 + + -1.94216 * tfactors.T9 + 0.267346 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.5639 + -74.0533 * tfactors.T9i + -29.0021 * tfactors.T913i + -0.525968 * tfactors.T913 - + -1.94216 * tfactors.T9 + 0.267346 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.0533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0021 * tfactors.T943i + (1.0/3.0) * -0.525968 * tfactors.T923i + + -1.94216 + (5.0/3.0) * 0.267346 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.0533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0021 * tfactors.T943i + (1.0/3.0) * -0.525968 * tfactors.T923i - + -1.94216 + (5.0/3.0) * 0.267346 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_to_He4_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K39_to_He4_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 --> He4 + Cl35 - // K39 --> He4 + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 77.6477 + -83.7658 * tfactors.T9i + -68.2848 * tfactors.T913i + 0.0178545 * tfactors.T913 + + -2.06783 * tfactors.T9 + 0.199659 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 77.6477 + -83.7658 * tfactors.T9i + -68.2848 * tfactors.T913i + 0.0178545 * tfactors.T913 - + -2.06783 * tfactors.T9 + 0.199659 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 83.7658 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.2848 * tfactors.T943i + (1.0/3.0) * 0.0178545 * tfactors.T923i + + -2.06783 + (5.0/3.0) * 0.199659 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 83.7658 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.2848 * tfactors.T943i + (1.0/3.0) * 0.0178545 * tfactors.T923i - + -2.06783 + (5.0/3.0) * 0.199659 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_to_n_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K40_to_n_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 --> n + K39 - // K40 --> n + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 40.473 + -90.4754 * tfactors.T9i + -2.2227 * tfactors.T913i + -1.88579 * tfactors.T913 + + 0.714904 * tfactors.T9 + -0.0774902 * tfactors.T953 + 0.640527 * tfactors.lnT9; - // ks03 - ln_set_rate = 40.473 + -90.4754 * tfactors.T9i + -2.2227 * tfactors.T913i + -1.88579 * tfactors.T913 - + 0.714904 * tfactors.T9 + -0.0774902 * tfactors.T953 + 0.640527 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.4754 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.2227 * tfactors.T943i + (1.0/3.0) * -1.88579 * tfactors.T923i + + 0.714904 + (5.0/3.0) * -0.0774902 * tfactors.T923 + 0.640527 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.4754 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.2227 * tfactors.T943i + (1.0/3.0) * -1.88579 * tfactors.T923i - + 0.714904 + (5.0/3.0) * -0.0774902 * tfactors.T923 + 0.640527 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_to_p_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K40_to_p_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 --> p + Ar39 - // K40 --> p + Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.5373 + -87.9872 * tfactors.T9i + -29.0085 * tfactors.T913i + -2.81753 * tfactors.T913 + + -0.757962 * tfactors.T9 + 0.099462 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.5373 + -87.9872 * tfactors.T9i + -29.0085 * tfactors.T913i + -2.81753 * tfactors.T913 - + -0.757962 * tfactors.T9 + 0.099462 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 87.9872 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0085 * tfactors.T943i + (1.0/3.0) * -2.81753 * tfactors.T923i + + -0.757962 + (5.0/3.0) * 0.099462 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.9872 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0085 * tfactors.T943i + (1.0/3.0) * -2.81753 * tfactors.T923i - + -0.757962 + (5.0/3.0) * 0.099462 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_to_He4_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K40_to_He4_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 --> He4 + Cl36 - // K40 --> He4 + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 80.0619 + -74.7128 * tfactors.T9i + -68.3499 * tfactors.T913i + -4.69433 * tfactors.T913 + + -1.24812 * tfactors.T9 + 0.169306 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 80.0619 + -74.7128 * tfactors.T9i + -68.3499 * tfactors.T913i + -4.69433 * tfactors.T913 - + -1.24812 * tfactors.T9 + 0.169306 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.7128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.3499 * tfactors.T943i + (1.0/3.0) * -4.69433 * tfactors.T923i + + -1.24812 + (5.0/3.0) * 0.169306 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.7128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.3499 * tfactors.T943i + (1.0/3.0) * -4.69433 * tfactors.T923i - + -1.24812 + (5.0/3.0) * 0.169306 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_to_n_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K41_to_n_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 --> n + K40 - // K41 --> n + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 41.9339 + -117.19 * tfactors.T9i + 1.90527 * tfactors.T913i + -4.8523 * tfactors.T913 + + 0.552061 * tfactors.T9 + -0.0570777 * tfactors.T953 + 2.96777 * tfactors.lnT9; - // ks03 - ln_set_rate = 41.9339 + -117.19 * tfactors.T9i + 1.90527 * tfactors.T913i + -4.8523 * tfactors.T913 - + 0.552061 * tfactors.T9 + -0.0570777 * tfactors.T953 + 2.96777 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 117.19 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.90527 * tfactors.T943i + (1.0/3.0) * -4.8523 * tfactors.T923i + + 0.552061 + (5.0/3.0) * -0.0570777 * tfactors.T923 + 2.96777 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 117.19 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.90527 * tfactors.T943i + (1.0/3.0) * -4.8523 * tfactors.T923i - + 0.552061 + (5.0/3.0) * -0.0570777 * tfactors.T923 + 2.96777 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_to_p_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K41_to_p_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 --> p + Ar40 - // K41 --> p + Ar40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.6932 + -90.6097 * tfactors.T9i + -29.0146 * tfactors.T913i + 0.65181 * tfactors.T913 + + -1.50557 * tfactors.T9 + 0.139974 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.6932 + -90.6097 * tfactors.T9i + -29.0146 * tfactors.T913i + 0.65181 * tfactors.T913 - + -1.50557 * tfactors.T9 + 0.139974 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.6097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0146 * tfactors.T943i + (1.0/3.0) * 0.65181 * tfactors.T923i + + -1.50557 + (5.0/3.0) * 0.139974 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.6097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0146 * tfactors.T943i + (1.0/3.0) * 0.65181 * tfactors.T923i - + -1.50557 + (5.0/3.0) * 0.139974 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_to_He4_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_K41_to_He4_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 --> He4 + Cl37 - // K41 --> He4 + Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 76.1843 + -72.2085 * tfactors.T9i + -68.4116 * tfactors.T913i + 3.55194 * tfactors.T913 + + -2.84942 * tfactors.T9 + 0.24958 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 76.1843 + -72.2085 * tfactors.T9i + -68.4116 * tfactors.T913i + 3.55194 * tfactors.T913 - + -2.84942 * tfactors.T9 + 0.24958 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 72.2085 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.4116 * tfactors.T943i + (1.0/3.0) * 3.55194 * tfactors.T923i + + -2.84942 + (5.0/3.0) * 0.24958 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 72.2085 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.4116 * tfactors.T943i + (1.0/3.0) * 3.55194 * tfactors.T923i - + -2.84942 + (5.0/3.0) * 0.24958 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_p_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_p_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 --> p + K39 - // Ca40 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 2786.44 + -101.871 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1137.69 * tfactors.lnT9; - // lo18r - ln_set_rate = 2786.44 + -101.871 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1137.69 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.871 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1137.69 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.871 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1137.69 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 613.153 + -109.213 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 566.426 * tfactors.lnT9; - // lo18r - ln_set_rate = 613.153 + -109.213 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 566.426 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 109.213 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 566.426 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 109.213 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 566.426 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 127.306 + -98.3134 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; - // lo18r - ln_set_rate = 127.306 + -98.3134 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 60.7367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.3134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.3134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 60.7367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca40_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 --> He4 + Ar36 - // Ca40 --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 77.2826 + -81.6916 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 77.2826 + -81.6916 * tfactors.T9i + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 81.6916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 81.6916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_to_n_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca41_to_n_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 --> n + Ca40 - // Ca41 --> n + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 24.6353 + -96.9664 * tfactors.T9i + -9.18636 * tfactors.T913i + 21.0095 * tfactors.T913 + + -1.33326 * tfactors.T9 + 0.0769347 * tfactors.T953 + -7.16245 * tfactors.lnT9; - // ks03 - ln_set_rate = 24.6353 + -96.9664 * tfactors.T9i + -9.18636 * tfactors.T913i + 21.0095 * tfactors.T913 - + -1.33326 * tfactors.T9 + 0.0769347 * tfactors.T953 + -7.16245 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 96.9664 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -9.18636 * tfactors.T943i + (1.0/3.0) * 21.0095 * tfactors.T923i + + -1.33326 + (5.0/3.0) * 0.0769347 * tfactors.T923 + -7.16245 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 96.9664 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -9.18636 * tfactors.T943i + (1.0/3.0) * 21.0095 * tfactors.T923i - + -1.33326 + (5.0/3.0) * 0.0769347 * tfactors.T923 + -7.16245 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_to_p_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca41_to_p_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 --> p + K40 - // Ca41 --> p + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.8838 + -103.182 * tfactors.T9i + -30.0795 * tfactors.T913i + 0.0447475 * tfactors.T913 + + -1.69565 * tfactors.T9 + 0.20173 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.8838 + -103.182 * tfactors.T9i + -30.0795 * tfactors.T913i + 0.0447475 * tfactors.T913 - + -1.69565 * tfactors.T9 + 0.20173 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.182 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 0.0447475 * tfactors.T923i + + -1.69565 + (5.0/3.0) * 0.20173 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.182 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 0.0447475 * tfactors.T923i - + -1.69565 + (5.0/3.0) * 0.20173 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_to_He4_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca41_to_He4_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 --> He4 + Ar37 - // Ca41 --> He4 + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 76.9971 + -76.764 * tfactors.T9i + -71.0688 * tfactors.T913i + 2.71847 * tfactors.T913 + + -3.17333 * tfactors.T9 + 0.335323 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 76.9971 + -76.764 * tfactors.T9i + -71.0688 * tfactors.T913i + 2.71847 * tfactors.T913 - + -3.17333 * tfactors.T9 + 0.335323 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 76.764 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0688 * tfactors.T943i + (1.0/3.0) * 2.71847 * tfactors.T923i + + -3.17333 + (5.0/3.0) * 0.335323 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 76.764 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.0688 * tfactors.T943i + (1.0/3.0) * 2.71847 * tfactors.T923i - + -3.17333 + (5.0/3.0) * 0.335323 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_to_n_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca42_to_n_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 --> n + Ca41 - // Ca42 --> n + Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 46.1952 + -133.264 * tfactors.T9i + 3.7037 * tfactors.T913i + -9.99246 * tfactors.T913 + + 1.05894 * tfactors.T9 + -0.0978564 * tfactors.T953 + 4.93604 * tfactors.lnT9; - // ks03 - ln_set_rate = 46.1952 + -133.264 * tfactors.T9i + 3.7037 * tfactors.T913i + -9.99246 * tfactors.T913 - + 1.05894 * tfactors.T9 + -0.0978564 * tfactors.T953 + 4.93604 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 133.264 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.7037 * tfactors.T943i + (1.0/3.0) * -9.99246 * tfactors.T923i + + 1.05894 + (5.0/3.0) * -0.0978564 * tfactors.T923 + 4.93604 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 133.264 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.7037 * tfactors.T943i + (1.0/3.0) * -9.99246 * tfactors.T923i - + 1.05894 + (5.0/3.0) * -0.0978564 * tfactors.T923 + 4.93604 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_to_p_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca42_to_p_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 --> p + K41 - // Ca42 --> p + K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM86n + ln_set_rate = 57.2573 + -119.259 * tfactors.T9i + -30.08 * tfactors.T913i + 2.93877 * tfactors.T913 + + 2.77388 * tfactors.T9 + -4.8284 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // SM86n - ln_set_rate = 57.2573 + -119.259 * tfactors.T9i + -30.08 * tfactors.T913i + 2.93877 * tfactors.T913 - + 2.77388 * tfactors.T9 + -4.8284 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 119.259 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.08 * tfactors.T943i + (1.0/3.0) * 2.93877 * tfactors.T923i + + 2.77388 + (5.0/3.0) * -4.8284 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 119.259 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.08 * tfactors.T943i + (1.0/3.0) * 2.93877 * tfactors.T923i - + 2.77388 + (5.0/3.0) * -4.8284 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM86r + ln_set_rate = 41.0777 + -131.259 * tfactors.T9i + -1.68317 * tfactors.T913 + + 0.692171 * tfactors.T9 + -0.0831029 * tfactors.T953; - // SM86r - ln_set_rate = 41.0777 + -131.259 * tfactors.T9i + -1.68317 * tfactors.T913 - + 0.692171 * tfactors.T9 + -0.0831029 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 131.259 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.68317 * tfactors.T923i + + 0.692171 + (5.0/3.0) * -0.0831029 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 131.259 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.68317 * tfactors.T923i - + 0.692171 + (5.0/3.0) * -0.0831029 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_to_He4_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca42_to_He4_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 --> He4 + Ar38 - // Ca42 --> He4 + Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 77.5813 + -72.6145 * tfactors.T9i + -71.1296 * tfactors.T913i + 2.75299 * tfactors.T913 + + -2.43406 * tfactors.T9 + 0.199511 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 77.5813 + -72.6145 * tfactors.T9i + -71.1296 * tfactors.T913i + 2.75299 * tfactors.T913 - + -2.43406 * tfactors.T9 + 0.199511 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 72.6145 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.1296 * tfactors.T943i + (1.0/3.0) * 2.75299 * tfactors.T923i + + -2.43406 + (5.0/3.0) * 0.199511 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 72.6145 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.1296 * tfactors.T943i + (1.0/3.0) * 2.75299 * tfactors.T923i - + -2.43406 + (5.0/3.0) * 0.199511 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_to_n_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca43_to_n_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 --> n + Ca42 - // Ca43 --> n + Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 37.587 + -92.0254 * tfactors.T9i + -2.75867 * tfactors.T913i + 0.860871 * tfactors.T913 + + 0.583467 * tfactors.T9 + -0.094473 * tfactors.T953 + -0.09357 * tfactors.lnT9; - // ks03 - ln_set_rate = 37.587 + -92.0254 * tfactors.T9i + -2.75867 * tfactors.T913i + 0.860871 * tfactors.T913 - + 0.583467 * tfactors.T9 + -0.094473 * tfactors.T953 + -0.09357 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.0254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.75867 * tfactors.T943i + (1.0/3.0) * 0.860871 * tfactors.T923i + + 0.583467 + (5.0/3.0) * -0.094473 * tfactors.T923 + -0.09357 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.0254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.75867 * tfactors.T943i + (1.0/3.0) * 0.860871 * tfactors.T923i - + 0.583467 + (5.0/3.0) * -0.094473 * tfactors.T923 + -0.09357 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_to_He4_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca43_to_He4_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 --> He4 + Ar39 - // Ca43 --> He4 + Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 77.9582 + -88.096 * tfactors.T9i + -71.1879 * tfactors.T913i + 2.58821 * tfactors.T913 + + -3.67809 * tfactors.T9 + 0.431537 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 77.9582 + -88.096 * tfactors.T9i + -71.1879 * tfactors.T913i + 2.58821 * tfactors.T913 - + -3.67809 * tfactors.T9 + 0.431537 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 88.096 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.1879 * tfactors.T943i + (1.0/3.0) * 2.58821 * tfactors.T923i + + -3.67809 + (5.0/3.0) * 0.431537 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.096 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.1879 * tfactors.T943i + (1.0/3.0) * 2.58821 * tfactors.T923i - + -3.67809 + (5.0/3.0) * 0.431537 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_to_n_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca44_to_n_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 --> n + Ca43 - // Ca44 --> n + Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 36.4384 + -129.179 * tfactors.T9i + -1.26512 * tfactors.T913i + 6.74718 * tfactors.T913 + + -0.673582 * tfactors.T9 + 0.0412245 * tfactors.T953 + -0.80362 * tfactors.lnT9; - // ks03 - ln_set_rate = 36.4384 + -129.179 * tfactors.T9i + -1.26512 * tfactors.T913i + 6.74718 * tfactors.T913 - + -0.673582 * tfactors.T9 + 0.0412245 * tfactors.T953 + -0.80362 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 129.179 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.26512 * tfactors.T943i + (1.0/3.0) * 6.74718 * tfactors.T923i + + -0.673582 + (5.0/3.0) * 0.0412245 * tfactors.T923 + -0.80362 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 129.179 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.26512 * tfactors.T943i + (1.0/3.0) * 6.74718 * tfactors.T923i - + -0.673582 + (5.0/3.0) * 0.0412245 * tfactors.T923 + -0.80362 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_to_He4_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca44_to_He4_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 --> He4 + Ar40 - // Ca44 --> He4 + Ar40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 76.1857 + -102.74 * tfactors.T9i + -71.2432 * tfactors.T913i + 6.75101 * tfactors.T913 + + -5.53183 * tfactors.T9 + 0.667023 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 76.1857 + -102.74 * tfactors.T9i + -71.2432 * tfactors.T913i + 6.75101 * tfactors.T913 - + -5.53183 * tfactors.T9 + 0.667023 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.74 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.2432 * tfactors.T943i + (1.0/3.0) * 6.75101 * tfactors.T923i + + -5.53183 + (5.0/3.0) * 0.667023 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.74 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -71.2432 * tfactors.T943i + (1.0/3.0) * 6.75101 * tfactors.T923i - + -5.53183 + (5.0/3.0) * 0.667023 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca45_to_n_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca45_to_n_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca45 --> n + Ca44 - // Ca45 --> n + Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 23.6235 + -85.8488 * tfactors.T9i + -17.5809 * tfactors.T913i + 30.835 * tfactors.T913 + + -1.52658 * tfactors.T9 + 0.0495163 * tfactors.T953 + -13.0794 * tfactors.lnT9; - // ks03 - ln_set_rate = 23.6235 + -85.8488 * tfactors.T9i + -17.5809 * tfactors.T913i + 30.835 * tfactors.T913 - + -1.52658 * tfactors.T9 + 0.0495163 * tfactors.T953 + -13.0794 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.8488 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -17.5809 * tfactors.T943i + (1.0/3.0) * 30.835 * tfactors.T923i + + -1.52658 + (5.0/3.0) * 0.0495163 * tfactors.T923 + -13.0794 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.8488 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -17.5809 * tfactors.T943i + (1.0/3.0) * 30.835 * tfactors.T923i - + -1.52658 + (5.0/3.0) * 0.0495163 * tfactors.T923 + -13.0794 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca46_to_n_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca46_to_n_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca46 --> n + Ca45 - // Ca46 --> n + Ca45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 48.3638 + -120.708 * tfactors.T9i + 5.01526 * tfactors.T913i + -14.4226 * tfactors.T913 + + 1.37087 * tfactors.T9 + -0.111582 * tfactors.T953 + 6.37661 * tfactors.lnT9; - // ks03 - ln_set_rate = 48.3638 + -120.708 * tfactors.T9i + 5.01526 * tfactors.T913i + -14.4226 * tfactors.T913 - + 1.37087 * tfactors.T9 + -0.111582 * tfactors.T953 + 6.37661 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.708 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.01526 * tfactors.T943i + (1.0/3.0) * -14.4226 * tfactors.T923i + + 1.37087 + (5.0/3.0) * -0.111582 * tfactors.T923 + 6.37661 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.708 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.01526 * tfactors.T943i + (1.0/3.0) * -14.4226 * tfactors.T923i - + 1.37087 + (5.0/3.0) * -0.111582 * tfactors.T923 + 6.37661 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca47_to_n_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca47_to_n_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca47 --> n + Ca46 - // Ca47 --> n + Ca46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 20.7079 + -84.2309 * tfactors.T9i + -19.7417 * tfactors.T913i + 35.2401 * tfactors.T913 + + -1.61262 * tfactors.T9 + 0.0443701 * tfactors.T953 + -15.2507 * tfactors.lnT9; - // ks03 - ln_set_rate = 20.7079 + -84.2309 * tfactors.T9i + -19.7417 * tfactors.T913i + 35.2401 * tfactors.T913 - + -1.61262 * tfactors.T9 + 0.0443701 * tfactors.T953 + -15.2507 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.2309 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.7417 * tfactors.T943i + (1.0/3.0) * 35.2401 * tfactors.T923i + + -1.61262 + (5.0/3.0) * 0.0443701 * tfactors.T923 + -15.2507 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.2309 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.7417 * tfactors.T943i + (1.0/3.0) * 35.2401 * tfactors.T923i - + -1.61262 + (5.0/3.0) * 0.0443701 * tfactors.T923 + -15.2507 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca48_to_n_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ca48_to_n_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca48 --> n + Ca47 - // Ca48 --> n + Ca47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.9752 + -115.41 * tfactors.T9i + -2.88636 * tfactors.T913 + + 0.79581 * tfactors.T9 + -0.0872236 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.9752 + -115.41 * tfactors.T9i + -2.88636 * tfactors.T913 - + 0.79581 * tfactors.T9 + -0.0872236 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 115.41 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.88636 * tfactors.T923i + + 0.79581 + (5.0/3.0) * -0.0872236 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 115.41 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.88636 * tfactors.T923i - + 0.79581 + (5.0/3.0) * -0.0872236 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_to_p_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc43_to_p_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 --> p + Ca42 - // Sc43 --> p + Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.4102 + -57.2082 * tfactors.T9i + -31.1381 * tfactors.T913i + -0.151667 * tfactors.T913 + + -1.76926 * tfactors.T9 + 0.219569 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.4102 + -57.2082 * tfactors.T9i + -31.1381 * tfactors.T913i + -0.151667 * tfactors.T913 - + -1.76926 * tfactors.T9 + 0.219569 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 57.2082 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1381 * tfactors.T943i + (1.0/3.0) * -0.151667 * tfactors.T923i + + -1.76926 + (5.0/3.0) * 0.219569 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 57.2082 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1381 * tfactors.T943i + (1.0/3.0) * -0.151667 * tfactors.T923i - + -1.76926 + (5.0/3.0) * 0.219569 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_to_He4_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc43_to_He4_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 --> He4 + K39 - // Sc43 --> He4 + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 78.3727 + -55.7693 * tfactors.T9i + -73.8006 * tfactors.T913i + 1.87885 * tfactors.T913 + + -2.75862 * tfactors.T9 + 0.279678 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 78.3727 + -55.7693 * tfactors.T9i + -73.8006 * tfactors.T913i + 1.87885 * tfactors.T913 - + -2.75862 * tfactors.T9 + 0.279678 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.7693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.8006 * tfactors.T943i + (1.0/3.0) * 1.87885 * tfactors.T923i + + -2.75862 + (5.0/3.0) * 0.279678 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.7693 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.8006 * tfactors.T943i + (1.0/3.0) * 1.87885 * tfactors.T923i - + -2.75862 + (5.0/3.0) * 0.279678 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_to_n_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc44_to_n_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 --> n + Sc43 - // Sc44 --> n + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 39.9046 + -112.558 * tfactors.T9i + -0.575865 * tfactors.T913 + + 0.0565199 * tfactors.T9 + -0.0129886 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 39.9046 + -112.558 * tfactors.T9i + -0.575865 * tfactors.T913 - + 0.0565199 * tfactors.T9 + -0.0129886 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 112.558 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.575865 * tfactors.T923i + + 0.0565199 + (5.0/3.0) * -0.0129886 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 112.558 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.575865 * tfactors.T923i - + 0.0565199 + (5.0/3.0) * -0.0129886 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_to_p_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc44_to_p_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 --> p + Ca43 - // Sc44 --> p + Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.0796 + -77.7087 * tfactors.T9i + -31.1437 * tfactors.T913i + 1.02701 * tfactors.T913 + + -1.81612 * tfactors.T9 + 0.197287 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.0796 + -77.7087 * tfactors.T9i + -31.1437 * tfactors.T913i + 1.02701 * tfactors.T913 - + -1.81612 * tfactors.T9 + 0.197287 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.7087 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1437 * tfactors.T943i + (1.0/3.0) * 1.02701 * tfactors.T923i + + -1.81612 + (5.0/3.0) * 0.197287 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.7087 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1437 * tfactors.T943i + (1.0/3.0) * 1.02701 * tfactors.T923i - + -1.81612 + (5.0/3.0) * 0.197287 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_to_He4_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc44_to_He4_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 --> He4 + K40 - // Sc44 --> He4 + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 81.5063 + -77.8175 * tfactors.T9i + -73.858 * tfactors.T913i + -1.10691 * tfactors.T913 + + -2.42921 * tfactors.T9 + 0.294 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 81.5063 + -77.8175 * tfactors.T9i + -73.858 * tfactors.T913i + -1.10691 * tfactors.T913 - + -2.42921 * tfactors.T9 + 0.294 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.8175 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.858 * tfactors.T943i + (1.0/3.0) * -1.10691 * tfactors.T923i + + -2.42921 + (5.0/3.0) * 0.294 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.8175 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.858 * tfactors.T943i + (1.0/3.0) * -1.10691 * tfactors.T923i - + -2.42921 + (5.0/3.0) * 0.294 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_to_n_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc45_to_n_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 --> n + Sc44 - // Sc45 --> n + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.2726 + -131.398 * tfactors.T9i + -1.31922 * tfactors.T913 + + 0.167096 * tfactors.T9 + -0.0191676 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.2726 + -131.398 * tfactors.T9i + -1.31922 * tfactors.T913 - + 0.167096 * tfactors.T9 + -0.0191676 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 131.398 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.31922 * tfactors.T923i + + 0.167096 + (5.0/3.0) * -0.0191676 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 131.398 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.31922 * tfactors.T923i - + 0.167096 + (5.0/3.0) * -0.0191676 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_to_p_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc45_to_p_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 --> p + Ca44 - // Sc45 --> p + Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.5963 + -79.935 * tfactors.T9i + -31.1491 * tfactors.T913i + 0.402181 * tfactors.T913 + + -1.30287 * tfactors.T9 + 0.135535 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.5963 + -79.935 * tfactors.T9i + -31.1491 * tfactors.T913i + 0.402181 * tfactors.T913 - + -1.30287 * tfactors.T9 + 0.135535 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.935 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1491 * tfactors.T943i + (1.0/3.0) * 0.402181 * tfactors.T923i + + -1.30287 + (5.0/3.0) * 0.135535 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.935 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1491 * tfactors.T943i + (1.0/3.0) * 0.402181 * tfactors.T923i - + -1.30287 + (5.0/3.0) * 0.135535 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_to_He4_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc45_to_He4_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 --> He4 + K41 - // Sc45 --> He4 + K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 79.0608 + -92.0658 * tfactors.T9i + -73.9127 * tfactors.T913i + 0.81435 * tfactors.T913 + + -2.90813 * tfactors.T9 + 0.335176 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 79.0608 + -92.0658 * tfactors.T9i + -73.9127 * tfactors.T913i + 0.81435 * tfactors.T913 - + -2.90813 * tfactors.T9 + 0.335176 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.0658 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.9127 * tfactors.T943i + (1.0/3.0) * 0.81435 * tfactors.T923i + + -2.90813 + (5.0/3.0) * 0.335176 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.0658 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.9127 * tfactors.T943i + (1.0/3.0) * 0.81435 * tfactors.T923i - + -2.90813 + (5.0/3.0) * 0.335176 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_to_n_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc46_to_n_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 --> n + Sc45 - // Sc46 --> n + Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 30.1819 + -101.612 * tfactors.T9i + -6.18502 * tfactors.T913i + 16.5806 * tfactors.T913 + + -1.45949 * tfactors.T9 + 0.0995696 * tfactors.T953 + -5.03696 * tfactors.lnT9; - // ks03 - ln_set_rate = 30.1819 + -101.612 * tfactors.T9i + -6.18502 * tfactors.T913i + 16.5806 * tfactors.T913 - + -1.45949 * tfactors.T9 + 0.0995696 * tfactors.T953 + -5.03696 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.612 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.18502 * tfactors.T943i + (1.0/3.0) * 16.5806 * tfactors.T923i + + -1.45949 + (5.0/3.0) * 0.0995696 * tfactors.T923 + -5.03696 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.612 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.18502 * tfactors.T943i + (1.0/3.0) * 16.5806 * tfactors.T923i - + -1.45949 + (5.0/3.0) * 0.0995696 * tfactors.T923 + -5.03696 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_to_p_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc46_to_p_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 --> p + Ca45 - // Sc46 --> p + Ca45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.541 + -95.5531 * tfactors.T9i + -31.1543 * tfactors.T913i + -6.97397 * tfactors.T913 + + -0.344025 * tfactors.T9 + 0.128258 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.541 + -95.5531 * tfactors.T9i + -31.1543 * tfactors.T913i + -6.97397 * tfactors.T913 - + -0.344025 * tfactors.T9 + 0.128258 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 95.5531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1543 * tfactors.T943i + (1.0/3.0) * -6.97397 * tfactors.T923i + + -0.344025 + (5.0/3.0) * 0.128258 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 95.5531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1543 * tfactors.T943i + (1.0/3.0) * -6.97397 * tfactors.T923i - + -0.344025 + (5.0/3.0) * 0.128258 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_to_n_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc47_to_n_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 --> n + Sc46 - // Sc47 --> n + Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 41.5248 + -123.539 * tfactors.T9i + 1.157 * tfactors.T913i + -3.39674 * tfactors.T913 + + 0.179575 * tfactors.T9 + -0.00780135 * tfactors.T953 + 2.28349 * tfactors.lnT9; - // rath - ln_set_rate = 41.5248 + -123.539 * tfactors.T9i + 1.157 * tfactors.T913i + -3.39674 * tfactors.T913 - + 0.179575 * tfactors.T9 + -0.00780135 * tfactors.T953 + 2.28349 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 123.539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.157 * tfactors.T943i + (1.0/3.0) * -3.39674 * tfactors.T923i + + 0.179575 + (5.0/3.0) * -0.00780135 * tfactors.T923 + 2.28349 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 123.539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.157 * tfactors.T943i + (1.0/3.0) * -3.39674 * tfactors.T923i - + 0.179575 + (5.0/3.0) * -0.00780135 * tfactors.T923 + 2.28349 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_to_p_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc47_to_p_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 --> p + Ca46 - // Sc47 --> p + Ca46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 55.9566 + -98.4759 * tfactors.T9i + -31.1593 * tfactors.T913i + 0.979497 * tfactors.T913 + + -1.14947 * tfactors.T9 + 0.064347 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 55.9566 + -98.4759 * tfactors.T9i + -31.1593 * tfactors.T913i + 0.979497 * tfactors.T913 - + -1.14947 * tfactors.T9 + 0.064347 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.4759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1593 * tfactors.T943i + (1.0/3.0) * 0.979497 * tfactors.T923i + + -1.14947 + (5.0/3.0) * 0.064347 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.4759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1593 * tfactors.T943i + (1.0/3.0) * 0.979497 * tfactors.T923i - + -1.14947 + (5.0/3.0) * 0.064347 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_to_n_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc48_to_n_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 --> n + Sc47 - // Sc48 --> n + Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 37.5173 + -95.5526 * tfactors.T9i + 0.297987 * tfactors.T913i + 0.438296 * tfactors.T913 + + 0.0468739 * tfactors.T9 + -0.0255895 * tfactors.T953 + 1.27272 * tfactors.lnT9; - // rath - ln_set_rate = 37.5173 + -95.5526 * tfactors.T9i + 0.297987 * tfactors.T913i + 0.438296 * tfactors.T913 - + 0.0468739 * tfactors.T9 + -0.0255895 * tfactors.T953 + 1.27272 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 95.5526 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.297987 * tfactors.T943i + (1.0/3.0) * 0.438296 * tfactors.T923i + + 0.0468739 + (5.0/3.0) * -0.0255895 * tfactors.T923 + 1.27272 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 95.5526 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.297987 * tfactors.T943i + (1.0/3.0) * 0.438296 * tfactors.T923i - + 0.0468739 + (5.0/3.0) * -0.0255895 * tfactors.T923 + 1.27272 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_to_p_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc48_to_p_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 --> p + Ca47 - // Sc48 --> p + Ca47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.7642 + -109.604 * tfactors.T9i + -31.164 * tfactors.T913i + -2.03245 * tfactors.T913 + + 0.0494826 * tfactors.T9 + 0.00201831 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.7642 + -109.604 * tfactors.T9i + -31.164 * tfactors.T913i + -2.03245 * tfactors.T913 - + 0.0494826 * tfactors.T9 + 0.00201831 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 109.604 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.164 * tfactors.T943i + (1.0/3.0) * -2.03245 * tfactors.T923i + + 0.0494826 + (5.0/3.0) * 0.00201831 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 109.604 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.164 * tfactors.T943i + (1.0/3.0) * -2.03245 * tfactors.T923i - + 0.0494826 + (5.0/3.0) * 0.00201831 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc49_to_n_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc49_to_n_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc49 --> n + Sc48 - // Sc49 --> n + Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 41.8913 + -117.592 * tfactors.T9i + 2.32858 * tfactors.T913i + -6.44325 * tfactors.T913 + + 0.608389 * tfactors.T9 + -0.0534156 * tfactors.T953 + 3.63196 * tfactors.lnT9; - // rath - ln_set_rate = 41.8913 + -117.592 * tfactors.T9i + 2.32858 * tfactors.T913i + -6.44325 * tfactors.T913 - + 0.608389 * tfactors.T9 + -0.0534156 * tfactors.T953 + 3.63196 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 117.592 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.32858 * tfactors.T943i + (1.0/3.0) * -6.44325 * tfactors.T923i + + 0.608389 + (5.0/3.0) * -0.0534156 * tfactors.T923 + 3.63196 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 117.592 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.32858 * tfactors.T943i + (1.0/3.0) * -6.44325 * tfactors.T923i - + 0.608389 + (5.0/3.0) * -0.0534156 * tfactors.T923 + 3.63196 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc49_to_p_Ca48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Sc49_to_p_Ca48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc49 --> p + Ca48 - // Sc49 --> p + Ca48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 55.4528 + -111.719 * tfactors.T9i + -31.1685 * tfactors.T913i + 2.20987 * tfactors.T913 + + -2.24347 * tfactors.T9 + 0.239302 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 55.4528 + -111.719 * tfactors.T9i + -31.1685 * tfactors.T913i + 2.20987 * tfactors.T913 - + -2.24347 * tfactors.T9 + 0.239302 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 111.719 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1685 * tfactors.T943i + (1.0/3.0) * 2.20987 * tfactors.T923i + + -2.24347 + (5.0/3.0) * 0.239302 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 111.719 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1685 * tfactors.T943i + (1.0/3.0) * 2.20987 * tfactors.T923i - + -2.24347 + (5.0/3.0) * 0.239302 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_p_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_p_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 --> p + Sc43 - // Ti44 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.5939 + -100.373 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.5939 + -100.373 * tfactors.T9i + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.373 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.373 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti44_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 --> He4 + Ca40 - // Ti44 --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 78.6991 + -59.4974 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // chw0 - ln_set_rate = 78.6991 + -59.4974 * tfactors.T9i + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.4974 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.4974 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_to_n_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti45_to_n_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 --> n + Ti44 - // Ti45 --> n + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -110.575 * tfactors.T9i + 1.01203 * tfactors.T913 + + -0.201174 * tfactors.T9 + 0.00360954 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -110.575 * tfactors.T9i + 1.01203 * tfactors.T913 - + -0.201174 * tfactors.T9 + 0.00360954 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.01203 * tfactors.T923i + + -0.201174 + (5.0/3.0) * 0.00360954 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.01203 * tfactors.T923i - + -0.201174 + (5.0/3.0) * 0.00360954 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_to_p_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti45_to_p_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 --> p + Sc44 - // Ti45 --> p + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.3467 + -98.3901 * tfactors.T9i + -32.179 * tfactors.T913i + 1.40668 * tfactors.T913 + + -2.02828 * tfactors.T9 + 0.230326 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.3467 + -98.3901 * tfactors.T9i + -32.179 * tfactors.T913i + 1.40668 * tfactors.T913 - + -2.02828 * tfactors.T9 + 0.230326 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.3901 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.179 * tfactors.T943i + (1.0/3.0) * 1.40668 * tfactors.T923i + + -2.02828 + (5.0/3.0) * 0.230326 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.3901 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.179 * tfactors.T943i + (1.0/3.0) * 1.40668 * tfactors.T923i - + -2.02828 + (5.0/3.0) * 0.230326 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_to_He4_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti45_to_He4_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 --> He4 + Ca41 - // Ti45 --> He4 + Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 79.5829 + -73.0258 * tfactors.T9i + -76.4839 * tfactors.T913i + 3.03748 * tfactors.T913 + + -2.59814 * tfactors.T9 + 0.210582 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 79.5829 + -73.0258 * tfactors.T9i + -76.4839 * tfactors.T913i + 3.03748 * tfactors.T913 - + -2.59814 * tfactors.T9 + 0.210582 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 73.0258 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4839 * tfactors.T943i + (1.0/3.0) * 3.03748 * tfactors.T923i + + -2.59814 + (5.0/3.0) * 0.210582 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 73.0258 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.4839 * tfactors.T943i + (1.0/3.0) * 3.03748 * tfactors.T923i - + -2.59814 + (5.0/3.0) * 0.210582 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_to_n_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti46_to_n_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 --> n + Ti45 - // Ti46 --> n + Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 42.8852 + -153.052 * tfactors.T9i + -1.55633 * tfactors.T913 + + 0.300783 * tfactors.T9 + -0.0373696 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 42.8852 + -153.052 * tfactors.T9i + -1.55633 * tfactors.T913 - + 0.300783 * tfactors.T9 + -0.0373696 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 153.052 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.55633 * tfactors.T923i + + 0.300783 + (5.0/3.0) * -0.0373696 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 153.052 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.55633 * tfactors.T923i - + 0.300783 + (5.0/3.0) * -0.0373696 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_to_p_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti46_to_p_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 --> p + Sc45 - // Ti46 --> p + Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.5905 + -120.044 * tfactors.T9i + -32.1843 * tfactors.T913i + 1.38642 * tfactors.T913 + + -1.64811 * tfactors.T9 + 0.157323 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.5905 + -120.044 * tfactors.T9i + -32.1843 * tfactors.T913i + 1.38642 * tfactors.T913 - + -1.64811 * tfactors.T9 + 0.157323 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.044 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1843 * tfactors.T943i + (1.0/3.0) * 1.38642 * tfactors.T923i + + -1.64811 + (5.0/3.0) * 0.157323 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.044 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1843 * tfactors.T943i + (1.0/3.0) * 1.38642 * tfactors.T923i - + -1.64811 + (5.0/3.0) * 0.157323 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_to_He4_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti46_to_He4_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 --> He4 + Ca42 - // Ti46 --> He4 + Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 79.7886 + -92.8507 * tfactors.T9i + -76.5379 * tfactors.T913i + 2.80099 * tfactors.T913 + + -2.34788 * tfactors.T9 + 0.150014 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 79.7886 + -92.8507 * tfactors.T9i + -76.5379 * tfactors.T913i + 2.80099 * tfactors.T913 - + -2.34788 * tfactors.T9 + 0.150014 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.8507 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.5379 * tfactors.T943i + (1.0/3.0) * 2.80099 * tfactors.T923i + + -2.34788 + (5.0/3.0) * 0.150014 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.8507 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.5379 * tfactors.T943i + (1.0/3.0) * 2.80099 * tfactors.T923i - + -2.34788 + (5.0/3.0) * 0.150014 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_to_n_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti47_to_n_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 --> n + Ti46 - // Ti47 --> n + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 34.1579 + -102.963 * tfactors.T9i + -7.30817 * tfactors.T913i + 10.713 * tfactors.T913 + + -0.537251 * tfactors.T9 + 0.0187304 * tfactors.T953 + -3.88893 * tfactors.lnT9; - // ks03 - ln_set_rate = 34.1579 + -102.963 * tfactors.T9i + -7.30817 * tfactors.T913i + 10.713 * tfactors.T913 - + -0.537251 * tfactors.T9 + 0.0187304 * tfactors.T953 + -3.88893 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.963 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.30817 * tfactors.T943i + (1.0/3.0) * 10.713 * tfactors.T923i + + -0.537251 + (5.0/3.0) * 0.0187304 * tfactors.T923 + -3.88893 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.963 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.30817 * tfactors.T943i + (1.0/3.0) * 10.713 * tfactors.T923i - + -0.537251 + (5.0/3.0) * 0.0187304 * tfactors.T923 + -3.88893 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_to_p_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti47_to_p_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 --> p + Sc46 - // Ti47 --> p + Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 158.586 + -126.911 * tfactors.T9i + 212.079 * tfactors.T913i + -358.599 * tfactors.T913 + + 19.2793 * tfactors.T9 + -1.01913 * tfactors.T953 + 177.754 * tfactors.lnT9; - // rath - ln_set_rate = 158.586 + -126.911 * tfactors.T9i + 212.079 * tfactors.T913i + -358.599 * tfactors.T913 - + 19.2793 * tfactors.T9 + -1.01913 * tfactors.T953 + 177.754 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 126.911 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 212.079 * tfactors.T943i + (1.0/3.0) * -358.599 * tfactors.T923i + + 19.2793 + (5.0/3.0) * -1.01913 * tfactors.T923 + 177.754 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 126.911 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 212.079 * tfactors.T943i + (1.0/3.0) * -358.599 * tfactors.T923i - + 19.2793 + (5.0/3.0) * -1.01913 * tfactors.T923 + 177.754 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_to_He4_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti47_to_He4_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 --> He4 + Ca43 - // Ti47 --> He4 + Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 85.7166 + -103.845 * tfactors.T9i + -76.5897 * tfactors.T913i + -7.46117 * tfactors.T913 + + -0.574977 * tfactors.T9 + 0.115742 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 85.7166 + -103.845 * tfactors.T9i + -76.5897 * tfactors.T913i + -7.46117 * tfactors.T913 - + -0.574977 * tfactors.T9 + 0.115742 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.845 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.5897 * tfactors.T943i + (1.0/3.0) * -7.46117 * tfactors.T923i + + -0.574977 + (5.0/3.0) * 0.115742 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.845 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.5897 * tfactors.T943i + (1.0/3.0) * -7.46117 * tfactors.T923i - + -0.574977 + (5.0/3.0) * 0.115742 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_to_n_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti48_to_n_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 --> n + Ti47 - // Ti48 --> n + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 40.3394 + -134.911 * tfactors.T9i + -2.34945 * tfactors.T913i + 3.2238 * tfactors.T913 + + -0.0455487 * tfactors.T9 + -0.0153771 * tfactors.T953 + -0.60785 * tfactors.lnT9; - // ks03 - ln_set_rate = 40.3394 + -134.911 * tfactors.T9i + -2.34945 * tfactors.T913i + 3.2238 * tfactors.T913 - + -0.0455487 * tfactors.T9 + -0.0153771 * tfactors.T953 + -0.60785 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 134.911 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.34945 * tfactors.T943i + (1.0/3.0) * 3.2238 * tfactors.T923i + + -0.0455487 + (5.0/3.0) * -0.0153771 * tfactors.T923 + -0.60785 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 134.911 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.34945 * tfactors.T943i + (1.0/3.0) * 3.2238 * tfactors.T923i - + -0.0455487 + (5.0/3.0) * -0.0153771 * tfactors.T923 + -0.60785 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_to_p_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti48_to_p_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 --> p + Sc47 - // Ti48 --> p + Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 76.1705 + -137.87 * tfactors.T9i + 155.189 * tfactors.T913i + -211.783 * tfactors.T913 + + 9.70286 * tfactors.T9 + -0.48757 * tfactors.T953 + 118.807 * tfactors.lnT9; - // rath - ln_set_rate = 76.1705 + -137.87 * tfactors.T9i + 155.189 * tfactors.T913i + -211.783 * tfactors.T913 - + 9.70286 * tfactors.T9 + -0.48757 * tfactors.T953 + 118.807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 137.87 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 155.189 * tfactors.T943i + (1.0/3.0) * -211.783 * tfactors.T923i + + 9.70286 + (5.0/3.0) * -0.48757 * tfactors.T923 + 118.807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 137.87 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 155.189 * tfactors.T943i + (1.0/3.0) * -211.783 * tfactors.T923i - + 9.70286 + (5.0/3.0) * -0.48757 * tfactors.T923 + 118.807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_to_He4_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti48_to_He4_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 --> He4 + Ca44 - // Ti48 --> He4 + Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 80.8784 + -109.595 * tfactors.T9i + -76.6391 * tfactors.T913i + 2.70825 * tfactors.T913 + + -4.48808 * tfactors.T9 + 0.582872 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 80.8784 + -109.595 * tfactors.T9i + -76.6391 * tfactors.T913i + 2.70825 * tfactors.T913 - + -4.48808 * tfactors.T9 + 0.582872 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 109.595 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.6391 * tfactors.T943i + (1.0/3.0) * 2.70825 * tfactors.T923i + + -4.48808 + (5.0/3.0) * 0.582872 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 109.595 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.6391 * tfactors.T943i + (1.0/3.0) * 2.70825 * tfactors.T923i - + -4.48808 + (5.0/3.0) * 0.582872 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_to_n_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti49_to_n_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 --> n + Ti48 - // Ti49 --> n + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 4.8075 + -94.1668 * tfactors.T9i + -32.4895 * tfactors.T913i + 67.9234 * tfactors.T913 + + -4.27126 * tfactors.T9 + 0.230364 * tfactors.T953 + -27.9521 * tfactors.lnT9; - // ks03 - ln_set_rate = 4.8075 + -94.1668 * tfactors.T9i + -32.4895 * tfactors.T913i + 67.9234 * tfactors.T913 - + -4.27126 * tfactors.T9 + 0.230364 * tfactors.T953 + -27.9521 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.1668 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.4895 * tfactors.T943i + (1.0/3.0) * 67.9234 * tfactors.T923i + + -4.27126 + (5.0/3.0) * 0.230364 * tfactors.T923 + -27.9521 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.1668 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.4895 * tfactors.T943i + (1.0/3.0) * 67.9234 * tfactors.T923i - + -4.27126 + (5.0/3.0) * 0.230364 * tfactors.T923 + -27.9521 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_to_p_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti49_to_p_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 --> p + Sc48 - // Ti49 --> p + Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 125.332 + -137.251 * tfactors.T9i + 198.826 * tfactors.T913i + -313.844 * tfactors.T913 + + 17.0251 * tfactors.T9 + -0.945704 * tfactors.T953 + 160.904 * tfactors.lnT9; - // rath - ln_set_rate = 125.332 + -137.251 * tfactors.T9i + 198.826 * tfactors.T913i + -313.844 * tfactors.T913 - + 17.0251 * tfactors.T9 + -0.945704 * tfactors.T953 + 160.904 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 137.251 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 198.826 * tfactors.T943i + (1.0/3.0) * -313.844 * tfactors.T923i + + 17.0251 + (5.0/3.0) * -0.945704 * tfactors.T923 + 160.904 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 137.251 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 198.826 * tfactors.T943i + (1.0/3.0) * -313.844 * tfactors.T923i - + 17.0251 + (5.0/3.0) * -0.945704 * tfactors.T923 + 160.904 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_to_He4_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti49_to_He4_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 --> He4 + Ca45 - // Ti49 --> He4 + Ca45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 82.6247 + -118.039 * tfactors.T9i + -76.6866 * tfactors.T913i + -9.95306 * tfactors.T913 + + 1.72367 * tfactors.T9 + -0.226004 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 82.6247 + -118.039 * tfactors.T9i + -76.6866 * tfactors.T913i + -9.95306 * tfactors.T913 - + 1.72367 * tfactors.T9 + -0.226004 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 118.039 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.6866 * tfactors.T943i + (1.0/3.0) * -9.95306 * tfactors.T923i + + 1.72367 + (5.0/3.0) * -0.226004 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 118.039 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.6866 * tfactors.T943i + (1.0/3.0) * -9.95306 * tfactors.T923i - + 1.72367 + (5.0/3.0) * -0.226004 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_to_n_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti50_to_n_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 --> n + Ti49 - // Ti50 --> n + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 39.3875 + -126.916 * tfactors.T9i + -2.8384 * tfactors.T913i + 4.10103 * tfactors.T913 + + -0.0325714 * tfactors.T9 + -0.0305035 * tfactors.T953 + -0.8012 * tfactors.lnT9; - // ks03 - ln_set_rate = 39.3875 + -126.916 * tfactors.T9i + -2.8384 * tfactors.T913i + 4.10103 * tfactors.T913 - + -0.0325714 * tfactors.T9 + -0.0305035 * tfactors.T953 + -0.8012 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 126.916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.8384 * tfactors.T943i + (1.0/3.0) * 4.10103 * tfactors.T923i + + -0.0325714 + (5.0/3.0) * -0.0305035 * tfactors.T923 + -0.8012 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 126.916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.8384 * tfactors.T943i + (1.0/3.0) * 4.10103 * tfactors.T923i - + -0.0325714 + (5.0/3.0) * -0.0305035 * tfactors.T923 + -0.8012 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_to_p_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti50_to_p_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 --> p + Sc49 - // Ti50 --> p + Sc49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 132.698 + -146.58 * tfactors.T9i + 195.561 * tfactors.T913i + -317.373 * tfactors.T913 + + 17.5352 * tfactors.T9 + -0.999861 * tfactors.T953 + 160.884 * tfactors.lnT9; - // rath - ln_set_rate = 132.698 + -146.58 * tfactors.T9i + 195.561 * tfactors.T913i + -317.373 * tfactors.T913 - + 17.5352 * tfactors.T9 + -0.999861 * tfactors.T953 + 160.884 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 146.58 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 195.561 * tfactors.T943i + (1.0/3.0) * -317.373 * tfactors.T923i + + 17.5352 + (5.0/3.0) * -0.999861 * tfactors.T923 + 160.884 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 146.58 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 195.561 * tfactors.T943i + (1.0/3.0) * -317.373 * tfactors.T923i - + 17.5352 + (5.0/3.0) * -0.999861 * tfactors.T923 + 160.884 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_to_He4_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti50_to_He4_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 --> He4 + Ca46 - // Ti50 --> He4 + Ca46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 87.8722 + -124.36 * tfactors.T9i + -76.732 * tfactors.T913i + -13.6546 * tfactors.T913 + + 1.61796 * tfactors.T9 + -0.159 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 87.8722 + -124.36 * tfactors.T9i + -76.732 * tfactors.T913i + -13.6546 * tfactors.T913 - + 1.61796 * tfactors.T9 + -0.159 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 124.36 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.732 * tfactors.T943i + (1.0/3.0) * -13.6546 * tfactors.T923i + + 1.61796 + (5.0/3.0) * -0.159 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 124.36 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.732 * tfactors.T943i + (1.0/3.0) * -13.6546 * tfactors.T923i - + 1.61796 + (5.0/3.0) * -0.159 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti51_to_n_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti51_to_n_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti51 --> n + Ti50 - // Ti51 --> n + Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 62.6945 + -73.9572 * tfactors.T9i + 7.07296 * tfactors.T913i + -37.8514 * tfactors.T913 + + 4.03187 * tfactors.T9 + -0.339274 * tfactors.T953 + 12.9094 * tfactors.lnT9; - // ks03 - ln_set_rate = 62.6945 + -73.9572 * tfactors.T9i + 7.07296 * tfactors.T913i + -37.8514 * tfactors.T913 - + 4.03187 * tfactors.T9 + -0.339274 * tfactors.T953 + 12.9094 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 73.9572 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.07296 * tfactors.T943i + (1.0/3.0) * -37.8514 * tfactors.T923i + + 4.03187 + (5.0/3.0) * -0.339274 * tfactors.T923 + 12.9094 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 73.9572 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.07296 * tfactors.T943i + (1.0/3.0) * -37.8514 * tfactors.T923i - + 4.03187 + (5.0/3.0) * -0.339274 * tfactors.T923 + 12.9094 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti51_to_He4_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ti51_to_He4_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti51 --> He4 + Ca47 - // Ti51 --> He4 + Ca47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 76.3409 + -113.871 * tfactors.T9i + -76.7758 * tfactors.T913i + -1.97823 * tfactors.T913 + + -0.552991 * tfactors.T9 + 0.0318371 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 76.3409 + -113.871 * tfactors.T9i + -76.7758 * tfactors.T913i + -1.97823 * tfactors.T913 - + -0.552991 * tfactors.T9 + 0.0318371 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 113.871 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.7758 * tfactors.T943i + (1.0/3.0) * -1.97823 * tfactors.T923i + + -0.552991 + (5.0/3.0) * 0.0318371 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 113.871 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.7758 * tfactors.T943i + (1.0/3.0) * -1.97823 * tfactors.T923i - + -0.552991 + (5.0/3.0) * 0.0318371 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V46_to_p_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V46_to_p_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V46 --> p + Ti45 - // V46 --> p + Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.199 + -62.1566 * tfactors.T9i + -33.1981 * tfactors.T913i + -1.66837 * tfactors.T913 + + -2.50285 * tfactors.T9 + 0.349152 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.199 + -62.1566 * tfactors.T9i + -33.1981 * tfactors.T913i + -1.66837 * tfactors.T913 - + -2.50285 * tfactors.T9 + 0.349152 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 62.1566 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.1981 * tfactors.T943i + (1.0/3.0) * -1.66837 * tfactors.T923i + + -2.50285 + (5.0/3.0) * 0.349152 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 62.1566 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.1981 * tfactors.T943i + (1.0/3.0) * -1.66837 * tfactors.T923i - + -2.50285 + (5.0/3.0) * 0.349152 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_to_n_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V47_to_n_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 --> n + V46 - // V47 --> n + V46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 38.0277 + -150.863 * tfactors.T9i + -0.692996 * tfactors.T913 + + 0.316873 * tfactors.T9 + -0.0417235 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 38.0277 + -150.863 * tfactors.T9i + -0.692996 * tfactors.T913 - + 0.316873 * tfactors.T9 + -0.0417235 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 150.863 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.692996 * tfactors.T923i + + 0.316873 + (5.0/3.0) * -0.0417235 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 150.863 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.692996 * tfactors.T923i - + 0.316873 + (5.0/3.0) * -0.0417235 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_to_p_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V47_to_p_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 --> p + Ti46 - // V47 --> p + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.0555 + -59.9674 * tfactors.T9i + -33.2034 * tfactors.T913i + 0.505619 * tfactors.T913 + + -1.73654 * tfactors.T9 + 0.207342 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.0555 + -59.9674 * tfactors.T9i + -33.2034 * tfactors.T913i + 0.505619 * tfactors.T913 - + -1.73654 * tfactors.T9 + 0.207342 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.9674 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2034 * tfactors.T943i + (1.0/3.0) * 0.505619 * tfactors.T923i + + -1.73654 + (5.0/3.0) * 0.207342 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.9674 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2034 * tfactors.T943i + (1.0/3.0) * 0.505619 * tfactors.T923i - + -1.73654 + (5.0/3.0) * 0.207342 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_to_He4_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V47_to_He4_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 --> He4 + Sc43 - // V47 --> He4 + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 84.6713 + -95.6099 * tfactors.T9i + -79.122 * tfactors.T913i + -7.07006 * tfactors.T913 + + 0.424183 * tfactors.T9 + -0.0665231 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 84.6713 + -95.6099 * tfactors.T9i + -79.122 * tfactors.T913i + -7.07006 * tfactors.T913 - + 0.424183 * tfactors.T9 + -0.0665231 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 95.6099 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.122 * tfactors.T943i + (1.0/3.0) * -7.07006 * tfactors.T923i + + 0.424183 + (5.0/3.0) * -0.0665231 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 95.6099 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.122 * tfactors.T943i + (1.0/3.0) * -7.07006 * tfactors.T923i - + 0.424183 + (5.0/3.0) * -0.0665231 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_to_n_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V48_to_n_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 --> n + V47 - // V48 --> n + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.4146 + -122.366 * tfactors.T9i + -2.40159 * tfactors.T913 + + 0.594573 * tfactors.T9 + -0.0682896 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.4146 + -122.366 * tfactors.T9i + -2.40159 * tfactors.T913 - + 0.594573 * tfactors.T9 + -0.0682896 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 122.366 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.40159 * tfactors.T923i + + 0.594573 + (5.0/3.0) * -0.0682896 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 122.366 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.40159 * tfactors.T923i - + 0.594573 + (5.0/3.0) * -0.0682896 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_to_p_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V48_to_p_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 --> p + Ti47 - // V48 --> p + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.4638 + -79.2815 * tfactors.T9i + -33.2084 * tfactors.T913i + 1.06738 * tfactors.T913 + + -1.55342 * tfactors.T9 + 0.159225 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.4638 + -79.2815 * tfactors.T9i + -33.2084 * tfactors.T913i + 1.06738 * tfactors.T913 - + -1.55342 * tfactors.T9 + 0.159225 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.2815 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2084 * tfactors.T943i + (1.0/3.0) * 1.06738 * tfactors.T923i + + -1.55342 + (5.0/3.0) * 0.159225 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.2815 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2084 * tfactors.T943i + (1.0/3.0) * 1.06738 * tfactors.T923i - + -1.55342 + (5.0/3.0) * 0.159225 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_to_He4_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V48_to_He4_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 --> He4 + Sc44 - // V48 --> He4 + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 81.006 + -105.418 * tfactors.T9i + -79.1731 * tfactors.T913i + -4.22583 * tfactors.T913 + + -0.427863 * tfactors.T9 + 0.0235817 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 81.006 + -105.418 * tfactors.T9i + -79.1731 * tfactors.T913i + -4.22583 * tfactors.T913 - + -0.427863 * tfactors.T9 + 0.0235817 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 105.418 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.1731 * tfactors.T943i + (1.0/3.0) * -4.22583 * tfactors.T923i + + -0.427863 + (5.0/3.0) * 0.0235817 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 105.418 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.1731 * tfactors.T943i + (1.0/3.0) * -4.22583 * tfactors.T923i - + -0.427863 + (5.0/3.0) * 0.0235817 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_to_n_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V49_to_n_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 --> n + V48 - // V49 --> n + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 41.6761 + -134.066 * tfactors.T9i + -0.917026 * tfactors.T913 + + -0.109162 * tfactors.T9 + 0.0127488 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 41.6761 + -134.066 * tfactors.T9i + -0.917026 * tfactors.T913 - + -0.109162 * tfactors.T9 + 0.0127488 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 134.066 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.917026 * tfactors.T923i + + -0.109162 + (5.0/3.0) * 0.0127488 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 134.066 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.917026 * tfactors.T923i - + -0.109162 + (5.0/3.0) * 0.0127488 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_to_p_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V49_to_p_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 --> p + Ti48 - // V49 --> p + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.8861 + -78.4254 * tfactors.T9i + -33.2133 * tfactors.T913i + 0.564373 * tfactors.T913 + + -1.18789 * tfactors.T9 + 0.110892 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.8861 + -78.4254 * tfactors.T9i + -33.2133 * tfactors.T913i + 0.564373 * tfactors.T913 - + -1.18789 * tfactors.T9 + 0.110892 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.4254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2133 * tfactors.T943i + (1.0/3.0) * 0.564373 * tfactors.T923i + + -1.18789 + (5.0/3.0) * 0.110892 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.4254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2133 * tfactors.T943i + (1.0/3.0) * 0.564373 * tfactors.T923i - + -1.18789 + (5.0/3.0) * 0.110892 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_to_He4_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V49_to_He4_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 --> He4 + Sc45 - // V49 --> He4 + Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 85.107 + -108.085 * tfactors.T9i + -79.222 * tfactors.T913i + -5.31022 * tfactors.T913 + + -1.37323 * tfactors.T9 + 0.21679 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 85.107 + -108.085 * tfactors.T9i + -79.222 * tfactors.T913i + -5.31022 * tfactors.T913 - + -1.37323 * tfactors.T9 + 0.21679 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 108.085 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.222 * tfactors.T943i + (1.0/3.0) * -5.31022 * tfactors.T923i + + -1.37323 + (5.0/3.0) * 0.21679 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 108.085 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.222 * tfactors.T943i + (1.0/3.0) * -5.31022 * tfactors.T923i - + -1.37323 + (5.0/3.0) * 0.21679 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_to_n_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V50_to_n_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 --> n + V49 - // V50 --> n + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.7345 + -108.339 * tfactors.T9i + -1.8725 * tfactors.T913 + + 0.291609 * tfactors.T9 + -0.0370216 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.7345 + -108.339 * tfactors.T9i + -1.8725 * tfactors.T913 - + 0.291609 * tfactors.T9 + -0.0370216 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 108.339 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.8725 * tfactors.T923i + + 0.291609 + (5.0/3.0) * -0.0370216 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 108.339 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.8725 * tfactors.T923i - + 0.291609 + (5.0/3.0) * -0.0370216 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_to_p_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V50_to_p_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 --> p + Ti49 - // V50 --> p + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.1941 + -92.2758 * tfactors.T9i + -33.2179 * tfactors.T913i + 3.05321 * tfactors.T913 + + -2.48884 * tfactors.T9 + 0.254524 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.1941 + -92.2758 * tfactors.T9i + -33.2179 * tfactors.T913i + 3.05321 * tfactors.T913 - + -2.48884 * tfactors.T9 + 0.254524 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.2758 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2179 * tfactors.T943i + (1.0/3.0) * 3.05321 * tfactors.T923i + + -2.48884 + (5.0/3.0) * 0.254524 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.2758 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2179 * tfactors.T943i + (1.0/3.0) * 3.05321 * tfactors.T923i - + -2.48884 + (5.0/3.0) * 0.254524 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_to_He4_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V50_to_He4_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 --> He4 + Sc46 - // V50 --> He4 + Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -928.723 + -98.9689 * tfactors.T9i + -1681.31 * tfactors.T913i + 2743.27 * tfactors.T913 + + -162.405 * tfactors.T9 + 9.24681 * tfactors.T953 + -1291.28 * tfactors.lnT9; - // rath - ln_set_rate = -928.723 + -98.9689 * tfactors.T9i + -1681.31 * tfactors.T913i + 2743.27 * tfactors.T913 - + -162.405 * tfactors.T9 + 9.24681 * tfactors.T953 + -1291.28 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.9689 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1681.31 * tfactors.T943i + (1.0/3.0) * 2743.27 * tfactors.T923i + + -162.405 + (5.0/3.0) * 9.24681 * tfactors.T923 + -1291.28 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.9689 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1681.31 * tfactors.T943i + (1.0/3.0) * 2743.27 * tfactors.T923i - + -162.405 + (5.0/3.0) * 9.24681 * tfactors.T923 + -1291.28 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_to_n_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V51_to_n_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 --> n + V50 - // V51 --> n + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 50.6387 + -128.363 * tfactors.T9i + 10.9535 * tfactors.T913i + -23.1254 * tfactors.T913 + + 1.53091 * tfactors.T9 + -0.0992995 * tfactors.T953 + 11.122 * tfactors.lnT9; - // ks03 - ln_set_rate = 50.6387 + -128.363 * tfactors.T9i + 10.9535 * tfactors.T913i + -23.1254 * tfactors.T913 - + 1.53091 * tfactors.T9 + -0.0992995 * tfactors.T953 + 11.122 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 128.363 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 10.9535 * tfactors.T943i + (1.0/3.0) * -23.1254 * tfactors.T923i + + 1.53091 + (5.0/3.0) * -0.0992995 * tfactors.T923 + 11.122 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 128.363 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 10.9535 * tfactors.T943i + (1.0/3.0) * -23.1254 * tfactors.T923i - + 1.53091 + (5.0/3.0) * -0.0992995 * tfactors.T923 + 11.122 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_to_p_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V51_to_p_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 --> p + Ti50 - // V51 --> p + Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.7227 + -93.575 * tfactors.T9i + -33.2224 * tfactors.T913i + 0.579407 * tfactors.T913 + + -0.949378 * tfactors.T9 + 0.0567069 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.7227 + -93.575 * tfactors.T9i + -33.2224 * tfactors.T913i + 0.579407 * tfactors.T913 - + -0.949378 * tfactors.T9 + 0.0567069 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.575 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2224 * tfactors.T943i + (1.0/3.0) * 0.579407 * tfactors.T923i + + -0.949378 + (5.0/3.0) * 0.0567069 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.575 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.2224 * tfactors.T943i + (1.0/3.0) * 0.579407 * tfactors.T923i - + -0.949378 + (5.0/3.0) * 0.0567069 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_to_He4_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V51_to_He4_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 --> He4 + Sc47 - // V51 --> He4 + Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -1013.09 + -104.128 * tfactors.T9i + -1682.84 * tfactors.T913i + 2838.54 * tfactors.T913 + + -171.874 * tfactors.T9 + 9.93236 * tfactors.T953 + -1315.92 * tfactors.lnT9; - // rath - ln_set_rate = -1013.09 + -104.128 * tfactors.T9i + -1682.84 * tfactors.T913i + 2838.54 * tfactors.T913 - + -171.874 * tfactors.T9 + 9.93236 * tfactors.T953 + -1315.92 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 104.128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1682.84 * tfactors.T943i + (1.0/3.0) * 2838.54 * tfactors.T923i + + -171.874 + (5.0/3.0) * 9.93236 * tfactors.T923 + -1315.92 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 104.128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1682.84 * tfactors.T943i + (1.0/3.0) * 2838.54 * tfactors.T923i - + -171.874 + (5.0/3.0) * 9.93236 * tfactors.T923 + -1315.92 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V52_to_n_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V52_to_n_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V52 --> n + V51 - // V52 --> n + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 27.2469 + -84.8349 * tfactors.T9i + -4.14102 * tfactors.T913i + 17.4073 * tfactors.T913 + + -1.59715 * tfactors.T9 + 0.114181 * tfactors.T953 + -4.43987 * tfactors.lnT9; - // ks03 - ln_set_rate = 27.2469 + -84.8349 * tfactors.T9i + -4.14102 * tfactors.T913i + 17.4073 * tfactors.T913 - + -1.59715 * tfactors.T9 + 0.114181 * tfactors.T953 + -4.43987 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.8349 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.14102 * tfactors.T943i + (1.0/3.0) * 17.4073 * tfactors.T923i + + -1.59715 + (5.0/3.0) * 0.114181 * tfactors.T923 + -4.43987 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.8349 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.14102 * tfactors.T943i + (1.0/3.0) * 17.4073 * tfactors.T923i - + -1.59715 + (5.0/3.0) * 0.114181 * tfactors.T923 + -4.43987 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V52_to_p_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V52_to_p_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V52 --> p + Ti51 - // V52 --> p + Ti51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 153.463 + -110.28 * tfactors.T9i + 220.953 * tfactors.T913i + -370.119 * tfactors.T913 + + 21.0839 * tfactors.T9 + -1.22336 * tfactors.T953 + 183.832 * tfactors.lnT9; - // rath - ln_set_rate = 153.463 + -110.28 * tfactors.T9i + 220.953 * tfactors.T913i + -370.119 * tfactors.T913 - + 21.0839 * tfactors.T9 + -1.22336 * tfactors.T953 + 183.832 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.28 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 220.953 * tfactors.T943i + (1.0/3.0) * -370.119 * tfactors.T923i + + 21.0839 + (5.0/3.0) * -1.22336 * tfactors.T923 + 183.832 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.28 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 220.953 * tfactors.T943i + (1.0/3.0) * -370.119 * tfactors.T923i - + 21.0839 + (5.0/3.0) * -1.22336 * tfactors.T923 + 183.832 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V52_to_He4_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_V52_to_He4_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V52 --> He4 + Sc48 - // V52 --> He4 + Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -931.725 + -93.6357 * tfactors.T9i + -1642.74 * tfactors.T913i + 2707.58 * tfactors.T913 + + -162.101 * tfactors.T9 + 9.30824 * tfactors.T953 + -1266.77 * tfactors.lnT9; - // rath - ln_set_rate = -931.725 + -93.6357 * tfactors.T9i + -1642.74 * tfactors.T913i + 2707.58 * tfactors.T913 - + -162.101 * tfactors.T9 + 9.30824 * tfactors.T953 + -1266.77 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.6357 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1642.74 * tfactors.T943i + (1.0/3.0) * 2707.58 * tfactors.T923i + + -162.101 + (5.0/3.0) * 9.30824 * tfactors.T923 + -1266.77 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.6357 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1642.74 * tfactors.T943i + (1.0/3.0) * 2707.58 * tfactors.T923i - + -162.101 + (5.0/3.0) * 9.30824 * tfactors.T923 + -1266.77 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 --> p + V47 - // Cr48 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 48.892 + -93.8243 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.92325 * tfactors.lnT9; - // nfisn - ln_set_rate = 48.892 + -93.8243 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -6.92325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.8243 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.92325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.8243 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -6.92325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 65.6231 + -94.5854 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; - // nfisn - ln_set_rate = 65.6231 + -94.5854 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -47.9742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.5854 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.5854 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -47.9742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 67.7403 + -100.13 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; - // nfisn - ln_set_rate = 67.7403 + -100.13 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -6.20886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.13 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.13 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -6.20886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 536.523 + -99.3659 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; - // nfisn - ln_set_rate = 536.523 + -99.3659 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 332.227 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.3659 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.3659 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 332.227 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_to_He4_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr48_to_He4_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 --> He4 + Ti44 - // Cr48 --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 89.7573 + -89.3041 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 89.7573 + -89.3041 * tfactors.T9i + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 89.3041 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.3041 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_to_n_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr49_to_n_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 --> n + Cr48 - // Cr49 --> n + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.7375 + -122.806 * tfactors.T9i + -0.000452357 * tfactors.T913 + + 0.0412838 * tfactors.T9 + -0.0160865 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.7375 + -122.806 * tfactors.T9i + -0.000452357 * tfactors.T913 - + 0.0412838 * tfactors.T9 + -0.0160865 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 122.806 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.000452357 * tfactors.T923i + + 0.0412838 + (5.0/3.0) * -0.0160865 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 122.806 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.000452357 * tfactors.T923i - + 0.0412838 + (5.0/3.0) * -0.0160865 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_to_p_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr49_to_p_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 --> p + V48 - // Cr49 --> p + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.5971 + -94.5079 * tfactors.T9i + -34.2123 * tfactors.T913i + 2.51264 * tfactors.T913 + + -2.09211 * tfactors.T9 + 0.219444 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.5971 + -94.5079 * tfactors.T9i + -34.2123 * tfactors.T913i + 2.51264 * tfactors.T913 - + -2.09211 * tfactors.T9 + 0.219444 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.5079 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2123 * tfactors.T943i + (1.0/3.0) * 2.51264 * tfactors.T923i + + -2.09211 + (5.0/3.0) * 0.219444 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.5079 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2123 * tfactors.T943i + (1.0/3.0) * 2.51264 * tfactors.T923i - + -2.09211 + (5.0/3.0) * 0.219444 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_to_He4_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr49_to_He4_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 --> He4 + Ti45 - // Cr49 --> He4 + Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 89.275 + -101.535 * tfactors.T9i + -81.7175 * tfactors.T913i + -10.1755 * tfactors.T913 + + 0.364167 * tfactors.T9 + -0.000317666 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 89.275 + -101.535 * tfactors.T9i + -81.7175 * tfactors.T913i + -10.1755 * tfactors.T913 - + 0.364167 * tfactors.T9 + -0.000317666 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.535 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.7175 * tfactors.T943i + (1.0/3.0) * -10.1755 * tfactors.T923i + + 0.364167 + (5.0/3.0) * -0.000317666 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.535 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.7175 * tfactors.T943i + (1.0/3.0) * -10.1755 * tfactors.T923i - + 0.364167 + (5.0/3.0) * -0.000317666 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_to_n_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr50_to_n_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 --> n + Cr49 - // Cr50 --> n + Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 43.3027 + -150.862 * tfactors.T9i + -1.98927 * tfactors.T913 + + 0.465124 * tfactors.T9 + -0.0582249 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 43.3027 + -150.862 * tfactors.T9i + -1.98927 * tfactors.T913 - + 0.465124 * tfactors.T9 + -0.0582249 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 150.862 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.98927 * tfactors.T923i + + 0.465124 + (5.0/3.0) * -0.0582249 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 150.862 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.98927 * tfactors.T923i - + 0.465124 + (5.0/3.0) * -0.0582249 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_to_p_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr50_to_p_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 --> p + V49 - // Cr50 --> p + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.9884 + -111.305 * tfactors.T9i + -34.217 * tfactors.T913i + 1.28258 * tfactors.T913 + + -1.5098 * tfactors.T9 + 0.142011 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.9884 + -111.305 * tfactors.T9i + -34.217 * tfactors.T913i + 1.28258 * tfactors.T913 - + -1.5098 * tfactors.T9 + 0.142011 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 111.305 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.217 * tfactors.T943i + (1.0/3.0) * 1.28258 * tfactors.T923i + + -1.5098 + (5.0/3.0) * 0.142011 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 111.305 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.217 * tfactors.T943i + (1.0/3.0) * 1.28258 * tfactors.T923i - + -1.5098 + (5.0/3.0) * 0.142011 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_to_He4_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr50_to_He4_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 --> He4 + Ti46 - // Cr50 --> He4 + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 82.0042 + -99.346 * tfactors.T9i + -81.7658 * tfactors.T913i + 3.48637 * tfactors.T913 + + -3.9188 * tfactors.T9 + 0.440356 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 82.0042 + -99.346 * tfactors.T9i + -81.7658 * tfactors.T913i + 3.48637 * tfactors.T913 - + -3.9188 * tfactors.T9 + 0.440356 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.346 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.7658 * tfactors.T943i + (1.0/3.0) * 3.48637 * tfactors.T923i + + -3.9188 + (5.0/3.0) * 0.440356 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.346 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.7658 * tfactors.T943i + (1.0/3.0) * 3.48637 * tfactors.T923i - + -3.9188 + (5.0/3.0) * 0.440356 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_to_n_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr51_to_n_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 --> n + Cr50 - // Cr51 --> n + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 36.7032 + -107.484 * tfactors.T9i + 0.815037 * tfactors.T913i + -0.708732 * tfactors.T913 + + 0.386295 * tfactors.T9 + -0.0615661 * tfactors.T953 + 1.54546 * tfactors.lnT9; - // ks03 - ln_set_rate = 36.7032 + -107.484 * tfactors.T9i + 0.815037 * tfactors.T913i + -0.708732 * tfactors.T913 - + 0.386295 * tfactors.T9 + -0.0615661 * tfactors.T953 + 1.54546 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 107.484 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.815037 * tfactors.T943i + (1.0/3.0) * -0.708732 * tfactors.T923i + + 0.386295 + (5.0/3.0) * -0.0615661 * tfactors.T923 + 1.54546 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 107.484 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.815037 * tfactors.T943i + (1.0/3.0) * -0.708732 * tfactors.T923i - + 0.386295 + (5.0/3.0) * -0.0615661 * tfactors.T923 + 1.54546 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_to_p_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr51_to_p_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 --> p + V50 - // Cr51 --> p + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.751 + -110.431 * tfactors.T9i + -34.2216 * tfactors.T913i + 2.39774 * tfactors.T913 + + -2.15306 * tfactors.T9 + 0.232283 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.751 + -110.431 * tfactors.T9i + -34.2216 * tfactors.T913i + 2.39774 * tfactors.T913 - + -2.15306 * tfactors.T9 + 0.232283 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.431 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 2.39774 * tfactors.T923i + + -2.15306 + (5.0/3.0) * 0.232283 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.431 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 2.39774 * tfactors.T923i - + -2.15306 + (5.0/3.0) * 0.232283 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_to_He4_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr51_to_He4_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 --> He4 + Ti47 - // Cr51 --> He4 + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 88.0149 + -103.76 * tfactors.T9i + -81.8123 * tfactors.T913i + -8.91821 * tfactors.T913 + + -0.0329369 * tfactors.T9 + 0.039179 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 88.0149 + -103.76 * tfactors.T9i + -81.8123 * tfactors.T913i + -8.91821 * tfactors.T913 - + -0.0329369 * tfactors.T9 + 0.039179 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.76 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.8123 * tfactors.T943i + (1.0/3.0) * -8.91821 * tfactors.T923i + + -0.0329369 + (5.0/3.0) * 0.039179 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.76 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.8123 * tfactors.T943i + (1.0/3.0) * -8.91821 * tfactors.T923i - + -0.0329369 + (5.0/3.0) * 0.039179 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_to_n_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr52_to_n_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 --> n + Cr51 - // Cr52 --> n + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 45.8814 + -139.784 * tfactors.T9i + 6.95563 * tfactors.T913i + -11.4485 * tfactors.T913 + + 0.736956 * tfactors.T9 + -0.0695323 * tfactors.T953 + 6.81244 * tfactors.lnT9; - // ks03 - ln_set_rate = 45.8814 + -139.784 * tfactors.T9i + 6.95563 * tfactors.T913i + -11.4485 * tfactors.T913 - + 0.736956 * tfactors.T9 + -0.0695323 * tfactors.T953 + 6.81244 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 139.784 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6.95563 * tfactors.T943i + (1.0/3.0) * -11.4485 * tfactors.T923i + + 0.736956 + (5.0/3.0) * -0.0695323 * tfactors.T923 + 6.81244 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 139.784 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6.95563 * tfactors.T943i + (1.0/3.0) * -11.4485 * tfactors.T923i - + 0.736956 + (5.0/3.0) * -0.0695323 * tfactors.T923 + 6.81244 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_to_p_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr52_to_p_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 --> p + V51 - // Cr52 --> p + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.9066 + -121.899 * tfactors.T9i + -34.2261 * tfactors.T913i + 3.30454 * tfactors.T913 + + -2.61654 * tfactors.T9 + 0.283602 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.9066 + -121.899 * tfactors.T9i + -34.2261 * tfactors.T913i + 3.30454 * tfactors.T913 - + -2.61654 * tfactors.T9 + 0.283602 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 121.899 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2261 * tfactors.T943i + (1.0/3.0) * 3.30454 * tfactors.T923i + + -2.61654 + (5.0/3.0) * 0.283602 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 121.899 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2261 * tfactors.T943i + (1.0/3.0) * 3.30454 * tfactors.T923i - + -2.61654 + (5.0/3.0) * 0.283602 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_to_He4_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr52_to_He4_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 --> He4 + Ti48 - // Cr52 --> He4 + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 81.6507 + -108.55 * tfactors.T9i + -81.8569 * tfactors.T913i + 4.92305 * tfactors.T913 + + -5.04112 * tfactors.T9 + 0.6175 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 81.6507 + -108.55 * tfactors.T9i + -81.8569 * tfactors.T913i + 4.92305 * tfactors.T913 - + -5.04112 * tfactors.T9 + 0.6175 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 108.55 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.8569 * tfactors.T943i + (1.0/3.0) * 4.92305 * tfactors.T923i + + -5.04112 + (5.0/3.0) * 0.6175 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 108.55 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.8569 * tfactors.T943i + (1.0/3.0) * 4.92305 * tfactors.T923i - + -5.04112 + (5.0/3.0) * 0.6175 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_to_n_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr53_to_n_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 --> n + Cr52 - // Cr53 --> n + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 49.6092 + -92.163 * tfactors.T9i + 5.71728 * tfactors.T913i + -20.4149 * tfactors.T913 + + 1.95304 * tfactors.T9 + -0.175538 * tfactors.T953 + 8.68293 * tfactors.lnT9; - // ks03 - ln_set_rate = 49.6092 + -92.163 * tfactors.T9i + 5.71728 * tfactors.T913i + -20.4149 * tfactors.T913 - + 1.95304 * tfactors.T9 + -0.175538 * tfactors.T953 + 8.68293 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.163 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.71728 * tfactors.T943i + (1.0/3.0) * -20.4149 * tfactors.T923i + + 1.95304 + (5.0/3.0) * -0.175538 * tfactors.T923 + 8.68293 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.163 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.71728 * tfactors.T943i + (1.0/3.0) * -20.4149 * tfactors.T923i - + 1.95304 + (5.0/3.0) * -0.175538 * tfactors.T923 + 8.68293 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_to_p_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr53_to_p_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 --> p + V52 - // Cr53 --> p + V52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 153.532 + -135.214 * tfactors.T9i + 224.733 * tfactors.T913i + -373.356 * tfactors.T913 + + 21.346 * tfactors.T9 + -1.24075 * tfactors.T953 + 186.049 * tfactors.lnT9; - // rath - ln_set_rate = 153.532 + -135.214 * tfactors.T9i + 224.733 * tfactors.T913i + -373.356 * tfactors.T913 - + 21.346 * tfactors.T9 + -1.24075 * tfactors.T953 + 186.049 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 135.214 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 224.733 * tfactors.T943i + (1.0/3.0) * -373.356 * tfactors.T923i + + 21.346 + (5.0/3.0) * -1.24075 * tfactors.T923 + 186.049 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 135.214 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 224.733 * tfactors.T943i + (1.0/3.0) * -373.356 * tfactors.T923i - + 21.346 + (5.0/3.0) * -1.24075 * tfactors.T923 + 186.049 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_to_He4_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr53_to_He4_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 --> He4 + Ti49 - // Cr53 --> He4 + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 91.1363 + -106.191 * tfactors.T9i + -81.8999 * tfactors.T913i + -15.3695 * tfactors.T913 + + 2.51758 * tfactors.T9 + -0.283455 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 91.1363 + -106.191 * tfactors.T9i + -81.8999 * tfactors.T913i + -15.3695 * tfactors.T913 - + 2.51758 * tfactors.T9 + -0.283455 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.191 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.8999 * tfactors.T943i + (1.0/3.0) * -15.3695 * tfactors.T923i + + 2.51758 + (5.0/3.0) * -0.283455 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.191 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.8999 * tfactors.T943i + (1.0/3.0) * -15.3695 * tfactors.T923i - + 2.51758 + (5.0/3.0) * -0.283455 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr54_to_n_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr54_to_n_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr54 --> n + Cr53 - // Cr54 --> n + Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 35.9433 + -112.797 * tfactors.T9i + -1.26805 * tfactors.T913i + 6.34126 * tfactors.T913 + + -0.39287 * tfactors.T9 + 0.000487041 * tfactors.T953 + -0.96456 * tfactors.lnT9; - // ks03 - ln_set_rate = 35.9433 + -112.797 * tfactors.T9i + -1.26805 * tfactors.T913i + 6.34126 * tfactors.T913 - + -0.39287 * tfactors.T9 + 0.000487041 * tfactors.T953 + -0.96456 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 112.797 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.26805 * tfactors.T943i + (1.0/3.0) * 6.34126 * tfactors.T923i + + -0.39287 + (5.0/3.0) * 0.000487041 * tfactors.T923 + -0.96456 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 112.797 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.26805 * tfactors.T943i + (1.0/3.0) * 6.34126 * tfactors.T923i - + -0.39287 + (5.0/3.0) * 0.000487041 * tfactors.T923 + -0.96456 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr54_to_He4_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cr54_to_He4_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr54 --> He4 + Ti50 - // Cr54 --> He4 + Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 88.401 + -92.0329 * tfactors.T9i + -81.9411 * tfactors.T913i + -6.28155 * tfactors.T913 + + -2.0416 * tfactors.T9 + 0.332085 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 88.401 + -92.0329 * tfactors.T9i + -81.9411 * tfactors.T913i + -6.28155 * tfactors.T913 - + -2.0416 * tfactors.T9 + 0.332085 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.0329 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.9411 * tfactors.T943i + (1.0/3.0) * -6.28155 * tfactors.T923i + + -2.0416 + (5.0/3.0) * 0.332085 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.0329 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.9411 * tfactors.T943i + (1.0/3.0) * -6.28155 * tfactors.T923i - + -2.0416 + (5.0/3.0) * 0.332085 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn50_to_p_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn50_to_p_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn50 --> p + Cr49 - // Mn50 --> p + Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.8556 + -53.2101 * tfactors.T9i + -35.2018 * tfactors.T913i + 0.168579 * tfactors.T913 + + -2.87983 * tfactors.T9 + 0.378768 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.8556 + -53.2101 * tfactors.T9i + -35.2018 * tfactors.T913i + 0.168579 * tfactors.T913 - + -2.87983 * tfactors.T9 + 0.378768 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 53.2101 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2018 * tfactors.T943i + (1.0/3.0) * 0.168579 * tfactors.T923i + + -2.87983 + (5.0/3.0) * 0.378768 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.2101 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2018 * tfactors.T943i + (1.0/3.0) * 0.168579 * tfactors.T923i - + -2.87983 + (5.0/3.0) * 0.378768 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn50_to_He4_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn50_to_He4_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn50 --> He4 + V46 - // Mn50 --> He4 + V46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 79.278 + -92.5891 * tfactors.T9i + -84.2255 * tfactors.T913i + -4.85634 * tfactors.T913 + + 0.0528515 * tfactors.T9 + -0.0425496 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 79.278 + -92.5891 * tfactors.T9i + -84.2255 * tfactors.T913i + -4.85634 * tfactors.T913 - + 0.0528515 * tfactors.T9 + -0.0425496 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.5891 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.2255 * tfactors.T943i + (1.0/3.0) * -4.85634 * tfactors.T923i + + 0.0528515 + (5.0/3.0) * -0.0425496 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.5891 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.2255 * tfactors.T943i + (1.0/3.0) * -4.85634 * tfactors.T923i - + 0.0528515 + (5.0/3.0) * -0.0425496 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_to_n_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn51_to_n_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 --> n + Mn50 - // Mn51 --> n + Mn50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3277 + -158.817 * tfactors.T9i + -0.538879 * tfactors.T913 + + 0.284528 * tfactors.T9 + -0.0459849 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3277 + -158.817 * tfactors.T9i + -0.538879 * tfactors.T913 - + 0.284528 * tfactors.T9 + -0.0459849 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 158.817 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.538879 * tfactors.T923i + + 0.284528 + (5.0/3.0) * -0.0459849 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 158.817 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.538879 * tfactors.T923i - + 0.284528 + (5.0/3.0) * -0.0459849 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_to_p_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn51_to_p_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 --> p + Cr50 - // Mn51 --> p + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.7375 + -61.1651 * tfactors.T9i + -35.2065 * tfactors.T913i + 0.884621 * tfactors.T913 + + -1.76421 * tfactors.T9 + 0.202494 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.7375 + -61.1651 * tfactors.T9i + -35.2065 * tfactors.T913i + 0.884621 * tfactors.T913 - + -1.76421 * tfactors.T9 + 0.202494 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 61.1651 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2065 * tfactors.T943i + (1.0/3.0) * 0.884621 * tfactors.T923i + + -1.76421 + (5.0/3.0) * 0.202494 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 61.1651 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2065 * tfactors.T943i + (1.0/3.0) * 0.884621 * tfactors.T923i - + -1.76421 + (5.0/3.0) * 0.202494 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_to_He4_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn51_to_He4_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 --> He4 + V47 - // Mn51 --> He4 + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 81.4259 + -100.544 * tfactors.T9i + -84.2732 * tfactors.T913i + -2.98061 * tfactors.T913 + + -0.531361 * tfactors.T9 + 0.023612 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 81.4259 + -100.544 * tfactors.T9i + -84.2732 * tfactors.T913i + -2.98061 * tfactors.T913 - + -0.531361 * tfactors.T9 + 0.023612 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.544 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.2732 * tfactors.T943i + (1.0/3.0) * -2.98061 * tfactors.T923i + + -0.531361 + (5.0/3.0) * 0.023612 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.544 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.2732 * tfactors.T943i + (1.0/3.0) * -2.98061 * tfactors.T923i - + -0.531361 + (5.0/3.0) * 0.023612 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_to_n_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn52_to_n_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 --> n + Mn51 - // Mn52 --> n + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.109 + -122.258 * tfactors.T9i + -1.83611 * tfactors.T913 + + 0.460384 * tfactors.T9 + -0.0584947 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.109 + -122.258 * tfactors.T9i + -1.83611 * tfactors.T913 - + 0.460384 * tfactors.T9 + -0.0584947 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 122.258 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.83611 * tfactors.T923i + + 0.460384 + (5.0/3.0) * -0.0584947 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 122.258 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.83611 * tfactors.T923i - + 0.460384 + (5.0/3.0) * -0.0584947 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_to_p_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn52_to_p_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 --> p + Cr51 - // Mn52 --> p + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.4561 + -75.9585 * tfactors.T9i + -35.2111 * tfactors.T913i + 1.49375 * tfactors.T913 + + -1.48209 * tfactors.T9 + 0.131902 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.4561 + -75.9585 * tfactors.T9i + -35.2111 * tfactors.T913i + 1.49375 * tfactors.T913 - + -1.48209 * tfactors.T9 + 0.131902 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 75.9585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2111 * tfactors.T943i + (1.0/3.0) * 1.49375 * tfactors.T923i + + -1.48209 + (5.0/3.0) * 0.131902 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 75.9585 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2111 * tfactors.T943i + (1.0/3.0) * 1.49375 * tfactors.T923i - + -1.48209 + (5.0/3.0) * 0.131902 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_to_He4_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn52_to_He4_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 --> He4 + V48 - // Mn52 --> He4 + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 87.1966 + -100.437 * tfactors.T9i + -84.3192 * tfactors.T913i + -8.32959 * tfactors.T913 + + 0.33994 * tfactors.T9 + -0.0359909 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 87.1966 + -100.437 * tfactors.T9i + -84.3192 * tfactors.T913i + -8.32959 * tfactors.T913 - + 0.33994 * tfactors.T9 + -0.0359909 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.437 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.3192 * tfactors.T943i + (1.0/3.0) * -8.32959 * tfactors.T923i + + 0.33994 + (5.0/3.0) * -0.0359909 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.437 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.3192 * tfactors.T943i + (1.0/3.0) * -8.32959 * tfactors.T923i - + 0.33994 + (5.0/3.0) * -0.0359909 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_to_n_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn53_to_n_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 --> n + Mn52 - // Mn53 --> n + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 41.2568 + -139.878 * tfactors.T9i + -0.91084 * tfactors.T913 + + 0.162511 * tfactors.T9 + -0.0279619 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 41.2568 + -139.878 * tfactors.T9i + -0.91084 * tfactors.T913 - + 0.162511 * tfactors.T9 + -0.0279619 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 139.878 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.91084 * tfactors.T923i + + 0.162511 + (5.0/3.0) * -0.0279619 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 139.878 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.91084 * tfactors.T923i - + 0.162511 + (5.0/3.0) * -0.0279619 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_to_p_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn53_to_p_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 --> p + Cr52 - // Mn53 --> p + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.2932 + -76.1248 * tfactors.T9i + -35.2154 * tfactors.T913i + 0.73019 * tfactors.T913 + + -1.26018 * tfactors.T9 + 0.121141 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.2932 + -76.1248 * tfactors.T9i + -35.2154 * tfactors.T913i + 0.73019 * tfactors.T913 - + -1.26018 * tfactors.T9 + 0.121141 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 76.1248 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2154 * tfactors.T943i + (1.0/3.0) * 0.73019 * tfactors.T923i + + -1.26018 + (5.0/3.0) * 0.121141 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 76.1248 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2154 * tfactors.T943i + (1.0/3.0) * 0.73019 * tfactors.T923i - + -1.26018 + (5.0/3.0) * 0.121141 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_to_He4_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn53_to_He4_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 --> He4 + V49 - // Mn53 --> He4 + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 87.4299 + -106.249 * tfactors.T9i + -84.3633 * tfactors.T913i + -5.28933 * tfactors.T913 + + -1.3103 * tfactors.T9 + 0.187088 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 87.4299 + -106.249 * tfactors.T9i + -84.3633 * tfactors.T913i + -5.28933 * tfactors.T913 - + -1.3103 * tfactors.T9 + 0.187088 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.249 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.3633 * tfactors.T943i + (1.0/3.0) * -5.28933 * tfactors.T923i + + -1.3103 + (5.0/3.0) * 0.187088 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.249 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.3633 * tfactors.T943i + (1.0/3.0) * -5.28933 * tfactors.T923i - + -1.3103 + (5.0/3.0) * 0.187088 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_to_n_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn54_to_n_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 --> n + Mn53 - // Mn54 --> n + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 41.1614 + -103.73 * tfactors.T9i + -1.70171 * tfactors.T913 + + 0.386422 * tfactors.T9 + -0.0536858 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 41.1614 + -103.73 * tfactors.T9i + -1.70171 * tfactors.T913 - + 0.386422 * tfactors.T9 + -0.0536858 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.73 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.70171 * tfactors.T923i + + 0.386422 + (5.0/3.0) * -0.0536858 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.73 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.70171 * tfactors.T923i - + 0.386422 + (5.0/3.0) * -0.0536858 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_to_p_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn54_to_p_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 --> p + Cr53 - // Mn54 --> p + Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.3213 + -87.7254 * tfactors.T9i + -35.2197 * tfactors.T913i + 3.74805 * tfactors.T913 + + -2.77987 * tfactors.T9 + 0.296885 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.3213 + -87.7254 * tfactors.T9i + -35.2197 * tfactors.T913i + 3.74805 * tfactors.T913 - + -2.77987 * tfactors.T9 + 0.296885 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 87.7254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2197 * tfactors.T943i + (1.0/3.0) * 3.74805 * tfactors.T923i + + -2.77987 + (5.0/3.0) * 0.296885 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.7254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2197 * tfactors.T943i + (1.0/3.0) * 3.74805 * tfactors.T923i - + -2.77987 + (5.0/3.0) * 0.296885 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_to_He4_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn54_to_He4_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 --> He4 + V50 - // Mn54 --> He4 + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 88.9113 + -101.641 * tfactors.T9i + -84.4058 * tfactors.T913i + -6.25173 * tfactors.T913 + + -1.31339 * tfactors.T9 + 0.208695 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 88.9113 + -101.641 * tfactors.T9i + -84.4058 * tfactors.T913i + -6.25173 * tfactors.T913 - + -1.31339 * tfactors.T9 + 0.208695 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 101.641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.4058 * tfactors.T943i + (1.0/3.0) * -6.25173 * tfactors.T923i + + -1.31339 + (5.0/3.0) * 0.208695 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 101.641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.4058 * tfactors.T943i + (1.0/3.0) * -6.25173 * tfactors.T923i - + -1.31339 + (5.0/3.0) * 0.208695 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_to_n_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn55_to_n_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 --> n + Mn54 - // Mn55 --> n + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 42.3029 + -118.673 * tfactors.T9i + -2.56572 * tfactors.T913 + + 0.352447 * tfactors.T9 + -0.0375878 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 42.3029 + -118.673 * tfactors.T9i + -2.56572 * tfactors.T913 - + 0.352447 * tfactors.T9 + -0.0375878 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 118.673 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.56572 * tfactors.T923i + + 0.352447 + (5.0/3.0) * -0.0375878 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 118.673 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.56572 * tfactors.T923i - + 0.352447 + (5.0/3.0) * -0.0375878 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_to_p_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn55_to_p_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 --> p + Cr54 - // Mn55 --> p + Cr54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.8219 + -93.6136 * tfactors.T9i + -35.2237 * tfactors.T913i + 2.60768 * tfactors.T913 + + -1.7864 * tfactors.T9 + 0.134189 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.8219 + -93.6136 * tfactors.T9i + -35.2237 * tfactors.T913i + 2.60768 * tfactors.T913 - + -1.7864 * tfactors.T9 + 0.134189 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.6136 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2237 * tfactors.T943i + (1.0/3.0) * 2.60768 * tfactors.T923i + + -1.7864 + (5.0/3.0) * 0.134189 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.6136 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2237 * tfactors.T943i + (1.0/3.0) * 2.60768 * tfactors.T923i - + -1.7864 + (5.0/3.0) * 0.134189 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_to_He4_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Mn55_to_He4_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 --> He4 + V51 - // Mn55 --> He4 + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 86.8796 + -92.0714 * tfactors.T9i + -84.4467 * tfactors.T913i + -1.29542 * tfactors.T913 + + -3.56909 * tfactors.T9 + 0.513926 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 86.8796 + -92.0714 * tfactors.T9i + -84.4467 * tfactors.T913i + -1.29542 * tfactors.T913 - + -3.56909 * tfactors.T9 + 0.513926 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.0714 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.4467 * tfactors.T943i + (1.0/3.0) * -1.29542 * tfactors.T923i + + -3.56909 + (5.0/3.0) * 0.513926 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.0714 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.4467 * tfactors.T943i + (1.0/3.0) * -1.29542 * tfactors.T923i - + -3.56909 + (5.0/3.0) * 0.513926 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 --> p + Mn51 - // Fe52 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.728 + -85.6325 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.728 + -85.6325 * tfactors.T9i + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.6325 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.6325 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_to_He4_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe52_to_He4_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 --> He4 + Cr48 - // Fe52 --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 90.1474 + -92.109 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 90.1474 + -92.109 * tfactors.T9i + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.109 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.109 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_to_n_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe53_to_n_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 --> n + Fe52 - // Fe53 --> n + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.4863 + -123.994 * tfactors.T9i + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.4863 + -123.994 * tfactors.T9i + -0.344319 * tfactors.T913 - + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 123.994 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 123.994 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.344319 * tfactors.T923i - + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_to_p_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe53_to_p_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 --> p + Mn52 - // Fe53 --> p + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.5946 + -87.3685 * tfactors.T9i + -36.187 * tfactors.T913i + 1.79171 * tfactors.T913 + + -1.77786 * tfactors.T9 + 0.179936 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.5946 + -87.3685 * tfactors.T9i + -36.187 * tfactors.T913i + 1.79171 * tfactors.T913 - + -1.77786 * tfactors.T9 + 0.179936 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 87.3685 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.187 * tfactors.T943i + (1.0/3.0) * 1.79171 * tfactors.T923i + + -1.77786 + (5.0/3.0) * 0.179936 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.3685 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.187 * tfactors.T943i + (1.0/3.0) * 1.79171 * tfactors.T923i - + -1.77786 + (5.0/3.0) * 0.179936 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_to_He4_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe53_to_He4_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 --> He4 + Cr49 - // Fe53 --> He4 + Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 89.8334 + -93.2974 * tfactors.T9i + -86.7913 * tfactors.T913i + -6.51572 * tfactors.T913 + + -1.21249 * tfactors.T9 + 0.185473 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 89.8334 + -93.2974 * tfactors.T9i + -86.7913 * tfactors.T913i + -6.51572 * tfactors.T913 - + -1.21249 * tfactors.T9 + 0.185473 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 93.2974 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7913 * tfactors.T943i + (1.0/3.0) * -6.51572 * tfactors.T923i + + -1.21249 + (5.0/3.0) * 0.185473 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 93.2974 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7913 * tfactors.T943i + (1.0/3.0) * -6.51572 * tfactors.T923i - + -1.21249 + (5.0/3.0) * 0.185473 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_n_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_n_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 --> n + Fe53 - // Fe54 --> n + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 42.2106 + -155.251 * tfactors.T9i + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 42.2106 + -155.251 * tfactors.T9i + -1.10421 * tfactors.T913 - + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 155.251 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 155.251 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.10421 * tfactors.T923i - + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_p_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_p_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 --> p + Mn53 - // Fe54 --> p + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.3432 + -102.741 * tfactors.T9i + -36.1913 * tfactors.T913i + 1.44056 * tfactors.T913 + + -1.50734 * tfactors.T9 + 0.142124 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.3432 + -102.741 * tfactors.T9i + -36.1913 * tfactors.T913i + 1.44056 * tfactors.T913 - + -1.50734 * tfactors.T9 + 0.142124 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.741 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1913 * tfactors.T943i + (1.0/3.0) * 1.44056 * tfactors.T923i + + -1.50734 + (5.0/3.0) * 0.142124 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.741 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1913 * tfactors.T943i + (1.0/3.0) * 1.44056 * tfactors.T923i - + -1.50734 + (5.0/3.0) * 0.142124 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_to_He4_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe54_to_He4_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 --> He4 + Cr50 - // Fe54 --> He4 + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 84.6959 + -97.6852 * tfactors.T9i + -86.8349 * tfactors.T913i + 2.37343 * tfactors.T913 + + -3.65677 * tfactors.T9 + 0.412128 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 84.6959 + -97.6852 * tfactors.T9i + -86.8349 * tfactors.T913i + 2.37343 * tfactors.T913 - + -3.65677 * tfactors.T9 + 0.412128 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 97.6852 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.8349 * tfactors.T943i + (1.0/3.0) * 2.37343 * tfactors.T923i + + -3.65677 + (5.0/3.0) * 0.412128 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 97.6852 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.8349 * tfactors.T943i + (1.0/3.0) * 2.37343 * tfactors.T923i - + -3.65677 + (5.0/3.0) * 0.412128 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_to_n_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe55_to_n_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 --> n + Fe54 - // Fe55 --> n + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 21.4833 + -107.843 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; - // ks03 - ln_set_rate = 21.4833 + -107.843 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 - + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -8.28317 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 107.843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 107.843 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i - + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -8.28317 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_to_p_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe55_to_p_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 --> p + Mn54 - // Fe55 --> p + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.7879 + -106.912 * tfactors.T9i + -36.1955 * tfactors.T913i + 1.08481 * tfactors.T913 + + -1.46703 * tfactors.T9 + 0.13789 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.7879 + -106.912 * tfactors.T9i + -36.1955 * tfactors.T913i + 1.08481 * tfactors.T913 - + -1.46703 * tfactors.T9 + 0.13789 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 106.912 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1955 * tfactors.T943i + (1.0/3.0) * 1.08481 * tfactors.T923i + + -1.46703 + (5.0/3.0) * 0.13789 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 106.912 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1955 * tfactors.T943i + (1.0/3.0) * 1.08481 * tfactors.T923i - + -1.46703 + (5.0/3.0) * 0.13789 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_to_He4_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe55_to_He4_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 --> He4 + Cr51 - // Fe55 --> He4 + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 87.2804 + -98.1216 * tfactors.T9i + -86.8771 * tfactors.T913i + -0.0873902 * tfactors.T913 + + -3.40716 * tfactors.T9 + 0.441679 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 87.2804 + -98.1216 * tfactors.T9i + -86.8771 * tfactors.T913i + -0.0873902 * tfactors.T913 - + -3.40716 * tfactors.T9 + 0.441679 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.1216 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.8771 * tfactors.T943i + (1.0/3.0) * -0.0873902 * tfactors.T923i + + -3.40716 + (5.0/3.0) * 0.441679 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.1216 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.8771 * tfactors.T943i + (1.0/3.0) * -0.0873902 * tfactors.T923i - + -3.40716 + (5.0/3.0) * 0.441679 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_n_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_n_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 --> n + Fe55 - // Fe56 --> n + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 46.7852 + -130.023 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; - // ks03 - ln_set_rate = 46.7852 + -130.023 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 - + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 7.97093 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 130.023 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 130.023 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i - + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 7.97093 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_p_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_p_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 --> p + Mn55 - // Fe56 --> p + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.6593 + -118.177 * tfactors.T9i + -36.1995 * tfactors.T913i + 1.15346 * tfactors.T913 + + -1.94437 * tfactors.T9 + 0.218429 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.6593 + -118.177 * tfactors.T9i + -36.1995 * tfactors.T913i + 1.15346 * tfactors.T913 - + -1.94437 * tfactors.T9 + 0.218429 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 118.177 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 1.15346 * tfactors.T923i + + -1.94437 + (5.0/3.0) * 0.218429 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 118.177 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 1.15346 * tfactors.T923i - + -1.94437 + (5.0/3.0) * 0.218429 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_to_He4_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe56_to_He4_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 --> He4 + Cr52 - // Fe56 --> He4 + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 82.9955 + -88.349 * tfactors.T9i + -86.9175 * tfactors.T913i + 5.655 * tfactors.T913 + + -4.53625 * tfactors.T9 + 0.479806 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 82.9955 + -88.349 * tfactors.T9i + -86.9175 * tfactors.T913i + 5.655 * tfactors.T913 - + -4.53625 * tfactors.T9 + 0.479806 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 88.349 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.9175 * tfactors.T943i + (1.0/3.0) * 5.655 * tfactors.T923i + + -4.53625 + (5.0/3.0) * 0.479806 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.349 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.9175 * tfactors.T943i + (1.0/3.0) * 5.655 * tfactors.T923i - + -4.53625 + (5.0/3.0) * 0.479806 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_to_n_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe57_to_n_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 --> n + Fe56 - // Fe57 --> n + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 58.8201 + -88.7916 * tfactors.T9i + 9.79414 * tfactors.T913i + -33.7366 * tfactors.T913 + + 2.97173 * tfactors.T9 + -0.236498 * tfactors.T953 + 13.3711 * tfactors.lnT9; - // ks03 - ln_set_rate = 58.8201 + -88.7916 * tfactors.T9i + 9.79414 * tfactors.T913i + -33.7366 * tfactors.T913 - + 2.97173 * tfactors.T9 + -0.236498 * tfactors.T953 + 13.3711 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 88.7916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.79414 * tfactors.T943i + (1.0/3.0) * -33.7366 * tfactors.T923i + + 2.97173 + (5.0/3.0) * -0.236498 * tfactors.T923 + 13.3711 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.7916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.79414 * tfactors.T943i + (1.0/3.0) * -33.7366 * tfactors.T923i - + 2.97173 + (5.0/3.0) * -0.236498 * tfactors.T923 + 13.3711 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_to_He4_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe57_to_He4_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 --> He4 + Cr53 - // Fe57 --> He4 + Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 91.6261 + -84.9485 * tfactors.T9i + -86.9567 * tfactors.T913i + -12.0579 * tfactors.T913 + + 1.33466 * tfactors.T9 + -0.14709 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 91.6261 + -84.9485 * tfactors.T9i + -86.9567 * tfactors.T913i + -12.0579 * tfactors.T913 - + 1.33466 * tfactors.T9 + -0.14709 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.9485 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.9567 * tfactors.T943i + (1.0/3.0) * -12.0579 * tfactors.T923i + + 1.33466 + (5.0/3.0) * -0.14709 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.9485 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.9567 * tfactors.T943i + (1.0/3.0) * -12.0579 * tfactors.T923i - + 1.33466 + (5.0/3.0) * -0.14709 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe58_to_n_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe58_to_n_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe58 --> n + Fe57 - // Fe58 --> n + Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 44.6221 + -116.581 * tfactors.T9i + 2.1643 * tfactors.T913i + -7.49584 * tfactors.T913 + + 0.656354 * tfactors.T9 + -0.0549855 * tfactors.T953 + 3.88149 * tfactors.lnT9; - // ks03 - ln_set_rate = 44.6221 + -116.581 * tfactors.T9i + 2.1643 * tfactors.T913i + -7.49584 * tfactors.T913 - + 0.656354 * tfactors.T9 + -0.0549855 * tfactors.T953 + 3.88149 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 116.581 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.1643 * tfactors.T943i + (1.0/3.0) * -7.49584 * tfactors.T923i + + 0.656354 + (5.0/3.0) * -0.0549855 * tfactors.T923 + 3.88149 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 116.581 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.1643 * tfactors.T943i + (1.0/3.0) * -7.49584 * tfactors.T923i - + 0.656354 + (5.0/3.0) * -0.0549855 * tfactors.T923 + 3.88149 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe58_to_He4_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Fe58_to_He4_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe58 --> He4 + Cr54 - // Fe58 --> He4 + Cr54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 88.2775 + -88.7256 * tfactors.T9i + -86.9945 * tfactors.T913i + -1.05674 * tfactors.T913 + + -4.13443 * tfactors.T9 + 0.599141 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 88.2775 + -88.7256 * tfactors.T9i + -86.9945 * tfactors.T913i + -1.05674 * tfactors.T913 - + -4.13443 * tfactors.T9 + 0.599141 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 88.7256 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.9945 * tfactors.T943i + (1.0/3.0) * -1.05674 * tfactors.T923i + + -4.13443 + (5.0/3.0) * 0.599141 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.7256 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.9945 * tfactors.T943i + (1.0/3.0) * -1.05674 * tfactors.T923i - + -4.13443 + (5.0/3.0) * 0.599141 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co53_to_p_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co53_to_p_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co53 --> p + Fe52 - // Co53 --> p + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.8857 + -18.5925 * tfactors.T9i + -37.1457 * tfactors.T913i + -5.67417 * tfactors.T913 + + -0.559644 * tfactors.T9 + 0.102768 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.8857 + -18.5925 * tfactors.T9i + -37.1457 * tfactors.T913i + -5.67417 * tfactors.T913 - + -0.559644 * tfactors.T9 + 0.102768 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.5925 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1457 * tfactors.T943i + (1.0/3.0) * -5.67417 * tfactors.T923i + + -0.559644 + (5.0/3.0) * 0.102768 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.5925 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1457 * tfactors.T943i + (1.0/3.0) * -5.67417 * tfactors.T923i - + -0.559644 + (5.0/3.0) * 0.102768 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_to_n_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co54_to_n_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 --> n + Co53 - // Co54 --> n + Co53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.9609 + -155.918 * tfactors.T9i + -1.14795 * tfactors.T913 + + 0.413083 * tfactors.T9 + -0.0515627 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.9609 + -155.918 * tfactors.T9i + -1.14795 * tfactors.T913 - + 0.413083 * tfactors.T9 + -0.0515627 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 155.918 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.14795 * tfactors.T923i + + 0.413083 + (5.0/3.0) * -0.0515627 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 155.918 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.14795 * tfactors.T923i - + 0.413083 + (5.0/3.0) * -0.0515627 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_to_p_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co54_to_p_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 --> p + Fe53 - // Co54 --> p + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.6311 + -50.5166 * tfactors.T9i + -37.1501 * tfactors.T913i + 0.211459 * tfactors.T913 + + -2.79493 * tfactors.T9 + 0.358657 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.6311 + -50.5166 * tfactors.T9i + -37.1501 * tfactors.T913i + 0.211459 * tfactors.T913 - + -2.79493 * tfactors.T9 + 0.358657 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 50.5166 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1501 * tfactors.T943i + (1.0/3.0) * 0.211459 * tfactors.T923i + + -2.79493 + (5.0/3.0) * 0.358657 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.5166 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1501 * tfactors.T943i + (1.0/3.0) * 0.211459 * tfactors.T923i - + -2.79493 + (5.0/3.0) * 0.358657 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_to_He4_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co54_to_He4_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 --> He4 + Mn50 - // Co54 --> He4 + Mn50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 79.294 + -90.6038 * tfactors.T9i + -89.2309 * tfactors.T913i + -1.30702 * tfactors.T913 + + -1.30543 * tfactors.T9 + 0.141679 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 79.294 + -90.6038 * tfactors.T9i + -89.2309 * tfactors.T913i + -1.30702 * tfactors.T913 - + -1.30543 * tfactors.T9 + 0.141679 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.6038 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.2309 * tfactors.T943i + (1.0/3.0) * -1.30702 * tfactors.T923i + + -1.30543 + (5.0/3.0) * 0.141679 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.6038 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.2309 * tfactors.T943i + (1.0/3.0) * -1.30702 * tfactors.T923i - + -1.30543 + (5.0/3.0) * 0.141679 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_n_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_n_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 --> n + Co54 - // Co55 --> n + Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.9749 + -163.499 * tfactors.T9i + 0.433187 * tfactors.T913 + + 0.0888642 * tfactors.T9 + -0.0315521 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.9749 + -163.499 * tfactors.T9i + 0.433187 * tfactors.T913 - + 0.0888642 * tfactors.T9 + -0.0315521 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 163.499 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.433187 * tfactors.T923i + + 0.0888642 + (5.0/3.0) * -0.0315521 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 163.499 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.433187 * tfactors.T923i - + 0.0888642 + (5.0/3.0) * -0.0315521 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 --> p + Fe54 - // Co55 --> p + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.8292 + -58.766 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.8292 + -58.766 * tfactors.T9i + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 - + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.766 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.766 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i - + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_to_He4_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co55_to_He4_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 --> He4 + Mn51 - // Co55 --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 90.613 + -95.2861 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 90.613 + -95.2861 * tfactors.T9i + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 - + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 95.2861 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 95.2861 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i - + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_to_n_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co56_to_n_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 --> n + Co55 - // Co56 --> n + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.626 + -117.009 * tfactors.T9i + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.626 + -117.009 * tfactors.T9i + -1.86357 * tfactors.T913 - + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 117.009 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 117.009 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.86357 * tfactors.T923i - + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_to_p_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co56_to_p_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 --> p + Fe55 - // Co56 --> p + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.6011 + -67.8743 * tfactors.T9i + -37.1585 * tfactors.T913i + 1.66198 * tfactors.T913 + + -1.60842 * tfactors.T9 + 0.148916 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.6011 + -67.8743 * tfactors.T9i + -37.1585 * tfactors.T913i + 1.66198 * tfactors.T913 - + -1.60842 * tfactors.T9 + 0.148916 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 67.8743 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1585 * tfactors.T943i + (1.0/3.0) * 1.66198 * tfactors.T923i + + -1.60842 + (5.0/3.0) * 0.148916 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.8743 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1585 * tfactors.T943i + (1.0/3.0) * 1.66198 * tfactors.T923i - + -1.60842 + (5.0/3.0) * 0.148916 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_to_He4_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co56_to_He4_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 --> He4 + Mn52 - // Co56 --> He4 + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 88.9143 + -90.0372 * tfactors.T9i + -89.3157 * tfactors.T913i + -1.95982 * tfactors.T913 + + -2.45671 * tfactors.T9 + 0.296095 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 88.9143 + -90.0372 * tfactors.T9i + -89.3157 * tfactors.T913i + -1.95982 * tfactors.T913 - + -2.45671 * tfactors.T9 + 0.296095 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.0372 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3157 * tfactors.T943i + (1.0/3.0) * -1.95982 * tfactors.T923i + + -2.45671 + (5.0/3.0) * 0.296095 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.0372 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3157 * tfactors.T943i + (1.0/3.0) * -1.95982 * tfactors.T923i - + -2.45671 + (5.0/3.0) * 0.296095 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_n_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_n_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 --> n + Co56 - // Co57 --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 41.1522 + -132.015 * tfactors.T9i + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 41.1522 + -132.015 * tfactors.T9i + -1.37855 * tfactors.T913 - + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 132.015 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 132.015 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37855 * tfactors.T923i - + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 --> p + Fe56 - // Co57 --> p + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.6663 + -69.9498 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.6663 + -69.9498 * tfactors.T9i + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 - + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 69.9498 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 69.9498 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i - + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_to_He4_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co57_to_He4_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 --> He4 + Mn53 - // Co57 --> He4 + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 87.0081 + -82.174 * tfactors.T9i + -89.3558 * tfactors.T913i + 0.000882861 * tfactors.T913 + + -2.79327 * tfactors.T9 + 0.309057 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 87.0081 + -82.174 * tfactors.T9i + -89.3558 * tfactors.T913i + 0.000882861 * tfactors.T913 - + -2.79327 * tfactors.T9 + 0.309057 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 82.174 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3558 * tfactors.T943i + (1.0/3.0) * 0.000882861 * tfactors.T923i + + -2.79327 + (5.0/3.0) * 0.309057 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 82.174 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3558 * tfactors.T943i + (1.0/3.0) * 0.000882861 * tfactors.T923i - + -2.79327 + (5.0/3.0) * 0.309057 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_to_n_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co58_to_n_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 --> n + Co57 - // Co58 --> n + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 41.1458 + -99.4851 * tfactors.T9i + -1.03654 * tfactors.T913 + + 0.342218 * tfactors.T9 + -0.0638367 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 41.1458 + -99.4851 * tfactors.T9i + -1.03654 * tfactors.T913 - + 0.342218 * tfactors.T9 + -0.0638367 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.4851 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.03654 * tfactors.T923i + + 0.342218 + (5.0/3.0) * -0.0638367 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.4851 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.03654 * tfactors.T923i - + 0.342218 + (5.0/3.0) * -0.0638367 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_to_p_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co58_to_p_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 --> p + Fe57 - // Co58 --> p + Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.0324 + -80.7059 * tfactors.T9i + -37.1663 * tfactors.T913i + 3.48503 * tfactors.T913 + + -2.56204 * tfactors.T9 + 0.272972 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.0324 + -80.7059 * tfactors.T9i + -37.1663 * tfactors.T913i + 3.48503 * tfactors.T913 - + -2.56204 * tfactors.T9 + 0.272972 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 80.7059 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1663 * tfactors.T943i + (1.0/3.0) * 3.48503 * tfactors.T923i + + -2.56204 + (5.0/3.0) * 0.272972 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 80.7059 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1663 * tfactors.T943i + (1.0/3.0) * 3.48503 * tfactors.T923i - + -2.56204 + (5.0/3.0) * 0.272972 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_to_He4_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co58_to_He4_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 --> He4 + Mn54 - // Co58 --> He4 + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 92.9296 + -77.929 * tfactors.T9i + -89.3946 * tfactors.T913i + -8.26476 * tfactors.T913 + + -0.766622 * tfactors.T9 + 0.135181 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 92.9296 + -77.929 * tfactors.T9i + -89.3946 * tfactors.T913i + -8.26476 * tfactors.T913 - + -0.766622 * tfactors.T9 + 0.135181 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.929 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3946 * tfactors.T943i + (1.0/3.0) * -8.26476 * tfactors.T923i + + -0.766622 + (5.0/3.0) * 0.135181 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.929 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3946 * tfactors.T943i + (1.0/3.0) * -8.26476 * tfactors.T923i - + -0.766622 + (5.0/3.0) * 0.135181 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_to_n_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co59_to_n_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 --> n + Co58 - // Co59 --> n + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 41.4007 + -121.312 * tfactors.T9i + -2.18418 * tfactors.T913 + + 0.328629 * tfactors.T9 + -0.0407234 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 41.4007 + -121.312 * tfactors.T9i + -2.18418 * tfactors.T913 - + 0.328629 * tfactors.T9 + -0.0407234 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 121.312 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.18418 * tfactors.T923i + + 0.328629 + (5.0/3.0) * -0.0407234 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 121.312 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.18418 * tfactors.T923i - + 0.328629 + (5.0/3.0) * -0.0407234 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_to_p_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co59_to_p_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 --> p + Fe58 - // Co59 --> p + Fe58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.8189 + -85.4551 * tfactors.T9i + -37.17 * tfactors.T913i + 1.63285 * tfactors.T913 + + -1.16636 * tfactors.T9 + 0.0508619 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.8189 + -85.4551 * tfactors.T9i + -37.17 * tfactors.T913i + 1.63285 * tfactors.T913 - + -1.16636 * tfactors.T9 + 0.0508619 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.4551 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.17 * tfactors.T943i + (1.0/3.0) * 1.63285 * tfactors.T923i + + -1.16636 + (5.0/3.0) * 0.0508619 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.4551 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.17 * tfactors.T943i + (1.0/3.0) * 1.63285 * tfactors.T923i - + -1.16636 + (5.0/3.0) * 0.0508619 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_to_He4_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Co59_to_He4_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 --> He4 + Mn55 - // Co59 --> He4 + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 84.7829 + -80.5671 * tfactors.T9i + -89.432 * tfactors.T913i + 5.33428 * tfactors.T913 + + -5.11461 * tfactors.T9 + 0.613808 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 84.7829 + -80.5671 * tfactors.T9i + -89.432 * tfactors.T913i + 5.33428 * tfactors.T913 - + -5.11461 * tfactors.T9 + 0.613808 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 80.5671 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.432 * tfactors.T943i + (1.0/3.0) * 5.33428 * tfactors.T923i + + -5.11461 + (5.0/3.0) * 0.613808 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 80.5671 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.432 * tfactors.T943i + (1.0/3.0) * 5.33428 * tfactors.T923i - + -5.11461 + (5.0/3.0) * 0.613808 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 --> p + Co55 - // Ni56 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.1318 + -83.1473 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.1318 + -83.1473 * tfactors.T9i + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 83.1473 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 83.1473 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_to_He4_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni56_to_He4_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 --> He4 + Fe52 - // Ni56 --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 91.6226 + -92.801 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 91.6226 + -92.801 * tfactors.T9i + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.801 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.801 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_n_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_n_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 --> n + Ni56 - // Ni57 --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 38.3694 + -118.941 * tfactors.T9i + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 38.3694 + -118.941 * tfactors.T9i + -1.19665 * tfactors.T913 - + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 118.941 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 118.941 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19665 * tfactors.T923i - + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 --> p + Co56 - // Ni57 --> p + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.0839 + -85.0794 * tfactors.T9i + -38.1094 * tfactors.T913i + 2.57091 * tfactors.T913 + + -2.07795 * tfactors.T9 + 0.20757 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.0839 + -85.0794 * tfactors.T9i + -38.1094 * tfactors.T913i + 2.57091 * tfactors.T913 - + -2.07795 * tfactors.T9 + 0.20757 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.0794 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1094 * tfactors.T943i + (1.0/3.0) * 2.57091 * tfactors.T923i + + -2.07795 + (5.0/3.0) * 0.20757 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.0794 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1094 * tfactors.T943i + (1.0/3.0) * 2.57091 * tfactors.T923i - + -2.07795 + (5.0/3.0) * 0.20757 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_to_He4_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni57_to_He4_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 --> He4 + Fe53 - // Ni57 --> He4 + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 94.7397 + -87.7481 * tfactors.T9i + -91.7231 * tfactors.T913i + -10.1816 * tfactors.T913 + + -0.0406303 * tfactors.T9 + 0.0345056 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 94.7397 + -87.7481 * tfactors.T9i + -91.7231 * tfactors.T913i + -10.1816 * tfactors.T913 - + -0.0406303 * tfactors.T9 + 0.0345056 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 87.7481 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * -10.1816 * tfactors.T923i + + -0.0406303 + (5.0/3.0) * 0.0345056 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.7481 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * -10.1816 * tfactors.T923i - + -0.0406303 + (5.0/3.0) * 0.0345056 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_n_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_n_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 --> n + Ni57 - // Ni58 --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 42.3391 + -141.772 * tfactors.T9i + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 42.3391 + -141.772 * tfactors.T9i + -1.90814 * tfactors.T913 - + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 141.772 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 141.772 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.90814 * tfactors.T923i - + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_p_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_p_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 --> p + Co57 - // Ni58 --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.775 + -94.8373 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.775 + -94.8373 * tfactors.T9i + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 - + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.8373 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.8373 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i - + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni58_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 --> He4 + Fe54 - // Ni58 --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 85.2327 + -74.2705 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 85.2327 + -74.2705 * tfactors.T9i + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 - + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.2705 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.2705 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i - + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_to_n_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni59_to_n_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 --> n + Ni58 - // Ni59 --> n + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 30.9258 + -104.3 * tfactors.T9i + -11.785 * tfactors.T913i + 19.5347 * tfactors.T913 + + -0.857179 * tfactors.T9 + 0.00111653 * tfactors.T953 + -7.85642 * tfactors.lnT9; - // ks03 - ln_set_rate = 30.9258 + -104.3 * tfactors.T9i + -11.785 * tfactors.T913i + 19.5347 * tfactors.T913 - + -0.857179 * tfactors.T9 + 0.00111653 * tfactors.T953 + -7.85642 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 104.3 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.785 * tfactors.T943i + (1.0/3.0) * 19.5347 * tfactors.T923i + + -0.857179 + (5.0/3.0) * 0.00111653 * tfactors.T923 + -7.85642 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 104.3 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.785 * tfactors.T943i + (1.0/3.0) * 19.5347 * tfactors.T923i - + -0.857179 + (5.0/3.0) * 0.00111653 * tfactors.T923 + -7.85642 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_to_p_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni59_to_p_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 --> p + Co58 - // Ni59 --> p + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.0091 + -99.7842 * tfactors.T9i + -38.1171 * tfactors.T913i + 1.68645 * tfactors.T913 + + -1.51404 * tfactors.T9 + 0.126766 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.0091 + -99.7842 * tfactors.T9i + -38.1171 * tfactors.T913i + 1.68645 * tfactors.T913 - + -1.51404 * tfactors.T9 + 0.126766 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 99.7842 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1171 * tfactors.T943i + (1.0/3.0) * 1.68645 * tfactors.T923i + + -1.51404 + (5.0/3.0) * 0.126766 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 99.7842 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1171 * tfactors.T943i + (1.0/3.0) * 1.68645 * tfactors.T923i - + -1.51404 + (5.0/3.0) * 0.126766 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_to_He4_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni59_to_He4_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 --> He4 + Fe55 - // Ni59 --> He4 + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 85.76 + -70.8014 * tfactors.T9i + -91.8012 * tfactors.T913i + 4.12067 * tfactors.T913 + + -4.13271 * tfactors.T9 + 0.450006 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 85.76 + -70.8014 * tfactors.T9i + -91.8012 * tfactors.T913i + 4.12067 * tfactors.T913 - + -4.13271 * tfactors.T9 + 0.450006 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 70.8014 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.8012 * tfactors.T943i + (1.0/3.0) * 4.12067 * tfactors.T923i + + -4.13271 + (5.0/3.0) * 0.450006 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 70.8014 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.8012 * tfactors.T943i + (1.0/3.0) * 4.12067 * tfactors.T923i - + -4.13271 + (5.0/3.0) * 0.450006 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_to_n_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni60_to_n_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 --> n + Ni59 - // Ni60 --> n + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 50.6431 + -132.266 * tfactors.T9i + 9.92411 * tfactors.T913i + -20.503 * tfactors.T913 + + 1.39981 * tfactors.T9 + -0.101641 * tfactors.T953 + 10.082 * tfactors.lnT9; - // ks03 - ln_set_rate = 50.6431 + -132.266 * tfactors.T9i + 9.92411 * tfactors.T913i + -20.503 * tfactors.T913 - + 1.39981 * tfactors.T9 + -0.101641 * tfactors.T953 + 10.082 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 132.266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.92411 * tfactors.T943i + (1.0/3.0) * -20.503 * tfactors.T923i + + 1.39981 + (5.0/3.0) * -0.101641 * tfactors.T923 + 10.082 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 132.266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.92411 * tfactors.T943i + (1.0/3.0) * -20.503 * tfactors.T923i - + 1.39981 + (5.0/3.0) * -0.101641 * tfactors.T923 + 10.082 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_to_p_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni60_to_p_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 --> p + Co59 - // Ni60 --> p + Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.717 + -110.622 * tfactors.T9i + -38.1208 * tfactors.T913i + 2.42609 * tfactors.T913 + + -1.5885 * tfactors.T9 + 0.110313 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.717 + -110.622 * tfactors.T9i + -38.1208 * tfactors.T913i + 2.42609 * tfactors.T913 - + -1.5885 * tfactors.T9 + 0.110313 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.622 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1208 * tfactors.T943i + (1.0/3.0) * 2.42609 * tfactors.T923i + + -1.5885 + (5.0/3.0) * 0.110313 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.622 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1208 * tfactors.T943i + (1.0/3.0) * 2.42609 * tfactors.T923i - + -1.5885 + (5.0/3.0) * 0.110313 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_to_He4_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni60_to_He4_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 --> He4 + Fe56 - // Ni60 --> He4 + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 85.6559 + -73.0113 * tfactors.T9i + -91.8383 * tfactors.T913i + 3.63237 * tfactors.T913 + + -2.73367 * tfactors.T9 + 0.179684 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 85.6559 + -73.0113 * tfactors.T9i + -91.8383 * tfactors.T913i + 3.63237 * tfactors.T913 - + -2.73367 * tfactors.T9 + 0.179684 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 73.0113 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.8383 * tfactors.T943i + (1.0/3.0) * 3.63237 * tfactors.T923i + + -2.73367 + (5.0/3.0) * 0.179684 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 73.0113 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.8383 * tfactors.T943i + (1.0/3.0) * 3.63237 * tfactors.T923i - + -2.73367 + (5.0/3.0) * 0.179684 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_to_n_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni61_to_n_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 --> n + Ni60 - // Ni61 --> n + Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 27.8859 + -90.6506 * tfactors.T9i + -9.46323 * tfactors.T913i + 19.9252 * tfactors.T913 + + -0.985724 * tfactors.T9 + 0.0164222 * tfactors.T953 + -7.25824 * tfactors.lnT9; - // ks03 - ln_set_rate = 27.8859 + -90.6506 * tfactors.T9i + -9.46323 * tfactors.T913i + 19.9252 * tfactors.T913 - + -0.985724 * tfactors.T9 + 0.0164222 * tfactors.T953 + -7.25824 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.6506 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -9.46323 * tfactors.T943i + (1.0/3.0) * 19.9252 * tfactors.T923i + + -0.985724 + (5.0/3.0) * 0.0164222 * tfactors.T923 + -7.25824 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.6506 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -9.46323 * tfactors.T943i + (1.0/3.0) * 19.9252 * tfactors.T923i - + -0.985724 + (5.0/3.0) * 0.0164222 * tfactors.T923 + -7.25824 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_to_He4_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni61_to_He4_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 --> He4 + Fe57 - // Ni61 --> He4 + Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 90.4812 + -75.031 * tfactors.T9i + -91.8742 * tfactors.T913i + -4.07595 * tfactors.T913 + + -1.93027 * tfactors.T9 + 0.240619 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 90.4812 + -75.031 * tfactors.T9i + -91.8742 * tfactors.T913i + -4.07595 * tfactors.T913 - + -1.93027 * tfactors.T9 + 0.240619 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 75.031 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.8742 * tfactors.T943i + (1.0/3.0) * -4.07595 * tfactors.T923i + + -1.93027 + (5.0/3.0) * 0.240619 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 75.031 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.8742 * tfactors.T943i + (1.0/3.0) * -4.07595 * tfactors.T923i - + -1.93027 + (5.0/3.0) * 0.240619 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_to_n_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni62_to_n_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 --> n + Ni61 - // Ni62 --> n + Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 36.808 + -122.947 * tfactors.T9i + -2.82482 * tfactors.T913i + 7.69552 * tfactors.T913 + + -0.605244 * tfactors.T9 + 0.0243914 * tfactors.T953 + -1.62147 * tfactors.lnT9; - // ks03 - ln_set_rate = 36.808 + -122.947 * tfactors.T9i + -2.82482 * tfactors.T913i + 7.69552 * tfactors.T913 - + -0.605244 * tfactors.T9 + 0.0243914 * tfactors.T953 + -1.62147 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 122.947 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.82482 * tfactors.T943i + (1.0/3.0) * 7.69552 * tfactors.T923i + + -0.605244 + (5.0/3.0) * 0.0243914 * tfactors.T923 + -1.62147 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 122.947 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.82482 * tfactors.T943i + (1.0/3.0) * 7.69552 * tfactors.T923i - + -0.605244 + (5.0/3.0) * 0.0243914 * tfactors.T923 + -1.62147 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_to_He4_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni62_to_He4_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 --> He4 + Fe58 - // Ni62 --> He4 + Fe58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 84.385 + -81.4356 * tfactors.T9i + -91.9089 * tfactors.T913i + 8.18581 * tfactors.T913 + + -6.00824 * tfactors.T9 + 0.693434 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 84.385 + -81.4356 * tfactors.T9i + -91.9089 * tfactors.T913i + 8.18581 * tfactors.T913 - + -6.00824 * tfactors.T9 + 0.693434 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 81.4356 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.9089 * tfactors.T943i + (1.0/3.0) * 8.18581 * tfactors.T923i + + -6.00824 + (5.0/3.0) * 0.693434 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 81.4356 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.9089 * tfactors.T943i + (1.0/3.0) * 8.18581 * tfactors.T923i - + -6.00824 + (5.0/3.0) * 0.693434 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni63_to_n_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni63_to_n_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni63 --> n + Ni62 - // Ni63 --> n + Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 28.7618 + -79.3664 * tfactors.T9i + -1.2799 * tfactors.T913i + 10.7874 * tfactors.T913 + + -0.552819 * tfactors.T9 + -0.0106439 * tfactors.T953 + -2.03486 * tfactors.lnT9; - // ks03 - ln_set_rate = 28.7618 + -79.3664 * tfactors.T9i + -1.2799 * tfactors.T913i + 10.7874 * tfactors.T913 - + -0.552819 * tfactors.T9 + -0.0106439 * tfactors.T953 + -2.03486 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.3664 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.2799 * tfactors.T943i + (1.0/3.0) * 10.7874 * tfactors.T923i + + -0.552819 + (5.0/3.0) * -0.0106439 * tfactors.T923 + -2.03486 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.3664 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.2799 * tfactors.T943i + (1.0/3.0) * 10.7874 * tfactors.T923i - + -0.552819 + (5.0/3.0) * -0.0106439 * tfactors.T923 + -2.03486 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni64_to_n_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ni64_to_n_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni64 --> n + Ni63 - // Ni64 --> n + Ni63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 53.9025 + -112.129 * tfactors.T9i + 7.01558 * tfactors.T913i + -23.8529 * tfactors.T913 + + 2.50513 * tfactors.T9 + -0.227209 * tfactors.T953 + 9.15703 * tfactors.lnT9; - // ks03 - ln_set_rate = 53.9025 + -112.129 * tfactors.T9i + 7.01558 * tfactors.T913i + -23.8529 * tfactors.T913 - + 2.50513 * tfactors.T9 + -0.227209 * tfactors.T953 + 9.15703 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 112.129 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.01558 * tfactors.T943i + (1.0/3.0) * -23.8529 * tfactors.T923i + + 2.50513 + (5.0/3.0) * -0.227209 * tfactors.T923 + 9.15703 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 112.129 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.01558 * tfactors.T943i + (1.0/3.0) * -23.8529 * tfactors.T923i - + 2.50513 + (5.0/3.0) * -0.227209 * tfactors.T923 + 9.15703 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu57_to_p_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu57_to_p_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu57 --> p + Ni56 - // Cu57 --> p + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wienr + ln_set_rate = 18.6884 + -12.8235 * tfactors.T9i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953; - // wienr - ln_set_rate = 18.6884 + -12.8235 * tfactors.T9i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8235 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8235 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wienr + ln_set_rate = 9.42903 + -11.9135 * tfactors.T9i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953; - // wienr - ln_set_rate = 9.42903 + -11.9135 * tfactors.T9i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.9135 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.9135 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wienn + ln_set_rate = 43.8092 + -8.05352 * tfactors.T9i + -39.3 * tfactors.T913i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // wienn - ln_set_rate = 43.8092 + -8.05352 * tfactors.T9i + -39.3 * tfactors.T913i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.05352 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.3 * tfactors.T943i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.05352 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.3 * tfactors.T943i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wienr + ln_set_rate = 30.7567 + -29.2535 * tfactors.T9i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953; - // wienr - ln_set_rate = 30.7567 + -29.2535 * tfactors.T9i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.2535 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.2535 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wienr + ln_set_rate = 30.9323 + -27.8535 * tfactors.T9i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953; - // wienr - ln_set_rate = 30.9323 + -27.8535 * tfactors.T9i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.8535 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.8535 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu57_to_He4_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu57_to_He4_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu57 --> He4 + Co53 - // Cu57 --> He4 + Co53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 82.608 + -82.2721 * tfactors.T9i + -94.0605 * tfactors.T913i + -2.61232 * tfactors.T913 + + -0.4397 * tfactors.T9 + -0.00420698 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 82.608 + -82.2721 * tfactors.T9i + -94.0605 * tfactors.T913i + -2.61232 * tfactors.T913 - + -0.4397 * tfactors.T9 + -0.00420698 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 82.2721 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.0605 * tfactors.T943i + (1.0/3.0) * -2.61232 * tfactors.T923i + + -0.4397 + (5.0/3.0) * -0.00420698 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 82.2721 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.0605 * tfactors.T943i + (1.0/3.0) * -2.61232 * tfactors.T923i - + -0.4397 + (5.0/3.0) * -0.00420698 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_to_n_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu58_to_n_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 --> n + Cu57 - // Cu58 --> n + Cu57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.7381 + -144.172 * tfactors.T9i + -0.954817 * tfactors.T913 + + 0.394641 * tfactors.T9 + -0.0489206 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.7381 + -144.172 * tfactors.T9i + -0.954817 * tfactors.T913 - + 0.394641 * tfactors.T9 + -0.0489206 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 144.172 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.954817 * tfactors.T923i + + 0.394641 + (5.0/3.0) * -0.0489206 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 144.172 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.954817 * tfactors.T923i - + 0.394641 + (5.0/3.0) * -0.0489206 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_to_p_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu58_to_p_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 --> p + Ni57 - // Cu58 --> p + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.6936 + -33.294 * tfactors.T9i + -39.0487 * tfactors.T913i + -0.339241 * tfactors.T913 + + -2.87307 * tfactors.T9 + 0.382369 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.6936 + -33.294 * tfactors.T9i + -39.0487 * tfactors.T913i + -0.339241 * tfactors.T913 - + -2.87307 * tfactors.T9 + 0.382369 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0487 * tfactors.T943i + (1.0/3.0) * -0.339241 * tfactors.T923i + + -2.87307 + (5.0/3.0) * 0.382369 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.294 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0487 * tfactors.T943i + (1.0/3.0) * -0.339241 * tfactors.T923i - + -2.87307 + (5.0/3.0) * 0.382369 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_to_He4_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu58_to_He4_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 --> He4 + Co54 - // Cu58 --> He4 + Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 79.5762 + -70.5255 * tfactors.T9i + -94.1012 * tfactors.T913i + 7.09095 * tfactors.T913 + + -5.85934 * tfactors.T9 + 0.728369 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 79.5762 + -70.5255 * tfactors.T9i + -94.1012 * tfactors.T913i + 7.09095 * tfactors.T913 - + -5.85934 * tfactors.T9 + 0.728369 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 70.5255 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1012 * tfactors.T943i + (1.0/3.0) * 7.09095 * tfactors.T923i + + -5.85934 + (5.0/3.0) * 0.728369 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 70.5255 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1012 * tfactors.T943i + (1.0/3.0) * 7.09095 * tfactors.T923i - + -5.85934 + (5.0/3.0) * 0.728369 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_n_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_n_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 --> n + Cu58 - // Cu59 --> n + Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.1783 + -148.149 * tfactors.T9i + -0.307504 * tfactors.T913 + + 0.342948 * tfactors.T9 + -0.0507762 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.1783 + -148.149 * tfactors.T9i + -0.307504 * tfactors.T913 - + 0.342948 * tfactors.T9 + -0.0507762 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 148.149 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.307504 * tfactors.T923i + + 0.342948 + (5.0/3.0) * -0.0507762 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 148.149 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.307504 * tfactors.T923i - + 0.342948 + (5.0/3.0) * -0.0507762 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 --> p + Ni58 - // Cu59 --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 58.96 + -39.67 * tfactors.T9i + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 + + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // si13n - ln_set_rate = 58.96 + -39.67 * tfactors.T9i + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 - + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.67 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i + + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.67 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i - + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_to_He4_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu59_to_He4_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 --> He4 + Co55 - // Cu59 --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 90.972 + -55.1745 * tfactors.T9i + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 + + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 90.972 + -55.1745 * tfactors.T9i + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 - + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.1745 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i + + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.1745 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i - + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_to_n_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu60_to_n_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 --> n + Cu59 - // Cu60 --> n + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 38.1923 + -116.72 * tfactors.T9i + -0.952104 * tfactors.T913 + + 0.520444 * tfactors.T9 + -0.0746175 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 38.1923 + -116.72 * tfactors.T9i + -0.952104 * tfactors.T913 - + 0.520444 * tfactors.T9 + -0.0746175 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 116.72 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.952104 * tfactors.T923i + + 0.520444 + (5.0/3.0) * -0.0746175 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 116.72 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.952104 * tfactors.T923i - + 0.520444 + (5.0/3.0) * -0.0746175 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_to_p_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu60_to_p_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 --> p + Ni59 - // Cu60 --> p + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.5059 + -51.9582 * tfactors.T9i + -39.0563 * tfactors.T913i + 2.1481 * tfactors.T913 + + -1.76507 * tfactors.T9 + 0.1629 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.5059 + -51.9582 * tfactors.T9i + -39.0563 * tfactors.T913i + 2.1481 * tfactors.T913 - + -1.76507 * tfactors.T9 + 0.1629 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 51.9582 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0563 * tfactors.T943i + (1.0/3.0) * 2.1481 * tfactors.T923i + + -1.76507 + (5.0/3.0) * 0.1629 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.9582 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0563 * tfactors.T943i + (1.0/3.0) * 2.1481 * tfactors.T923i - + -1.76507 + (5.0/3.0) * 0.1629 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu60_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 --> He4 + Co56 - // Cu60 --> He4 + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 91.0538 + -54.8853 * tfactors.T9i + -94.1784 * tfactors.T913i + -1.94118 * tfactors.T913 + + -2.35306 * tfactors.T9 + 0.265186 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 91.0538 + -54.8853 * tfactors.T9i + -94.1784 * tfactors.T913i + -1.94118 * tfactors.T913 - + -2.35306 * tfactors.T9 + 0.265186 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 54.8853 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1784 * tfactors.T943i + (1.0/3.0) * -1.94118 * tfactors.T923i + + -2.35306 + (5.0/3.0) * 0.265186 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 54.8853 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1784 * tfactors.T943i + (1.0/3.0) * -1.94118 * tfactors.T923i - + -2.35306 + (5.0/3.0) * 0.265186 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_to_n_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu61_to_n_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 --> n + Cu60 - // Cu61 --> n + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 39.249 + -135.899 * tfactors.T9i + -0.586034 * tfactors.T913 + + 0.320768 * tfactors.T9 + -0.0484658 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 39.249 + -135.899 * tfactors.T9i + -0.586034 * tfactors.T913 - + 0.320768 * tfactors.T9 + -0.0484658 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 135.899 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.586034 * tfactors.T923i + + 0.320768 + (5.0/3.0) * -0.0484658 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 135.899 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.586034 * tfactors.T923i - + 0.320768 + (5.0/3.0) * -0.0484658 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_to_p_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu61_to_p_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 --> p + Ni60 - // Cu61 --> p + Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 59.2863 + -55.7078 * tfactors.T9i + -39.06 * tfactors.T913i + 1.28239 * tfactors.T913 + + -1.76356 * tfactors.T9 + 0.18327 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // si13n - ln_set_rate = 59.2863 + -55.7078 * tfactors.T9i + -39.06 * tfactors.T913i + 1.28239 * tfactors.T913 - + -1.76356 * tfactors.T9 + 0.18327 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.7078 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.06 * tfactors.T943i + (1.0/3.0) * 1.28239 * tfactors.T923i + + -1.76356 + (5.0/3.0) * 0.18327 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.7078 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.06 * tfactors.T943i + (1.0/3.0) * 1.28239 * tfactors.T923i - + -1.76356 + (5.0/3.0) * 0.18327 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_to_He4_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu61_to_He4_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 --> He4 + Co57 - // Cu61 --> He4 + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 89.2903 + -58.7692 * tfactors.T9i + -94.2152 * tfactors.T913i + 0.976269 * tfactors.T913 + + -2.37283 * tfactors.T9 + 0.195501 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 89.2903 + -58.7692 * tfactors.T9i + -94.2152 * tfactors.T913i + 0.976269 * tfactors.T913 - + -2.37283 * tfactors.T9 + 0.195501 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.7692 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.2152 * tfactors.T943i + (1.0/3.0) * 0.976269 * tfactors.T923i + + -2.37283 + (5.0/3.0) * 0.195501 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.7692 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.2152 * tfactors.T943i + (1.0/3.0) * 0.976269 * tfactors.T923i - + -2.37283 + (5.0/3.0) * 0.195501 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_to_n_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu62_to_n_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 --> n + Cu61 - // Cu62 --> n + Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.3353 + -103.112 * tfactors.T9i + -0.404348 * tfactors.T913 + + 0.218353 * tfactors.T9 + -0.0562018 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.3353 + -103.112 * tfactors.T9i + -0.404348 * tfactors.T913 - + 0.218353 * tfactors.T9 + -0.0562018 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.112 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.404348 * tfactors.T923i + + 0.218353 + (5.0/3.0) * -0.0562018 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.112 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.404348 * tfactors.T923i - + 0.218353 + (5.0/3.0) * -0.0562018 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_to_p_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu62_to_p_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 --> p + Ni61 - // Cu62 --> p + Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 61.0341 + -68.0711 * tfactors.T9i + -39.0635 * tfactors.T913i + 2.03251 * tfactors.T913 + + -1.66085 * tfactors.T9 + 0.123527 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // si13n - ln_set_rate = 61.0341 + -68.0711 * tfactors.T9i + -39.0635 * tfactors.T913i + 2.03251 * tfactors.T913 - + -1.66085 * tfactors.T9 + 0.123527 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 68.0711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0635 * tfactors.T943i + (1.0/3.0) * 2.03251 * tfactors.T923i + + -1.66085 + (5.0/3.0) * 0.123527 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 68.0711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0635 * tfactors.T943i + (1.0/3.0) * 2.03251 * tfactors.T923i - + -1.66085 + (5.0/3.0) * 0.123527 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_to_He4_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu62_to_He4_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 --> He4 + Co58 - // Cu62 --> He4 + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 89.2108 + -62.396 * tfactors.T9i + -94.2508 * tfactors.T913i + 1.47146 * tfactors.T913 + + -2.87996 * tfactors.T9 + 0.26554 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 89.2108 + -62.396 * tfactors.T9i + -94.2508 * tfactors.T913i + 1.47146 * tfactors.T913 - + -2.87996 * tfactors.T9 + 0.26554 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 62.396 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.2508 * tfactors.T943i + (1.0/3.0) * 1.47146 * tfactors.T923i + + -2.87996 + (5.0/3.0) * 0.26554 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 62.396 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.2508 * tfactors.T943i + (1.0/3.0) * 1.47146 * tfactors.T923i - + -2.87996 + (5.0/3.0) * 0.26554 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_to_n_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu63_to_n_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 --> n + Cu62 - // Cu63 --> n + Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.4014 + -125.944 * tfactors.T9i + -0.723484 * tfactors.T913 + + 0.215177 * tfactors.T9 + -0.0473749 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.4014 + -125.944 * tfactors.T9i + -0.723484 * tfactors.T913 - + 0.215177 * tfactors.T9 + -0.0473749 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 125.944 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.723484 * tfactors.T923i + + 0.215177 + (5.0/3.0) * -0.0473749 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 125.944 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.723484 * tfactors.T923i - + 0.215177 + (5.0/3.0) * -0.0473749 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_to_p_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu63_to_p_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 --> p + Ni62 - // Cu63 --> p + Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 59.8332 + -71.0475 * tfactors.T9i + -39.0669 * tfactors.T913i + 1.33156 * tfactors.T913 + + -1.30043 * tfactors.T9 + 0.0961101 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // si13n - ln_set_rate = 59.8332 + -71.0475 * tfactors.T9i + -39.0669 * tfactors.T913i + 1.33156 * tfactors.T913 - + -1.30043 * tfactors.T9 + 0.0961101 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 71.0475 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0669 * tfactors.T943i + (1.0/3.0) * 1.33156 * tfactors.T923i + + -1.30043 + (5.0/3.0) * 0.0961101 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 71.0475 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0669 * tfactors.T943i + (1.0/3.0) * 1.33156 * tfactors.T923i - + -1.30043 + (5.0/3.0) * 0.0961101 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_to_He4_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu63_to_He4_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 --> He4 + Co59 - // Cu63 --> He4 + Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 89.1118 + -67.0281 * tfactors.T9i + -94.2852 * tfactors.T913i + 1.64751 * tfactors.T913 + + -2.1637 * tfactors.T9 + 0.119598 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 89.1118 + -67.0281 * tfactors.T9i + -94.2852 * tfactors.T913i + 1.64751 * tfactors.T913 - + -2.1637 * tfactors.T9 + 0.119598 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 67.0281 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.2852 * tfactors.T943i + (1.0/3.0) * 1.64751 * tfactors.T923i + + -2.1637 + (5.0/3.0) * 0.119598 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.0281 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.2852 * tfactors.T943i + (1.0/3.0) * 1.64751 * tfactors.T923i - + -2.1637 + (5.0/3.0) * 0.119598 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu64_to_n_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu64_to_n_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu64 --> n + Cu63 - // Cu64 --> n + Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 51.3753 + -91.9819 * tfactors.T9i + 11.3982 * tfactors.T913i + -24.4222 * tfactors.T913 + + 1.95364 * tfactors.T9 + -0.18693 * tfactors.T953 + 11.7458 * tfactors.lnT9; - // ks03 - ln_set_rate = 51.3753 + -91.9819 * tfactors.T9i + 11.3982 * tfactors.T913i + -24.4222 * tfactors.T913 - + 1.95364 * tfactors.T9 + -0.18693 * tfactors.T953 + 11.7458 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 91.9819 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 11.3982 * tfactors.T943i + (1.0/3.0) * -24.4222 * tfactors.T923i + + 1.95364 + (5.0/3.0) * -0.18693 * tfactors.T923 + 11.7458 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 91.9819 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 11.3982 * tfactors.T943i + (1.0/3.0) * -24.4222 * tfactors.T923i - + 1.95364 + (5.0/3.0) * -0.18693 * tfactors.T923 + 11.7458 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu64_to_p_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu64_to_p_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu64 --> p + Ni63 - // Cu64 --> p + Ni63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.5721 + -83.5601 * tfactors.T9i + -39.0703 * tfactors.T913i + -4.4238 * tfactors.T913 + + -0.152239 * tfactors.T9 + 0.0171937 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.5721 + -83.5601 * tfactors.T9i + -39.0703 * tfactors.T913i + -4.4238 * tfactors.T913 - + -0.152239 * tfactors.T9 + 0.0171937 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 83.5601 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0703 * tfactors.T943i + (1.0/3.0) * -4.4238 * tfactors.T923i + + -0.152239 + (5.0/3.0) * 0.0171937 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 83.5601 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0703 * tfactors.T943i + (1.0/3.0) * -4.4238 * tfactors.T923i - + -0.152239 + (5.0/3.0) * 0.0171937 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu65_to_n_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu65_to_n_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu65 --> n + Cu64 - // Cu65 --> n + Cu64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 42.2436 + -115.009 * tfactors.T9i + -2.31276 * tfactors.T913 + + 0.434599 * tfactors.T9 + -0.0715678 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 42.2436 + -115.009 * tfactors.T9i + -2.31276 * tfactors.T913 - + 0.434599 * tfactors.T9 + -0.0715678 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 115.009 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.31276 * tfactors.T923i + + 0.434599 + (5.0/3.0) * -0.0715678 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 115.009 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.31276 * tfactors.T923i - + 0.434599 + (5.0/3.0) * -0.0715678 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu65_to_p_Ni64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Cu65_to_p_Ni64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu65 --> p + Ni64 - // Cu65 --> p + Ni64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 59.9637 + -86.4924 * tfactors.T9i + -39.0735 * tfactors.T913i + 1.76823 * tfactors.T913 + + -1.38855 * tfactors.T9 + 0.0515179 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // si13n - ln_set_rate = 59.9637 + -86.4924 * tfactors.T9i + -39.0735 * tfactors.T913i + 1.76823 * tfactors.T913 - + -1.38855 * tfactors.T9 + 0.0515179 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 86.4924 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0735 * tfactors.T943i + (1.0/3.0) * 1.76823 * tfactors.T923i + + -1.38855 + (5.0/3.0) * 0.0515179 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 86.4924 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0735 * tfactors.T943i + (1.0/3.0) * 1.76823 * tfactors.T923i - + -1.38855 + (5.0/3.0) * 0.0515179 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn59_to_p_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn59_to_p_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn59 --> p + Cu58 - // Zn59 --> p + Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 58.3404 + -31.0762 * tfactors.T9i + -209.408 * tfactors.T913i + 176.007 * tfactors.T913 + + -6.98867 * tfactors.T9 + 0.295678 * tfactors.T953 + -109.048 * tfactors.lnT9; - // nfisn - ln_set_rate = 58.3404 + -31.0762 * tfactors.T9i + -209.408 * tfactors.T913i + 176.007 * tfactors.T913 - + -6.98867 * tfactors.T9 + 0.295678 * tfactors.T953 + -109.048 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.0762 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -209.408 * tfactors.T943i + (1.0/3.0) * 176.007 * tfactors.T923i + + -6.98867 + (5.0/3.0) * 0.295678 * tfactors.T923 + -109.048 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.0762 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -209.408 * tfactors.T943i + (1.0/3.0) * 176.007 * tfactors.T923i - + -6.98867 + (5.0/3.0) * 0.295678 * tfactors.T923 + -109.048 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 16.5896 + -32.4274 * tfactors.T9i + -142.882 * tfactors.T913i + 138.901 * tfactors.T913 + + -5.7482 * tfactors.T9 + 0.223571 * tfactors.T953 + -83.1553 * tfactors.lnT9; - // nfisn - ln_set_rate = 16.5896 + -32.4274 * tfactors.T9i + -142.882 * tfactors.T913i + 138.901 * tfactors.T913 - + -5.7482 * tfactors.T9 + 0.223571 * tfactors.T953 + -83.1553 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 32.4274 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -142.882 * tfactors.T943i + (1.0/3.0) * 138.901 * tfactors.T923i + + -5.7482 + (5.0/3.0) * 0.223571 * tfactors.T923 + -83.1553 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 32.4274 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -142.882 * tfactors.T943i + (1.0/3.0) * 138.901 * tfactors.T923i - + -5.7482 + (5.0/3.0) * 0.223571 * tfactors.T923 + -83.1553 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 56.5341 + -33.5916 * tfactors.T9i + -36.2109 * tfactors.T913i + -10.0201 * tfactors.T913 + + 0.882265 * tfactors.T9 + -0.0954725 * tfactors.T953 + 4.78794 * tfactors.lnT9; - // nfisn - ln_set_rate = 56.5341 + -33.5916 * tfactors.T9i + -36.2109 * tfactors.T913i + -10.0201 * tfactors.T913 - + 0.882265 * tfactors.T9 + -0.0954725 * tfactors.T953 + 4.78794 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.5916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2109 * tfactors.T943i + (1.0/3.0) * -10.0201 * tfactors.T923i + + 0.882265 + (5.0/3.0) * -0.0954725 * tfactors.T923 + 4.78794 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.5916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2109 * tfactors.T943i + (1.0/3.0) * -10.0201 * tfactors.T923i - + 0.882265 + (5.0/3.0) * -0.0954725 * tfactors.T923 + 4.78794 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn59_to_p_Ni58_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn59_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn59 --> p + Ni58 - // Zn59 --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wc12w + ln_set_rate = -5.57052; + amrex::ignore_unused(tfactors); - // wc12w - ln_set_rate = -5.57052; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_n_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_n_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 --> n + Zn59 - // Zn60 --> n + Zn59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 33.8125 + -174.051 * tfactors.T9i + 0.65324 * tfactors.T913 + + -0.0259697 * tfactors.T9 + -0.00407906 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 33.8125 + -174.051 * tfactors.T9i + 0.65324 * tfactors.T913 - + -0.0259697 * tfactors.T9 + -0.00407906 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 174.051 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.65324 * tfactors.T923i + + -0.0259697 + (5.0/3.0) * -0.00407906 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 174.051 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.65324 * tfactors.T923i - + -0.0259697 + (5.0/3.0) * -0.00407906 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_p_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_p_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 --> p + Cu59 - // Zn60 --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2929 + -59.4094 * tfactors.T9i + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 + + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2929 + -59.4094 * tfactors.T9i + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 - + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.4094 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i + + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.4094 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i - + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn60_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 --> He4 + Ni56 - // Zn60 --> He4 + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 86.0619 + -31.4367 * tfactors.T9i + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 + + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 86.0619 + -31.4367 * tfactors.T9i + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 - + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.4367 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i + + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.4367 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i - + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_to_n_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn61_to_n_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 --> n + Zn60 - // Zn61 --> n + Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.7839 + -118.702 * tfactors.T9i + 0.0559751 * tfactors.T913 + + 0.208641 * tfactors.T9 + -0.0357451 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.7839 + -118.702 * tfactors.T9i + 0.0559751 * tfactors.T913 - + 0.208641 * tfactors.T9 + -0.0357451 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 118.702 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.0559751 * tfactors.T923i + + 0.208641 + (5.0/3.0) * -0.0357451 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 118.702 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.0559751 * tfactors.T923i - + 0.208641 + (5.0/3.0) * -0.0357451 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_to_p_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn61_to_p_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 --> p + Cu60 - // Zn61 --> p + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.9142 + -61.3919 * tfactors.T9i + -39.9846 * tfactors.T913i + 3.2392 * tfactors.T913 + + -2.37211 * tfactors.T9 + 0.239391 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.9142 + -61.3919 * tfactors.T9i + -39.9846 * tfactors.T913i + 3.2392 * tfactors.T913 - + -2.37211 * tfactors.T9 + 0.239391 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 61.3919 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9846 * tfactors.T943i + (1.0/3.0) * 3.2392 * tfactors.T923i + + -2.37211 + (5.0/3.0) * 0.239391 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 61.3919 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9846 * tfactors.T943i + (1.0/3.0) * 3.2392 * tfactors.T923i - + -2.37211 + (5.0/3.0) * 0.239391 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_to_He4_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn61_to_He4_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 --> He4 + Ni57 - // Zn61 --> He4 + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 86.4776 + -31.1979 * tfactors.T9i + -96.5275 * tfactors.T913i + 5.42001 * tfactors.T913 + + -3.93988 * tfactors.T9 + 0.358068 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 86.4776 + -31.1979 * tfactors.T9i + -96.5275 * tfactors.T913i + 5.42001 * tfactors.T913 - + -3.93988 * tfactors.T9 + 0.358068 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.1979 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.5275 * tfactors.T943i + (1.0/3.0) * 5.42001 * tfactors.T923i + + -3.93988 + (5.0/3.0) * 0.358068 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.1979 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.5275 * tfactors.T943i + (1.0/3.0) * 5.42001 * tfactors.T923i - + -3.93988 + (5.0/3.0) * 0.358068 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_to_n_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn62_to_n_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 --> n + Zn61 - // Zn62 --> n + Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 38.7699 + -149.667 * tfactors.T9i + 0.174908 * tfactors.T913 + + 0.222207 * tfactors.T9 + -0.0495297 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 38.7699 + -149.667 * tfactors.T9i + 0.174908 * tfactors.T913 - + 0.222207 * tfactors.T9 + -0.0495297 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 149.667 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.174908 * tfactors.T923i + + 0.222207 + (5.0/3.0) * -0.0495297 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 149.667 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.174908 * tfactors.T923i - + 0.222207 + (5.0/3.0) * -0.0495297 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_to_p_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn62_to_p_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 --> p + Cu61 - // Zn62 --> p + Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.6372 + -75.1596 * tfactors.T9i + -39.9882 * tfactors.T913i + 2.26956 * tfactors.T913 + + -1.69006 * tfactors.T9 + 0.132363 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.6372 + -75.1596 * tfactors.T9i + -39.9882 * tfactors.T913i + 2.26956 * tfactors.T913 - + -1.69006 * tfactors.T9 + 0.132363 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 75.1596 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9882 * tfactors.T943i + (1.0/3.0) * 2.26956 * tfactors.T923i + + -1.69006 + (5.0/3.0) * 0.132363 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 75.1596 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9882 * tfactors.T943i + (1.0/3.0) * 2.26956 * tfactors.T923i - + -1.69006 + (5.0/3.0) * 0.132363 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_to_He4_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn62_to_He4_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 --> He4 + Ni58 - // Zn62 --> He4 + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 87.8504 + -39.0915 * tfactors.T9i + -96.5638 * tfactors.T913i + 2.81593 * tfactors.T913 + + -2.43398 * tfactors.T9 + 0.140051 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 87.8504 + -39.0915 * tfactors.T9i + -96.5638 * tfactors.T913i + 2.81593 * tfactors.T913 - + -2.43398 * tfactors.T9 + 0.140051 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.0915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.5638 * tfactors.T943i + (1.0/3.0) * 2.81593 * tfactors.T923i + + -2.43398 + (5.0/3.0) * 0.140051 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.0915 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.5638 * tfactors.T943i + (1.0/3.0) * 2.81593 * tfactors.T923i - + -2.43398 + (5.0/3.0) * 0.140051 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_to_n_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn63_to_n_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 --> n + Zn62 - // Zn63 --> n + Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 38.7908 + -105.751 * tfactors.T9i + -0.365196 * tfactors.T913 + + 0.230327 * tfactors.T9 + -0.0605553 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 38.7908 + -105.751 * tfactors.T9i + -0.365196 * tfactors.T913 - + 0.230327 * tfactors.T9 + -0.0605553 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 105.751 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.365196 * tfactors.T923i + + 0.230327 + (5.0/3.0) * -0.0605553 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 105.751 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.365196 * tfactors.T923i - + 0.230327 + (5.0/3.0) * -0.0605553 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_to_p_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn63_to_p_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 --> p + Cu62 - // Zn63 --> p + Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.9432 + -77.7984 * tfactors.T9i + -39.9917 * tfactors.T913i + 2.6186 * tfactors.T913 + + -1.69105 * tfactors.T9 + 0.132898 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.9432 + -77.7984 * tfactors.T9i + -39.9917 * tfactors.T913i + 2.6186 * tfactors.T913 - + -1.69105 * tfactors.T9 + 0.132898 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.7984 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9917 * tfactors.T943i + (1.0/3.0) * 2.6186 * tfactors.T923i + + -1.69105 + (5.0/3.0) * 0.132898 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.7984 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9917 * tfactors.T943i + (1.0/3.0) * 2.6186 * tfactors.T923i - + -1.69105 + (5.0/3.0) * 0.132898 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_to_He4_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn63_to_He4_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 --> He4 + Ni59 - // Zn63 --> He4 + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 88.047 + -40.4102 * tfactors.T9i + -96.5991 * tfactors.T913i + 2.66136 * tfactors.T913 + + -2.36841 * tfactors.T9 + 0.148474 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 88.047 + -40.4102 * tfactors.T9i + -96.5991 * tfactors.T913i + 2.66136 * tfactors.T913 - + -2.36841 * tfactors.T9 + 0.148474 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 40.4102 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.5991 * tfactors.T943i + (1.0/3.0) * 2.66136 * tfactors.T923i + + -2.36841 + (5.0/3.0) * 0.148474 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.4102 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.5991 * tfactors.T943i + (1.0/3.0) * 2.66136 * tfactors.T923i - + -2.36841 + (5.0/3.0) * 0.148474 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn64_to_n_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn64_to_n_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn64 --> n + Zn63 - // Zn64 --> n + Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 41.3222 + -137.651 * tfactors.T9i + -0.526805 * tfactors.T913 + + 0.294653 * tfactors.T9 + -0.0660418 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 41.3222 + -137.651 * tfactors.T9i + -0.526805 * tfactors.T913 - + 0.294653 * tfactors.T9 + -0.0660418 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 137.651 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.526805 * tfactors.T923i + + 0.294653 + (5.0/3.0) * -0.0660418 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 137.651 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.526805 * tfactors.T923i - + 0.294653 + (5.0/3.0) * -0.0660418 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn64_to_p_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn64_to_p_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn64 --> p + Cu63 - // Zn64 --> p + Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.194 + -89.5055 * tfactors.T9i + -39.995 * tfactors.T913i + 1.69705 * tfactors.T913 + + -1.11391 * tfactors.T9 + 0.0416287 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.194 + -89.5055 * tfactors.T9i + -39.995 * tfactors.T913i + 1.69705 * tfactors.T913 - + -1.11391 * tfactors.T9 + 0.0416287 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 89.5055 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.995 * tfactors.T943i + (1.0/3.0) * 1.69705 * tfactors.T923i + + -1.11391 + (5.0/3.0) * 0.0416287 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.5055 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.995 * tfactors.T943i + (1.0/3.0) * 1.69705 * tfactors.T923i - + -1.11391 + (5.0/3.0) * 0.0416287 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn64_to_He4_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn64_to_He4_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn64 --> He4 + Ni60 - // Zn64 --> He4 + Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 89.0883 + -45.912 * tfactors.T9i + -96.6332 * tfactors.T913i + 1.06508 * tfactors.T913 + + -1.52905 * tfactors.T9 + 0.0316173 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 89.0883 + -45.912 * tfactors.T9i + -96.6332 * tfactors.T913i + 1.06508 * tfactors.T913 - + -1.52905 * tfactors.T9 + 0.0316173 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 45.912 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.6332 * tfactors.T943i + (1.0/3.0) * 1.06508 * tfactors.T923i + + -1.52905 + (5.0/3.0) * 0.0316173 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 45.912 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.6332 * tfactors.T943i + (1.0/3.0) * 1.06508 * tfactors.T923i - + -1.52905 + (5.0/3.0) * 0.0316173 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn65_to_n_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn65_to_n_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn65 --> n + Zn64 - // Zn65 --> n + Zn64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 34.9923 + -92.5665 * tfactors.T9i + -3.1973 * tfactors.T913i + 6.0545 * tfactors.T913 + + 0.171155 * tfactors.T9 + -0.0905702 * tfactors.T953 + -1.39286 * tfactors.lnT9; - // ks03 - ln_set_rate = 34.9923 + -92.5665 * tfactors.T9i + -3.1973 * tfactors.T913i + 6.0545 * tfactors.T913 - + 0.171155 * tfactors.T9 + -0.0905702 * tfactors.T953 + -1.39286 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.5665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.1973 * tfactors.T943i + (1.0/3.0) * 6.0545 * tfactors.T923i + + 0.171155 + (5.0/3.0) * -0.0905702 * tfactors.T923 + -1.39286 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.5665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.1973 * tfactors.T943i + (1.0/3.0) * 6.0545 * tfactors.T923i - + 0.171155 + (5.0/3.0) * -0.0905702 * tfactors.T923 + -1.39286 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn65_to_p_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn65_to_p_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn65 --> p + Cu64 - // Zn65 --> p + Cu64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.97 + -90.2404 * tfactors.T9i + -39.9983 * tfactors.T913i + -2.9846 * tfactors.T913 + + 0.0709769 * tfactors.T9 + -0.0519569 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.97 + -90.2404 * tfactors.T9i + -39.9983 * tfactors.T913i + -2.9846 * tfactors.T913 - + 0.0709769 * tfactors.T9 + -0.0519569 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.2404 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9983 * tfactors.T943i + (1.0/3.0) * -2.9846 * tfactors.T923i + + 0.0709769 + (5.0/3.0) * -0.0519569 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.2404 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9983 * tfactors.T943i + (1.0/3.0) * -2.9846 * tfactors.T923i - + 0.0709769 + (5.0/3.0) * -0.0519569 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn65_to_He4_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn65_to_He4_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn65 --> He4 + Ni61 - // Zn65 --> He4 + Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 88.4751 + -47.7597 * tfactors.T9i + -96.6663 * tfactors.T913i + 2.54794 * tfactors.T913 + + -2.65791 * tfactors.T9 + 0.204247 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 88.4751 + -47.7597 * tfactors.T9i + -96.6663 * tfactors.T913i + 2.54794 * tfactors.T913 - + -2.65791 * tfactors.T9 + 0.204247 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.7597 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.6663 * tfactors.T943i + (1.0/3.0) * 2.54794 * tfactors.T923i + + -2.65791 + (5.0/3.0) * 0.204247 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.7597 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.6663 * tfactors.T943i + (1.0/3.0) * 2.54794 * tfactors.T923i - + -2.65791 + (5.0/3.0) * 0.204247 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn66_to_n_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn66_to_n_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn66 --> n + Zn65 - // Zn66 --> n + Zn65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 53.0981 + -128.372 * tfactors.T9i + 5.38411 * tfactors.T913i + -18.0063 * tfactors.T913 + + 1.89109 * tfactors.T9 + -0.191482 * tfactors.T953 + 7.34419 * tfactors.lnT9; - // ks03 - ln_set_rate = 53.0981 + -128.372 * tfactors.T9i + 5.38411 * tfactors.T913i + -18.0063 * tfactors.T913 - + 1.89109 * tfactors.T9 + -0.191482 * tfactors.T953 + 7.34419 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 128.372 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.38411 * tfactors.T943i + (1.0/3.0) * -18.0063 * tfactors.T923i + + 1.89109 + (5.0/3.0) * -0.191482 * tfactors.T923 + 7.34419 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 128.372 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.38411 * tfactors.T943i + (1.0/3.0) * -18.0063 * tfactors.T923i - + 1.89109 + (5.0/3.0) * -0.191482 * tfactors.T923 + 7.34419 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn66_to_p_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn66_to_p_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn66 --> p + Cu65 - // Zn66 --> p + Cu65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.9444 + -103.567 * tfactors.T9i + -40.0015 * tfactors.T913i + 2.89473 * tfactors.T913 + + -1.70171 * tfactors.T9 + 0.092664 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.9444 + -103.567 * tfactors.T9i + -40.0015 * tfactors.T913i + 2.89473 * tfactors.T913 - + -1.70171 * tfactors.T9 + 0.092664 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 103.567 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.0015 * tfactors.T943i + (1.0/3.0) * 2.89473 * tfactors.T923i + + -1.70171 + (5.0/3.0) * 0.092664 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 103.567 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.0015 * tfactors.T943i + (1.0/3.0) * 2.89473 * tfactors.T923i - + -1.70171 + (5.0/3.0) * 0.092664 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn66_to_He4_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Zn66_to_He4_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn66 --> He4 + Ni62 - // Zn66 --> He4 + Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 89.663 + -53.1283 * tfactors.T9i + -96.6983 * tfactors.T913i + 0.80536 * tfactors.T913 + + -1.39385 * tfactors.T9 + 0.000644409 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 89.663 + -53.1283 * tfactors.T9i + -96.6983 * tfactors.T913i + 0.80536 * tfactors.T913 - + -1.39385 * tfactors.T9 + 0.000644409 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 53.1283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.6983 * tfactors.T943i + (1.0/3.0) * 0.80536 * tfactors.T923i + + -1.39385 + (5.0/3.0) * 0.000644409 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.1283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -96.6983 * tfactors.T943i + (1.0/3.0) * 0.80536 * tfactors.T923i - + -1.39385 + (5.0/3.0) * 0.000644409 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga62_to_p_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ga62_to_p_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga62 --> p + Zn61 - // Ga62 --> p + Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 5.18997 + -48.9859 * tfactors.T9i + 207.487 * tfactors.T913i + -181.718 * tfactors.T913 + + 5.86358 * tfactors.T9 + -0.221479 * tfactors.T953 + 121.305 * tfactors.lnT9; - // nfisn - ln_set_rate = 5.18997 + -48.9859 * tfactors.T9i + 207.487 * tfactors.T913i + -181.718 * tfactors.T913 - + 5.86358 * tfactors.T9 + -0.221479 * tfactors.T953 + 121.305 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 48.9859 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 207.487 * tfactors.T943i + (1.0/3.0) * -181.718 * tfactors.T923i + + 5.86358 + (5.0/3.0) * -0.221479 * tfactors.T923 + 121.305 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 48.9859 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 207.487 * tfactors.T943i + (1.0/3.0) * -181.718 * tfactors.T923i - + 5.86358 + (5.0/3.0) * -0.221479 * tfactors.T923 + 121.305 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 11301.2 + -125.341 * tfactors.T9i + 6932.15 * tfactors.T913i + -20433.4 * tfactors.T913 + + 2726.25 * tfactors.T9 + -416.477 * tfactors.T953 + 7005.24 * tfactors.lnT9; - // nfisn - ln_set_rate = 11301.2 + -125.341 * tfactors.T9i + 6932.15 * tfactors.T913i + -20433.4 * tfactors.T913 - + 2726.25 * tfactors.T9 + -416.477 * tfactors.T953 + 7005.24 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 125.341 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6932.15 * tfactors.T943i + (1.0/3.0) * -20433.4 * tfactors.T923i + + 2726.25 + (5.0/3.0) * -416.477 * tfactors.T923 + 7005.24 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 125.341 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6932.15 * tfactors.T943i + (1.0/3.0) * -20433.4 * tfactors.T923i - + 2726.25 + (5.0/3.0) * -416.477 * tfactors.T923 + 7005.24 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 60.6455 + -34.2325 * tfactors.T9i + -36.9213 * tfactors.T913i + -12.8434 * tfactors.T913 + + 1.30735 * tfactors.T9 + -0.136745 * tfactors.T953 + 5.41008 * tfactors.lnT9; - // nfisn - ln_set_rate = 60.6455 + -34.2325 * tfactors.T9i + -36.9213 * tfactors.T913i + -12.8434 * tfactors.T913 - + 1.30735 * tfactors.T9 + -0.136745 * tfactors.T953 + 5.41008 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.2325 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.9213 * tfactors.T943i + (1.0/3.0) * -12.8434 * tfactors.T923i + + 1.30735 + (5.0/3.0) * -0.136745 * tfactors.T923 + 5.41008 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.2325 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.9213 * tfactors.T943i + (1.0/3.0) * -12.8434 * tfactors.T923i - + 1.30735 + (5.0/3.0) * -0.136745 * tfactors.T923 + 5.41008 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga62_to_He4_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ga62_to_He4_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga62 --> He4 + Cu58 - // Ga62 --> He4 + Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 103.952 + -32.0666 * tfactors.T9i + -98.8498 * tfactors.T913i + -21.411 * tfactors.T913 + + 1.84489 * tfactors.T9 + -0.142549 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 103.952 + -32.0666 * tfactors.T9i + -98.8498 * tfactors.T913i + -21.411 * tfactors.T913 - + 1.84489 * tfactors.T9 + -0.142549 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 32.0666 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.8498 * tfactors.T943i + (1.0/3.0) * -21.411 * tfactors.T923i + + 1.84489 + (5.0/3.0) * -0.142549 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 32.0666 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.8498 * tfactors.T943i + (1.0/3.0) * -21.411 * tfactors.T923i - + 1.84489 + (5.0/3.0) * -0.142549 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_to_n_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ga63_to_n_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 --> n + Ga62 - // Ga63 --> n + Ga62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.9806 + -146.426 * tfactors.T9i + -0.413123 * tfactors.T913 + + 0.505609 * tfactors.T9 + -0.0792987 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.9806 + -146.426 * tfactors.T9i + -0.413123 * tfactors.T913 - + 0.505609 * tfactors.T9 + -0.0792987 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 146.426 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.413123 * tfactors.T923i + + 0.505609 + (5.0/3.0) * -0.0792987 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 146.426 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.413123 * tfactors.T923i - + 0.505609 + (5.0/3.0) * -0.0792987 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_to_p_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ga63_to_p_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 --> p + Zn62 - // Ga63 --> p + Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = -16.133 + -52.7571 * tfactors.T9i + 181.058 * tfactors.T913i + -128.039 * tfactors.T913 + + 5.3613 * tfactors.T9 + -0.329542 * tfactors.T953 + 88.9371 * tfactors.lnT9; - // nfisn - ln_set_rate = -16.133 + -52.7571 * tfactors.T9i + 181.058 * tfactors.T913i + -128.039 * tfactors.T913 - + 5.3613 * tfactors.T9 + -0.329542 * tfactors.T953 + 88.9371 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 52.7571 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 181.058 * tfactors.T943i + (1.0/3.0) * -128.039 * tfactors.T923i + + 5.3613 + (5.0/3.0) * -0.329542 * tfactors.T923 + 88.9371 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 52.7571 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 181.058 * tfactors.T943i + (1.0/3.0) * -128.039 * tfactors.T923i - + 5.3613 + (5.0/3.0) * -0.329542 * tfactors.T923 + 88.9371 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 59.4822 + -31.1177 * tfactors.T9i + -31.4331 * tfactors.T913i + -19.7752 * tfactors.T913 + + 1.69239 * tfactors.T9 + -0.16473 * tfactors.T953 + 9.1608 * tfactors.lnT9; - // nfisn - ln_set_rate = 59.4822 + -31.1177 * tfactors.T9i + -31.4331 * tfactors.T913i + -19.7752 * tfactors.T913 - + 1.69239 * tfactors.T9 + -0.16473 * tfactors.T953 + 9.1608 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.1177 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.4331 * tfactors.T943i + (1.0/3.0) * -19.7752 * tfactors.T923i + + 1.69239 + (5.0/3.0) * -0.16473 * tfactors.T923 + 9.1608 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.1177 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.4331 * tfactors.T943i + (1.0/3.0) * -19.7752 * tfactors.T923i - + 1.69239 + (5.0/3.0) * -0.16473 * tfactors.T923 + 9.1608 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 7911.23 + -90.8719 * tfactors.T9i + 4643.34 * tfactors.T913i + -14105.9 * tfactors.T913 + + 1925.65 * tfactors.T9 + -299.872 * tfactors.T953 + 4770.14 * tfactors.lnT9; - // nfisn - ln_set_rate = 7911.23 + -90.8719 * tfactors.T9i + 4643.34 * tfactors.T913i + -14105.9 * tfactors.T913 - + 1925.65 * tfactors.T9 + -299.872 * tfactors.T953 + 4770.14 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.8719 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4643.34 * tfactors.T943i + (1.0/3.0) * -14105.9 * tfactors.T923i + + 1925.65 + (5.0/3.0) * -299.872 * tfactors.T923 + 4770.14 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.8719 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4643.34 * tfactors.T943i + (1.0/3.0) * -14105.9 * tfactors.T923i - + 1925.65 + (5.0/3.0) * -299.872 * tfactors.T923 + 4770.14 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 69.6876 + -52.939 * tfactors.T9i + 516.062 * tfactors.T913i + -567.538 * tfactors.T913 + + 23.7454 * tfactors.T9 + -1.02526 * tfactors.T953 + 329.36 * tfactors.lnT9; - // nfisn - ln_set_rate = 69.6876 + -52.939 * tfactors.T9i + 516.062 * tfactors.T913i + -567.538 * tfactors.T913 - + 23.7454 * tfactors.T9 + -1.02526 * tfactors.T953 + 329.36 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 52.939 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 516.062 * tfactors.T943i + (1.0/3.0) * -567.538 * tfactors.T923i + + 23.7454 + (5.0/3.0) * -1.02526 * tfactors.T923 + 329.36 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 52.939 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 516.062 * tfactors.T943i + (1.0/3.0) * -567.538 * tfactors.T923i - + 23.7454 + (5.0/3.0) * -1.02526 * tfactors.T923 + 329.36 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_to_He4_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ga63_to_He4_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 --> He4 + Cu59 - // Ga63 --> He4 + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 93.0086 + -30.3432 * tfactors.T9i + -98.8858 * tfactors.T913i + -2.92113 * tfactors.T913 + + -2.38226 * tfactors.T9 + 0.272994 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 93.0086 + -30.3432 * tfactors.T9i + -98.8858 * tfactors.T913i + -2.92113 * tfactors.T913 - + -2.38226 * tfactors.T9 + 0.272994 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.3432 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.8858 * tfactors.T943i + (1.0/3.0) * -2.92113 * tfactors.T923i + + -2.38226 + (5.0/3.0) * 0.272994 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.3432 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.8858 * tfactors.T943i + (1.0/3.0) * -2.92113 * tfactors.T923i - + -2.38226 + (5.0/3.0) * 0.272994 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga64_to_n_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ga64_to_n_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga64 --> n + Ga63 - // Ga64 --> n + Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.8755 + -120.206 * tfactors.T9i + 1.0342 * tfactors.T913 + + 0.0882306 * tfactors.T9 + -0.0437444 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.8755 + -120.206 * tfactors.T9i + 1.0342 * tfactors.T913 - + 0.0882306 * tfactors.T9 + -0.0437444 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.206 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.0342 * tfactors.T923i + + 0.0882306 + (5.0/3.0) * -0.0437444 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.206 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.0342 * tfactors.T923i - + 0.0882306 + (5.0/3.0) * -0.0437444 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga64_to_p_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ga64_to_p_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga64 --> p + Zn63 - // Ga64 --> p + Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.9074 + -45.3767 * tfactors.T9i + -40.9093 * tfactors.T913i + 2.88162 * tfactors.T913 + + -2.11741 * tfactors.T9 + 0.191601 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.9074 + -45.3767 * tfactors.T9i + -40.9093 * tfactors.T913i + 2.88162 * tfactors.T913 - + -2.11741 * tfactors.T9 + 0.191601 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 45.3767 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9093 * tfactors.T943i + (1.0/3.0) * 2.88162 * tfactors.T923i + + -2.11741 + (5.0/3.0) * 0.191601 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 45.3767 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9093 * tfactors.T943i + (1.0/3.0) * 2.88162 * tfactors.T923i - + -2.11741 + (5.0/3.0) * 0.191601 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga64_to_He4_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ga64_to_He4_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga64 --> He4 + Cu60 - // Ga64 --> He4 + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 92.8863 + -33.8287 * tfactors.T9i + -98.9207 * tfactors.T913i + 0.933671 * tfactors.T913 + + -3.79958 * tfactors.T9 + 0.446216 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 92.8863 + -33.8287 * tfactors.T9i + -98.9207 * tfactors.T913i + 0.933671 * tfactors.T913 - + -3.79958 * tfactors.T9 + 0.446216 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.8287 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.9207 * tfactors.T943i + (1.0/3.0) * 0.933671 * tfactors.T923i + + -3.79958 + (5.0/3.0) * 0.446216 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.8287 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.9207 * tfactors.T943i + (1.0/3.0) * 0.933671 * tfactors.T923i - + -3.79958 + (5.0/3.0) * 0.446216 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge63_to_p_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ge63_to_p_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge63 --> p + Ga62 - // Ge63 --> p + Ga62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 9653.53 + -138.896 * tfactors.T9i + 6926.61 * tfactors.T913i + -18459.0 * tfactors.T913 + + 2374.61 * tfactors.T9 + -366.508 * tfactors.T953 + 6588.46 * tfactors.lnT9; - // nfisn - ln_set_rate = 9653.53 + -138.896 * tfactors.T9i + 6926.61 * tfactors.T913i + -18459.0 * tfactors.T913 - + 2374.61 * tfactors.T9 + -366.508 * tfactors.T953 + 6588.46 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 138.896 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6926.61 * tfactors.T943i + (1.0/3.0) * -18459.0 * tfactors.T923i + + 2374.61 + (5.0/3.0) * -366.508 * tfactors.T923 + 6588.46 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 138.896 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6926.61 * tfactors.T943i + (1.0/3.0) * -18459.0 * tfactors.T923i - + 2374.61 + (5.0/3.0) * -366.508 * tfactors.T923 + 6588.46 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 52.0997 + -25.9182 * tfactors.T9i + -45.5057 * tfactors.T913i + 1.9831 * tfactors.T913 + + -0.147339 * tfactors.T9 + -0.0169469 * tfactors.T953 + -0.96033 * tfactors.lnT9; - // nfisn - ln_set_rate = 52.0997 + -25.9182 * tfactors.T9i + -45.5057 * tfactors.T913i + 1.9831 * tfactors.T913 - + -0.147339 * tfactors.T9 + -0.0169469 * tfactors.T953 + -0.96033 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.9182 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.5057 * tfactors.T943i + (1.0/3.0) * 1.9831 * tfactors.T923i + + -0.147339 + (5.0/3.0) * -0.0169469 * tfactors.T923 + -0.96033 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.9182 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.5057 * tfactors.T943i + (1.0/3.0) * 1.9831 * tfactors.T923i - + -0.147339 + (5.0/3.0) * -0.0169469 * tfactors.T923 + -0.96033 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 290.665 + -26.1495 * tfactors.T9i + -8.15451 * tfactors.T913i + -301.681 * tfactors.T913 + + 33.0147 * tfactors.T9 + -2.8672 * tfactors.T953 + 72.2354 * tfactors.lnT9; - // nfisn - ln_set_rate = 290.665 + -26.1495 * tfactors.T9i + -8.15451 * tfactors.T913i + -301.681 * tfactors.T913 - + 33.0147 * tfactors.T9 + -2.8672 * tfactors.T953 + 72.2354 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.1495 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.15451 * tfactors.T943i + (1.0/3.0) * -301.681 * tfactors.T923i + + 33.0147 + (5.0/3.0) * -2.8672 * tfactors.T923 + 72.2354 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.1495 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.15451 * tfactors.T943i + (1.0/3.0) * -301.681 * tfactors.T923i - + 33.0147 + (5.0/3.0) * -2.8672 * tfactors.T923 + 72.2354 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 45.3582 + -27.0759 * tfactors.T9i + -107.856 * tfactors.T913i + 80.6244 * tfactors.T913 + + -2.84514 * tfactors.T9 + 0.087641 * tfactors.T953 + -55.0078 * tfactors.lnT9; - // nfisn - ln_set_rate = 45.3582 + -27.0759 * tfactors.T9i + -107.856 * tfactors.T913i + 80.6244 * tfactors.T913 - + -2.84514 * tfactors.T9 + 0.087641 * tfactors.T953 + -55.0078 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.0759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -107.856 * tfactors.T943i + (1.0/3.0) * 80.6244 * tfactors.T923i + + -2.84514 + (5.0/3.0) * 0.087641 * tfactors.T923 + -55.0078 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.0759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -107.856 * tfactors.T943i + (1.0/3.0) * 80.6244 * tfactors.T923i - + -2.84514 + (5.0/3.0) * 0.087641 * tfactors.T923 + -55.0078 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 76.0205 + -30.5116 * tfactors.T9i + 11.0703 * tfactors.T913i + -66.0297 * tfactors.T913 + + 2.89115 * tfactors.T9 + -0.129107 * tfactors.T953 + 30.8214 * tfactors.lnT9; - // nfisn - ln_set_rate = 76.0205 + -30.5116 * tfactors.T9i + 11.0703 * tfactors.T913i + -66.0297 * tfactors.T913 - + 2.89115 * tfactors.T9 + -0.129107 * tfactors.T953 + 30.8214 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.5116 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 11.0703 * tfactors.T943i + (1.0/3.0) * -66.0297 * tfactors.T923i + + 2.89115 + (5.0/3.0) * -0.129107 * tfactors.T923 + 30.8214 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.5116 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 11.0703 * tfactors.T943i + (1.0/3.0) * -66.0297 * tfactors.T923i - + 2.89115 + (5.0/3.0) * -0.129107 * tfactors.T923 + 30.8214 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge63_to_He4_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ge63_to_He4_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge63 --> He4 + Zn59 - // Ge63 --> He4 + Zn59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 101.382 + -24.5389 * tfactors.T9i + -101.146 * tfactors.T913i + -14.3723 * tfactors.T913 + + 0.893059 * tfactors.T9 + -0.0564743 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 101.382 + -24.5389 * tfactors.T9i + -101.146 * tfactors.T913i + -14.3723 * tfactors.T913 - + 0.893059 * tfactors.T9 + -0.0564743 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.5389 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -101.146 * tfactors.T943i + (1.0/3.0) * -14.3723 * tfactors.T923i + + 0.893059 + (5.0/3.0) * -0.0564743 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.5389 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -101.146 * tfactors.T943i + (1.0/3.0) * -14.3723 * tfactors.T923i - + 0.893059 + (5.0/3.0) * -0.0564743 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge64_to_n_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ge64_to_n_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge64 --> n + Ge63 - // Ge64 --> n + Ge63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 33.4278 + -179.145 * tfactors.T9i + 0.20987 * tfactors.T913 + + 0.182208 * tfactors.T9 + -0.0339886 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ths8r - ln_set_rate = 33.4278 + -179.145 * tfactors.T9i + 0.20987 * tfactors.T913 - + 0.182208 * tfactors.T9 + -0.0339886 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 179.145 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.20987 * tfactors.T923i + + 0.182208 + (5.0/3.0) * -0.0339886 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 179.145 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.20987 * tfactors.T923i - + 0.182208 + (5.0/3.0) * -0.0339886 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge64_to_p_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ge64_to_p_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge64 --> p + Ga63 - // Ge64 --> p + Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.0475 + -58.6907 * tfactors.T9i + -41.8134 * tfactors.T913i + 1.45084 * tfactors.T913 + + -3.1328 * tfactors.T9 + 0.353318 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.0475 + -58.6907 * tfactors.T9i + -41.8134 * tfactors.T913i + 1.45084 * tfactors.T913 - + -3.1328 * tfactors.T9 + 0.353318 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.6907 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -41.8134 * tfactors.T943i + (1.0/3.0) * 1.45084 * tfactors.T923i + + -3.1328 + (5.0/3.0) * 0.353318 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.6907 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -41.8134 * tfactors.T943i + (1.0/3.0) * 1.45084 * tfactors.T923i - + -3.1328 + (5.0/3.0) * 0.353318 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge64_to_He4_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Ge64_to_He4_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge64 --> He4 + Zn60 - // Ge64 --> He4 + Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 86.1182 + -29.6245 * tfactors.T9i + -101.182 * tfactors.T913i + 10.4963 * tfactors.T913 + + -7.04215 * tfactors.T9 + 0.732883 * tfactors.T953 + 0.833333 * tfactors.lnT9; - // ths8r - ln_set_rate = 86.1182 + -29.6245 * tfactors.T9i + -101.182 * tfactors.T913i + 10.4963 * tfactors.T913 - + -7.04215 * tfactors.T9 + 0.732883 * tfactors.T953 + 0.833333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.6245 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -101.182 * tfactors.T943i + (1.0/3.0) * 10.4963 * tfactors.T923i + + -7.04215 + (5.0/3.0) * 0.732883 * tfactors.T923 + 0.833333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.6245 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -101.182 * tfactors.T943i + (1.0/3.0) * 10.4963 * tfactors.T923i - + -7.04215 + (5.0/3.0) * 0.732883 * tfactors.T923 + 0.833333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_to_n_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Li6_to_n_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 --> n + p + He4 - // Li6 --> n + p + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 33.4196 + -62.2896 * tfactors.T9i + 1.44987 * tfactors.T913i + -1.42759 * tfactors.T913 + + 0.0454035 * tfactors.T9 + 0.00471161 * tfactors.T953 + 2.0 * tfactors.lnT9; - // cf88r - ln_set_rate = 33.4196 + -62.2896 * tfactors.T9i + 1.44987 * tfactors.T913i + -1.42759 * tfactors.T913 - + 0.0454035 * tfactors.T9 + 0.00471161 * tfactors.T953 + 2.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 62.2896 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.44987 * tfactors.T943i + (1.0/3.0) * -1.42759 * tfactors.T923i + + 0.0454035 + (5.0/3.0) * 0.00471161 * tfactors.T923 + 2.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 62.2896 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.44987 * tfactors.T943i + (1.0/3.0) * -1.42759 * tfactors.T923i - + 0.0454035 + (5.0/3.0) * 0.00471161 * tfactors.T923 + 2.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be9_to_n_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_Be9_to_n_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be9 --> n + He4 + He4 - // Be9 --> n + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ac12n + ln_set_rate = 37.273 + -18.2597 * tfactors.T9i + -13.3317 * tfactors.T913i + 13.2237 * tfactors.T913 + + -9.06339 * tfactors.T9 + 2.33333 * tfactors.lnT9; - // ac12n - ln_set_rate = 37.273 + -18.2597 * tfactors.T9i + -13.3317 * tfactors.T913i + 13.2237 * tfactors.T913 - + -9.06339 * tfactors.T9 + 2.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.2597 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.3317 * tfactors.T943i + (1.0/3.0) * 13.2237 * tfactors.T923i + + -9.06339 + 2.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.2597 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.3317 * tfactors.T943i + (1.0/3.0) * 13.2237 * tfactors.T923i - + -9.06339 + 2.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ac12r + ln_set_rate = 38.6902 + -19.2792 * tfactors.T9i + -1.56673 * tfactors.T913i + -5.43497 * tfactors.T913 + + 0.673807 * tfactors.T9 + -0.041014 * tfactors.T953 + 1.5 * tfactors.lnT9; - // ac12r - ln_set_rate = 38.6902 + -19.2792 * tfactors.T9i + -1.56673 * tfactors.T913i + -5.43497 * tfactors.T913 - + 0.673807 * tfactors.T9 + -0.041014 * tfactors.T953 + 1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.2792 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.56673 * tfactors.T943i + (1.0/3.0) * -5.43497 * tfactors.T923i + + 0.673807 + (5.0/3.0) * -0.041014 * tfactors.T923 + 1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.2792 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.56673 * tfactors.T943i + (1.0/3.0) * -5.43497 * tfactors.T923i - + 0.673807 + (5.0/3.0) * -0.041014 * tfactors.T923 + 1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_to_3He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_to_He4_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 --> 3 He4 - // C12 --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = 22.394 + -88.5493 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = 22.394 + -88.5493 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -10.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 88.5493 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.5493 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -10.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = 34.9561 + -85.4472 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.83333 * tfactors.lnT9; - // fy05r - ln_set_rate = 34.9561 + -85.4472 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + 0.83333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 85.4472 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.83333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 85.4472 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + 0.83333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = 45.7734 + -84.4227 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; - // fy05n - ln_set_rate = 45.7734 + -84.4227 * tfactors.T9i + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + 1.66667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 84.4227 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 84.4227 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + 1.66667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_p_n_to_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_p_to_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // p + n --> d - // n + p --> d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // an06n + ln_set_rate = 12.3687 + -2.70618 * tfactors.T913 + + 0.11718 * tfactors.T9 + -0.00312788 * tfactors.T953 + 0.469127 * tfactors.lnT9; - // an06n - ln_set_rate = 12.3687 + -2.70618 * tfactors.T913 - + 0.11718 * tfactors.T9 + -0.00312788 * tfactors.T953 + 0.469127 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.70618 * tfactors.T923i + + 0.11718 + (5.0/3.0) * -0.00312788 * tfactors.T923 + 0.469127 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.70618 * tfactors.T923i - + 0.11718 + (5.0/3.0) * -0.00312788 * tfactors.T923 + 0.469127 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // an06n + ln_set_rate = 10.7548 + -2.30472 * tfactors.T913 + + -0.887862 * tfactors.T9 + 0.137663 * tfactors.T953; - // an06n - ln_set_rate = 10.7548 + -2.30472 * tfactors.T913 - + -0.887862 * tfactors.T9 + 0.137663 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.30472 * tfactors.T923i + + -0.887862 + (5.0/3.0) * 0.137663 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.30472 * tfactors.T923i - + -0.887862 + (5.0/3.0) * 0.137663 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // an06n + ln_set_rate = 8.84688 + -0.0102082 * tfactors.T913 + + -0.0893959 * tfactors.T9 + 0.00696704 * tfactors.T953 + 1.0 * tfactors.lnT9; - // an06n - ln_set_rate = 8.84688 + -0.0102082 * tfactors.T913 - + -0.0893959 * tfactors.T9 + 0.00696704 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.0102082 * tfactors.T923i + + -0.0893959 + (5.0/3.0) * 0.00696704 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.0102082 * tfactors.T923i - + -0.0893959 + (5.0/3.0) * 0.00696704 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_p_p_to_d_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_p_to_d_reaclib_beta_pos(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // p + p --> d - // p + p --> d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bet+w + ln_set_rate = -34.7863 + -3.51193 * tfactors.T913i + 3.10086 * tfactors.T913 + + -0.198314 * tfactors.T9 + 0.0126251 * tfactors.T953 + -1.02517 * tfactors.lnT9; - // bet+w - ln_set_rate = -34.7863 + -3.51193 * tfactors.T913i + 3.10086 * tfactors.T913 - + -0.198314 * tfactors.T9 + 0.0126251 * tfactors.T953 + -1.02517 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.51193 * tfactors.T943i + (1.0/3.0) * 3.10086 * tfactors.T923i + + -0.198314 + (5.0/3.0) * 0.0126251 * tfactors.T923 + -1.02517 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.51193 * tfactors.T943i + (1.0/3.0) * 3.10086 * tfactors.T923i - + -0.198314 + (5.0/3.0) * 0.0126251 * tfactors.T923 + -1.02517 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_p_p_to_d_electron_capture_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_p_to_d_reaclib_electron_capture(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // p + p --> d - // p + p --> d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ecw + ln_set_rate = -43.6499 + -0.00246064 * tfactors.T9i + -2.7507 * tfactors.T913i + -0.424877 * tfactors.T913 + + 0.015987 * tfactors.T9 + -0.000690875 * tfactors.T953 + -0.207625 * tfactors.lnT9; - // ecw - ln_set_rate = -43.6499 + -0.00246064 * tfactors.T9i + -2.7507 * tfactors.T913i + -0.424877 * tfactors.T913 - + 0.015987 * tfactors.T9 + -0.000690875 * tfactors.T953 + -0.207625 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00246064 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.7507 * tfactors.T943i + (1.0/3.0) * -0.424877 * tfactors.T923i + + 0.015987 + (5.0/3.0) * -0.000690875 * tfactors.T923 + -0.207625 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00246064 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.7507 * tfactors.T943i + (1.0/3.0) * -0.424877 * tfactors.T923i - + 0.015987 + (5.0/3.0) * -0.000690875 * tfactors.T923 + -0.207625 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_p_to_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_d_to_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + p --> He3 - // d + p --> He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04 + ln_set_rate = 8.93525 + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 + + 0.333333 * tfactors.lnT9; - // de04 - ln_set_rate = 8.93525 + -3.7208 * tfactors.T913i + 0.198654 * tfactors.T913 - + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i + + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.198654 * tfactors.T923i - + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04n + ln_set_rate = 7.52898 + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 + + -0.666667 * tfactors.lnT9; - // de04n - ln_set_rate = 7.52898 + -3.7208 * tfactors.T913i + 0.871782 * tfactors.T913 - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.7208 * tfactors.T943i + (1.0/3.0) * 0.871782 * tfactors.T923i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_d_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_d_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + d --> He4 - // d + d --> He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 3.78177 + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 + + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 3.78177 + -4.26166 * tfactors.T913i + -0.119233 * tfactors.T913 - + 0.778829 * tfactors.T9 + -0.0925203 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i + + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -4.26166 * tfactors.T943i + (1.0/3.0) * -0.119233 * tfactors.T923i - + 0.778829 + (5.0/3.0) * -0.0925203 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_He4_to_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_d_to_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + He4 --> Li6 - // d + He4 --> Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // tu19r + ln_set_rate = 4.12313 + -7.889 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // tu19r - ln_set_rate = 4.12313 + -7.889 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.889 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.889 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // tu19n + ln_set_rate = -0.676485 + 6.3911e-05 * tfactors.T9i + -7.55198 * tfactors.T913i + 5.77546 * tfactors.T913 + + -0.487854 * tfactors.T9 + 0.032833 * tfactors.T953 + -1.12305 * tfactors.lnT9; - // tu19n - ln_set_rate = -0.676485 + 6.3911e-05 * tfactors.T9i + -7.55198 * tfactors.T913i + 5.77546 * tfactors.T913 - + -0.487854 * tfactors.T9 + 0.032833 * tfactors.T953 + -1.12305 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -6.3911e-05 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.55198 * tfactors.T943i + (1.0/3.0) * 5.77546 * tfactors.T923i + + -0.487854 + (5.0/3.0) * 0.032833 * tfactors.T923 + -1.12305 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -6.3911e-05 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.55198 * tfactors.T943i + (1.0/3.0) * 5.77546 * tfactors.T923i - + -0.487854 + (5.0/3.0) * 0.032833 * tfactors.T923 + -1.12305 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_n_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_He3_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + n --> He4 - // He3 + n --> He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02n + ln_set_rate = 9.04572 + -1.50147 * tfactors.T913 + + 1.0 * tfactors.lnT9; - // ka02n - ln_set_rate = 9.04572 + -1.50147 * tfactors.T913 - + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.50147 * tfactors.T923i + + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.50147 * tfactors.T923i - + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02n + ln_set_rate = 5.51711; + amrex::ignore_unused(tfactors); - // ka02n - ln_set_rate = 5.51711; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_p_to_He4_beta_pos_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_He3_to_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + p --> He4 - // He3 + p --> He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bet+w + ln_set_rate = -27.7611 + -4.30107e-12 * tfactors.T9i + -6.141 * tfactors.T913i + -1.93473e-09 * tfactors.T913 + + 2.04145e-10 * tfactors.T9 + -1.80372e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // bet+w - ln_set_rate = -27.7611 + -4.30107e-12 * tfactors.T9i + -6.141 * tfactors.T913i + -1.93473e-09 * tfactors.T913 - + 2.04145e-10 * tfactors.T9 + -1.80372e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.30107e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.141 * tfactors.T943i + (1.0/3.0) * -1.93473e-09 * tfactors.T923i + + 2.04145e-10 + (5.0/3.0) * -1.80372e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.30107e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.141 * tfactors.T943i + (1.0/3.0) * -1.93473e-09 * tfactors.T923i - + 2.04145e-10 + (5.0/3.0) * -1.80372e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_He4_to_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He3_to_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + He4 --> Be7 - // He3 + He4 --> Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cd08n + ln_set_rate = 17.7075 + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 + + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 1.33333 * tfactors.lnT9; - // cd08n - ln_set_rate = 17.7075 + -12.8271 * tfactors.T913i + -3.8126 * tfactors.T913 - + 0.0942285 * tfactors.T9 + -0.00301018 * tfactors.T953 + 1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i + + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -3.8126 * tfactors.T923i - + 0.0942285 + (5.0/3.0) * -0.00301018 * tfactors.T923 + 1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cd08n + ln_set_rate = 15.6099 + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 + + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cd08n - ln_set_rate = 15.6099 + -12.8271 * tfactors.T913i + -0.0308225 * tfactors.T913 - + -0.654685 * tfactors.T9 + 0.0896331 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i + + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.8271 * tfactors.T943i + (1.0/3.0) * -0.0308225 * tfactors.T923i - + -0.654685 + (5.0/3.0) * 0.0896331 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_n_to_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Li6_to_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 + n --> Li7 - // Li6 + n --> Li7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // jz10n + ln_set_rate = 9.04782; + amrex::ignore_unused(tfactors); - // jz10n - ln_set_rate = 9.04782; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_p_to_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Li6_to_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 + p --> Be7 - // Li6 + p --> Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 14.2792 + -8.4372 * tfactors.T913i + -0.515473 * tfactors.T913 + + 0.0285578 * tfactors.T9 + 0.00879731 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 14.2792 + -8.4372 * tfactors.T913i + -0.515473 * tfactors.T913 - + 0.0285578 * tfactors.T9 + 0.00879731 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -8.4372 * tfactors.T943i + (1.0/3.0) * -0.515473 * tfactors.T923i + + 0.0285578 + (5.0/3.0) * 0.00879731 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -8.4372 * tfactors.T943i + (1.0/3.0) * -0.515473 * tfactors.T923i - + 0.0285578 + (5.0/3.0) * 0.00879731 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_He4_to_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Li6_to_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 + He4 --> B10 - // Li6 + He4 --> B10 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 1.04267 + -3.71313 * tfactors.T9i + 3.33334 * tfactors.T913i + 3.25335 * tfactors.T913 + + 0.374434 * tfactors.T9 + -0.0706244 * tfactors.T953 + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 1.04267 + -3.71313 * tfactors.T9i + 3.33334 * tfactors.T913i + 3.25335 * tfactors.T913 - + 0.374434 * tfactors.T9 + -0.0706244 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.71313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.33334 * tfactors.T943i + (1.0/3.0) * 3.25335 * tfactors.T923i + + 0.374434 + (5.0/3.0) * -0.0706244 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.71313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.33334 * tfactors.T943i + (1.0/3.0) * 3.25335 * tfactors.T923i - + 0.374434 + (5.0/3.0) * -0.0706244 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 15.2167 + -18.79 * tfactors.T913i + 0.234225 * tfactors.T913 + + 3.23344 * tfactors.T9 + -1.14529 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 15.2167 + -18.79 * tfactors.T913i + 0.234225 * tfactors.T913 - + 3.23344 * tfactors.T9 + -1.14529 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.79 * tfactors.T943i + (1.0/3.0) * 0.234225 * tfactors.T923i + + 3.23344 + (5.0/3.0) * -1.14529 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.79 * tfactors.T943i + (1.0/3.0) * 0.234225 * tfactors.T923i - + 3.23344 + (5.0/3.0) * -1.14529 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_He4_to_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Li7_to_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + He4 --> B11 - // Li7 + He4 --> B11 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 10.6937 + -6.44203 * tfactors.T9i + + 0.190698 * tfactors.T9 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 10.6937 + -6.44203 * tfactors.T9i - + 0.190698 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.44203 * tfactors.T9i * tfactors.T9i + + 0.190698 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.44203 * tfactors.T9i * tfactors.T9i - + 0.190698 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 5.81084 + -2.95915 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 5.81084 + -2.95915 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.95915 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.95915 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 18.4284 + -19.163 * tfactors.T913i + 0.0587651 * tfactors.T913 + + 0.773338 * tfactors.T9 + -0.201519 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.4284 + -19.163 * tfactors.T913i + 0.0587651 * tfactors.T913 - + 0.773338 * tfactors.T9 + -0.201519 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -19.163 * tfactors.T943i + (1.0/3.0) * 0.0587651 * tfactors.T923i + + 0.773338 + (5.0/3.0) * -0.201519 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -19.163 * tfactors.T943i + (1.0/3.0) * 0.0587651 * tfactors.T923i - + 0.773338 + (5.0/3.0) * -0.201519 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_p_to_B8_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Be7_to_B8_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + p --> B8 - // Be7 + p --> B8 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 7.73399 + -7.345 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 7.73399 + -7.345 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.345 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.345 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 12.5315 + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 + + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 12.5315 + -10.264 * tfactors.T913i + -0.203472 * tfactors.T913 - + 0.121083 * tfactors.T9 + -0.00700063 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i + + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.264 * tfactors.T943i + (1.0/3.0) * -0.203472 * tfactors.T923i - + 0.121083 + (5.0/3.0) * -0.00700063 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be9_p_to_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Be9_to_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be9 + p --> B10 - // Be9 + p --> B10 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 7.68698 + -2.59506 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 7.68698 + -2.59506 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.59506 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.59506 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 16.2908 + -10.361 * tfactors.T913i + 0.695179 * tfactors.T913 + + 0.342365 * tfactors.T9 + -0.356569 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 16.2908 + -10.361 * tfactors.T913i + 0.695179 * tfactors.T913 - + 0.342365 * tfactors.T9 + -0.356569 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.361 * tfactors.T943i + (1.0/3.0) * 0.695179 * tfactors.T923i + + 0.342365 + (5.0/3.0) * -0.356569 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.361 * tfactors.T943i + (1.0/3.0) * 0.695179 * tfactors.T923i - + 0.342365 + (5.0/3.0) * -0.356569 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 14.9657 + -11.5391 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 14.9657 + -11.5391 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.5391 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.5391 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B10_n_to_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_B10_to_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B10 + n --> B11 - // B10 + n --> B11 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 11.1004 + -1.9027e-12 * tfactors.T9i + 2.65756e-10 * tfactors.T913i + -9.63588e-10 * tfactors.T913 + + 1.07466e-10 * tfactors.T9 + -9.87569e-12 * tfactors.T953 + 3.12603e-10 * tfactors.lnT9; - // wagn - ln_set_rate = 11.1004 + -1.9027e-12 * tfactors.T9i + 2.65756e-10 * tfactors.T913i + -9.63588e-10 * tfactors.T913 - + 1.07466e-10 * tfactors.T9 + -9.87569e-12 * tfactors.T953 + 3.12603e-10 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.9027e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.65756e-10 * tfactors.T943i + (1.0/3.0) * -9.63588e-10 * tfactors.T923i + + 1.07466e-10 + (5.0/3.0) * -9.87569e-12 * tfactors.T923 + 3.12603e-10 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.9027e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.65756e-10 * tfactors.T943i + (1.0/3.0) * -9.63588e-10 * tfactors.T923i - + 1.07466e-10 + (5.0/3.0) * -9.87569e-12 * tfactors.T923 + 3.12603e-10 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B11_p_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_B11_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B11 + p --> C12 - // B11 + p --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nw00n + ln_set_rate = 25.5647 + -12.095 * tfactors.T913i + -6.68421 * tfactors.T913 + + -0.0148736 * tfactors.T9 + 0.0364288 * tfactors.T953 + 1.33333 * tfactors.lnT9; - // nw00n - ln_set_rate = 25.5647 + -12.095 * tfactors.T913i + -6.68421 * tfactors.T913 - + -0.0148736 * tfactors.T9 + 0.0364288 * tfactors.T953 + 1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -6.68421 * tfactors.T923i + + -0.0148736 + (5.0/3.0) * 0.0364288 * tfactors.T923 + 1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -6.68421 * tfactors.T923i - + -0.0148736 + (5.0/3.0) * 0.0364288 * tfactors.T923 + 1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nw00n + ln_set_rate = 18.6165 + -12.095 * tfactors.T913i + -1.95046 * tfactors.T913 + + 9.56928 * tfactors.T9 + -10.0637 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nw00n - ln_set_rate = 18.6165 + -12.095 * tfactors.T913i + -1.95046 * tfactors.T913 - + 9.56928 * tfactors.T9 + -10.0637 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -1.95046 * tfactors.T923i + + 9.56928 + (5.0/3.0) * -10.0637 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.095 * tfactors.T943i + (1.0/3.0) * -1.95046 * tfactors.T923i - + 9.56928 + (5.0/3.0) * -10.0637 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nw00r + ln_set_rate = 8.67352 + -1.71197 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nw00r - ln_set_rate = 8.67352 + -1.71197 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.71197 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.71197 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_n_to_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_C12_to_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + n --> C13 - // C12 + n --> C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 7.98821 + -0.00836732 * tfactors.T9i + 1.49573 * tfactors.T913i + -0.841102 * tfactors.T913 + + 0.0340543 * tfactors.T9 + -0.0026392 * tfactors.T953 + 1.6662 * tfactors.lnT9; - // ks03 - ln_set_rate = 7.98821 + -0.00836732 * tfactors.T9i + 1.49573 * tfactors.T913i + -0.841102 * tfactors.T913 - + 0.0340543 * tfactors.T9 + -0.0026392 * tfactors.T953 + 1.6662 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00836732 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.49573 * tfactors.T943i + (1.0/3.0) * -0.841102 * tfactors.T923i + + 0.0340543 + (5.0/3.0) * -0.0026392 * tfactors.T923 + 1.6662 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00836732 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.49573 * tfactors.T943i + (1.0/3.0) * -0.841102 * tfactors.T923i - + 0.0340543 + (5.0/3.0) * -0.0026392 * tfactors.T923 + 1.6662 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_p_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C12_to_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + p --> N13 - // C12 + p --> N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ls09n + ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 + + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ls09n - ln_set_rate = 17.1482 + -13.692 * tfactors.T913i + -0.230881 * tfactors.T913 - + 4.44362 * tfactors.T9 + -3.15898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i + + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.692 * tfactors.T943i + (1.0/3.0) * -0.230881 * tfactors.T923i - + 4.44362 + (5.0/3.0) * -3.15898 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ls09r + ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 + + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; - // ls09r - ln_set_rate = 17.5428 + -3.77849 * tfactors.T9i + -5.10735 * tfactors.T913i + -2.24111 * tfactors.T913 - + 0.148883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i + + 0.148883 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77849 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.10735 * tfactors.T943i + (1.0/3.0) * -2.24111 * tfactors.T923i - + 0.148883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> O16 - // C12 + He4 --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nac2 + ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 + + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; - // nac2 - ln_set_rate = 254.634 + -1.84097 * tfactors.T9i + 103.411 * tfactors.T913i + -420.567 * tfactors.T913 - + 64.0874 * tfactors.T9 + -12.4624 * tfactors.T953 + 137.303 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i + + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84097 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 103.411 * tfactors.T943i + (1.0/3.0) * -420.567 * tfactors.T923i - + 64.0874 + (5.0/3.0) * -12.4624 * tfactors.T923 + 137.303 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nac2 + ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 + + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; - // nac2 - ln_set_rate = 69.6526 + -1.39254 * tfactors.T9i + 58.9128 * tfactors.T913i + -148.273 * tfactors.T913 - + 9.08324 * tfactors.T9 + -0.541041 * tfactors.T953 + 70.3554 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i + + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 58.9128 * tfactors.T943i + (1.0/3.0) * -148.273 * tfactors.T923i - + 9.08324 + (5.0/3.0) * -0.541041 * tfactors.T923 + 70.3554 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_n_to_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_C13_to_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + n --> C14 - // C13 + n --> C14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 35.3048 + -0.133687 * tfactors.T9i + 18.3578 * tfactors.T913i + -46.5786 * tfactors.T913 + + 2.58472 * tfactors.T9 + -0.118622 * tfactors.T953 + 19.9142 * tfactors.lnT9; - // ks03 - ln_set_rate = 35.3048 + -0.133687 * tfactors.T9i + 18.3578 * tfactors.T913i + -46.5786 * tfactors.T913 - + 2.58472 * tfactors.T9 + -0.118622 * tfactors.T953 + 19.9142 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.133687 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.3578 * tfactors.T943i + (1.0/3.0) * -46.5786 * tfactors.T923i + + 2.58472 + (5.0/3.0) * -0.118622 * tfactors.T923 + 19.9142 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.133687 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.3578 * tfactors.T943i + (1.0/3.0) * -46.5786 * tfactors.T923i - + 2.58472 + (5.0/3.0) * -0.118622 * tfactors.T923 + 19.9142 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_p_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C13_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + p --> N14 - // C13 + p --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 + + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.5155 + -13.72 * tfactors.T913i + -0.450018 * tfactors.T913 - + 3.70823 * tfactors.T9 + -1.70545 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i + + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.72 * tfactors.T943i + (1.0/3.0) * -0.450018 * tfactors.T923i - + 3.70823 + (5.0/3.0) * -1.70545 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 + + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 13.9637 + -5.78147 * tfactors.T9i + -0.196703 * tfactors.T913 - + 0.142126 * tfactors.T9 + -0.0238912 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i + + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.78147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.196703 * tfactors.T923i - + 0.142126 + (5.0/3.0) * -0.0238912 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 15.1825 + -13.5543 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.5543 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C14_p_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C14_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C14 + p --> N15 - // C14 + p --> N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 17.1024 + -1.52341 * tfactors.T9i + -10.658 * tfactors.T913i + 1.73644 * tfactors.T913 + + -0.350498 * tfactors.T9 + 0.0279902 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 17.1024 + -1.52341 * tfactors.T9i + -10.658 * tfactors.T913i + 1.73644 * tfactors.T913 - + -0.350498 * tfactors.T9 + 0.0279902 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.52341 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.658 * tfactors.T943i + (1.0/3.0) * 1.73644 * tfactors.T923i + + -0.350498 + (5.0/3.0) * 0.0279902 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.52341 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.658 * tfactors.T943i + (1.0/3.0) * 1.73644 * tfactors.T923i - + -0.350498 + (5.0/3.0) * 0.0279902 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 20.119 + -13.9619 * tfactors.T913i + -4.34315 * tfactors.T913 + + 6.64922 * tfactors.T9 + -3.22592 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 20.119 + -13.9619 * tfactors.T913i + -4.34315 * tfactors.T913 - + 6.64922 * tfactors.T9 + -3.22592 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.9619 * tfactors.T943i + (1.0/3.0) * -4.34315 * tfactors.T923i + + 6.64922 + (5.0/3.0) * -3.22592 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.9619 * tfactors.T943i + (1.0/3.0) * -4.34315 * tfactors.T923i - + 6.64922 + (5.0/3.0) * -3.22592 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C14_He4_to_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C14_to_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C14 + He4 --> O18 - // C14 + He4 --> O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 11.8309 + -10.3983 * tfactors.T9i + -3.83188 * tfactors.T913 + + 1.64358 * tfactors.T9 + -0.177785 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 11.8309 + -10.3983 * tfactors.T9i + -3.83188 * tfactors.T913 - + 1.64358 * tfactors.T9 + -0.177785 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3983 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.83188 * tfactors.T923i + + 1.64358 + (5.0/3.0) * -0.177785 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3983 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.83188 * tfactors.T923i - + 1.64358 + (5.0/3.0) * -0.177785 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -23.805 + -2.06876 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -23.805 + -2.06876 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.06876 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.06876 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.4877 + -31.7222 * tfactors.T913i + 11.3923 * tfactors.T913 + + -9.92249 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.4877 + -31.7222 * tfactors.T913i + 11.3923 * tfactors.T913 - + -9.92249 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.7222 * tfactors.T943i + (1.0/3.0) * 11.3923 * tfactors.T923i + + -9.92249 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.7222 * tfactors.T943i + (1.0/3.0) * 11.3923 * tfactors.T923i - + -9.92249 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_n_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_N13_to_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + n --> N14 - // N13 + n --> N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wiesn + ln_set_rate = 13.9377 + -0.0054652 * tfactors.T9i + 1.72241e-10 * tfactors.T913i + -5.62522e-10 * tfactors.T913 + + 5.59212e-11 * tfactors.T9 + -4.6549e-12 * tfactors.T953; - // wiesn - ln_set_rate = 13.9377 + -0.0054652 * tfactors.T9i + 1.72241e-10 * tfactors.T913i + -5.62522e-10 * tfactors.T913 - + 5.59212e-11 * tfactors.T9 + -4.6549e-12 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0054652 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.72241e-10 * tfactors.T943i + (1.0/3.0) * -5.62522e-10 * tfactors.T923i + + 5.59212e-11 + (5.0/3.0) * -4.6549e-12 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0054652 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.72241e-10 * tfactors.T943i + (1.0/3.0) * -5.62522e-10 * tfactors.T923i - + 5.59212e-11 + (5.0/3.0) * -4.6549e-12 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wiesr + ln_set_rate = -3.63074 + -2.99547 * tfactors.T9i + 9.44873e-10 * tfactors.T913i + -2.33713e-09 * tfactors.T913 + + 1.97507e-10 * tfactors.T9 + -1.49747e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; - // wiesr - ln_set_rate = -3.63074 + -2.99547 * tfactors.T9i + 9.44873e-10 * tfactors.T913i + -2.33713e-09 * tfactors.T913 - + 1.97507e-10 * tfactors.T9 + -1.49747e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.99547 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.44873e-10 * tfactors.T943i + (1.0/3.0) * -2.33713e-09 * tfactors.T923i + + 1.97507e-10 + (5.0/3.0) * -1.49747e-11 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.99547 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.44873e-10 * tfactors.T943i + (1.0/3.0) * -2.33713e-09 * tfactors.T923i - + 1.97507e-10 + (5.0/3.0) * -1.49747e-11 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_p_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N13_to_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + p --> O14 - // N13 + p --> O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lg06r + ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // lg06r - ln_set_rate = 10.9971 + -6.12602 * tfactors.T9i + 1.57122 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.12602 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.57122 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lg06n + ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 + + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // lg06n - ln_set_rate = 18.1356 + -15.1676 * tfactors.T913i + 0.0955166 * tfactors.T913 - + 3.0659 * tfactors.T9 + -0.507339 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i + + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.1676 * tfactors.T943i + (1.0/3.0) * 0.0955166 * tfactors.T923i - + 3.0659 + (5.0/3.0) * -0.507339 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_n_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_N14_to_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + n --> N15 - // N14 + n --> N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 10.1651 + -0.0114078 * tfactors.T9i + 1.396 * tfactors.T913i + -3.47552 * tfactors.T913 + + 0.351773 * tfactors.T9 + -0.0229344 * tfactors.T953 + 1.02161 * tfactors.lnT9; - // ks03 - ln_set_rate = 10.1651 + -0.0114078 * tfactors.T9i + 1.396 * tfactors.T913i + -3.47552 * tfactors.T913 - + 0.351773 * tfactors.T9 + -0.0229344 * tfactors.T953 + 1.02161 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0114078 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.396 * tfactors.T943i + (1.0/3.0) * -3.47552 * tfactors.T923i + + 0.351773 + (5.0/3.0) * -0.0229344 * tfactors.T923 + 1.02161 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0114078 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.396 * tfactors.T943i + (1.0/3.0) * -3.47552 * tfactors.T923i - + 0.351773 + (5.0/3.0) * -0.0229344 * tfactors.T923 + 1.02161 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_p_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N14_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + p --> O15 - // N14 + p --> O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // im05r + ln_set_rate = 6.73578 + -4.891 * tfactors.T9i + + 0.0682 * tfactors.lnT9; - // im05r - ln_set_rate = 6.73578 + -4.891 * tfactors.T9i - + 0.0682 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i + + 0.0682 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.891 * tfactors.T9i * tfactors.T9i - + 0.0682 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05r + ln_set_rate = 7.65444 + -2.998 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // im05r - ln_set_rate = 7.65444 + -2.998 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.998 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 + + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // im05n - ln_set_rate = 20.1169 + -15.193 * tfactors.T913i + -4.63975 * tfactors.T913 - + 9.73458 * tfactors.T9 + -9.55051 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i + + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -4.63975 * tfactors.T923i - + 9.73458 + (5.0/3.0) * -9.55051 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // im05n + ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 + + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // im05n - ln_set_rate = 17.01 + -15.193 * tfactors.T913i + -0.161954 * tfactors.T913 - + -7.52123 * tfactors.T9 + -0.987565 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i + + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.193 * tfactors.T943i + (1.0/3.0) * -0.161954 * tfactors.T923i - + -7.52123 + (5.0/3.0) * -0.987565 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> F18 - // N14 + He4 --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 13.8995 + -10.9656 * tfactors.T9i + -5.6227 * tfactors.T913i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.9656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.6227 * tfactors.T943i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.196838 + -5.16034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i + + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.5339 + -36.2504 * tfactors.T913i - + -5.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i + + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2504 * tfactors.T943i - + (5.0/3.0) * -5.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> O16 - // N15 + p --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li10r + ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i + + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 14.5444 + -10.2295 * tfactors.T9i - + 0.0459037 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i + + 0.0459037 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2295 * tfactors.T9i * tfactors.T9i - + 0.0459037 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10r + ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li10r - ln_set_rate = 6.59056 + -2.92315 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92315 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li10n + ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 + + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // li10n - ln_set_rate = 20.0176 + -15.24 * tfactors.T913i + 0.334926 * tfactors.T913 - + 4.59088 * tfactors.T9 + -4.78468 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i + + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.24 * tfactors.T943i + (1.0/3.0) * 0.334926 * tfactors.T923i - + 4.59088 + (5.0/3.0) * -4.78468 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + He4 --> F19 - // N15 + He4 --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 + + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -28.7989 + -4.19986 * tfactors.T9i + 35.4292 * tfactors.T913 - + -5.5767 * tfactors.T9 + 0.441293 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i + + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.19986 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.4292 * tfactors.T923i - + -5.5767 + (5.0/3.0) * 0.441293 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 3.5342 + -6.98462 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.98462 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.41892 + -4.17795 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.17795 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 25.3916 + -36.2324 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.2324 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_n_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O14_to_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + n --> O15 - // O14 + n --> O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 9.87196 + 0.0160481 * tfactors.T9i + -1.38986 * tfactors.T913i + 1.74662 * tfactors.T913 + + -0.0276897 * tfactors.T9 + 0.00321014 * tfactors.T953 + -1.06122 * tfactors.lnT9; - // rpsmr - ln_set_rate = 9.87196 + 0.0160481 * tfactors.T9i + -1.38986 * tfactors.T913i + 1.74662 * tfactors.T913 - + -0.0276897 * tfactors.T9 + 0.00321014 * tfactors.T953 + -1.06122 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0160481 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.38986 * tfactors.T943i + (1.0/3.0) * 1.74662 * tfactors.T923i + + -0.0276897 + (5.0/3.0) * 0.00321014 * tfactors.T923 + -1.06122 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0160481 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.38986 * tfactors.T943i + (1.0/3.0) * 1.74662 * tfactors.T923i - + -0.0276897 + (5.0/3.0) * 0.00321014 * tfactors.T923 + -1.06122 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> Ne18 - // O14 + He4 --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wh87n + ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 + + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // wh87n - ln_set_rate = 26.4429 + -39.38 * tfactors.T913i + -0.0772187 * tfactors.T913 - + -0.635361 * tfactors.T9 + 0.106236 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i + + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.38 * tfactors.T943i + (1.0/3.0) * -0.0772187 * tfactors.T923i - + -0.635361 + (5.0/3.0) * 0.106236 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -4.69948 + -12.159 * tfactors.T9i + + 5.0 * tfactors.lnT9; - // wh87r - ln_set_rate = -4.69948 + -12.159 * tfactors.T9i - + 5.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i + + 5.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.159 * tfactors.T9i * tfactors.T9i - + 5.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = 3.52636 + -22.61 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = 3.52636 + -22.61 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.61 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wh87r + ln_set_rate = -2.15417 + -11.73 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // wh87r - ln_set_rate = -2.15417 + -11.73 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.73 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_n_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O15_to_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + n --> O16 - // O15 + n --> O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 8.08476 + 0.0135346 * tfactors.T9i + -1.11761 * tfactors.T913i + 1.0167 * tfactors.T913 + + 0.0449976 * tfactors.T9 + -0.00204682 * tfactors.T953 + -0.789217 * tfactors.lnT9; - // rpsmr - ln_set_rate = 8.08476 + 0.0135346 * tfactors.T9i + -1.11761 * tfactors.T913i + 1.0167 * tfactors.T913 - + 0.0449976 * tfactors.T9 + -0.00204682 * tfactors.T953 + -0.789217 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0135346 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.11761 * tfactors.T943i + (1.0/3.0) * 1.0167 * tfactors.T923i + + 0.0449976 + (5.0/3.0) * -0.00204682 * tfactors.T923 + -0.789217 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0135346 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.11761 * tfactors.T943i + (1.0/3.0) * 1.0167 * tfactors.T923i - + 0.0449976 + (5.0/3.0) * -0.00204682 * tfactors.T923 + -0.789217 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + He4 --> Ne19 - // O15 + He4 --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // dc11r + ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 + + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -32.2496 + -4.20439 * tfactors.T9i + -3.24609 * tfactors.T913i + 44.4647 * tfactors.T913 - + -9.79962 * tfactors.T9 + 0.841782 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i + + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.20439 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.24609 * tfactors.T943i + (1.0/3.0) * 44.4647 * tfactors.T923i - + -9.79962 + (5.0/3.0) * 0.841782 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11r + ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // dc11r - ln_set_rate = -0.0452465 + -5.88439 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.88439 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // dc11n + ln_set_rate = 26.2914 + -39.578 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // dc11n - ln_set_rate = 26.2914 + -39.578 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.578 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_n_to_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O16_to_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + n --> O17 - // O16 + n --> O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 7.21546 + 0.0235015 * tfactors.T9i + -2.11246 * tfactors.T913i + 4.87742 * tfactors.T913 + + -0.314426 * tfactors.T9 + 0.0169515 * tfactors.T953 + -0.984784 * tfactors.lnT9; - // ks03 - ln_set_rate = 7.21546 + 0.0235015 * tfactors.T9i + -2.11246 * tfactors.T913i + 4.87742 * tfactors.T913 - + -0.314426 * tfactors.T9 + 0.0169515 * tfactors.T953 + -0.984784 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0235015 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.11246 * tfactors.T943i + (1.0/3.0) * 4.87742 * tfactors.T923i + + -0.314426 + (5.0/3.0) * 0.0169515 * tfactors.T923 + -0.984784 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0235015 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.11246 * tfactors.T943i + (1.0/3.0) * 4.87742 * tfactors.T923i - + -0.314426 + (5.0/3.0) * 0.0169515 * tfactors.T923 + -0.984784 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> F17 - // O16 + p --> F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ia08n + ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 + + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ia08n - ln_set_rate = 19.0904 + -16.696 * tfactors.T913i + -1.16252 * tfactors.T913 - + 0.267703 * tfactors.T9 + -0.0338411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i + + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.696 * tfactors.T943i + (1.0/3.0) * -1.16252 * tfactors.T923i - + 0.267703 + (5.0/3.0) * -0.0338411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> Ne20 - // O16 + He4 --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // co10r + ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 3.88571 + -10.3585 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.3585 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10n + ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 + + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // co10n - ln_set_rate = 23.903 + -39.7262 * tfactors.T913i + -0.210799 * tfactors.T913 - + 0.442879 * tfactors.T9 + -0.0797753 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i + + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.7262 * tfactors.T943i + (1.0/3.0) * -0.210799 * tfactors.T923i - + 0.442879 + (5.0/3.0) * -0.0797753 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // co10r + ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 + + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; - // co10r - ln_set_rate = 9.50848 + -12.7643 * tfactors.T9i + -3.65925 * tfactors.T913 - + 0.714224 * tfactors.T9 + -0.00107508 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i + + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7643 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.65925 * tfactors.T923i - + 0.714224 + (5.0/3.0) * -0.00107508 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_n_to_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O17_to_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + n --> O18 - // O17 + n --> O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bb92n + ln_set_rate = 4.27026 + -5.69067e-13 * tfactors.T9i + 7.48144e-11 * tfactors.T913i + -2.47239e-10 * tfactors.T913 + + 2.48052e-11 * tfactors.T9 + -2.07736e-12 * tfactors.T953 + 8.43048e-11 * tfactors.lnT9; - // bb92n - ln_set_rate = 4.27026 + -5.69067e-13 * tfactors.T9i + 7.48144e-11 * tfactors.T913i + -2.47239e-10 * tfactors.T913 - + 2.48052e-11 * tfactors.T9 + -2.07736e-12 * tfactors.T953 + 8.43048e-11 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.69067e-13 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.48144e-11 * tfactors.T943i + (1.0/3.0) * -2.47239e-10 * tfactors.T923i + + 2.48052e-11 + (5.0/3.0) * -2.07736e-12 * tfactors.T923 + 8.43048e-11 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.69067e-13 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.48144e-11 * tfactors.T943i + (1.0/3.0) * -2.47239e-10 * tfactors.T923i - + 2.48052e-11 + (5.0/3.0) * -2.07736e-12 * tfactors.T923 + 8.43048e-11 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92r + ln_set_rate = 20.1798 + -2.12961 * tfactors.T9i + 16.8052 * tfactors.T913i + -30.138 * tfactors.T913 + + 1.14711 * tfactors.T9 + -0.0220312 * tfactors.T953 + 13.7452 * tfactors.lnT9; - // bb92r - ln_set_rate = 20.1798 + -2.12961 * tfactors.T9i + 16.8052 * tfactors.T913i + -30.138 * tfactors.T913 - + 1.14711 * tfactors.T9 + -0.0220312 * tfactors.T953 + 13.7452 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.12961 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 16.8052 * tfactors.T943i + (1.0/3.0) * -30.138 * tfactors.T923i + + 1.14711 + (5.0/3.0) * -0.0220312 * tfactors.T923 + 13.7452 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.12961 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 16.8052 * tfactors.T943i + (1.0/3.0) * -30.138 * tfactors.T923i - + 1.14711 + (5.0/3.0) * -0.0220312 * tfactors.T923 + 13.7452 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> F18 - // O17 + p --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 + + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.39048 + -6.22828 * tfactors.T9i + 2.31435 * tfactors.T913 - + -0.302835 * tfactors.T9 + 0.020133 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i + + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.22828 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.31435 * tfactors.T923i - + -0.302835 + (5.0/3.0) * 0.020133 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -13.077 + -0.746296 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.077 + -0.746296 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.746296 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 + + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 15.8929 + -16.4035 * tfactors.T913i + 4.31885 * tfactors.T913 - + -0.709921 * tfactors.T9 + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i + + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.4035 * tfactors.T943i + (1.0/3.0) * 4.31885 * tfactors.T923i - + -0.709921 + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_He4_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O17_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + He4 --> Ne21 - // O17 + He4 --> Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // be13r + ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 + + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; - // be13r - ln_set_rate = -25.0898 + -5.50926 * tfactors.T9i + 123.363 * tfactors.T913i + -87.4351 * tfactors.T913 - + -3.40974e-06 * tfactors.T9 + -57.0469 * tfactors.T953 + 82.2218 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i + + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.50926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.363 * tfactors.T943i + (1.0/3.0) * -87.4351 * tfactors.T923i - + -3.40974e-06 + (5.0/3.0) * -57.0469 * tfactors.T923 + 82.2218 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 + + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; - // be13r - ln_set_rate = -117.134 + -13.6759 * tfactors.T9i + 3.31162e-08 * tfactors.T913i + 130.258 * tfactors.T913 - + -7.92551e-05 * tfactors.T9 + -4.13772 * tfactors.T953 + -42.7753 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i + + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6759 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.31162e-08 * tfactors.T943i + (1.0/3.0) * 130.258 * tfactors.T923i - + -7.92551e-05 + (5.0/3.0) * -4.13772 * tfactors.T923 + -42.7753 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // be13r + ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 + + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; - // be13r - ln_set_rate = 2.14 + -5.99952 * tfactors.T9i + 2.87641 * tfactors.T913i + -3.54489 * tfactors.T913 - + -2.11222e-08 * tfactors.T9 + -3.90649e-09 * tfactors.T953 + 4.75778 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i + + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.99952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.87641 * tfactors.T943i + (1.0/3.0) * -3.54489 * tfactors.T923i - + -2.11222e-08 + (5.0/3.0) * -3.90649e-09 * tfactors.T923 + 4.75778 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> F19 - // O18 + p --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 19.917 + -16.7246 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.917 + -16.7246 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.7246 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 + + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 7.26876 + -6.7253 * tfactors.T9i + 3.99059 * tfactors.T913 - + -0.593127 * tfactors.T9 + 0.0877534 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i + + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.7253 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.99059 * tfactors.T923i - + -0.593127 + (5.0/3.0) * 0.0877534 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.07648 + -1.65681 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.65681 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -35.0079 + -0.244743 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.244743 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_He4_to_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O18_to_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + He4 --> Ne22 - // O18 + He4 --> Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -31.9126 + -2.00306 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -31.9126 + -2.00306 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00306 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00306 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -81.3036 + -0.676112 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -81.3036 + -0.676112 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.676112 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.676112 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 14.9748 + -31.0468 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 14.9748 + -31.0468 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.0468 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.0468 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 82.2053 + -1.58534 * tfactors.T9i + -44.3823 * tfactors.T913i + -46.6617 * tfactors.T913 + + 7.88059 * tfactors.T9 + -0.590829 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 82.2053 + -1.58534 * tfactors.T9i + -44.3823 * tfactors.T913i + -46.6617 * tfactors.T913 - + 7.88059 * tfactors.T9 + -0.590829 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.58534 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -44.3823 * tfactors.T943i + (1.0/3.0) * -46.6617 * tfactors.T923i + + 7.88059 + (5.0/3.0) * -0.590829 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.58534 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -44.3823 * tfactors.T943i + (1.0/3.0) * -46.6617 * tfactors.T923i - + 7.88059 + (5.0/3.0) * -0.590829 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_n_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_F17_to_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + n --> F18 - // F17 + n --> F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 3.42798 + 0.0273799 * tfactors.T9i + -2.71353 * tfactors.T913i + 6.19871 * tfactors.T913 + + -0.26836 * tfactors.T9 + 0.0115489 * tfactors.T953 + -2.52002 * tfactors.lnT9; - // rpsmr - ln_set_rate = 3.42798 + 0.0273799 * tfactors.T9i + -2.71353 * tfactors.T913i + 6.19871 * tfactors.T913 - + -0.26836 * tfactors.T9 + 0.0115489 * tfactors.T953 + -2.52002 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0273799 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.71353 * tfactors.T943i + (1.0/3.0) * 6.19871 * tfactors.T923i + + -0.26836 + (5.0/3.0) * 0.0115489 * tfactors.T923 + -2.52002 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0273799 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.71353 * tfactors.T943i + (1.0/3.0) * 6.19871 * tfactors.T923i - + -0.26836 + (5.0/3.0) * 0.0115489 * tfactors.T923 + -2.52002 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + p --> Ne18 - // F17 + p --> Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cb09 + ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 + + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; - // cb09 - ln_set_rate = -7.84708 + -0.0323504 * tfactors.T9i + -14.2191 * tfactors.T913i + 34.0647 * tfactors.T913 - + -16.5698 * tfactors.T9 + 2.48116 * tfactors.T953 + -2.13376 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i + + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0323504 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -14.2191 * tfactors.T943i + (1.0/3.0) * 34.0647 * tfactors.T923i - + -16.5698 + (5.0/3.0) * 2.48116 * tfactors.T923 + -2.13376 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cb09 + ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 + + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; - // cb09 - ln_set_rate = 27.5778 + -4.95969 * tfactors.T9i + -21.3249 * tfactors.T913i + -0.230774 * tfactors.T913 - + 0.917931 * tfactors.T9 + -0.0440377 * tfactors.T953 + -7.36014 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i + + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95969 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.3249 * tfactors.T943i + (1.0/3.0) * -0.230774 * tfactors.T923i - + 0.917931 + (5.0/3.0) * -0.0440377 * tfactors.T923 + -7.36014 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_He4_to_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F17_to_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + He4 --> Na21 - // F17 + He4 --> Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 41.1529 + -1.72817 * tfactors.T9i + 15.559 * tfactors.T913i + -68.3231 * tfactors.T913 + + 2.54275 * tfactors.T9 + -0.0989207 * tfactors.T953 + 36.8877 * tfactors.lnT9; - // rpsmr - ln_set_rate = 41.1529 + -1.72817 * tfactors.T9i + 15.559 * tfactors.T913i + -68.3231 * tfactors.T913 - + 2.54275 * tfactors.T9 + -0.0989207 * tfactors.T953 + 36.8877 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.72817 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.559 * tfactors.T943i + (1.0/3.0) * -68.3231 * tfactors.T923i + + 2.54275 + (5.0/3.0) * -0.0989207 * tfactors.T923 + 36.8877 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.72817 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.559 * tfactors.T943i + (1.0/3.0) * -68.3231 * tfactors.T923i - + 2.54275 + (5.0/3.0) * -0.0989207 * tfactors.T923 + 36.8877 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_n_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_F18_to_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + n --> F19 - // F18 + n --> F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 0.814964 + 0.0604483 * tfactors.T9i + -6.65988 * tfactors.T913i + 18.3243 * tfactors.T913 + + -1.47263 * tfactors.T9 + 0.0955082 * tfactors.T953 + -6.75505 * tfactors.lnT9; - // rpsmr - ln_set_rate = 0.814964 + 0.0604483 * tfactors.T9i + -6.65988 * tfactors.T913i + 18.3243 * tfactors.T913 - + -1.47263 * tfactors.T9 + 0.0955082 * tfactors.T953 + -6.75505 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0604483 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.65988 * tfactors.T943i + (1.0/3.0) * 18.3243 * tfactors.T923i + + -1.47263 + (5.0/3.0) * 0.0955082 * tfactors.T923 + -6.75505 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0604483 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.65988 * tfactors.T943i + (1.0/3.0) * 18.3243 * tfactors.T923i - + -1.47263 + (5.0/3.0) * 0.0955082 * tfactors.T923 + -6.75505 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> Ne19 - // F18 + p --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 + + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.85727 + -2.89147 * tfactors.T9i + 13.1683 * tfactors.T913 - + -1.92023 * tfactors.T9 + 0.16901 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i + + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.89147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.1683 * tfactors.T923i - + -1.92023 + (5.0/3.0) * 0.16901 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 + + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -29.449 + -0.39895 * tfactors.T9i + 22.4903 * tfactors.T913 - + 0.307872 * tfactors.T9 + -0.296226 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i + + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.39895 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.4903 * tfactors.T923i - + 0.307872 + (5.0/3.0) * -0.296226 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 + + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 57.4084 + -21.4023 * tfactors.T913i + -93.766 * tfactors.T913 - + 179.258 * tfactors.T9 + -202.561 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i + + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -93.766 * tfactors.T923i - + 179.258 + (5.0/3.0) * -202.561 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_He4_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F18_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + He4 --> Na22 - // F18 + He4 --> Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 + + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; - // rpsmr - ln_set_rate = 35.3786 + -1.82957 * tfactors.T9i + 18.8956 * tfactors.T913i + -65.6134 * tfactors.T913 - + 1.71114 * tfactors.T9 + -0.0260999 * tfactors.T953 + 37.8396 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i + + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.82957 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 18.8956 * tfactors.T943i + (1.0/3.0) * -65.6134 * tfactors.T923i - + 1.71114 + (5.0/3.0) * -0.0260999 * tfactors.T923 + 37.8396 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> Ne20 - // F19 + p --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 + + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -5.63093 + -7.74414 * tfactors.T9i + 31.6442 * tfactors.T913i + -58.6563 * tfactors.T913 - + 67.7365 * tfactors.T9 + -22.9721 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i + + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.74414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 31.6442 * tfactors.T943i + (1.0/3.0) * -58.6563 * tfactors.T923i - + 67.7365 + (5.0/3.0) * -22.9721 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 + + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 12.3816 + -1.71383 * tfactors.T9i + -11.3832 * tfactors.T913i + 5.47872 * tfactors.T913 - + -1.07203 * tfactors.T9 + 0.11196 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i + + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.71383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.3832 * tfactors.T943i + (1.0/3.0) * 5.47872 * tfactors.T923i - + -1.07203 + (5.0/3.0) * 0.11196 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 + + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 18.2807 + -18.116 * tfactors.T913i + -1.4622 * tfactors.T913 - + 6.95113 * tfactors.T9 + -2.90366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i + + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + (1.0/3.0) * -1.4622 * tfactors.T923i - + 6.95113 + (5.0/3.0) * -2.90366 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_He4_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F19_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + He4 --> Na23 - // F19 + He4 --> Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 52.7856 + -2.11408 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 + + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 54.4823 * tfactors.lnT9; - // rpsmr - ln_set_rate = 52.7856 + -2.11408 * tfactors.T9i + 39.7219 * tfactors.T913i + -100.401 * tfactors.T913 - + 3.15808 * tfactors.T9 + -0.0629822 * tfactors.T953 + 54.4823 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11408 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i + + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 54.4823 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11408 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 39.7219 * tfactors.T943i + (1.0/3.0) * -100.401 * tfactors.T923i - + 3.15808 + (5.0/3.0) * -0.0629822 * tfactors.T923 + 54.4823 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_n_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne18_to_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 + n --> Ne19 - // Ne18 + n --> Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 9.249 + 0.937162 * tfactors.T913 + + -0.0221952 * tfactors.T9 + -0.00101206 * tfactors.T953; - // ths8r - ln_set_rate = 9.249 + 0.937162 * tfactors.T913 - + -0.0221952 * tfactors.T9 + -0.00101206 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.937162 * tfactors.T923i + + -0.0221952 + (5.0/3.0) * -0.00101206 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.937162 * tfactors.T923i - + -0.0221952 + (5.0/3.0) * -0.00101206 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_n_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne19_to_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 + n --> Ne20 - // Ne19 + n --> Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 6.40633 + 1.57592 * tfactors.T913 + + -0.11175 * tfactors.T9 + 0.00226473 * tfactors.T953; - // ths8r - ln_set_rate = 6.40633 + 1.57592 * tfactors.T913 - + -0.11175 * tfactors.T9 + 0.00226473 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.57592 * tfactors.T923i + + -0.11175 + (5.0/3.0) * 0.00226473 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.57592 * tfactors.T923i - + -0.11175 + (5.0/3.0) * 0.00226473 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_He4_to_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne19_to_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 + He4 --> Mg23 - // Ne19 + He4 --> Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.1998 + -46.6346 * tfactors.T913i + -1.1007 * tfactors.T913 + + -0.794097 * tfactors.T9 + 0.0813036 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.1998 + -46.6346 * tfactors.T913i + -1.1007 * tfactors.T913 - + -0.794097 * tfactors.T9 + 0.0813036 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * -1.1007 * tfactors.T923i + + -0.794097 + (5.0/3.0) * 0.0813036 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * -1.1007 * tfactors.T923i - + -0.794097 + (5.0/3.0) * 0.0813036 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_n_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne20_to_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + n --> Ne21 - // Ne20 + n --> Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02r + ln_set_rate = 12.7344 + -1.70393 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ka02r - ln_set_rate = 12.7344 + -1.70393 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.70393 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.70393 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02n + ln_set_rate = 8.57651; + amrex::ignore_unused(tfactors); - // ka02n - ln_set_rate = 8.57651; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_p_to_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne20_to_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + p --> Na21 - // Ne20 + p --> Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ly18 + ln_set_rate = 195297.0 + -61.14 * tfactors.T9i + 21894.7 * tfactors.T913i + -319153.0 * tfactors.T913 + + 224369.0 * tfactors.T9 + -188049.0 * tfactors.T953 + 48703.4 * tfactors.lnT9; - // ly18 - ln_set_rate = 195297.0 + -61.14 * tfactors.T9i + 21894.7 * tfactors.T913i + -319153.0 * tfactors.T913 - + 224369.0 * tfactors.T9 + -188049.0 * tfactors.T953 + 48703.4 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 61.14 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21894.7 * tfactors.T943i + (1.0/3.0) * -319153.0 * tfactors.T923i + + 224369.0 + (5.0/3.0) * -188049.0 * tfactors.T923 + 48703.4 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 61.14 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21894.7 * tfactors.T943i + (1.0/3.0) * -319153.0 * tfactors.T923i - + 224369.0 + (5.0/3.0) * -188049.0 * tfactors.T923 + 48703.4 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 207.877 + -0.152711 * tfactors.T9i + 15.325 * tfactors.T913i + -294.859 * tfactors.T913 + + 107.692 * tfactors.T9 + -46.2072 * tfactors.T953 + 57.8398 * tfactors.lnT9; - // ly18 - ln_set_rate = 207.877 + -0.152711 * tfactors.T9i + 15.325 * tfactors.T913i + -294.859 * tfactors.T913 - + 107.692 * tfactors.T9 + -46.2072 * tfactors.T953 + 57.8398 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.152711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.325 * tfactors.T943i + (1.0/3.0) * -294.859 * tfactors.T923i + + 107.692 + (5.0/3.0) * -46.2072 * tfactors.T923 + 57.8398 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.152711 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 15.325 * tfactors.T943i + (1.0/3.0) * -294.859 * tfactors.T923i - + 107.692 + (5.0/3.0) * -46.2072 * tfactors.T923 + 57.8398 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 5.83103 + -8.838 * tfactors.T9i + 20.5893 * tfactors.T913i + -17.5841 * tfactors.T913 + + 0.243226 * tfactors.T9 + -0.000231418 * tfactors.T953 + 12.8398 * tfactors.lnT9; - // ly18 - ln_set_rate = 5.83103 + -8.838 * tfactors.T9i + 20.5893 * tfactors.T913i + -17.5841 * tfactors.T913 - + 0.243226 * tfactors.T9 + -0.000231418 * tfactors.T953 + 12.8398 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.838 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 20.5893 * tfactors.T943i + (1.0/3.0) * -17.5841 * tfactors.T923i + + 0.243226 + (5.0/3.0) * -0.000231418 * tfactors.T923 + 12.8398 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.838 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 20.5893 * tfactors.T943i + (1.0/3.0) * -17.5841 * tfactors.T923i - + 0.243226 + (5.0/3.0) * -0.000231418 * tfactors.T923 + 12.8398 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ly18 + ln_set_rate = 230.019 + -4.45358 * tfactors.T9i + 258.57 * tfactors.T913i + -506.387 * tfactors.T913 + + 22.1576 * tfactors.T9 + -0.721182 * tfactors.T953 + 230.288 * tfactors.lnT9; - // ly18 - ln_set_rate = 230.019 + -4.45358 * tfactors.T9i + 258.57 * tfactors.T913i + -506.387 * tfactors.T913 - + 22.1576 * tfactors.T9 + -0.721182 * tfactors.T953 + 230.288 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.45358 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 258.57 * tfactors.T943i + (1.0/3.0) * -506.387 * tfactors.T923i + + 22.1576 + (5.0/3.0) * -0.721182 * tfactors.T923 + 230.288 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.45358 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 258.57 * tfactors.T943i + (1.0/3.0) * -506.387 * tfactors.T923i - + 22.1576 + (5.0/3.0) * -0.721182 * tfactors.T923 + 230.288 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> Mg24 - // Ne20 + He4 --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 + + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -8.79827 + -12.7809 * tfactors.T9i + 16.9229 * tfactors.T913 - + -2.57325 * tfactors.T9 + 0.208997 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i + + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.7809 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 16.9229 * tfactors.T923i - + -2.57325 + (5.0/3.0) * 0.208997 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.98307 + -9.22026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.22026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -38.7055 + -2.50605 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.50605 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 + + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 24.5058 + -46.2525 * tfactors.T913i + 5.58901 * tfactors.T913 - + 7.61843 * tfactors.T9 + -3.683 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i + + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.2525 * tfactors.T943i + (1.0/3.0) * 5.58901 * tfactors.T923i - + 7.61843 + (5.0/3.0) * -3.683 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_n_to_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne21_to_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + n --> Ne22 - // Ne21 + n --> Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 23.5205 + 0.0482005 * tfactors.T9i + -0.238173 * tfactors.T913i + -12.2336 * tfactors.T913 + + 1.14968 * tfactors.T9 + -0.0768882 * tfactors.T953 + 2.63636 * tfactors.lnT9; - // ks03 - ln_set_rate = 23.5205 + 0.0482005 * tfactors.T9i + -0.238173 * tfactors.T913i + -12.2336 * tfactors.T913 - + 1.14968 * tfactors.T9 + -0.0768882 * tfactors.T953 + 2.63636 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0482005 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.238173 * tfactors.T943i + (1.0/3.0) * -12.2336 * tfactors.T923i + + 1.14968 + (5.0/3.0) * -0.0768882 * tfactors.T923 + 2.63636 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0482005 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.238173 * tfactors.T943i + (1.0/3.0) * -12.2336 * tfactors.T923i - + 1.14968 + (5.0/3.0) * -0.0768882 * tfactors.T923 + 2.63636 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_p_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne21_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + p --> Na22 - // Ne21 + p --> Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i + + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.0696 + -19.2096 * tfactors.T913i - + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -19.2096 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 + + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -39.4862 + -4.21385 * tfactors.T9i + 21.1176 * tfactors.T913i + 34.0411 * tfactors.T913 - + -4.45593 * tfactors.T9 + 0.328613 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i + + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.21385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.1176 * tfactors.T943i + (1.0/3.0) * 34.0411 * tfactors.T923i - + -4.45593 + (5.0/3.0) * 0.328613 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -1.39957 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.39957 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -47.6554 + -0.19618 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.19618 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_He4_to_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne21_to_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + He4 --> Mg25 - // Ne21 + He4 --> Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 26.2429 + -22.049 * tfactors.T9i + -29.4583 * tfactors.T913 + + 14.6328 * tfactors.T9 + -3.47392 * tfactors.T953 + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 26.2429 + -22.049 * tfactors.T9i + -29.4583 * tfactors.T913 - + 14.6328 * tfactors.T9 + -3.47392 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.049 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -29.4583 * tfactors.T923i + + 14.6328 + (5.0/3.0) * -3.47392 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.049 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -29.4583 * tfactors.T923i - + 14.6328 + (5.0/3.0) * -3.47392 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 36.6927 + -46.89 * tfactors.T913i + -0.72642 * tfactors.T913 + + -0.76406 * tfactors.T9 + 0.0797483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 36.6927 + -46.89 * tfactors.T913i + -0.72642 * tfactors.T913 - + -0.76406 * tfactors.T9 + 0.0797483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.89 * tfactors.T943i + (1.0/3.0) * -0.72642 * tfactors.T923i + + -0.76406 + (5.0/3.0) * 0.0797483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.89 * tfactors.T943i + (1.0/3.0) * -0.72642 * tfactors.T923i - + -0.76406 + (5.0/3.0) * 0.0797483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_p_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne22_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne22 + p --> Na23 - // Ne22 + p --> Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ke17r + ln_set_rate = -0.599331 + -1.72007 * tfactors.T9i + + -0.310765 * tfactors.lnT9; - // ke17r - ln_set_rate = -0.599331 + -1.72007 * tfactors.T9i - + -0.310765 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.72007 * tfactors.T9i * tfactors.T9i + + -0.310765 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.72007 * tfactors.T9i * tfactors.T9i - + -0.310765 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = -21.4345 + -0.410962 * tfactors.T9i + + -1.49019 * tfactors.lnT9; - // ke17r - ln_set_rate = -21.4345 + -0.410962 * tfactors.T9i - + -1.49019 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.410962 * tfactors.T9i * tfactors.T9i + + -1.49019 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.410962 * tfactors.T9i * tfactors.T9i - + -1.49019 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = -4.09035 + -0.799756 * tfactors.T9i + + 3.23558 * tfactors.lnT9; - // ke17r - ln_set_rate = -4.09035 + -0.799756 * tfactors.T9i - + 3.23558 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.799756 * tfactors.T9i * tfactors.T9i + + 3.23558 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.799756 * tfactors.T9i * tfactors.T9i - + 3.23558 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 14.0373 + -8.72377 * tfactors.T9i + + -0.767467 * tfactors.lnT9; - // ke17r - ln_set_rate = 14.0373 + -8.72377 * tfactors.T9i - + -0.767467 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.72377 * tfactors.T9i * tfactors.T9i + + -0.767467 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.72377 * tfactors.T9i * tfactors.T9i - + -0.767467 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = 11.6408 + -4.59936 * tfactors.T9i + + 0.156226 * tfactors.lnT9; - // ke17r - ln_set_rate = 11.6408 + -4.59936 * tfactors.T9i - + 0.156226 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.59936 * tfactors.T9i * tfactors.T9i + + 0.156226 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.59936 * tfactors.T9i * tfactors.T9i - + 0.156226 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ke17r + ln_set_rate = -4.00597 + -2.6179 * tfactors.T9i + + -4.29964 * tfactors.lnT9; - // ke17r - ln_set_rate = -4.00597 + -2.6179 * tfactors.T9i - + -4.29964 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.6179 * tfactors.T9i * tfactors.T9i + + -4.29964 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.6179 * tfactors.T9i * tfactors.T9i - + -4.29964 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_He4_to_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne22_to_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne22 + He4 --> Mg26 - // Ne22 + He4 --> Mg26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li12r + ln_set_rate = -29.3146 + -6.44772 * tfactors.T9i + 43.2654 * tfactors.T913 + + -18.5982 * tfactors.T9 + 2.80101 * tfactors.T953 + -1.5 * tfactors.lnT9; - // li12r - ln_set_rate = -29.3146 + -6.44772 * tfactors.T9i + 43.2654 * tfactors.T913 - + -18.5982 * tfactors.T9 + 2.80101 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.44772 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 43.2654 * tfactors.T923i + + -18.5982 + (5.0/3.0) * 2.80101 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.44772 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 43.2654 * tfactors.T923i - + -18.5982 + (5.0/3.0) * 2.80101 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = -23.7527 + -3.88217 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li12r - ln_set_rate = -23.7527 + -3.88217 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.88217 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.88217 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = -42.864 + -2.22115 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li12r - ln_set_rate = -42.864 + -2.22115 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.22115 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.22115 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = -92.4077 + -0.910477 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // li12r - ln_set_rate = -92.4077 + -0.910477 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.910477 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.910477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = -34.7254 + -6.36421 * tfactors.T9i + 35.9878 * tfactors.T913 + + -4.10684 * tfactors.T9 + 0.259345 * tfactors.T953 + -1.5 * tfactors.lnT9; - // li12r - ln_set_rate = -34.7254 + -6.36421 * tfactors.T9i + 35.9878 * tfactors.T913 - + -4.10684 * tfactors.T9 + 0.259345 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.36421 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.9878 * tfactors.T923i + + -4.10684 + (5.0/3.0) * 0.259345 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.36421 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.9878 * tfactors.T923i - + -4.10684 + (5.0/3.0) * 0.259345 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_n_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Na21_to_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na21 + n --> Na22 - // Na21 + n --> Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.58321 + 1.31089 * tfactors.T913 + + -0.164931 * tfactors.T9 + 0.00903374 * tfactors.T953; - // ths8r - ln_set_rate = 7.58321 + 1.31089 * tfactors.T913 - + -0.164931 * tfactors.T9 + 0.00903374 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.31089 * tfactors.T923i + + -0.164931 + (5.0/3.0) * 0.00903374 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.31089 * tfactors.T923i - + -0.164931 + (5.0/3.0) * 0.00903374 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_He4_to_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na21_to_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na21 + He4 --> Al25 - // Na21 + He4 --> Al25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.3006 + -49.9709 * tfactors.T913i + 1.63835 * tfactors.T913 + + -1.18562 * tfactors.T9 + 0.101965 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.3006 + -49.9709 * tfactors.T913i + 1.63835 * tfactors.T913 - + -1.18562 * tfactors.T9 + 0.101965 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -49.9709 * tfactors.T943i + (1.0/3.0) * 1.63835 * tfactors.T923i + + -1.18562 + (5.0/3.0) * 0.101965 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -49.9709 * tfactors.T943i + (1.0/3.0) * 1.63835 * tfactors.T923i - + -1.18562 + (5.0/3.0) * 0.101965 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_n_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Na22_to_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + n --> Na23 - // Na22 + n --> Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.8678 + 1.02148 * tfactors.T913 + + -0.334638 * tfactors.T9 + 0.0258708 * tfactors.T953; - // ths8r - ln_set_rate = 12.8678 + 1.02148 * tfactors.T913 - + -0.334638 * tfactors.T9 + 0.0258708 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.02148 * tfactors.T923i + + -0.334638 + (5.0/3.0) * 0.0258708 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.02148 * tfactors.T923i - + -0.334638 + (5.0/3.0) * 0.0258708 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_p_to_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na22_to_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + p --> Mg23 - // Na22 + p --> Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -11.2731 + -2.42669 * tfactors.T9i + 4.86658 * tfactors.T913i + 16.4592 * tfactors.T913 + + -1.95129 * tfactors.T9 + 0.132972 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -11.2731 + -2.42669 * tfactors.T9i + 4.86658 * tfactors.T913i + 16.4592 * tfactors.T913 - + -1.95129 * tfactors.T9 + 0.132972 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.42669 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.86658 * tfactors.T943i + (1.0/3.0) * 16.4592 * tfactors.T923i + + -1.95129 + (5.0/3.0) * 0.132972 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.42669 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.86658 * tfactors.T943i + (1.0/3.0) * 16.4592 * tfactors.T923i - + -1.95129 + (5.0/3.0) * 0.132972 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -16.2423 + -0.777841 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -16.2423 + -0.777841 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.777841 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.777841 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -25.2739 + -0.499888 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -25.2739 + -0.499888 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.499888 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.499888 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_He4_to_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na22_to_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + He4 --> Al26 - // Na22 + He4 --> Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.3797 + -50.0924 * tfactors.T913i + -0.390826 * tfactors.T913 + + -0.99531 * tfactors.T9 + 0.101354 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.3797 + -50.0924 * tfactors.T913i + -0.390826 * tfactors.T913 - + -0.99531 * tfactors.T9 + 0.101354 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * -0.390826 * tfactors.T923i + + -0.99531 + (5.0/3.0) * 0.101354 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * -0.390826 * tfactors.T923i - + -0.99531 + (5.0/3.0) * 0.101354 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> Mg24 - // Na23 + p --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 + + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.0594 + -3.28029 * tfactors.T9i + -0.360588 * tfactors.T913 - + 1.4187 * tfactors.T9 + -0.184061 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i + + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.28029 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.360588 * tfactors.T923i - + 1.4187 + (5.0/3.0) * -0.184061 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -5.02585 + -1.61219 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.61219 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 + + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9075 + -20.6428 * tfactors.T913i + 1.52954 * tfactors.T913 - + 2.7487 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i + + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.6428 * tfactors.T943i + (1.0/3.0) * 1.52954 * tfactors.T923i - + 2.7487 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_He4_to_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na23_to_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + He4 --> Al27 - // Na23 + He4 --> Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 44.7724 + -50.2042 * tfactors.T913i + -1.64239 * tfactors.T913 + + -1.59995 * tfactors.T9 + 0.184933 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 44.7724 + -50.2042 * tfactors.T913i + -1.64239 * tfactors.T913 - + -1.59995 * tfactors.T9 + 0.184933 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * -1.64239 * tfactors.T923i + + -1.59995 + (5.0/3.0) * 0.184933 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * -1.64239 * tfactors.T923i - + -1.59995 + (5.0/3.0) * 0.184933 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_n_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg23_to_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + n --> Mg24 - // Mg23 + n --> Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.00613 + 2.66964 * tfactors.T913 + + -0.448904 * tfactors.T9 + 0.0326505 * tfactors.T953; - // ths8r - ln_set_rate = 7.00613 + 2.66964 * tfactors.T913 - + -0.448904 * tfactors.T9 + 0.0326505 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.66964 * tfactors.T923i + + -0.448904 + (5.0/3.0) * 0.0326505 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.66964 * tfactors.T923i - + -0.448904 + (5.0/3.0) * 0.0326505 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_n_to_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg24_to_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + n --> Mg25 - // Mg24 + n --> Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 64.622 + 0.161296 * tfactors.T9i + -0.142939 * tfactors.T913i + -57.7499 * tfactors.T913 + + 7.01981 * tfactors.T9 + -0.582057 * tfactors.T953 + 12.8133 * tfactors.lnT9; - // ks03 - ln_set_rate = 64.622 + 0.161296 * tfactors.T9i + -0.142939 * tfactors.T913i + -57.7499 * tfactors.T913 - + 7.01981 * tfactors.T9 + -0.582057 * tfactors.T953 + 12.8133 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.161296 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.142939 * tfactors.T943i + (1.0/3.0) * -57.7499 * tfactors.T923i + + 7.01981 + (5.0/3.0) * -0.582057 * tfactors.T923 + 12.8133 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.161296 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.142939 * tfactors.T943i + (1.0/3.0) * -57.7499 * tfactors.T923i - + 7.01981 + (5.0/3.0) * -0.582057 * tfactors.T923 + 12.8133 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_p_to_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg24_to_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + p --> Al25 - // Mg24 + p --> Al25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 8.24021 + -2.48451 * tfactors.T9i + -1.57811 * tfactors.T913 + + 1.52232 * tfactors.T9 + -0.183001 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 8.24021 + -2.48451 * tfactors.T9i + -1.57811 * tfactors.T913 - + 1.52232 * tfactors.T9 + -0.183001 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.48451 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.57811 * tfactors.T923i + + 1.52232 + (5.0/3.0) * -0.183001 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.48451 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.57811 * tfactors.T923i - + 1.52232 + (5.0/3.0) * -0.183001 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.8966 + -22.0227 * tfactors.T913i + 0.361297 * tfactors.T913 + + 2.61292 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.8966 + -22.0227 * tfactors.T913i + 0.361297 * tfactors.T913 - + 2.61292 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -22.0227 * tfactors.T943i + (1.0/3.0) * 0.361297 * tfactors.T923i + + 2.61292 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -22.0227 * tfactors.T943i + (1.0/3.0) * 0.361297 * tfactors.T923i - + 2.61292 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> Si28 - // Mg24 + He4 --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // st08r + ln_set_rate = 8.03977 + -15.629 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = 8.03977 + -15.629 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.629 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // st08r + ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 + + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; - // st08r - ln_set_rate = -50.5494 + -12.8332 * tfactors.T9i + 21.3721 * tfactors.T913i + 37.7649 * tfactors.T913 - + -4.10635 * tfactors.T9 + 0.249618 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i + + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.8332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.3721 * tfactors.T943i + (1.0/3.0) * 37.7649 * tfactors.T923i - + -4.10635 + (5.0/3.0) * 0.249618 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_n_to_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg25_to_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 + n --> Mg26 - // Mg25 + n --> Mg26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 38.34 + -0.0457591 * tfactors.T9i + 9.392 * tfactors.T913i + -36.6784 * tfactors.T913 + + 3.09567 * tfactors.T9 + -0.223882 * tfactors.T953 + 12.3852 * tfactors.lnT9; - // ks03 - ln_set_rate = 38.34 + -0.0457591 * tfactors.T9i + 9.392 * tfactors.T913i + -36.6784 * tfactors.T913 - + 3.09567 * tfactors.T9 + -0.223882 * tfactors.T953 + 12.3852 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0457591 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.392 * tfactors.T943i + (1.0/3.0) * -36.6784 * tfactors.T923i + + 3.09567 + (5.0/3.0) * -0.223882 * tfactors.T923 + 12.3852 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0457591 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.392 * tfactors.T943i + (1.0/3.0) * -36.6784 * tfactors.T923i - + 3.09567 + (5.0/3.0) * -0.223882 * tfactors.T923 + 12.3852 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_p_to_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg25_to_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 + p --> Al26 - // Mg25 + p --> Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 4.21826 + -0.71983 * tfactors.T9i + -88.9297 * tfactors.T913 + + 302.948 * tfactors.T9 + -346.461 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 4.21826 + -0.71983 * tfactors.T9i + -88.9297 * tfactors.T913 - + 302.948 * tfactors.T9 + -346.461 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.71983 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -88.9297 * tfactors.T923i + + 302.948 + (5.0/3.0) * -346.461 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.71983 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -88.9297 * tfactors.T923i - + 302.948 + (5.0/3.0) * -346.461 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -37.1963 + -0.429366 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -37.1963 + -0.429366 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.429366 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.429366 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.22778 + -3.22353 * tfactors.T9i + 8.46334 * tfactors.T913 + + -0.907024 * tfactors.T9 + 0.0642981 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.22778 + -3.22353 * tfactors.T9i + 8.46334 * tfactors.T913 - + -0.907024 * tfactors.T9 + 0.0642981 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.22353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.46334 * tfactors.T923i + + -0.907024 + (5.0/3.0) * 0.0642981 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.22353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.46334 * tfactors.T923i - + -0.907024 + (5.0/3.0) * 0.0642981 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_He4_to_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg25_to_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 + He4 --> Si29 - // Mg25 + He4 --> Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.3715 + -53.41 * tfactors.T913i + -1.83266 * tfactors.T913 + + -0.573073 * tfactors.T9 + 0.0462678 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.3715 + -53.41 * tfactors.T913i + -1.83266 * tfactors.T913 - + -0.573073 * tfactors.T9 + 0.0462678 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -53.41 * tfactors.T943i + (1.0/3.0) * -1.83266 * tfactors.T923i + + -0.573073 + (5.0/3.0) * 0.0462678 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -53.41 * tfactors.T943i + (1.0/3.0) * -1.83266 * tfactors.T923i - + -0.573073 + (5.0/3.0) * 0.0462678 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg26_p_to_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg26_to_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg26 + p --> Al27 - // Mg26 + p --> Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -27.2168 + -0.888689 * tfactors.T9i + 35.6312 * tfactors.T913 + + -5.27265 * tfactors.T9 + 0.392932 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -27.2168 + -0.888689 * tfactors.T9i + 35.6312 * tfactors.T913 - + -5.27265 * tfactors.T9 + 0.392932 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.888689 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.6312 * tfactors.T923i + + -5.27265 + (5.0/3.0) * 0.392932 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.888689 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.6312 * tfactors.T923i - + -5.27265 + (5.0/3.0) * 0.392932 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -84.493 + -0.469464 * tfactors.T9i + 251.281 * tfactors.T913 + + -730.009 * tfactors.T9 + -224.016 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -84.493 + -0.469464 * tfactors.T9i + 251.281 * tfactors.T913 - + -730.009 * tfactors.T9 + -224.016 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.469464 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 251.281 * tfactors.T923i + + -730.009 + (5.0/3.0) * -224.016 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.469464 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 251.281 * tfactors.T923i - + -730.009 + (5.0/3.0) * -224.016 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.26056 + -3.35921 * tfactors.T9i + 6.78105 * tfactors.T913 + + -1.25771 * tfactors.T9 + 0.140754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.26056 + -3.35921 * tfactors.T9i + 6.78105 * tfactors.T913 - + -1.25771 * tfactors.T9 + 0.140754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.35921 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.78105 * tfactors.T923i + + -1.25771 + (5.0/3.0) * 0.140754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.35921 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.78105 * tfactors.T923i - + -1.25771 + (5.0/3.0) * 0.140754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg26_He4_to_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg26_to_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg26 + He4 --> Si30 - // Mg26 + He4 --> Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 1.32941 + -18.7164 * tfactors.T9i + -1.87411 * tfactors.T913 + + 3.41299 * tfactors.T9 + -0.43226 * tfactors.T953 + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 1.32941 + -18.7164 * tfactors.T9i + -1.87411 * tfactors.T913 - + 3.41299 * tfactors.T9 + -0.43226 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.7164 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.87411 * tfactors.T923i + + 3.41299 + (5.0/3.0) * -0.43226 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.7164 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.87411 * tfactors.T923i - + 3.41299 + (5.0/3.0) * -0.43226 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 45.8787 + -53.7518 * tfactors.T913i + -4.8647 * tfactors.T913 + + -1.51467 * tfactors.T9 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 45.8787 + -53.7518 * tfactors.T913i + -4.8647 * tfactors.T913 - + -1.51467 * tfactors.T9 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -53.7518 * tfactors.T943i + (1.0/3.0) * -4.8647 * tfactors.T923i + + -1.51467 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -53.7518 * tfactors.T943i + (1.0/3.0) * -4.8647 * tfactors.T923i - + -1.51467 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al25_n_to_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Al25_to_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al25 + n --> Al26 - // Al25 + n --> Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.92587 + 1.17141 * tfactors.T913 + + -0.162515 * tfactors.T9 + 0.0126275 * tfactors.T953; - // ths8r - ln_set_rate = 7.92587 + 1.17141 * tfactors.T913 - + -0.162515 * tfactors.T9 + 0.0126275 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.17141 * tfactors.T923i + + -0.162515 + (5.0/3.0) * 0.0126275 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.17141 * tfactors.T923i - + -0.162515 + (5.0/3.0) * 0.0126275 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al25_He4_to_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al25_to_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al25 + He4 --> P29 - // Al25 + He4 --> P29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.9099 + -56.3424 * tfactors.T913i + 0.542998 * tfactors.T913 + + -0.721716 * tfactors.T9 + 0.0469712 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.9099 + -56.3424 * tfactors.T913i + 0.542998 * tfactors.T913 - + -0.721716 * tfactors.T9 + 0.0469712 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -56.3424 * tfactors.T943i + (1.0/3.0) * 0.542998 * tfactors.T923i + + -0.721716 + (5.0/3.0) * 0.0469712 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -56.3424 * tfactors.T943i + (1.0/3.0) * 0.542998 * tfactors.T923i - + -0.721716 + (5.0/3.0) * 0.0469712 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_n_to_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Al26_to_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 + n --> Al27 - // Al26 + n --> Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 14.7625 + 0.00350938 * tfactors.T9i + -0.171158 * tfactors.T913i + -1.77283 * tfactors.T913 + + 0.206192 * tfactors.T9 + -0.0191705 * tfactors.T953 + 0.139609 * tfactors.lnT9; - // ks03 - ln_set_rate = 14.7625 + 0.00350938 * tfactors.T9i + -0.171158 * tfactors.T913i + -1.77283 * tfactors.T913 - + 0.206192 * tfactors.T9 + -0.0191705 * tfactors.T953 + 0.139609 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.00350938 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.171158 * tfactors.T943i + (1.0/3.0) * -1.77283 * tfactors.T923i + + 0.206192 + (5.0/3.0) * -0.0191705 * tfactors.T923 + 0.139609 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.00350938 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.171158 * tfactors.T943i + (1.0/3.0) * -1.77283 * tfactors.T923i - + 0.206192 + (5.0/3.0) * -0.0191705 * tfactors.T923 + 0.139609 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_He4_to_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al26_to_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 + He4 --> P30 - // Al26 + He4 --> P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 42.9778 + -56.4422 * tfactors.T913i + -2.44848 * tfactors.T913 + + -1.17578 * tfactors.T9 + 0.150757 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 42.9778 + -56.4422 * tfactors.T913i + -2.44848 * tfactors.T913 - + -1.17578 * tfactors.T9 + 0.150757 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -56.4422 * tfactors.T943i + (1.0/3.0) * -2.44848 * tfactors.T923i + + -1.17578 + (5.0/3.0) * 0.150757 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -56.4422 * tfactors.T943i + (1.0/3.0) * -2.44848 * tfactors.T923i - + -1.17578 + (5.0/3.0) * 0.150757 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> Si28 - // Al27 + p --> Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 + + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.6664 + -1.90396 * tfactors.T9i + 23.8634 * tfactors.T913 - + -3.70135 * tfactors.T9 + 0.28964 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i + + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.90396 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 23.8634 * tfactors.T923i - + -3.70135 + (5.0/3.0) * 0.28964 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 + + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 86.0234 + -0.387313 * tfactors.T9i + -26.8327 * tfactors.T913i + -116.137 * tfactors.T913 - + 0.00950567 * tfactors.T9 + 0.00999755 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i + + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.387313 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.8327 * tfactors.T943i + (1.0/3.0) * -116.137 * tfactors.T923i - + 0.00950567 + (5.0/3.0) * 0.00999755 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.1065 + -23.2205 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.2205 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_He4_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al27_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + He4 --> P31 - // Al27 + He4 --> P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.2333 + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 + + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.2333 + -56.5351 * tfactors.T913i + -0.896208 * tfactors.T913 - + -1.72024 * tfactors.T9 + 0.185409 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i + + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * -0.896208 * tfactors.T923i - + -1.72024 + (5.0/3.0) * 0.185409 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_n_to_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Si28_to_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + n --> Si29 - // Si28 + n --> Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02r + ln_set_rate = 6.9158 + -0.38 * tfactors.T9i + 7.68863 * tfactors.T913 + + -1.7991 * tfactors.T9 + -1.5 * tfactors.lnT9; - // ka02r - ln_set_rate = 6.9158 + -0.38 * tfactors.T9i + 7.68863 * tfactors.T913 - + -1.7991 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.38 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.68863 * tfactors.T923i + + -1.7991 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.38 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.68863 * tfactors.T923i - + -1.7991 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02 + ln_set_rate = 8.77553; + amrex::ignore_unused(tfactors); - // ka02 - ln_set_rate = 8.77553; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_p_to_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si28_to_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + p --> P29 - // Si28 + p --> P29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 16.1779 + -23.8173 * tfactors.T913i + 7.08203 * tfactors.T913 + + -1.44753 * tfactors.T9 + 0.0804296 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 16.1779 + -23.8173 * tfactors.T913i + 7.08203 * tfactors.T913 - + -1.44753 * tfactors.T9 + 0.0804296 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.8173 * tfactors.T943i + (1.0/3.0) * 7.08203 * tfactors.T923i + + -1.44753 + (5.0/3.0) * 0.0804296 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.8173 * tfactors.T943i + (1.0/3.0) * 7.08203 * tfactors.T923i - + -1.44753 + (5.0/3.0) * 0.0804296 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.73975 + -4.14232 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.73975 + -4.14232 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.14232 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.14232 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> S32 - // Si28 + He4 --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 + + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9212 + -59.4896 * tfactors.T913i + 4.47205 * tfactors.T913 - + -4.78989 * tfactors.T9 + 0.557201 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i + + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.4896 * tfactors.T943i + (1.0/3.0) * 4.47205 * tfactors.T923i - + -4.78989 + (5.0/3.0) * 0.557201 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_n_to_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Si29_to_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 + n --> Si30 - // Si29 + n --> Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02r + ln_set_rate = 9.60115 + -0.179366 * tfactors.T9i + 5.50678 * tfactors.T913 + + -2.85656 * tfactors.T9 + -1.5 * tfactors.lnT9; - // ka02r - ln_set_rate = 9.60115 + -0.179366 * tfactors.T9i + 5.50678 * tfactors.T913 - + -2.85656 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.179366 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.50678 * tfactors.T923i + + -2.85656 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.179366 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.50678 * tfactors.T923i - + -2.85656 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02n + ln_set_rate = 11.8023 + 0.650904 * tfactors.T913; - // ka02n - ln_set_rate = 11.8023 + 0.650904 * tfactors.T913; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.650904 * tfactors.T923i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.650904 * tfactors.T923i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_p_to_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si29_to_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 + p --> P30 - // Si29 + p --> P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.24791 + -3.33929 * tfactors.T9i + 14.0921 * tfactors.T913 + + -3.92096 * tfactors.T9 + 0.447706 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.24791 + -3.33929 * tfactors.T9i + 14.0921 * tfactors.T913 - + -3.92096 * tfactors.T9 + 0.447706 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.33929 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 14.0921 * tfactors.T923i + + -3.92096 + (5.0/3.0) * 0.447706 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.33929 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 14.0921 * tfactors.T923i - + -3.92096 + (5.0/3.0) * 0.447706 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -13.4701 + -1.25026 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.4701 + -1.25026 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.25026 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.25026 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 16.5182 + -23.9101 * tfactors.T913i + 10.7796 * tfactors.T913 + + -3.04181 * tfactors.T9 + 0.274565 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 16.5182 + -23.9101 * tfactors.T913i + 10.7796 * tfactors.T913 - + -3.04181 * tfactors.T9 + 0.274565 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.9101 * tfactors.T943i + (1.0/3.0) * 10.7796 * tfactors.T923i + + -3.04181 + (5.0/3.0) * 0.274565 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.9101 * tfactors.T943i + (1.0/3.0) * 10.7796 * tfactors.T923i - + -3.04181 + (5.0/3.0) * 0.274565 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_He4_to_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si29_to_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 + He4 --> S33 - // Si29 + He4 --> S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 49.5657 + -59.5755 * tfactors.T913i + 1.06274 * tfactors.T913 + + -3.07529 * tfactors.T9 + 0.372011 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 49.5657 + -59.5755 * tfactors.T913i + 1.06274 * tfactors.T913 - + -3.07529 * tfactors.T9 + 0.372011 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.5755 * tfactors.T943i + (1.0/3.0) * 1.06274 * tfactors.T923i + + -3.07529 + (5.0/3.0) * 0.372011 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.5755 * tfactors.T943i + (1.0/3.0) * 1.06274 * tfactors.T923i - + -3.07529 + (5.0/3.0) * 0.372011 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_n_to_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Si30_to_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 + n --> Si31 - // Si30 + n --> Si31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = -9.19438 + 0.0685821 * tfactors.T9i + -12.3502 * tfactors.T913i + 34.6486 * tfactors.T913 + + -1.89409 * tfactors.T9 + 0.0781979 * tfactors.T953 + -14.4601 * tfactors.lnT9; - // ks03 - ln_set_rate = -9.19438 + 0.0685821 * tfactors.T9i + -12.3502 * tfactors.T913i + 34.6486 * tfactors.T913 - + -1.89409 * tfactors.T9 + 0.0781979 * tfactors.T953 + -14.4601 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0685821 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.3502 * tfactors.T943i + (1.0/3.0) * 34.6486 * tfactors.T923i + + -1.89409 + (5.0/3.0) * 0.0781979 * tfactors.T923 + -14.4601 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0685821 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.3502 * tfactors.T943i + (1.0/3.0) * 34.6486 * tfactors.T923i - + -1.89409 + (5.0/3.0) * 0.0781979 * tfactors.T923 + -14.4601 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_p_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si30_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 + p --> P31 - // Si30 + p --> P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de20r + ln_set_rate = 12.3695 + -6.64105 * tfactors.T9i + + -1.1191 * tfactors.lnT9; - // de20r - ln_set_rate = 12.3695 + -6.64105 * tfactors.T9i - + -1.1191 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.64105 * tfactors.T9i * tfactors.T9i + + -1.1191 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.64105 * tfactors.T9i * tfactors.T9i - + -1.1191 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = 8.79766 + -5.18231 * tfactors.T9i + + 1.2883 * tfactors.lnT9; - // de20r - ln_set_rate = 8.79766 + -5.18231 * tfactors.T9i - + 1.2883 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.18231 * tfactors.T9i * tfactors.T9i + + 1.2883 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.18231 * tfactors.T9i * tfactors.T9i - + 1.2883 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = -334.266 + -1.13327 * tfactors.T9i + + -78.547 * tfactors.lnT9; - // de20r - ln_set_rate = -334.266 + -1.13327 * tfactors.T9i - + -78.547 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.13327 * tfactors.T9i * tfactors.T9i + + -78.547 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.13327 * tfactors.T9i * tfactors.T9i - + -78.547 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = -4.24208 + -1.25174 * tfactors.T9i + + 4.99034 * tfactors.lnT9; - // de20r - ln_set_rate = -4.24208 + -1.25174 * tfactors.T9i - + 4.99034 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.25174 * tfactors.T9i * tfactors.T9i + + 4.99034 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.25174 * tfactors.T9i * tfactors.T9i - + 4.99034 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = -18.9198 + -0.945261 * tfactors.T9i + + 1.30331 * tfactors.lnT9; - // de20r - ln_set_rate = -18.9198 + -0.945261 * tfactors.T9i - + 1.30331 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.945261 * tfactors.T9i * tfactors.T9i + + 1.30331 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.945261 * tfactors.T9i * tfactors.T9i - + 1.30331 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = -1138.34 + -95.8769 * tfactors.T9i + + -896.758 * tfactors.lnT9; - // de20r - ln_set_rate = -1138.34 + -95.8769 * tfactors.T9i - + -896.758 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 95.8769 * tfactors.T9i * tfactors.T9i + + -896.758 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 95.8769 * tfactors.T9i * tfactors.T9i - + -896.758 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = 9.96544 + -5.58963 * tfactors.T9i + + -1.57082 * tfactors.lnT9; - // de20r - ln_set_rate = 9.96544 + -5.58963 * tfactors.T9i - + -1.57082 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.58963 * tfactors.T9i * tfactors.T9i + + -1.57082 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.58963 * tfactors.T9i * tfactors.T9i - + -1.57082 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de20r + ln_set_rate = -34.8594 + -0.592934 * tfactors.T9i + + -1.62839 * tfactors.lnT9; - // de20r - ln_set_rate = -34.8594 + -0.592934 * tfactors.T9i - + -1.62839 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.592934 * tfactors.T9i * tfactors.T9i + + -1.62839 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.592934 * tfactors.T9i * tfactors.T9i - + -1.62839 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_He4_to_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si30_to_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 + He4 --> S34 - // Si30 + He4 --> S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.5008 + -59.6559 * tfactors.T913i + 3.70141 * tfactors.T913 + + -3.12537 * tfactors.T9 + 0.307626 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.5008 + -59.6559 * tfactors.T913i + 3.70141 * tfactors.T913 - + -3.12537 * tfactors.T9 + 0.307626 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -59.6559 * tfactors.T943i + (1.0/3.0) * 3.70141 * tfactors.T923i + + -3.12537 + (5.0/3.0) * 0.307626 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -59.6559 * tfactors.T943i + (1.0/3.0) * 3.70141 * tfactors.T923i - + -3.12537 + (5.0/3.0) * 0.307626 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si31_n_to_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Si31_to_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si31 + n --> Si32 - // Si31 + n --> Si32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 11.9451 + -0.0144696 * tfactors.T9i + 0.154735 * tfactors.T913i + 0.304696 * tfactors.T913 + + 0.0236238 * tfactors.T9 + -0.00396359 * tfactors.T953 + -0.432171 * tfactors.lnT9; - // rath - ln_set_rate = 11.9451 + -0.0144696 * tfactors.T9i + 0.154735 * tfactors.T913i + 0.304696 * tfactors.T913 - + 0.0236238 * tfactors.T9 + -0.00396359 * tfactors.T953 + -0.432171 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0144696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.154735 * tfactors.T943i + (1.0/3.0) * 0.304696 * tfactors.T923i + + 0.0236238 + (5.0/3.0) * -0.00396359 * tfactors.T923 + -0.432171 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0144696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.154735 * tfactors.T943i + (1.0/3.0) * 0.304696 * tfactors.T923i - + 0.0236238 + (5.0/3.0) * -0.00396359 * tfactors.T923 + -0.432171 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si31_p_to_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si31_to_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si31 + p --> P32 - // Si31 + p --> P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 100.968 + -3.38247 * tfactors.T9i + 123.4 * tfactors.T913i + -231.734 * tfactors.T913 + + 14.2724 * tfactors.T9 + -0.867645 * tfactors.T953 + 108.469 * tfactors.lnT9; - // rath - ln_set_rate = 100.968 + -3.38247 * tfactors.T9i + 123.4 * tfactors.T913i + -231.734 * tfactors.T913 - + 14.2724 * tfactors.T9 + -0.867645 * tfactors.T953 + 108.469 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.38247 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.4 * tfactors.T943i + (1.0/3.0) * -231.734 * tfactors.T923i + + 14.2724 + (5.0/3.0) * -0.867645 * tfactors.T923 + 108.469 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.38247 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 123.4 * tfactors.T943i + (1.0/3.0) * -231.734 * tfactors.T923i - + 14.2724 + (5.0/3.0) * -0.867645 * tfactors.T923 + 108.469 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si31_He4_to_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si31_to_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si31 + He4 --> S35 - // Si31 + He4 --> S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -73.2581 + -1.94072 * tfactors.T9i + -98.5176 * tfactors.T913i + 171.207 * tfactors.T913 + + -14.3839 * tfactors.T9 + 0.960708 * tfactors.T953 + -61.9936 * tfactors.lnT9; - // rath - ln_set_rate = -73.2581 + -1.94072 * tfactors.T9i + -98.5176 * tfactors.T913i + 171.207 * tfactors.T913 - + -14.3839 * tfactors.T9 + 0.960708 * tfactors.T953 + -61.9936 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.94072 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.5176 * tfactors.T943i + (1.0/3.0) * 171.207 * tfactors.T923i + + -14.3839 + (5.0/3.0) * 0.960708 * tfactors.T923 + -61.9936 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.94072 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.5176 * tfactors.T943i + (1.0/3.0) * 171.207 * tfactors.T923i - + -14.3839 + (5.0/3.0) * 0.960708 * tfactors.T923 + -61.9936 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si32_p_to_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si32_to_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si32 + p --> P33 - // Si32 + p --> P33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 178.753 + -3.87095 * tfactors.T9i + 174.94 * tfactors.T913i + -365.37 * tfactors.T913 + + 23.1636 * tfactors.T9 + -1.3429 * tfactors.T953 + 160.075 * tfactors.lnT9; - // rath - ln_set_rate = 178.753 + -3.87095 * tfactors.T9i + 174.94 * tfactors.T913i + -365.37 * tfactors.T913 - + 23.1636 * tfactors.T9 + -1.3429 * tfactors.T953 + 160.075 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.87095 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 174.94 * tfactors.T943i + (1.0/3.0) * -365.37 * tfactors.T923i + + 23.1636 + (5.0/3.0) * -1.3429 * tfactors.T923 + 160.075 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.87095 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 174.94 * tfactors.T943i + (1.0/3.0) * -365.37 * tfactors.T923i - + 23.1636 + (5.0/3.0) * -1.3429 * tfactors.T923 + 160.075 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si32_He4_to_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si32_to_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si32 + He4 --> S36 - // Si32 + He4 --> S36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -152.93 + -0.462221 * tfactors.T9i + -232.306 * tfactors.T913i + 393.438 * tfactors.T913 + + -25.2071 * tfactors.T9 + 1.4457 * tfactors.T953 + -171.471 * tfactors.lnT9; - // rath - ln_set_rate = -152.93 + -0.462221 * tfactors.T9i + -232.306 * tfactors.T913i + 393.438 * tfactors.T913 - + -25.2071 * tfactors.T9 + 1.4457 * tfactors.T953 + -171.471 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.462221 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -232.306 * tfactors.T943i + (1.0/3.0) * 393.438 * tfactors.T923i + + -25.2071 + (5.0/3.0) * 1.4457 * tfactors.T923 + -171.471 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.462221 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -232.306 * tfactors.T943i + (1.0/3.0) * 393.438 * tfactors.T923i - + -25.2071 + (5.0/3.0) * 1.4457 * tfactors.T923 + -171.471 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P29_n_to_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P29_to_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P29 + n --> P30 - // P29 + n --> P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.78841 + 0.15555 * tfactors.T913 + + 0.155359 * tfactors.T9 + -0.0208019 * tfactors.T953; - // ths8r - ln_set_rate = 8.78841 + 0.15555 * tfactors.T913 - + 0.155359 * tfactors.T9 + -0.0208019 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.15555 * tfactors.T923i + + 0.155359 + (5.0/3.0) * -0.0208019 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.15555 * tfactors.T923i - + 0.155359 + (5.0/3.0) * -0.0208019 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P29_He4_to_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P29_to_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P29 + He4 --> Cl33 - // P29 + He4 --> Cl33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 41.9979 + -62.3802 * tfactors.T913i + 0.593062 * tfactors.T913 + + -1.14226 * tfactors.T9 + 0.0934776 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 41.9979 + -62.3802 * tfactors.T913i + 0.593062 * tfactors.T913 - + -1.14226 * tfactors.T9 + 0.0934776 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -62.3802 * tfactors.T943i + (1.0/3.0) * 0.593062 * tfactors.T923i + + -1.14226 + (5.0/3.0) * 0.0934776 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -62.3802 * tfactors.T943i + (1.0/3.0) * 0.593062 * tfactors.T923i - + -1.14226 + (5.0/3.0) * 0.0934776 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_n_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P30_to_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 + n --> P31 - // P30 + n --> P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.8187 + 0.909911 * tfactors.T913 + + -0.162367 * tfactors.T9 + 0.00668293 * tfactors.T953; - // ths8r - ln_set_rate = 12.8187 + 0.909911 * tfactors.T913 - + -0.162367 * tfactors.T9 + 0.00668293 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.909911 * tfactors.T923i + + -0.162367 + (5.0/3.0) * 0.00668293 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.909911 * tfactors.T923i - + -0.162367 + (5.0/3.0) * 0.00668293 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_He4_to_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P30_to_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 + He4 --> Cl34 - // P30 + He4 --> Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 45.3321 + -62.4643 * tfactors.T913i + -3.19028 * tfactors.T913 + + -0.832633 * tfactors.T9 + 0.0987525 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 45.3321 + -62.4643 * tfactors.T913i + -3.19028 * tfactors.T913 - + -0.832633 * tfactors.T9 + 0.0987525 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -62.4643 * tfactors.T943i + (1.0/3.0) * -3.19028 * tfactors.T923i + + -0.832633 + (5.0/3.0) * 0.0987525 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -62.4643 * tfactors.T943i + (1.0/3.0) * -3.19028 * tfactors.T923i - + -0.832633 + (5.0/3.0) * 0.0987525 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_n_to_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P31_to_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + n --> P32 - // P31 + n --> P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ka02r + ln_set_rate = 9.48567 + -0.246803 * tfactors.T9i + 2.13185 * tfactors.T913 + + -1.5 * tfactors.lnT9; - // ka02r - ln_set_rate = 9.48567 + -0.246803 * tfactors.T9i + 2.13185 * tfactors.T913 - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.246803 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.13185 * tfactors.T923i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.246803 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.13185 * tfactors.T923i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ka02n + ln_set_rate = 12.5332 + 0.327031 * tfactors.T913 + + 1.0 * tfactors.lnT9; - // ka02n - ln_set_rate = 12.5332 + 0.327031 * tfactors.T913 - + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.327031 * tfactors.T923i + + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.327031 * tfactors.T923i - + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> S32 - // P31 + p --> S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 + + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.821556 + -3.77704 * tfactors.T9i + 8.09341 * tfactors.T913 - + -0.615971 * tfactors.T9 + 0.031159 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i + + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.77704 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.09341 * tfactors.T923i - + -0.615971 + (5.0/3.0) * 0.031159 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -2.66839 + -2.25958 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.25958 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 + + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.2596 + -25.3278 * tfactors.T913i + 6.4931 * tfactors.T913 - + -9.27513 * tfactors.T9 + -0.610439 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i + + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -25.3278 * tfactors.T943i + (1.0/3.0) * 6.4931 * tfactors.T923i - + -9.27513 + (5.0/3.0) * -0.610439 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_He4_to_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P31_to_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + He4 --> Cl35 - // P31 + He4 --> Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 50.451 + -62.5433 * tfactors.T913i + -2.95026 * tfactors.T913 + + -0.89652 * tfactors.T9 + 0.0774126 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 50.451 + -62.5433 * tfactors.T913i + -2.95026 * tfactors.T913 - + -0.89652 * tfactors.T9 + 0.0774126 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -62.5433 * tfactors.T943i + (1.0/3.0) * -2.95026 * tfactors.T923i + + -0.89652 + (5.0/3.0) * 0.0774126 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -62.5433 * tfactors.T943i + (1.0/3.0) * -2.95026 * tfactors.T923i - + -0.89652 + (5.0/3.0) * 0.0774126 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_n_to_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P32_to_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 + n --> P33 - // P32 + n --> P33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 10.8477 + 0.0572362 * tfactors.T9i + -6.14814 * tfactors.T913i + 9.5582 * tfactors.T913 + + -0.244744 * tfactors.T9 + -0.012887 * tfactors.T953 + -5.42926 * tfactors.lnT9; - // rath - ln_set_rate = 10.8477 + 0.0572362 * tfactors.T9i + -6.14814 * tfactors.T913i + 9.5582 * tfactors.T913 - + -0.244744 * tfactors.T9 + -0.012887 * tfactors.T953 + -5.42926 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0572362 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.14814 * tfactors.T943i + (1.0/3.0) * 9.5582 * tfactors.T923i + + -0.244744 + (5.0/3.0) * -0.012887 * tfactors.T923 + -5.42926 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0572362 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.14814 * tfactors.T943i + (1.0/3.0) * 9.5582 * tfactors.T923i - + -0.244744 + (5.0/3.0) * -0.012887 * tfactors.T923 + -5.42926 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_p_to_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P32_to_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 + p --> S33 - // P32 + p --> S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 107.354 + -3.79249 * tfactors.T9i + 147.624 * tfactors.T913i + -261.318 * tfactors.T913 + + 14.2732 * tfactors.T9 + -0.776243 * tfactors.T953 + 126.747 * tfactors.lnT9; - // rath - ln_set_rate = 107.354 + -3.79249 * tfactors.T9i + 147.624 * tfactors.T913i + -261.318 * tfactors.T913 - + 14.2732 * tfactors.T9 + -0.776243 * tfactors.T953 + 126.747 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.79249 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 147.624 * tfactors.T943i + (1.0/3.0) * -261.318 * tfactors.T923i + + 14.2732 + (5.0/3.0) * -0.776243 * tfactors.T923 + 126.747 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.79249 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 147.624 * tfactors.T943i + (1.0/3.0) * -261.318 * tfactors.T923i - + 14.2732 + (5.0/3.0) * -0.776243 * tfactors.T923 + 126.747 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_He4_to_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P32_to_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 + He4 --> Cl36 - // P32 + He4 --> Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -119.479 + -1.48992 * tfactors.T9i + -158.272 * tfactors.T913i + 281.836 * tfactors.T913 + + -20.652 * tfactors.T9 + 1.28543 * tfactors.T953 + -112.725 * tfactors.lnT9; - // rath - ln_set_rate = -119.479 + -1.48992 * tfactors.T9i + -158.272 * tfactors.T913i + 281.836 * tfactors.T913 - + -20.652 * tfactors.T9 + 1.28543 * tfactors.T953 + -112.725 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.48992 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -158.272 * tfactors.T943i + (1.0/3.0) * 281.836 * tfactors.T923i + + -20.652 + (5.0/3.0) * 1.28543 * tfactors.T923 + -112.725 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.48992 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -158.272 * tfactors.T943i + (1.0/3.0) * 281.836 * tfactors.T923i - + -20.652 + (5.0/3.0) * 1.28543 * tfactors.T923 + -112.725 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P33_p_to_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P33_to_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P33 + p --> S34 - // P33 + p --> S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 173.854 + -3.84298 * tfactors.T9i + 161.691 * tfactors.T913i + -350.015 * tfactors.T913 + + 24.3597 * tfactors.T9 + -1.56396 * tfactors.T953 + 149.963 * tfactors.lnT9; - // rath - ln_set_rate = 173.854 + -3.84298 * tfactors.T9i + 161.691 * tfactors.T913i + -350.015 * tfactors.T913 - + 24.3597 * tfactors.T9 + -1.56396 * tfactors.T953 + 149.963 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.84298 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 161.691 * tfactors.T943i + (1.0/3.0) * -350.015 * tfactors.T923i + + 24.3597 + (5.0/3.0) * -1.56396 * tfactors.T923 + 149.963 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.84298 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 161.691 * tfactors.T943i + (1.0/3.0) * -350.015 * tfactors.T923i - + 24.3597 + (5.0/3.0) * -1.56396 * tfactors.T923 + 149.963 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P33_He4_to_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P33_to_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P33 + He4 --> Cl37 - // P33 + He4 --> Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 50.9267 + -3.38505 * tfactors.T9i + 21.2001 * tfactors.T913i + -84.0086 * tfactors.T913 + + 1.39426 * tfactors.T9 + 0.0896178 * tfactors.T953 + 47.8178 * tfactors.lnT9; - // rath - ln_set_rate = 50.9267 + -3.38505 * tfactors.T9i + 21.2001 * tfactors.T913i + -84.0086 * tfactors.T913 - + 1.39426 * tfactors.T9 + 0.0896178 * tfactors.T953 + 47.8178 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.38505 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.2001 * tfactors.T943i + (1.0/3.0) * -84.0086 * tfactors.T923i + + 1.39426 + (5.0/3.0) * 0.0896178 * tfactors.T923 + 47.8178 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.38505 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.2001 * tfactors.T943i + (1.0/3.0) * -84.0086 * tfactors.T923i - + 1.39426 + (5.0/3.0) * 0.0896178 * tfactors.T923 + 47.8178 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_n_to_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S32_to_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + n --> S33 - // S32 + n --> S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 12.4466 + 0.198828 * tfactors.T9i + -15.0178 * tfactors.T913i + 16.3567 * tfactors.T913 + + -0.436839 * tfactors.T9 + -0.00574462 * tfactors.T953 + -9.78034 * tfactors.lnT9; - // ks03 - ln_set_rate = 12.4466 + 0.198828 * tfactors.T9i + -15.0178 * tfactors.T913i + 16.3567 * tfactors.T913 - + -0.436839 * tfactors.T9 + -0.00574462 * tfactors.T953 + -9.78034 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.198828 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.0178 * tfactors.T943i + (1.0/3.0) * 16.3567 * tfactors.T923i + + -0.436839 + (5.0/3.0) * -0.00574462 * tfactors.T923 + -9.78034 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.198828 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.0178 * tfactors.T943i + (1.0/3.0) * 16.3567 * tfactors.T923i - + -0.436839 + (5.0/3.0) * -0.00574462 * tfactors.T923 + -9.78034 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_p_to_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S32_to_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + p --> Cl33 - // S32 + p --> Cl33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 52.47 + -29.7741 * tfactors.T913i + -87.4473 * tfactors.T913 + + 182.189 * tfactors.T9 + -128.625 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 52.47 + -29.7741 * tfactors.T913i + -87.4473 * tfactors.T913 - + 182.189 * tfactors.T9 + -128.625 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -29.7741 * tfactors.T943i + (1.0/3.0) * -87.4473 * tfactors.T923i + + 182.189 + (5.0/3.0) * -128.625 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -29.7741 * tfactors.T943i + (1.0/3.0) * -87.4473 * tfactors.T923i - + 182.189 + (5.0/3.0) * -128.625 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 69.3346 + -3.00371 * tfactors.T9i + -33.7204 * tfactors.T913i + -32.7355 * tfactors.T913 + + 3.92526 * tfactors.T9 + -0.250479 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 69.3346 + -3.00371 * tfactors.T9i + -33.7204 * tfactors.T913i + -32.7355 * tfactors.T913 - + 3.92526 * tfactors.T9 + -0.250479 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.00371 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.7204 * tfactors.T943i + (1.0/3.0) * -32.7355 * tfactors.T923i + + 3.92526 + (5.0/3.0) * -0.250479 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.00371 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -33.7204 * tfactors.T943i + (1.0/3.0) * -32.7355 * tfactors.T923i - + 3.92526 + (5.0/3.0) * -0.250479 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -27.2382 + -0.874107 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -27.2382 + -0.874107 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.874107 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.874107 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> Ar36 - // S32 + He4 --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 + + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 48.901 + -65.3709 * tfactors.T913i + 5.68294 * tfactors.T913 - + -5.00388 * tfactors.T9 + 0.571407 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i + + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.3709 * tfactors.T943i + (1.0/3.0) * 5.68294 * tfactors.T923i - + -5.00388 + (5.0/3.0) * 0.571407 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_n_to_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S33_to_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + n --> S34 - // S33 + n --> S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = -4.17932 + 0.24641 * tfactors.T9i + -23.1351 * tfactors.T913i + 43.3623 * tfactors.T913 + + -2.74733 * tfactors.T9 + 0.159045 * tfactors.T953 + -19.6332 * tfactors.lnT9; - // ks03 - ln_set_rate = -4.17932 + 0.24641 * tfactors.T9i + -23.1351 * tfactors.T913i + 43.3623 * tfactors.T913 - + -2.74733 * tfactors.T9 + 0.159045 * tfactors.T953 + -19.6332 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.24641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.1351 * tfactors.T943i + (1.0/3.0) * 43.3623 * tfactors.T923i + + -2.74733 + (5.0/3.0) * 0.159045 * tfactors.T923 + -19.6332 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.24641 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.1351 * tfactors.T943i + (1.0/3.0) * 43.3623 * tfactors.T923i - + -2.74733 + (5.0/3.0) * 0.159045 * tfactors.T923 + -19.6332 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_p_to_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S33_to_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + p --> Cl34 - // S33 + p --> Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.4908 + -26.777 * tfactors.T913i + -5.96882 * tfactors.T913 + + -1.0706 * tfactors.T9 + 0.19692 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.4908 + -26.777 * tfactors.T913i + -5.96882 * tfactors.T913 - + -1.0706 * tfactors.T9 + 0.19692 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.777 * tfactors.T943i + (1.0/3.0) * -5.96882 * tfactors.T923i + + -1.0706 + (5.0/3.0) * 0.19692 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.777 * tfactors.T943i + (1.0/3.0) * -5.96882 * tfactors.T923i - + -1.0706 + (5.0/3.0) * 0.19692 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_He4_to_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S33_to_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + He4 --> Ar37 - // S33 + He4 --> Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 49.9315 + -65.4446 * tfactors.T913i + 3.59607 * tfactors.T913 + + -3.40501 * tfactors.T9 + 0.363961 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 49.9315 + -65.4446 * tfactors.T913i + 3.59607 * tfactors.T913 - + -3.40501 * tfactors.T9 + 0.363961 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.4446 * tfactors.T943i + (1.0/3.0) * 3.59607 * tfactors.T923i + + -3.40501 + (5.0/3.0) * 0.363961 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.4446 * tfactors.T943i + (1.0/3.0) * 3.59607 * tfactors.T923i - + -3.40501 + (5.0/3.0) * 0.363961 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_n_to_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S34_to_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 + n --> S35 - // S34 + n --> S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 41.4131 + -0.229262 * tfactors.T9i + 25.2182 * tfactors.T913i + -59.2704 * tfactors.T913 + + 4.22256 * tfactors.T9 + -0.274247 * tfactors.T953 + 24.532 * tfactors.lnT9; - // ks03 - ln_set_rate = 41.4131 + -0.229262 * tfactors.T9i + 25.2182 * tfactors.T913i + -59.2704 * tfactors.T913 - + 4.22256 * tfactors.T9 + -0.274247 * tfactors.T953 + 24.532 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.229262 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 25.2182 * tfactors.T943i + (1.0/3.0) * -59.2704 * tfactors.T923i + + 4.22256 + (5.0/3.0) * -0.274247 * tfactors.T923 + 24.532 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.229262 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 25.2182 * tfactors.T943i + (1.0/3.0) * -59.2704 * tfactors.T923i - + 4.22256 + (5.0/3.0) * -0.274247 * tfactors.T923 + 24.532 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_p_to_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S34_to_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 + p --> Cl35 - // S34 + p --> Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // se19r + ln_set_rate = -7.70046 + -2.02615 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // se19r - ln_set_rate = -7.70046 + -2.02615 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.02615 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02615 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 8.25443 + -5.75583 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // se19r - ln_set_rate = 8.25443 + -5.75583 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.75583 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.75583 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = -14.8781 + -1.40414 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // se19r - ln_set_rate = -14.8781 + -1.40414 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.40414 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.40414 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 7.00142 + -5.10598 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // se19r - ln_set_rate = 7.00142 + -5.10598 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.10598 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.10598 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = -17.9366 + -1.17205 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // se19r - ln_set_rate = -17.9366 + -1.17205 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.17205 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.17205 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 5.80604 + -4.6418 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // se19r - ln_set_rate = 5.80604 + -4.6418 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.6418 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.6418 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = 0.43449 + -3.16803 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // se19r - ln_set_rate = 0.43449 + -3.16803 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.16803 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.16803 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // se19r + ln_set_rate = -60.0247 + -27.689 * tfactors.T9i + 454.53 * tfactors.T913i + -375.557 * tfactors.T913 + + 12.6533 * tfactors.T9 + -0.408677 * tfactors.T953 + 245.118 * tfactors.lnT9; - // se19r - ln_set_rate = -60.0247 + -27.689 * tfactors.T9i + 454.53 * tfactors.T913i + -375.557 * tfactors.T913 - + 12.6533 * tfactors.T9 + -0.408677 * tfactors.T953 + 245.118 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.689 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 454.53 * tfactors.T943i + (1.0/3.0) * -375.557 * tfactors.T923i + + 12.6533 + (5.0/3.0) * -0.408677 * tfactors.T923 + 245.118 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.689 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 454.53 * tfactors.T943i + (1.0/3.0) * -375.557 * tfactors.T923i - + 12.6533 + (5.0/3.0) * -0.408677 * tfactors.T923 + 245.118 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_He4_to_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S34_to_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 + He4 --> Ar38 - // S34 + He4 --> Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cn18 + ln_set_rate = 228.729 + -17.9675 * tfactors.T9i + 635.332 * tfactors.T913i + -902.05 * tfactors.T913 + + 42.5623 * tfactors.T9 + -2.08434 * tfactors.T953 + 477.35 * tfactors.lnT9; - // cn18 - ln_set_rate = 228.729 + -17.9675 * tfactors.T9i + 635.332 * tfactors.T913i + -902.05 * tfactors.T913 - + 42.5623 * tfactors.T9 + -2.08434 * tfactors.T953 + 477.35 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 17.9675 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 635.332 * tfactors.T943i + (1.0/3.0) * -902.05 * tfactors.T923i + + 42.5623 + (5.0/3.0) * -2.08434 * tfactors.T923 + 477.35 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 17.9675 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 635.332 * tfactors.T943i + (1.0/3.0) * -902.05 * tfactors.T923i - + 42.5623 + (5.0/3.0) * -2.08434 * tfactors.T923 + 477.35 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_n_to_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S35_to_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 + n --> S36 - // S35 + n --> S36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.0579 + -2.51293 * tfactors.T913 + + 0.668068 * tfactors.T9 + -0.0786735 * tfactors.T953; - // ths8r - ln_set_rate = 15.0579 + -2.51293 * tfactors.T913 - + 0.668068 * tfactors.T9 + -0.0786735 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.51293 * tfactors.T923i + + 0.668068 + (5.0/3.0) * -0.0786735 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.51293 * tfactors.T923i - + 0.668068 + (5.0/3.0) * -0.0786735 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_p_to_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S35_to_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 + p --> Cl36 - // S35 + p --> Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.1122 + -26.7922 * tfactors.T913i + -1.83516 * tfactors.T913 + + -2.03932 * tfactors.T9 + 0.322305 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.1122 + -26.7922 * tfactors.T913i + -1.83516 * tfactors.T913 - + -2.03932 * tfactors.T9 + 0.322305 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.7922 * tfactors.T943i + (1.0/3.0) * -1.83516 * tfactors.T923i + + -2.03932 + (5.0/3.0) * 0.322305 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.7922 * tfactors.T943i + (1.0/3.0) * -1.83516 * tfactors.T923i - + -2.03932 + (5.0/3.0) * 0.322305 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_He4_to_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S35_to_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 + He4 --> Ar39 - // S35 + He4 --> Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 50.161 + -65.58 * tfactors.T913i + 0.163229 * tfactors.T913 + + -2.20138 * tfactors.T9 + 0.232938 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 50.161 + -65.58 * tfactors.T913i + 0.163229 * tfactors.T913 - + -2.20138 * tfactors.T9 + 0.232938 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.58 * tfactors.T943i + (1.0/3.0) * 0.163229 * tfactors.T923i + + -2.20138 + (5.0/3.0) * 0.232938 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.58 * tfactors.T943i + (1.0/3.0) * 0.163229 * tfactors.T923i - + -2.20138 + (5.0/3.0) * 0.232938 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S36_p_to_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S36_to_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S36 + p --> Cl37 - // S36 + p --> Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 33.9758 + -26.7991 * tfactors.T913i + 0.0770118 * tfactors.T913 + + -1.71514 * tfactors.T9 + 0.205981 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 33.9758 + -26.7991 * tfactors.T913i + 0.0770118 * tfactors.T913 - + -1.71514 * tfactors.T9 + 0.205981 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.7991 * tfactors.T943i + (1.0/3.0) * 0.0770118 * tfactors.T923i + + -1.71514 + (5.0/3.0) * 0.205981 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.7991 * tfactors.T943i + (1.0/3.0) * 0.0770118 * tfactors.T923i - + -1.71514 + (5.0/3.0) * 0.205981 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S36_He4_to_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S36_to_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S36 + He4 --> Ar40 - // S36 + He4 --> Ar40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 49.9867 + -65.6425 * tfactors.T913i + 4.12861 * tfactors.T913 + + -3.33119 * tfactors.T9 + 0.31889 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 49.9867 + -65.6425 * tfactors.T913i + 4.12861 * tfactors.T913 - + -3.33119 * tfactors.T9 + 0.31889 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.6425 * tfactors.T943i + (1.0/3.0) * 4.12861 * tfactors.T923i + + -3.33119 + (5.0/3.0) * 0.31889 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.6425 * tfactors.T943i + (1.0/3.0) * 4.12861 * tfactors.T923i - + -3.33119 + (5.0/3.0) * 0.31889 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl33_n_to_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl33_to_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl33 + n --> Cl34 - // Cl33 + n --> Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.14947 + 0.921411 * tfactors.T913 + + -0.0823764 * tfactors.T9 + 0.000852746 * tfactors.T953; - // ths8r - ln_set_rate = 8.14947 + 0.921411 * tfactors.T913 - + -0.0823764 * tfactors.T9 + 0.000852746 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.921411 * tfactors.T923i + + -0.0823764 + (5.0/3.0) * 0.000852746 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.921411 * tfactors.T923i - + -0.0823764 + (5.0/3.0) * 0.000852746 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl33_He4_to_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl33_to_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl33 + He4 --> K37 - // Cl33 + He4 --> K37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 46.6859 + -68.1442 * tfactors.T913i + -2.72746 * tfactors.T913 + + -0.317537 * tfactors.T9 + 0.0162782 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 46.6859 + -68.1442 * tfactors.T913i + -2.72746 * tfactors.T913 - + -0.317537 * tfactors.T9 + 0.0162782 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -68.1442 * tfactors.T943i + (1.0/3.0) * -2.72746 * tfactors.T923i + + -0.317537 + (5.0/3.0) * 0.0162782 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -68.1442 * tfactors.T943i + (1.0/3.0) * -2.72746 * tfactors.T923i - + -0.317537 + (5.0/3.0) * 0.0162782 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_n_to_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl34_to_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 + n --> Cl35 - // Cl34 + n --> Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.6539 + 0.990222 * tfactors.T913 + + -0.146686 * tfactors.T9 + 0.00560251 * tfactors.T953; - // ths8r - ln_set_rate = 12.6539 + 0.990222 * tfactors.T913 - + -0.146686 * tfactors.T9 + 0.00560251 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.990222 * tfactors.T923i + + -0.146686 + (5.0/3.0) * 0.00560251 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.990222 * tfactors.T923i - + -0.146686 + (5.0/3.0) * 0.00560251 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_He4_to_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl34_to_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 + He4 --> K38 - // Cl34 + He4 --> K38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.9589 + -68.2165 * tfactors.T913i + -2.18792 * tfactors.T913 + + -1.25322 * tfactors.T9 + 0.140901 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.9589 + -68.2165 * tfactors.T913i + -2.18792 * tfactors.T913 - + -1.25322 * tfactors.T9 + 0.140901 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -68.2165 * tfactors.T943i + (1.0/3.0) * -2.18792 * tfactors.T923i + + -1.25322 + (5.0/3.0) * 0.140901 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -68.2165 * tfactors.T943i + (1.0/3.0) * -2.18792 * tfactors.T923i - + -1.25322 + (5.0/3.0) * 0.140901 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_n_to_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl35_to_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + n --> Cl36 - // Cl35 + n --> Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 2.77768 + 0.10548 * tfactors.T9i + -11.2145 * tfactors.T913i + 23.5701 * tfactors.T913 + + -1.44059 * tfactors.T9 + 0.0755834 * tfactors.T953 + -10.3832 * tfactors.lnT9; - // ks03 - ln_set_rate = 2.77768 + 0.10548 * tfactors.T9i + -11.2145 * tfactors.T913i + 23.5701 * tfactors.T913 - + -1.44059 * tfactors.T9 + 0.0755834 * tfactors.T953 + -10.3832 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.10548 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.2145 * tfactors.T943i + (1.0/3.0) * 23.5701 * tfactors.T923i + + -1.44059 + (5.0/3.0) * 0.0755834 * tfactors.T923 + -10.3832 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.10548 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.2145 * tfactors.T943i + (1.0/3.0) * 23.5701 * tfactors.T923i - + -1.44059 + (5.0/3.0) * 0.0755834 * tfactors.T923 + -10.3832 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> Ar36 - // Cl35 + p --> Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -42.5249 + -0.564651 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.564651 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 + + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 35.6868 + -27.8971 * tfactors.T913i + -16.2304 * tfactors.T913 - + 35.255 * tfactors.T9 + -25.8411 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i + + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8971 * tfactors.T943i + (1.0/3.0) * -16.2304 * tfactors.T923i - + 35.255 + (5.0/3.0) * -25.8411 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 + + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.84699 + -3.65092 * tfactors.T9i + 18.0179 * tfactors.T913 - + -2.86304 * tfactors.T9 + 0.250854 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i + + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.65092 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0179 * tfactors.T923i - + -2.86304 + (5.0/3.0) * 0.250854 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -9.03294 + -2.00996 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.00996 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_He4_to_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl35_to_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + He4 --> K39 - // Cl35 + He4 --> K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.718 + -68.2848 * tfactors.T913i + 0.0178545 * tfactors.T913 + + -2.06783 * tfactors.T9 + 0.199659 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.718 + -68.2848 * tfactors.T913i + 0.0178545 * tfactors.T913 - + -2.06783 * tfactors.T9 + 0.199659 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -68.2848 * tfactors.T943i + (1.0/3.0) * 0.0178545 * tfactors.T923i + + -2.06783 + (5.0/3.0) * 0.199659 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -68.2848 * tfactors.T943i + (1.0/3.0) * 0.0178545 * tfactors.T923i - + -2.06783 + (5.0/3.0) * 0.199659 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_n_to_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl36_to_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + n --> Cl37 - // Cl36 + n --> Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 14.7404 + -0.00175231 * tfactors.T9i + -0.17256 * tfactors.T913i + -0.577904 * tfactors.T913 + + 0.229273 * tfactors.T9 + -0.0412624 * tfactors.T953 + -0.214457 * tfactors.lnT9; - // ks03 - ln_set_rate = 14.7404 + -0.00175231 * tfactors.T9i + -0.17256 * tfactors.T913i + -0.577904 * tfactors.T913 - + 0.229273 * tfactors.T9 + -0.0412624 * tfactors.T953 + -0.214457 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00175231 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.17256 * tfactors.T943i + (1.0/3.0) * -0.577904 * tfactors.T923i + + 0.229273 + (5.0/3.0) * -0.0412624 * tfactors.T923 + -0.214457 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00175231 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.17256 * tfactors.T943i + (1.0/3.0) * -0.577904 * tfactors.T923i - + 0.229273 + (5.0/3.0) * -0.0412624 * tfactors.T923 + -0.214457 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_p_to_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl36_to_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + p --> Ar37 - // Cl36 + p --> Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.0223 + -27.9044 * tfactors.T913i + -0.481331 * tfactors.T913 + + -1.50793 * tfactors.T9 + 0.182531 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.0223 + -27.9044 * tfactors.T913i + -0.481331 * tfactors.T913 - + -1.50793 * tfactors.T9 + 0.182531 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.9044 * tfactors.T943i + (1.0/3.0) * -0.481331 * tfactors.T923i + + -1.50793 + (5.0/3.0) * 0.182531 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.9044 * tfactors.T943i + (1.0/3.0) * -0.481331 * tfactors.T923i - + -1.50793 + (5.0/3.0) * 0.182531 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_He4_to_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl36_to_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + He4 --> K40 - // Cl36 + He4 --> K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 55.7157 + -68.3499 * tfactors.T913i + -4.69433 * tfactors.T913 + + -1.24812 * tfactors.T9 + 0.169306 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 55.7157 + -68.3499 * tfactors.T913i + -4.69433 * tfactors.T913 - + -1.24812 * tfactors.T9 + 0.169306 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -68.3499 * tfactors.T943i + (1.0/3.0) * -4.69433 * tfactors.T923i + + -1.24812 + (5.0/3.0) * 0.169306 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -68.3499 * tfactors.T943i + (1.0/3.0) * -4.69433 * tfactors.T923i - + -1.24812 + (5.0/3.0) * 0.169306 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_p_to_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl37_to_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 + p --> Ar38 - // Cl37 + p --> Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.0095 + -27.9113 * tfactors.T913i + 0.282028 * tfactors.T913 + + -1.80122 * tfactors.T9 + 0.21751 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.0095 + -27.9113 * tfactors.T913i + 0.282028 * tfactors.T913 - + -1.80122 * tfactors.T9 + 0.21751 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.9113 * tfactors.T943i + (1.0/3.0) * 0.282028 * tfactors.T923i + + -1.80122 + (5.0/3.0) * 0.21751 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.9113 * tfactors.T943i + (1.0/3.0) * 0.282028 * tfactors.T923i - + -1.80122 + (5.0/3.0) * 0.21751 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_He4_to_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl37_to_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 + He4 --> K41 - // Cl37 + He4 --> K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 51.2462 + -68.4116 * tfactors.T913i + 3.55194 * tfactors.T913 + + -2.84942 * tfactors.T9 + 0.24958 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 51.2462 + -68.4116 * tfactors.T913i + 3.55194 * tfactors.T913 - + -2.84942 * tfactors.T9 + 0.24958 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -68.4116 * tfactors.T943i + (1.0/3.0) * 3.55194 * tfactors.T923i + + -2.84942 + (5.0/3.0) * 0.24958 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -68.4116 * tfactors.T943i + (1.0/3.0) * 3.55194 * tfactors.T923i - + -2.84942 + (5.0/3.0) * 0.24958 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_n_to_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar36_to_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + n --> Ar37 - // Ar36 + n --> Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 12.0149 + 0.0317044 * tfactors.T9i + -3.1764 * tfactors.T913i + 5.13191 * tfactors.T913 + + -0.00639688 * tfactors.T9 + -0.0292833 * tfactors.T953 + -2.74683 * tfactors.lnT9; - // ks03 - ln_set_rate = 12.0149 + 0.0317044 * tfactors.T9i + -3.1764 * tfactors.T913i + 5.13191 * tfactors.T913 - + -0.00639688 * tfactors.T9 + -0.0292833 * tfactors.T953 + -2.74683 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0317044 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.1764 * tfactors.T943i + (1.0/3.0) * 5.13191 * tfactors.T923i + + -0.00639688 + (5.0/3.0) * -0.0292833 * tfactors.T923 + -2.74683 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0317044 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.1764 * tfactors.T943i + (1.0/3.0) * 5.13191 * tfactors.T923i - + -0.00639688 + (5.0/3.0) * -0.0292833 * tfactors.T923 + -2.74683 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_p_to_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar36_to_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + p --> K37 - // Ar36 + p --> K37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 3.18278 + -8.98031 * tfactors.T9i + 7.50962 * tfactors.T913 + + -1.68675 * tfactors.T9 + 0.189725 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 3.18278 + -8.98031 * tfactors.T9i + 7.50962 * tfactors.T913 - + -1.68675 * tfactors.T9 + 0.189725 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.98031 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.50962 * tfactors.T923i + + -1.68675 + (5.0/3.0) * 0.189725 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.98031 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.50962 * tfactors.T923i - + -1.68675 + (5.0/3.0) * 0.189725 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 4.69769 + -3.6251 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 4.69769 + -3.6251 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.6251 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.6251 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 21.4923 + -28.9682 * tfactors.T913i + + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 21.4923 + -28.9682 * tfactors.T913i - + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -28.9682 * tfactors.T943i + + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -28.9682 * tfactors.T943i - + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> Ca40 - // Ar36 + He4 --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 + + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.3486 + -71.0046 * tfactors.T913i + 4.0656 * tfactors.T913 - + -5.26509 * tfactors.T9 + 0.683546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i + + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0046 * tfactors.T943i + (1.0/3.0) * 4.0656 * tfactors.T923i - + -5.26509 + (5.0/3.0) * 0.683546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_n_to_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar37_to_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + n --> Ar38 - // Ar37 + n --> Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.7933 + -0.825362 * tfactors.T913 + + 0.336634 * tfactors.T9 + -0.0509617 * tfactors.T953; - // ths8r - ln_set_rate = 14.7933 + -0.825362 * tfactors.T913 - + 0.336634 * tfactors.T9 + -0.0509617 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.825362 * tfactors.T923i + + 0.336634 + (5.0/3.0) * -0.0509617 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.825362 * tfactors.T923i - + 0.336634 + (5.0/3.0) * -0.0509617 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_p_to_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar37_to_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + p --> K38 - // Ar37 + p --> K38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.7254 + -28.9954 * tfactors.T913i + -5.57966 * tfactors.T913 + + -1.27516 * tfactors.T9 + 0.217568 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.7254 + -28.9954 * tfactors.T913i + -5.57966 * tfactors.T913 - + -1.27516 * tfactors.T9 + 0.217568 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -28.9954 * tfactors.T943i + (1.0/3.0) * -5.57966 * tfactors.T923i + + -1.27516 + (5.0/3.0) * 0.217568 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -28.9954 * tfactors.T943i + (1.0/3.0) * -5.57966 * tfactors.T923i - + -1.27516 + (5.0/3.0) * 0.217568 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_He4_to_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar37_to_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + He4 --> Ca41 - // Ar37 + He4 --> Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.7522 + -71.0688 * tfactors.T913i + 2.71847 * tfactors.T913 + + -3.17333 * tfactors.T9 + 0.335323 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.7522 + -71.0688 * tfactors.T913i + 2.71847 * tfactors.T913 - + -3.17333 * tfactors.T9 + 0.335323 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.0688 * tfactors.T943i + (1.0/3.0) * 2.71847 * tfactors.T923i + + -3.17333 + (5.0/3.0) * 0.335323 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.0688 * tfactors.T943i + (1.0/3.0) * 2.71847 * tfactors.T923i - + -3.17333 + (5.0/3.0) * 0.335323 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_n_to_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar38_to_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 + n --> Ar39 - // Ar38 + n --> Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 14.726 + -0.0331959 * tfactors.T9i + 2.38837 * tfactors.T913i + -4.76536 * tfactors.T913 + + 0.701311 * tfactors.T9 + -0.0705226 * tfactors.T953 + 1.80517 * tfactors.lnT9; - // ks03 - ln_set_rate = 14.726 + -0.0331959 * tfactors.T9i + 2.38837 * tfactors.T913i + -4.76536 * tfactors.T913 - + 0.701311 * tfactors.T9 + -0.0705226 * tfactors.T953 + 1.80517 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0331959 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.38837 * tfactors.T943i + (1.0/3.0) * -4.76536 * tfactors.T923i + + 0.701311 + (5.0/3.0) * -0.0705226 * tfactors.T923 + 1.80517 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0331959 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.38837 * tfactors.T943i + (1.0/3.0) * -4.76536 * tfactors.T923i - + 0.701311 + (5.0/3.0) * -0.0705226 * tfactors.T923 + 1.80517 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_p_to_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar38_to_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 + p --> K39 - // Ar38 + p --> K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.2834 + -29.0021 * tfactors.T913i + -0.525968 * tfactors.T913 + + -1.94216 * tfactors.T9 + 0.267346 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.2834 + -29.0021 * tfactors.T913i + -0.525968 * tfactors.T913 - + -1.94216 * tfactors.T9 + 0.267346 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -29.0021 * tfactors.T943i + (1.0/3.0) * -0.525968 * tfactors.T923i + + -1.94216 + (5.0/3.0) * 0.267346 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -29.0021 * tfactors.T943i + (1.0/3.0) * -0.525968 * tfactors.T923i - + -1.94216 + (5.0/3.0) * 0.267346 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_He4_to_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar38_to_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 + He4 --> Ca42 - // Ar38 + He4 --> Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.6394 + -71.1296 * tfactors.T913i + 2.75299 * tfactors.T913 + + -2.43406 * tfactors.T9 + 0.199511 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.6394 + -71.1296 * tfactors.T913i + 2.75299 * tfactors.T913 - + -2.43406 * tfactors.T9 + 0.199511 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.1296 * tfactors.T943i + (1.0/3.0) * 2.75299 * tfactors.T923i + + -2.43406 + (5.0/3.0) * 0.199511 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.1296 * tfactors.T943i + (1.0/3.0) * 2.75299 * tfactors.T923i - + -2.43406 + (5.0/3.0) * 0.199511 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_n_to_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar39_to_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 + n --> Ar40 - // Ar39 + n --> Ar40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 15.8265 + -0.0317703 * tfactors.T9i + 2.09789 * tfactors.T913i + -4.77242 * tfactors.T913 + + 0.64032 * tfactors.T9 + -0.0694485 * tfactors.T953 + 1.51561 * tfactors.lnT9; - // ks03 - ln_set_rate = 15.8265 + -0.0317703 * tfactors.T9i + 2.09789 * tfactors.T913i + -4.77242 * tfactors.T913 - + 0.64032 * tfactors.T9 + -0.0694485 * tfactors.T953 + 1.51561 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0317703 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.09789 * tfactors.T943i + (1.0/3.0) * -4.77242 * tfactors.T923i + + 0.64032 + (5.0/3.0) * -0.0694485 * tfactors.T923 + 1.51561 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0317703 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.09789 * tfactors.T943i + (1.0/3.0) * -4.77242 * tfactors.T923i - + 0.64032 + (5.0/3.0) * -0.0694485 * tfactors.T923 + 1.51561 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_p_to_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar39_to_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 + p --> K40 - // Ar39 + p --> K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.9873 + -29.0085 * tfactors.T913i + -2.81753 * tfactors.T913 + + -0.757962 * tfactors.T9 + 0.099462 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.9873 + -29.0085 * tfactors.T913i + -2.81753 * tfactors.T913 - + -0.757962 * tfactors.T9 + 0.099462 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -29.0085 * tfactors.T943i + (1.0/3.0) * -2.81753 * tfactors.T923i + + -0.757962 + (5.0/3.0) * 0.099462 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -29.0085 * tfactors.T943i + (1.0/3.0) * -2.81753 * tfactors.T923i - + -0.757962 + (5.0/3.0) * 0.099462 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_He4_to_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar39_to_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 + He4 --> Ca43 - // Ar39 + He4 --> Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 53.0126 + -71.1879 * tfactors.T913i + 2.58821 * tfactors.T913 + + -3.67809 * tfactors.T9 + 0.431537 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 53.0126 + -71.1879 * tfactors.T913i + 2.58821 * tfactors.T913 - + -3.67809 * tfactors.T9 + 0.431537 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.1879 * tfactors.T943i + (1.0/3.0) * 2.58821 * tfactors.T923i + + -3.67809 + (5.0/3.0) * 0.431537 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.1879 * tfactors.T943i + (1.0/3.0) * 2.58821 * tfactors.T923i - + -3.67809 + (5.0/3.0) * 0.431537 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar40_p_to_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar40_to_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar40 + p --> K41 - // Ar40 + p --> K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.4108 + -29.0146 * tfactors.T913i + 0.65181 * tfactors.T913 + + -1.50557 * tfactors.T9 + 0.139974 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.4108 + -29.0146 * tfactors.T913i + 0.65181 * tfactors.T913 - + -1.50557 * tfactors.T9 + 0.139974 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -29.0146 * tfactors.T943i + (1.0/3.0) * 0.65181 * tfactors.T923i + + -1.50557 + (5.0/3.0) * 0.139974 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -29.0146 * tfactors.T943i + (1.0/3.0) * 0.65181 * tfactors.T923i - + -1.50557 + (5.0/3.0) * 0.139974 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar40_He4_to_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar40_to_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar40 + He4 --> Ca44 - // Ar40 + He4 --> Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 51.2366 + -71.2432 * tfactors.T913i + 6.75101 * tfactors.T913 + + -5.53183 * tfactors.T9 + 0.667023 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 51.2366 + -71.2432 * tfactors.T913i + 6.75101 * tfactors.T913 - + -5.53183 * tfactors.T9 + 0.667023 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -71.2432 * tfactors.T943i + (1.0/3.0) * 6.75101 * tfactors.T923i + + -5.53183 + (5.0/3.0) * 0.667023 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -71.2432 * tfactors.T943i + (1.0/3.0) * 6.75101 * tfactors.T923i - + -5.53183 + (5.0/3.0) * 0.667023 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K37_n_to_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K37_to_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K37 + n --> K38 - // K37 + n --> K38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.98129 + 0.538174 * tfactors.T913 + + -0.0208079 * tfactors.T9 + -0.00404949 * tfactors.T953; - // ths8r - ln_set_rate = 8.98129 + 0.538174 * tfactors.T913 - + -0.0208079 * tfactors.T9 + -0.00404949 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.538174 * tfactors.T923i + + -0.0208079 + (5.0/3.0) * -0.00404949 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.538174 * tfactors.T923i - + -0.0208079 + (5.0/3.0) * -0.00404949 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K38_n_to_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K38_to_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K38 + n --> K39 - // K38 + n --> K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.7596 + -0.161985 * tfactors.T913 + + 0.187817 * tfactors.T9 + -0.0320464 * tfactors.T953; - // ths8r - ln_set_rate = 13.7596 + -0.161985 * tfactors.T913 - + 0.187817 * tfactors.T9 + -0.0320464 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.161985 * tfactors.T923i + + 0.187817 + (5.0/3.0) * -0.0320464 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.161985 * tfactors.T923i - + 0.187817 + (5.0/3.0) * -0.0320464 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_n_to_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K39_to_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + n --> K40 - // K39 + n --> K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 17.6161 + 0.0316194 * tfactors.T9i + -2.2227 * tfactors.T913i + -1.88579 * tfactors.T913 + + 0.714904 * tfactors.T9 + -0.0774902 * tfactors.T953 + -0.859473 * tfactors.lnT9; - // ks03 - ln_set_rate = 17.6161 + 0.0316194 * tfactors.T9i + -2.2227 * tfactors.T913i + -1.88579 * tfactors.T913 - + 0.714904 * tfactors.T9 + -0.0774902 * tfactors.T953 + -0.859473 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0316194 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.2227 * tfactors.T943i + (1.0/3.0) * -1.88579 * tfactors.T923i + + 0.714904 + (5.0/3.0) * -0.0774902 * tfactors.T923 + -0.859473 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0316194 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.2227 * tfactors.T943i + (1.0/3.0) * -1.88579 * tfactors.T923i - + 0.714904 + (5.0/3.0) * -0.0774902 * tfactors.T923 + -0.859473 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> Ca40 - // K39 + p --> Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // lo18r + ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 + + 1136.19 * tfactors.lnT9; - // lo18r - ln_set_rate = 2761.38 + -5.22234 * tfactors.T9i + 802.18 * tfactors.T913i + -4010.27 * tfactors.T913 - + 1136.19 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i + + 1136.19 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.22234 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 802.18 * tfactors.T943i + (1.0/3.0) * -4010.27 * tfactors.T923i - + 1136.19 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 + + 564.926 * tfactors.lnT9; - // lo18r - ln_set_rate = 588.099 + -12.5647 * tfactors.T9i + 641.844 * tfactors.T913i + -1248.49 * tfactors.T913 - + 564.926 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i + + 564.926 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.5647 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 641.844 * tfactors.T943i + (1.0/3.0) * -1248.49 * tfactors.T923i - + 564.926 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // lo18r + ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 + + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; - // lo18r - ln_set_rate = 102.252 + -1.66508 * tfactors.T9i + 41.1723 * tfactors.T913i + -149.299 * tfactors.T913 - + 10.5229 * tfactors.T9 + -0.68208 * tfactors.T953 + 59.2367 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i + + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.66508 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 41.1723 * tfactors.T943i + (1.0/3.0) * -149.299 * tfactors.T923i - + 10.5229 + (5.0/3.0) * -0.68208 * tfactors.T923 + 59.2367 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_He4_to_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K39_to_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + He4 --> Sc43 - // K39 + He4 --> Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.1202 + -73.8006 * tfactors.T913i + 1.87885 * tfactors.T913 + + -2.75862 * tfactors.T9 + 0.279678 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.1202 + -73.8006 * tfactors.T913i + 1.87885 * tfactors.T913 - + -2.75862 * tfactors.T9 + 0.279678 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -73.8006 * tfactors.T943i + (1.0/3.0) * 1.87885 * tfactors.T923i + + -2.75862 + (5.0/3.0) * 0.279678 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -73.8006 * tfactors.T943i + (1.0/3.0) * 1.87885 * tfactors.T923i - + -2.75862 + (5.0/3.0) * 0.279678 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_n_to_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K40_to_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + n --> K41 - // K40 + n --> K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 17.4542 + -0.0277342 * tfactors.T9i + 1.90527 * tfactors.T913i + -4.8523 * tfactors.T913 + + 0.552061 * tfactors.T9 + -0.0570777 * tfactors.T953 + 1.46777 * tfactors.lnT9; - // ks03 - ln_set_rate = 17.4542 + -0.0277342 * tfactors.T9i + 1.90527 * tfactors.T913i + -4.8523 * tfactors.T913 - + 0.552061 * tfactors.T9 + -0.0570777 * tfactors.T953 + 1.46777 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0277342 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.90527 * tfactors.T943i + (1.0/3.0) * -4.8523 * tfactors.T923i + + 0.552061 + (5.0/3.0) * -0.0570777 * tfactors.T923 + 1.46777 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0277342 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.90527 * tfactors.T943i + (1.0/3.0) * -4.8523 * tfactors.T923i - + 0.552061 + (5.0/3.0) * -0.0570777 * tfactors.T923 + 1.46777 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_p_to_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K40_to_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + p --> Ca41 - // K40 + p --> Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.0973 + -30.0795 * tfactors.T913i + 0.0447475 * tfactors.T913 + + -1.69565 * tfactors.T9 + 0.20173 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.0973 + -30.0795 * tfactors.T913i + 0.0447475 * tfactors.T913 - + -1.69565 * tfactors.T9 + 0.20173 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 0.0447475 * tfactors.T923i + + -1.69565 + (5.0/3.0) * 0.20173 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 0.0447475 * tfactors.T923i - + -1.69565 + (5.0/3.0) * 0.20173 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_He4_to_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K40_to_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + He4 --> Sc44 - // K40 + He4 --> Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 55.9694 + -73.858 * tfactors.T913i + -1.10691 * tfactors.T913 + + -2.42921 * tfactors.T9 + 0.294 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 55.9694 + -73.858 * tfactors.T913i + -1.10691 * tfactors.T913 - + -2.42921 * tfactors.T9 + 0.294 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -73.858 * tfactors.T943i + (1.0/3.0) * -1.10691 * tfactors.T923i + + -2.42921 + (5.0/3.0) * 0.294 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -73.858 * tfactors.T943i + (1.0/3.0) * -1.10691 * tfactors.T923i - + -2.42921 + (5.0/3.0) * 0.294 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_p_to_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K41_to_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 + p --> Ca42 - // K41 + p --> Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM86n + ln_set_rate = 32.2014 + -30.08 * tfactors.T913i + 2.93877 * tfactors.T913 + + 2.77388 * tfactors.T9 + -4.8284 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // SM86n - ln_set_rate = 32.2014 + -30.08 * tfactors.T913i + 2.93877 * tfactors.T913 - + 2.77388 * tfactors.T9 + -4.8284 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.08 * tfactors.T943i + (1.0/3.0) * 2.93877 * tfactors.T923i + + 2.77388 + (5.0/3.0) * -4.8284 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.08 * tfactors.T943i + (1.0/3.0) * 2.93877 * tfactors.T923i - + 2.77388 + (5.0/3.0) * -4.8284 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM86r + ln_set_rate = 16.0218 + -12.0 * tfactors.T9i + -1.68317 * tfactors.T913 + + 0.692171 * tfactors.T9 + -0.0831029 * tfactors.T953 + -1.5 * tfactors.lnT9; - // SM86r - ln_set_rate = 16.0218 + -12.0 * tfactors.T9i + -1.68317 * tfactors.T913 - + 0.692171 * tfactors.T9 + -0.0831029 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.0 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.68317 * tfactors.T923i + + 0.692171 + (5.0/3.0) * -0.0831029 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.68317 * tfactors.T923i - + 0.692171 + (5.0/3.0) * -0.0831029 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_He4_to_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K41_to_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 + He4 --> Sc45 - // K41 + He4 --> Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.8015 + -73.9127 * tfactors.T913i + 0.81435 * tfactors.T913 + + -2.90813 * tfactors.T9 + 0.335176 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.8015 + -73.9127 * tfactors.T913i + 0.81435 * tfactors.T913 - + -2.90813 * tfactors.T9 + 0.335176 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -73.9127 * tfactors.T943i + (1.0/3.0) * 0.81435 * tfactors.T923i + + -2.90813 + (5.0/3.0) * 0.335176 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -73.9127 * tfactors.T943i + (1.0/3.0) * 0.81435 * tfactors.T923i - + -2.90813 + (5.0/3.0) * 0.335176 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_n_to_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca40_to_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + n --> Ca41 - // Ca40 + n --> Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 3.04601 + 0.0855375 * tfactors.T9i + -9.18636 * tfactors.T913i + 21.0095 * tfactors.T913 + + -1.33326 * tfactors.T9 + 0.0769347 * tfactors.T953 + -8.66245 * tfactors.lnT9; - // ks03 - ln_set_rate = 3.04601 + 0.0855375 * tfactors.T9i + -9.18636 * tfactors.T913i + 21.0095 * tfactors.T913 - + -1.33326 * tfactors.T9 + 0.0769347 * tfactors.T953 + -8.66245 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0855375 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -9.18636 * tfactors.T943i + (1.0/3.0) * 21.0095 * tfactors.T923i + + -1.33326 + (5.0/3.0) * 0.0769347 * tfactors.T923 + -8.66245 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0855375 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -9.18636 * tfactors.T943i + (1.0/3.0) * 21.0095 * tfactors.T923i - + -1.33326 + (5.0/3.0) * 0.0769347 * tfactors.T923 + -8.66245 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> Ti44 - // Ca40 + He4 --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0 + ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 + + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // chw0 - ln_set_rate = 53.75 + -76.4273 * tfactors.T913i + 3.87451 * tfactors.T913 - + -3.61477 * tfactors.T9 + 0.367451 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i + + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4273 * tfactors.T943i + (1.0/3.0) * 3.87451 * tfactors.T923i - + -3.61477 + (5.0/3.0) * 0.367451 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_n_to_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca41_to_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 + n --> Ca42 - // Ca41 + n --> Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 20.4461 + -0.0409481 * tfactors.T9i + 3.7037 * tfactors.T913i + -9.99246 * tfactors.T913 + + 1.05894 * tfactors.T9 + -0.0978564 * tfactors.T953 + 3.43604 * tfactors.lnT9; - // ks03 - ln_set_rate = 20.4461 + -0.0409481 * tfactors.T9i + 3.7037 * tfactors.T913i + -9.99246 * tfactors.T913 - + 1.05894 * tfactors.T9 + -0.0978564 * tfactors.T953 + 3.43604 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0409481 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.7037 * tfactors.T943i + (1.0/3.0) * -9.99246 * tfactors.T923i + + 1.05894 + (5.0/3.0) * -0.0978564 * tfactors.T923 + 3.43604 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0409481 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 3.7037 * tfactors.T943i + (1.0/3.0) * -9.99246 * tfactors.T923i - + 1.05894 + (5.0/3.0) * -0.0978564 * tfactors.T923 + 3.43604 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_He4_to_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca41_to_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 + He4 --> Ti45 - // Ca41 + He4 --> Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.6305 + -76.4839 * tfactors.T913i + 3.03748 * tfactors.T913 + + -2.59814 * tfactors.T9 + 0.210582 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.6305 + -76.4839 * tfactors.T913i + 3.03748 * tfactors.T913 - + -2.59814 * tfactors.T9 + 0.210582 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.4839 * tfactors.T943i + (1.0/3.0) * 3.03748 * tfactors.T923i + + -2.59814 + (5.0/3.0) * 0.210582 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.4839 * tfactors.T943i + (1.0/3.0) * 3.03748 * tfactors.T923i - + -2.59814 + (5.0/3.0) * 0.210582 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_n_to_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca42_to_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 + n --> Ca43 - // Ca42 + n --> Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 15.996 + 0.0365498 * tfactors.T9i + -2.75867 * tfactors.T913i + 0.860871 * tfactors.T913 + + 0.583467 * tfactors.T9 + -0.094473 * tfactors.T953 + -1.59357 * tfactors.lnT9; - // ks03 - ln_set_rate = 15.996 + 0.0365498 * tfactors.T9i + -2.75867 * tfactors.T913i + 0.860871 * tfactors.T913 - + 0.583467 * tfactors.T9 + -0.094473 * tfactors.T953 + -1.59357 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0365498 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.75867 * tfactors.T943i + (1.0/3.0) * 0.860871 * tfactors.T923i + + 0.583467 + (5.0/3.0) * -0.094473 * tfactors.T923 + -1.59357 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0365498 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.75867 * tfactors.T943i + (1.0/3.0) * 0.860871 * tfactors.T923i - + 0.583467 + (5.0/3.0) * -0.094473 * tfactors.T923 + -1.59357 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_p_to_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca42_to_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 + p --> Sc43 - // Ca42 + p --> Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.8192 + -31.1381 * tfactors.T913i + -0.151667 * tfactors.T913 + + -1.76926 * tfactors.T9 + 0.219569 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.8192 + -31.1381 * tfactors.T913i + -0.151667 * tfactors.T913 - + -1.76926 * tfactors.T9 + 0.219569 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.1381 * tfactors.T943i + (1.0/3.0) * -0.151667 * tfactors.T923i + + -1.76926 + (5.0/3.0) * 0.219569 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.1381 * tfactors.T943i + (1.0/3.0) * -0.151667 * tfactors.T923i - + -1.76926 + (5.0/3.0) * 0.219569 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_He4_to_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca42_to_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 + He4 --> Ti46 - // Ca42 + He4 --> Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.833 + -76.5379 * tfactors.T913i + 2.80099 * tfactors.T913 + + -2.34788 * tfactors.T9 + 0.150014 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.833 + -76.5379 * tfactors.T913i + 2.80099 * tfactors.T913 - + -2.34788 * tfactors.T9 + 0.150014 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.5379 * tfactors.T943i + (1.0/3.0) * 2.80099 * tfactors.T923i + + -2.34788 + (5.0/3.0) * 0.150014 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.5379 * tfactors.T943i + (1.0/3.0) * 2.80099 * tfactors.T923i - + -2.34788 + (5.0/3.0) * 0.150014 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_n_to_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca43_to_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 + n --> Ca44 - // Ca43 + n --> Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 10.6877 + -0.00587516 * tfactors.T9i + -1.26512 * tfactors.T913i + 6.74718 * tfactors.T913 + + -0.673582 * tfactors.T9 + 0.0412245 * tfactors.T953 + -2.30362 * tfactors.lnT9; - // ks03 - ln_set_rate = 10.6877 + -0.00587516 * tfactors.T9i + -1.26512 * tfactors.T913i + 6.74718 * tfactors.T913 - + -0.673582 * tfactors.T9 + 0.0412245 * tfactors.T953 + -2.30362 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00587516 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.26512 * tfactors.T943i + (1.0/3.0) * 6.74718 * tfactors.T923i + + -0.673582 + (5.0/3.0) * 0.0412245 * tfactors.T923 + -2.30362 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00587516 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.26512 * tfactors.T943i + (1.0/3.0) * 6.74718 * tfactors.T923i - + -0.673582 + (5.0/3.0) * 0.0412245 * tfactors.T923 + -2.30362 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_p_to_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca43_to_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 + p --> Sc44 - // Ca43 + p --> Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.9383 + -31.1437 * tfactors.T913i + 1.02701 * tfactors.T913 + + -1.81612 * tfactors.T9 + 0.197287 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.9383 + -31.1437 * tfactors.T913i + 1.02701 * tfactors.T913 - + -1.81612 * tfactors.T9 + 0.197287 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.1437 * tfactors.T943i + (1.0/3.0) * 1.02701 * tfactors.T923i + + -1.81612 + (5.0/3.0) * 0.197287 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.1437 * tfactors.T943i + (1.0/3.0) * 1.02701 * tfactors.T923i - + -1.81612 + (5.0/3.0) * 0.197287 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_He4_to_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca43_to_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 + He4 --> Ti47 - // Ca43 + He4 --> Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.4703 + -76.5897 * tfactors.T913i + -7.46117 * tfactors.T913 + + -0.574977 * tfactors.T9 + 0.115742 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.4703 + -76.5897 * tfactors.T913i + -7.46117 * tfactors.T913 - + -0.574977 * tfactors.T9 + 0.115742 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.5897 * tfactors.T943i + (1.0/3.0) * -7.46117 * tfactors.T923i + + -0.574977 + (5.0/3.0) * 0.115742 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.5897 * tfactors.T943i + (1.0/3.0) * -7.46117 * tfactors.T923i - + -0.574977 + (5.0/3.0) * 0.115742 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_n_to_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca44_to_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 + n --> Ca45 - // Ca44 + n --> Ca45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 2.03089 + 0.19047 * tfactors.T9i + -17.5809 * tfactors.T913i + 30.835 * tfactors.T913 + + -1.52658 * tfactors.T9 + 0.0495163 * tfactors.T953 + -14.5794 * tfactors.lnT9; - // ks03 - ln_set_rate = 2.03089 + 0.19047 * tfactors.T9i + -17.5809 * tfactors.T913i + 30.835 * tfactors.T913 - + -1.52658 * tfactors.T9 + 0.0495163 * tfactors.T953 + -14.5794 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.19047 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -17.5809 * tfactors.T943i + (1.0/3.0) * 30.835 * tfactors.T923i + + -1.52658 + (5.0/3.0) * 0.0495163 * tfactors.T923 + -14.5794 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.19047 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -17.5809 * tfactors.T943i + (1.0/3.0) * 30.835 * tfactors.T923i - + -1.52658 + (5.0/3.0) * 0.0495163 * tfactors.T923 + -14.5794 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_p_to_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca44_to_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 + p --> Sc45 - // Ca44 + p --> Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.0037 + -31.1491 * tfactors.T913i + 0.402181 * tfactors.T913 + + -1.30287 * tfactors.T9 + 0.135535 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.0037 + -31.1491 * tfactors.T913i + 0.402181 * tfactors.T913 - + -1.30287 * tfactors.T9 + 0.135535 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.1491 * tfactors.T943i + (1.0/3.0) * 0.402181 * tfactors.T923i + + -1.30287 + (5.0/3.0) * 0.135535 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.1491 * tfactors.T943i + (1.0/3.0) * 0.402181 * tfactors.T923i - + -1.30287 + (5.0/3.0) * 0.135535 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_He4_to_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca44_to_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 + He4 --> Ti48 - // Ca44 + He4 --> Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 55.9169 + -76.6391 * tfactors.T913i + 2.70825 * tfactors.T913 + + -4.48808 * tfactors.T9 + 0.582872 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 55.9169 + -76.6391 * tfactors.T913i + 2.70825 * tfactors.T913 - + -4.48808 * tfactors.T9 + 0.582872 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.6391 * tfactors.T943i + (1.0/3.0) * 2.70825 * tfactors.T923i + + -4.48808 + (5.0/3.0) * 0.582872 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.6391 * tfactors.T943i + (1.0/3.0) * 2.70825 * tfactors.T923i - + -4.48808 + (5.0/3.0) * 0.582872 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca45_n_to_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca45_to_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca45 + n --> Ca46 - // Ca45 + n --> Ca46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 22.6116 + -0.0524788 * tfactors.T9i + 5.01526 * tfactors.T913i + -14.4226 * tfactors.T913 + + 1.37087 * tfactors.T9 + -0.111582 * tfactors.T953 + 4.87661 * tfactors.lnT9; - // ks03 - ln_set_rate = 22.6116 + -0.0524788 * tfactors.T9i + 5.01526 * tfactors.T913i + -14.4226 * tfactors.T913 - + 1.37087 * tfactors.T9 + -0.111582 * tfactors.T953 + 4.87661 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0524788 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.01526 * tfactors.T943i + (1.0/3.0) * -14.4226 * tfactors.T923i + + 1.37087 + (5.0/3.0) * -0.111582 * tfactors.T923 + 4.87661 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0524788 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.01526 * tfactors.T943i + (1.0/3.0) * -14.4226 * tfactors.T923i - + 1.37087 + (5.0/3.0) * -0.111582 * tfactors.T923 + 4.87661 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca45_p_to_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca45_to_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca45 + p --> Sc46 - // Ca45 + p --> Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 38.986 + -31.1543 * tfactors.T913i + -6.97397 * tfactors.T913 + + -0.344025 * tfactors.T9 + 0.128258 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 38.986 + -31.1543 * tfactors.T913i + -6.97397 * tfactors.T913 - + -0.344025 * tfactors.T9 + 0.128258 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.1543 * tfactors.T943i + (1.0/3.0) * -6.97397 * tfactors.T923i + + -0.344025 + (5.0/3.0) * 0.128258 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.1543 * tfactors.T943i + (1.0/3.0) * -6.97397 * tfactors.T923i - + -0.344025 + (5.0/3.0) * 0.128258 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca45_He4_to_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca45_to_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca45 + He4 --> Ti49 - // Ca45 + He4 --> Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.6604 + -76.6866 * tfactors.T913i + -9.95306 * tfactors.T913 + + 1.72367 * tfactors.T9 + -0.226004 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.6604 + -76.6866 * tfactors.T913i + -9.95306 * tfactors.T913 - + 1.72367 * tfactors.T9 + -0.226004 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.6866 * tfactors.T943i + (1.0/3.0) * -9.95306 * tfactors.T923i + + 1.72367 + (5.0/3.0) * -0.226004 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.6866 * tfactors.T943i + (1.0/3.0) * -9.95306 * tfactors.T923i - + 1.72367 + (5.0/3.0) * -0.226004 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca46_n_to_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca46_to_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca46 + n --> Ca47 - // Ca46 + n --> Ca47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = -0.886174 + 0.206974 * tfactors.T9i + -19.7417 * tfactors.T913i + 35.2401 * tfactors.T913 + + -1.61262 * tfactors.T9 + 0.0443701 * tfactors.T953 + -16.7507 * tfactors.lnT9; - // ks03 - ln_set_rate = -0.886174 + 0.206974 * tfactors.T9i + -19.7417 * tfactors.T913i + 35.2401 * tfactors.T913 - + -1.61262 * tfactors.T9 + 0.0443701 * tfactors.T953 + -16.7507 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.206974 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.7417 * tfactors.T943i + (1.0/3.0) * 35.2401 * tfactors.T923i + + -1.61262 + (5.0/3.0) * 0.0443701 * tfactors.T923 + -16.7507 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.206974 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -19.7417 * tfactors.T943i + (1.0/3.0) * 35.2401 * tfactors.T923i - + -1.61262 + (5.0/3.0) * 0.0443701 * tfactors.T923 + -16.7507 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca46_p_to_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca46_to_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca46 + p --> Sc47 - // Ca46 + p --> Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.3625 + -31.1593 * tfactors.T913i + 0.979497 * tfactors.T913 + + -1.14947 * tfactors.T9 + 0.064347 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.3625 + -31.1593 * tfactors.T913i + 0.979497 * tfactors.T913 - + -1.14947 * tfactors.T9 + 0.064347 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.1593 * tfactors.T943i + (1.0/3.0) * 0.979497 * tfactors.T923i + + -1.14947 + (5.0/3.0) * 0.064347 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.1593 * tfactors.T943i + (1.0/3.0) * 0.979497 * tfactors.T923i - + -1.14947 + (5.0/3.0) * 0.064347 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca46_He4_to_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca46_to_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca46 + He4 --> Ti50 - // Ca46 + He4 --> Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.9052 + -76.732 * tfactors.T913i + -13.6546 * tfactors.T913 + + 1.61796 * tfactors.T9 + -0.159 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.9052 + -76.732 * tfactors.T913i + -13.6546 * tfactors.T913 - + 1.61796 * tfactors.T9 + -0.159 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.732 * tfactors.T943i + (1.0/3.0) * -13.6546 * tfactors.T923i + + 1.61796 + (5.0/3.0) * -0.159 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.732 * tfactors.T943i + (1.0/3.0) * -13.6546 * tfactors.T923i - + 1.61796 + (5.0/3.0) * -0.159 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca47_n_to_Ca48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca47_to_Ca48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca47 + n --> Ca48 - // Ca47 + n --> Ca48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.2216 + -2.88636 * tfactors.T913 + + 0.79581 * tfactors.T9 + -0.0872236 * tfactors.T953; - // ths8r - ln_set_rate = 15.2216 + -2.88636 * tfactors.T913 - + 0.79581 * tfactors.T9 + -0.0872236 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.88636 * tfactors.T923i + + 0.79581 + (5.0/3.0) * -0.0872236 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.88636 * tfactors.T923i - + 0.79581 + (5.0/3.0) * -0.0872236 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca47_p_to_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca47_to_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca47 + p --> Sc48 - // Ca47 + p --> Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 29.5755 + -31.164 * tfactors.T913i + -2.03245 * tfactors.T913 + + 0.0494826 * tfactors.T9 + 0.00201831 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 29.5755 + -31.164 * tfactors.T913i + -2.03245 * tfactors.T913 - + 0.0494826 * tfactors.T9 + 0.00201831 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.164 * tfactors.T943i + (1.0/3.0) * -2.03245 * tfactors.T923i + + 0.0494826 + (5.0/3.0) * 0.00201831 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.164 * tfactors.T943i + (1.0/3.0) * -2.03245 * tfactors.T923i - + 0.0494826 + (5.0/3.0) * 0.00201831 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca47_He4_to_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca47_to_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca47 + He4 --> Ti51 - // Ca47 + He4 --> Ti51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 50.6782 + -76.7758 * tfactors.T913i + -1.97823 * tfactors.T913 + + -0.552991 * tfactors.T9 + 0.0318371 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 50.6782 + -76.7758 * tfactors.T913i + -1.97823 * tfactors.T913 - + -0.552991 * tfactors.T9 + 0.0318371 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.7758 * tfactors.T943i + (1.0/3.0) * -1.97823 * tfactors.T923i + + -0.552991 + (5.0/3.0) * 0.0318371 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.7758 * tfactors.T943i + (1.0/3.0) * -1.97823 * tfactors.T923i - + -0.552991 + (5.0/3.0) * 0.0318371 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca48_p_to_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca48_to_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca48 + p --> Sc49 - // Ca48 + p --> Sc49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 33.8574 + -31.1685 * tfactors.T913i + 2.20987 * tfactors.T913 + + -2.24347 * tfactors.T9 + 0.239302 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 33.8574 + -31.1685 * tfactors.T913i + 2.20987 * tfactors.T913 - + -2.24347 * tfactors.T9 + 0.239302 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.1685 * tfactors.T943i + (1.0/3.0) * 2.20987 * tfactors.T923i + + -2.24347 + (5.0/3.0) * 0.239302 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.1685 * tfactors.T943i + (1.0/3.0) * 2.20987 * tfactors.T923i - + -2.24347 + (5.0/3.0) * 0.239302 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_n_to_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc43_to_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + n --> Sc44 - // Sc43 + n --> Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.7633 + -0.575865 * tfactors.T913 + + 0.0565199 * tfactors.T9 + -0.0129886 * tfactors.T953; - // ths8r - ln_set_rate = 15.7633 + -0.575865 * tfactors.T913 - + 0.0565199 * tfactors.T9 + -0.0129886 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.575865 * tfactors.T923i + + 0.0565199 + (5.0/3.0) * -0.0129886 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.575865 * tfactors.T923i - + 0.0565199 + (5.0/3.0) * -0.0129886 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> Ti44 - // Sc43 + p --> Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 + + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8432 + -32.1734 * tfactors.T913i + -1.77078 * tfactors.T913 - + -2.21706 * tfactors.T9 + 0.298499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i + + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * -1.77078 * tfactors.T923i - + -2.21706 + (5.0/3.0) * 0.298499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_He4_to_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc43_to_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + He4 --> V47 - // Sc43 + He4 --> V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.0195 + -79.122 * tfactors.T913i + -7.07006 * tfactors.T913 + + 0.424183 * tfactors.T9 + -0.0665231 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.0195 + -79.122 * tfactors.T913i + -7.07006 * tfactors.T913 - + 0.424183 * tfactors.T9 + -0.0665231 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -79.122 * tfactors.T943i + (1.0/3.0) * -7.07006 * tfactors.T923i + + 0.424183 + (5.0/3.0) * -0.0665231 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -79.122 * tfactors.T943i + (1.0/3.0) * -7.07006 * tfactors.T923i - + 0.424183 + (5.0/3.0) * -0.0665231 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_n_to_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc44_to_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + n --> Sc45 - // Sc44 + n --> Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.0705 + -1.31922 * tfactors.T913 + + 0.167096 * tfactors.T9 + -0.0191676 * tfactors.T953; - // ths8r - ln_set_rate = 17.0705 + -1.31922 * tfactors.T913 - + 0.167096 * tfactors.T9 + -0.0191676 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.31922 * tfactors.T923i + + 0.167096 + (5.0/3.0) * -0.0191676 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.31922 * tfactors.T923i - + 0.167096 + (5.0/3.0) * -0.0191676 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_p_to_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc44_to_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + p --> Ti45 - // Sc44 + p --> Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.1446 + -32.179 * tfactors.T913i + 1.40668 * tfactors.T913 + + -2.02828 * tfactors.T9 + 0.230326 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.1446 + -32.179 * tfactors.T913i + 1.40668 * tfactors.T913 - + -2.02828 * tfactors.T9 + 0.230326 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.179 * tfactors.T943i + (1.0/3.0) * 1.40668 * tfactors.T923i + + -2.02828 + (5.0/3.0) * 0.230326 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.179 * tfactors.T943i + (1.0/3.0) * 1.40668 * tfactors.T923i - + -2.02828 + (5.0/3.0) * 0.230326 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_He4_to_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc44_to_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + He4 --> V48 - // Sc44 + He4 --> V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.6322 + -79.1731 * tfactors.T913i + -4.22583 * tfactors.T913 + + -0.427863 * tfactors.T9 + 0.0235817 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.6322 + -79.1731 * tfactors.T913i + -4.22583 * tfactors.T913 - + -0.427863 * tfactors.T9 + 0.0235817 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -79.1731 * tfactors.T943i + (1.0/3.0) * -4.22583 * tfactors.T923i + + -0.427863 + (5.0/3.0) * 0.0235817 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -79.1731 * tfactors.T943i + (1.0/3.0) * -4.22583 * tfactors.T923i - + -0.427863 + (5.0/3.0) * 0.0235817 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_n_to_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc45_to_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 + n --> Sc46 - // Sc45 + n --> Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 6.62692 + 0.0466836 * tfactors.T9i + -6.18502 * tfactors.T913i + 16.5806 * tfactors.T913 + + -1.45949 * tfactors.T9 + 0.0995696 * tfactors.T953 + -6.53696 * tfactors.lnT9; - // ks03 - ln_set_rate = 6.62692 + 0.0466836 * tfactors.T9i + -6.18502 * tfactors.T913i + 16.5806 * tfactors.T913 - + -1.45949 * tfactors.T9 + 0.0995696 * tfactors.T953 + -6.53696 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0466836 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.18502 * tfactors.T943i + (1.0/3.0) * 16.5806 * tfactors.T923i + + -1.45949 + (5.0/3.0) * 0.0995696 * tfactors.T923 + -6.53696 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0466836 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -6.18502 * tfactors.T943i + (1.0/3.0) * 16.5806 * tfactors.T923i - + -1.45949 + (5.0/3.0) * 0.0995696 * tfactors.T923 + -6.53696 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_p_to_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc45_to_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 + p --> Ti46 - // Sc45 + p --> Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8383 + -32.1843 * tfactors.T913i + 1.38642 * tfactors.T913 + + -1.64811 * tfactors.T9 + 0.157323 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8383 + -32.1843 * tfactors.T913i + 1.38642 * tfactors.T913 - + -1.64811 * tfactors.T9 + 0.157323 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1843 * tfactors.T943i + (1.0/3.0) * 1.38642 * tfactors.T923i + + -1.64811 + (5.0/3.0) * 0.157323 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1843 * tfactors.T943i + (1.0/3.0) * 1.38642 * tfactors.T923i - + -1.64811 + (5.0/3.0) * 0.157323 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_He4_to_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc45_to_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 + He4 --> V49 - // Sc45 + He4 --> V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.1427 + -79.222 * tfactors.T913i + -5.31022 * tfactors.T913 + + -1.37323 * tfactors.T9 + 0.21679 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.1427 + -79.222 * tfactors.T913i + -5.31022 * tfactors.T913 - + -1.37323 * tfactors.T9 + 0.21679 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -79.222 * tfactors.T943i + (1.0/3.0) * -5.31022 * tfactors.T923i + + -1.37323 + (5.0/3.0) * 0.21679 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -79.222 * tfactors.T943i + (1.0/3.0) * -5.31022 * tfactors.T923i - + -1.37323 + (5.0/3.0) * 0.21679 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_n_to_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc46_to_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 + n --> Sc47 - // Sc46 + n --> Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 17.7335 + -0.0211697 * tfactors.T9i + 1.157 * tfactors.T913i + -3.39674 * tfactors.T913 + + 0.179575 * tfactors.T9 + -0.00780135 * tfactors.T953 + 0.783491 * tfactors.lnT9; - // rath - ln_set_rate = 17.7335 + -0.0211697 * tfactors.T9i + 1.157 * tfactors.T913i + -3.39674 * tfactors.T913 - + 0.179575 * tfactors.T9 + -0.00780135 * tfactors.T953 + 0.783491 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0211697 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.157 * tfactors.T943i + (1.0/3.0) * -3.39674 * tfactors.T923i + + 0.179575 + (5.0/3.0) * -0.00780135 * tfactors.T923 + 0.783491 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0211697 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.157 * tfactors.T943i + (1.0/3.0) * -3.39674 * tfactors.T923i - + 0.179575 + (5.0/3.0) * -0.00780135 * tfactors.T923 + 0.783491 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_p_to_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc46_to_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 + p --> Ti47 - // Sc46 + p --> Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 134.507 + -5.50507 * tfactors.T9i + 212.079 * tfactors.T913i + -358.599 * tfactors.T913 + + 19.2793 * tfactors.T9 + -1.01913 * tfactors.T953 + 176.254 * tfactors.lnT9; - // rath - ln_set_rate = 134.507 + -5.50507 * tfactors.T9i + 212.079 * tfactors.T913i + -358.599 * tfactors.T913 - + 19.2793 * tfactors.T9 + -1.01913 * tfactors.T953 + 176.254 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.50507 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 212.079 * tfactors.T943i + (1.0/3.0) * -358.599 * tfactors.T923i + + 19.2793 + (5.0/3.0) * -1.01913 * tfactors.T923 + 176.254 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.50507 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 212.079 * tfactors.T943i + (1.0/3.0) * -358.599 * tfactors.T923i - + 19.2793 + (5.0/3.0) * -1.01913 * tfactors.T923 + 176.254 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_He4_to_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc46_to_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 + He4 --> V50 - // Sc46 + He4 --> V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -953.322 + 15.73 * tfactors.T9i + -1681.31 * tfactors.T913i + 2743.27 * tfactors.T913 + + -162.405 * tfactors.T9 + 9.24681 * tfactors.T953 + -1292.78 * tfactors.lnT9; - // rath - ln_set_rate = -953.322 + 15.73 * tfactors.T9i + -1681.31 * tfactors.T913i + 2743.27 * tfactors.T913 - + -162.405 * tfactors.T9 + 9.24681 * tfactors.T953 + -1292.78 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -15.73 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1681.31 * tfactors.T943i + (1.0/3.0) * 2743.27 * tfactors.T923i + + -162.405 + (5.0/3.0) * 9.24681 * tfactors.T923 + -1292.78 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -15.73 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1681.31 * tfactors.T943i + (1.0/3.0) * 2743.27 * tfactors.T923i - + -162.405 + (5.0/3.0) * 9.24681 * tfactors.T923 + -1292.78 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_n_to_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc47_to_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 + n --> Sc48 - // Sc47 + n --> Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 14.3286 + -0.0127821 * tfactors.T9i + 0.297987 * tfactors.T913i + 0.438296 * tfactors.T913 + + 0.0468739 * tfactors.T9 + -0.0255895 * tfactors.T953 + -0.227277 * tfactors.lnT9; - // rath - ln_set_rate = 14.3286 + -0.0127821 * tfactors.T9i + 0.297987 * tfactors.T913i + 0.438296 * tfactors.T913 - + 0.0468739 * tfactors.T9 + -0.0255895 * tfactors.T953 + -0.227277 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0127821 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.297987 * tfactors.T943i + (1.0/3.0) * 0.438296 * tfactors.T923i + + 0.0468739 + (5.0/3.0) * -0.0255895 * tfactors.T923 + -0.227277 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0127821 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.297987 * tfactors.T943i + (1.0/3.0) * 0.438296 * tfactors.T923i - + 0.0468739 + (5.0/3.0) * -0.0255895 * tfactors.T923 + -0.227277 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_p_to_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc47_to_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 + p --> Ti48 - // Sc47 + p --> Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 50.4169 + -5.06842 * tfactors.T9i + 155.189 * tfactors.T913i + -211.783 * tfactors.T913 + + 9.70286 * tfactors.T9 + -0.48757 * tfactors.T953 + 117.307 * tfactors.lnT9; - // rath - ln_set_rate = 50.4169 + -5.06842 * tfactors.T9i + 155.189 * tfactors.T913i + -211.783 * tfactors.T913 - + 9.70286 * tfactors.T9 + -0.48757 * tfactors.T953 + 117.307 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.06842 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 155.189 * tfactors.T943i + (1.0/3.0) * -211.783 * tfactors.T923i + + 9.70286 + (5.0/3.0) * -0.48757 * tfactors.T923 + 117.307 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.06842 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 155.189 * tfactors.T943i + (1.0/3.0) * -211.783 * tfactors.T923i - + 9.70286 + (5.0/3.0) * -0.48757 * tfactors.T923 + 117.307 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_He4_to_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc47_to_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 + He4 --> V51 - // Sc47 + He4 --> V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -1038.06 + 15.2937 * tfactors.T9i + -1682.84 * tfactors.T913i + 2838.54 * tfactors.T913 + + -171.874 * tfactors.T9 + 9.93236 * tfactors.T953 + -1317.42 * tfactors.lnT9; - // rath - ln_set_rate = -1038.06 + 15.2937 * tfactors.T9i + -1682.84 * tfactors.T913i + 2838.54 * tfactors.T913 - + -171.874 * tfactors.T9 + 9.93236 * tfactors.T953 + -1317.42 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -15.2937 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1682.84 * tfactors.T943i + (1.0/3.0) * 2838.54 * tfactors.T923i + + -171.874 + (5.0/3.0) * 9.93236 * tfactors.T923 + -1317.42 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -15.2937 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1682.84 * tfactors.T943i + (1.0/3.0) * 2838.54 * tfactors.T923i - + -171.874 + (5.0/3.0) * 9.93236 * tfactors.T923 + -1317.42 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_n_to_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc48_to_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 + n --> Sc49 - // Sc48 + n --> Sc49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 17.731 + -0.026995 * tfactors.T9i + 2.32858 * tfactors.T913i + -6.44325 * tfactors.T913 + + 0.608389 * tfactors.T9 + -0.0534156 * tfactors.T953 + 2.13196 * tfactors.lnT9; - // rath - ln_set_rate = 17.731 + -0.026995 * tfactors.T9i + 2.32858 * tfactors.T913i + -6.44325 * tfactors.T913 - + 0.608389 * tfactors.T9 + -0.0534156 * tfactors.T953 + 2.13196 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.026995 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.32858 * tfactors.T943i + (1.0/3.0) * -6.44325 * tfactors.T923i + + 0.608389 + (5.0/3.0) * -0.0534156 * tfactors.T923 + 2.13196 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.026995 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.32858 * tfactors.T943i + (1.0/3.0) * -6.44325 * tfactors.T923i - + 0.608389 + (5.0/3.0) * -0.0534156 * tfactors.T923 + 2.13196 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_p_to_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc48_to_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 + p --> Ti49 - // Sc48 + p --> Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 101.172 + -5.49324 * tfactors.T9i + 198.826 * tfactors.T913i + -313.844 * tfactors.T913 + + 17.0251 * tfactors.T9 + -0.945704 * tfactors.T953 + 159.404 * tfactors.lnT9; - // rath - ln_set_rate = 101.172 + -5.49324 * tfactors.T9i + 198.826 * tfactors.T913i + -313.844 * tfactors.T913 - + 17.0251 * tfactors.T9 + -0.945704 * tfactors.T953 + 159.404 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.49324 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 198.826 * tfactors.T943i + (1.0/3.0) * -313.844 * tfactors.T923i + + 17.0251 + (5.0/3.0) * -0.945704 * tfactors.T923 + 159.404 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.49324 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 198.826 * tfactors.T943i + (1.0/3.0) * -313.844 * tfactors.T923i - + 17.0251 + (5.0/3.0) * -0.945704 * tfactors.T923 + 159.404 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_He4_to_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc48_to_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 + He4 --> V52 - // Sc48 + He4 --> V52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -957.316 + 15.0869 * tfactors.T9i + -1642.74 * tfactors.T913i + 2707.58 * tfactors.T913 + + -162.101 * tfactors.T9 + 9.30824 * tfactors.T953 + -1268.27 * tfactors.lnT9; - // rath - ln_set_rate = -957.316 + 15.0869 * tfactors.T9i + -1642.74 * tfactors.T913i + 2707.58 * tfactors.T913 - + -162.101 * tfactors.T9 + 9.30824 * tfactors.T953 + -1268.27 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -15.0869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1642.74 * tfactors.T943i + (1.0/3.0) * 2707.58 * tfactors.T923i + + -162.101 + (5.0/3.0) * 9.30824 * tfactors.T923 + -1268.27 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -15.0869 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1642.74 * tfactors.T943i + (1.0/3.0) * 2707.58 * tfactors.T923i - + -162.101 + (5.0/3.0) * 9.30824 * tfactors.T923 + -1268.27 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc49_p_to_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc49_to_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc49 + p --> Ti50 - // Sc49 + p --> Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 106.943 + -5.43496 * tfactors.T9i + 195.561 * tfactors.T913i + -317.373 * tfactors.T913 + + 17.5352 * tfactors.T9 + -0.999861 * tfactors.T953 + 159.384 * tfactors.lnT9; - // rath - ln_set_rate = 106.943 + -5.43496 * tfactors.T9i + 195.561 * tfactors.T913i + -317.373 * tfactors.T913 - + 17.5352 * tfactors.T9 + -0.999861 * tfactors.T953 + 159.384 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.43496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 195.561 * tfactors.T943i + (1.0/3.0) * -317.373 * tfactors.T923i + + 17.5352 + (5.0/3.0) * -0.999861 * tfactors.T923 + 159.384 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.43496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 195.561 * tfactors.T943i + (1.0/3.0) * -317.373 * tfactors.T923i - + 17.5352 + (5.0/3.0) * -0.999861 * tfactors.T923 + 159.384 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_n_to_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti44_to_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + n --> Ti45 - // Ti44 + n --> Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.2506 + 1.01203 * tfactors.T913 + + -0.201174 * tfactors.T9 + 0.00360954 * tfactors.T953; - // ths8r - ln_set_rate = 15.2506 + 1.01203 * tfactors.T913 - + -0.201174 * tfactors.T9 + 0.00360954 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.01203 * tfactors.T923i + + -0.201174 + (5.0/3.0) * 0.00360954 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.01203 * tfactors.T923i - + -0.201174 + (5.0/3.0) * 0.00360954 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> Cr48 - // Ti44 + He4 --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 + + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.7958 + -81.667 * tfactors.T913i + -10.6333 * tfactors.T913 - + -0.672613 * tfactors.T9 + 0.161209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i + + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.667 * tfactors.T943i + (1.0/3.0) * -10.6333 * tfactors.T923i - + -0.672613 + (5.0/3.0) * 0.161209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_n_to_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti45_to_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 + n --> Ti46 - // Ti45 + n --> Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.133 + -1.55633 * tfactors.T913 + + 0.300783 * tfactors.T9 + -0.0373696 * tfactors.T953; - // ths8r - ln_set_rate = 17.133 + -1.55633 * tfactors.T913 - + 0.300783 * tfactors.T9 + -0.0373696 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.55633 * tfactors.T923i + + 0.300783 + (5.0/3.0) * -0.0373696 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.55633 * tfactors.T923i - + 0.300783 + (5.0/3.0) * -0.0373696 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_p_to_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti45_to_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 + p --> V46 - // Ti45 + p --> V46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.4468 + -33.1981 * tfactors.T913i + -1.66837 * tfactors.T913 + + -2.50285 * tfactors.T9 + 0.349152 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.4468 + -33.1981 * tfactors.T913i + -1.66837 * tfactors.T913 - + -2.50285 * tfactors.T9 + 0.349152 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -33.1981 * tfactors.T943i + (1.0/3.0) * -1.66837 * tfactors.T923i + + -2.50285 + (5.0/3.0) * 0.349152 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -33.1981 * tfactors.T943i + (1.0/3.0) * -1.66837 * tfactors.T923i - + -2.50285 + (5.0/3.0) * 0.349152 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_He4_to_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti45_to_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 + He4 --> Cr49 - // Ti45 + He4 --> Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.023 + -81.7175 * tfactors.T913i + -10.1755 * tfactors.T913 + + 0.364167 * tfactors.T9 + -0.000317666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.023 + -81.7175 * tfactors.T913i + -10.1755 * tfactors.T913 - + 0.364167 * tfactors.T9 + -0.000317666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.7175 * tfactors.T943i + (1.0/3.0) * -10.1755 * tfactors.T923i + + 0.364167 + (5.0/3.0) * -0.000317666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.7175 * tfactors.T943i + (1.0/3.0) * -10.1755 * tfactors.T923i - + 0.364167 + (5.0/3.0) * -0.000317666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_n_to_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti46_to_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + n --> Ti47 - // Ti46 + n --> Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 12.2761 + 0.0882347 * tfactors.T9i + -7.30817 * tfactors.T913i + 10.713 * tfactors.T913 + + -0.537251 * tfactors.T9 + 0.0187304 * tfactors.T953 + -5.38893 * tfactors.lnT9; - // ks03 - ln_set_rate = 12.2761 + 0.0882347 * tfactors.T9i + -7.30817 * tfactors.T913i + 10.713 * tfactors.T913 - + -0.537251 * tfactors.T9 + 0.0187304 * tfactors.T953 + -5.38893 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0882347 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.30817 * tfactors.T943i + (1.0/3.0) * 10.713 * tfactors.T923i + + -0.537251 + (5.0/3.0) * 0.0187304 * tfactors.T923 + -5.38893 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0882347 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.30817 * tfactors.T943i + (1.0/3.0) * 10.713 * tfactors.T923i - + -0.537251 + (5.0/3.0) * 0.0187304 * tfactors.T923 + -5.38893 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_p_to_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti46_to_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + p --> V47 - // Ti46 + p --> V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.7683 + -33.2034 * tfactors.T913i + 0.505619 * tfactors.T913 + + -1.73654 * tfactors.T9 + 0.207342 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.7683 + -33.2034 * tfactors.T913i + 0.505619 * tfactors.T913 - + -1.73654 * tfactors.T9 + 0.207342 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -33.2034 * tfactors.T943i + (1.0/3.0) * 0.505619 * tfactors.T923i + + -1.73654 + (5.0/3.0) * 0.207342 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -33.2034 * tfactors.T943i + (1.0/3.0) * 0.505619 * tfactors.T923i - + -1.73654 + (5.0/3.0) * 0.207342 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_He4_to_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti46_to_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + He4 --> Cr50 - // Ti46 + He4 --> Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.0372 + -81.7658 * tfactors.T913i + 3.48637 * tfactors.T913 + + -3.9188 * tfactors.T9 + 0.440356 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.0372 + -81.7658 * tfactors.T913i + 3.48637 * tfactors.T913 - + -3.9188 * tfactors.T9 + 0.440356 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.7658 * tfactors.T943i + (1.0/3.0) * 3.48637 * tfactors.T923i + + -3.9188 + (5.0/3.0) * 0.440356 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.7658 * tfactors.T943i + (1.0/3.0) * 3.48637 * tfactors.T923i - + -3.9188 + (5.0/3.0) * 0.440356 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_n_to_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti47_to_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + n --> Ti48 - // Ti47 + n --> Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 14.8734 + 0.0181751 * tfactors.T9i + -2.34945 * tfactors.T913i + 3.2238 * tfactors.T913 + + -0.0455487 * tfactors.T9 + -0.0153771 * tfactors.T953 + -2.10785 * tfactors.lnT9; - // ks03 - ln_set_rate = 14.8734 + 0.0181751 * tfactors.T9i + -2.34945 * tfactors.T913i + 3.2238 * tfactors.T913 - + -0.0455487 * tfactors.T9 + -0.0153771 * tfactors.T953 + -2.10785 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0181751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.34945 * tfactors.T943i + (1.0/3.0) * 3.2238 * tfactors.T923i + + -0.0455487 + (5.0/3.0) * -0.0153771 * tfactors.T923 + -2.10785 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0181751 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.34945 * tfactors.T943i + (1.0/3.0) * 3.2238 * tfactors.T923i - + -0.0455487 + (5.0/3.0) * -0.0153771 * tfactors.T923 + -2.10785 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_p_to_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti47_to_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + p --> V48 - // Ti47 + p --> V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.1951 + -33.2084 * tfactors.T913i + 1.06738 * tfactors.T913 + + -1.55342 * tfactors.T9 + 0.159225 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.1951 + -33.2084 * tfactors.T913i + 1.06738 * tfactors.T913 - + -1.55342 * tfactors.T9 + 0.159225 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -33.2084 * tfactors.T943i + (1.0/3.0) * 1.06738 * tfactors.T923i + + -1.55342 + (5.0/3.0) * 0.159225 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -33.2084 * tfactors.T943i + (1.0/3.0) * 1.06738 * tfactors.T923i - + -1.55342 + (5.0/3.0) * 0.159225 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_He4_to_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti47_to_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + He4 --> Cr51 - // Ti47 + He4 --> Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.333 + -81.8123 * tfactors.T913i + -8.91821 * tfactors.T913 + + -0.0329369 * tfactors.T9 + 0.039179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.333 + -81.8123 * tfactors.T913i + -8.91821 * tfactors.T913 - + -0.0329369 * tfactors.T9 + 0.039179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.8123 * tfactors.T943i + (1.0/3.0) * -8.91821 * tfactors.T923i + + -0.0329369 + (5.0/3.0) * 0.039179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.8123 * tfactors.T943i + (1.0/3.0) * -8.91821 * tfactors.T923i - + -0.0329369 + (5.0/3.0) * 0.039179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_n_to_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti48_to_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + n --> Ti49 - // Ti48 + n --> Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = -16.7879 + 0.320502 * tfactors.T9i + -32.4895 * tfactors.T913i + 67.9234 * tfactors.T913 + + -4.27126 * tfactors.T9 + 0.230364 * tfactors.T953 + -29.4521 * tfactors.lnT9; - // ks03 - ln_set_rate = -16.7879 + 0.320502 * tfactors.T9i + -32.4895 * tfactors.T913i + 67.9234 * tfactors.T913 - + -4.27126 * tfactors.T9 + 0.230364 * tfactors.T953 + -29.4521 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.320502 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.4895 * tfactors.T943i + (1.0/3.0) * 67.9234 * tfactors.T923i + + -4.27126 + (5.0/3.0) * 0.230364 * tfactors.T923 + -29.4521 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.320502 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.4895 * tfactors.T943i + (1.0/3.0) * 67.9234 * tfactors.T923i - + -4.27126 + (5.0/3.0) * 0.230364 * tfactors.T923 + -29.4521 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_p_to_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti48_to_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + p --> V49 - // Ti48 + p --> V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.2907 + -33.2133 * tfactors.T913i + 0.564373 * tfactors.T913 + + -1.18789 * tfactors.T9 + 0.110892 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.2907 + -33.2133 * tfactors.T913i + 0.564373 * tfactors.T913 - + -1.18789 * tfactors.T9 + 0.110892 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -33.2133 * tfactors.T943i + (1.0/3.0) * 0.564373 * tfactors.T923i + + -1.18789 + (5.0/3.0) * 0.110892 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -33.2133 * tfactors.T943i + (1.0/3.0) * 0.564373 * tfactors.T923i - + -1.18789 + (5.0/3.0) * 0.110892 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_He4_to_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti48_to_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + He4 --> Cr52 - // Ti48 + He4 --> Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.6787 + -81.8569 * tfactors.T913i + 4.92305 * tfactors.T913 + + -5.04112 * tfactors.T9 + 0.6175 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.6787 + -81.8569 * tfactors.T913i + 4.92305 * tfactors.T913 - + -5.04112 * tfactors.T9 + 0.6175 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.8569 * tfactors.T943i + (1.0/3.0) * 4.92305 * tfactors.T923i + + -5.04112 + (5.0/3.0) * 0.6175 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.8569 * tfactors.T943i + (1.0/3.0) * 4.92305 * tfactors.T923i - + -5.04112 + (5.0/3.0) * 0.6175 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_n_to_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti49_to_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + n --> Ti50 - // Ti49 + n --> Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 13.6326 + 0.0289531 * tfactors.T9i + -2.8384 * tfactors.T913i + 4.10103 * tfactors.T913 + + -0.0325714 * tfactors.T9 + -0.0305035 * tfactors.T953 + -2.3012 * tfactors.lnT9; - // ks03 - ln_set_rate = 13.6326 + 0.0289531 * tfactors.T9i + -2.8384 * tfactors.T913i + 4.10103 * tfactors.T913 - + -0.0325714 * tfactors.T9 + -0.0305035 * tfactors.T953 + -2.3012 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0289531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.8384 * tfactors.T943i + (1.0/3.0) * 4.10103 * tfactors.T923i + + -0.0325714 + (5.0/3.0) * -0.0305035 * tfactors.T923 + -2.3012 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0289531 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.8384 * tfactors.T943i + (1.0/3.0) * 4.10103 * tfactors.T923i - + -0.0325714 + (5.0/3.0) * -0.0305035 * tfactors.T923 + -2.3012 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_p_to_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti49_to_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + p --> V50 - // Ti49 + p --> V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.0041 + -33.2179 * tfactors.T913i + 3.05321 * tfactors.T913 + + -2.48884 * tfactors.T9 + 0.254524 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.0041 + -33.2179 * tfactors.T913i + 3.05321 * tfactors.T913 - + -2.48884 * tfactors.T9 + 0.254524 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -33.2179 * tfactors.T943i + (1.0/3.0) * 3.05321 * tfactors.T923i + + -2.48884 + (5.0/3.0) * 0.254524 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -33.2179 * tfactors.T943i + (1.0/3.0) * 3.05321 * tfactors.T923i - + -2.48884 + (5.0/3.0) * 0.254524 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_He4_to_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti49_to_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + He4 --> Cr53 - // Ti49 + He4 --> Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.4688 + -81.8999 * tfactors.T913i + -15.3695 * tfactors.T913 + + 2.51758 * tfactors.T9 + -0.283455 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.4688 + -81.8999 * tfactors.T913i + -15.3695 * tfactors.T913 - + 2.51758 * tfactors.T9 + -0.283455 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.8999 * tfactors.T943i + (1.0/3.0) * -15.3695 * tfactors.T923i + + 2.51758 + (5.0/3.0) * -0.283455 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.8999 * tfactors.T943i + (1.0/3.0) * -15.3695 * tfactors.T923i - + 2.51758 + (5.0/3.0) * -0.283455 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_n_to_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti50_to_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 + n --> Ti51 - // Ti50 + n --> Ti51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 40.4047 + -0.00979462 * tfactors.T9i + 7.07296 * tfactors.T913i + -37.8514 * tfactors.T913 + + 4.03187 * tfactors.T9 + -0.339274 * tfactors.T953 + 11.4094 * tfactors.lnT9; - // ks03 - ln_set_rate = 40.4047 + -0.00979462 * tfactors.T9i + 7.07296 * tfactors.T913i + -37.8514 * tfactors.T913 - + 4.03187 * tfactors.T9 + -0.339274 * tfactors.T953 + 11.4094 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00979462 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.07296 * tfactors.T943i + (1.0/3.0) * -37.8514 * tfactors.T923i + + 4.03187 + (5.0/3.0) * -0.339274 * tfactors.T923 + 11.4094 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00979462 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.07296 * tfactors.T943i + (1.0/3.0) * -37.8514 * tfactors.T923i - + 4.03187 + (5.0/3.0) * -0.339274 * tfactors.T923 + 11.4094 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_p_to_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti50_to_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 + p --> V51 - // Ti50 + p --> V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.1261 + -33.2224 * tfactors.T913i + 0.579407 * tfactors.T913 + + -0.949378 * tfactors.T9 + 0.0567069 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.1261 + -33.2224 * tfactors.T913i + 0.579407 * tfactors.T913 - + -0.949378 * tfactors.T9 + 0.0567069 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -33.2224 * tfactors.T943i + (1.0/3.0) * 0.579407 * tfactors.T923i + + -0.949378 + (5.0/3.0) * 0.0567069 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -33.2224 * tfactors.T943i + (1.0/3.0) * 0.579407 * tfactors.T923i - + -0.949378 + (5.0/3.0) * 0.0567069 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_He4_to_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti50_to_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 + He4 --> Cr54 - // Ti50 + He4 --> Cr54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.4244 + -81.9411 * tfactors.T913i + -6.28155 * tfactors.T913 + + -2.0416 * tfactors.T9 + 0.332085 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.4244 + -81.9411 * tfactors.T913i + -6.28155 * tfactors.T913 - + -2.0416 * tfactors.T9 + 0.332085 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.9411 * tfactors.T943i + (1.0/3.0) * -6.28155 * tfactors.T923i + + -2.0416 + (5.0/3.0) * 0.332085 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.9411 * tfactors.T943i + (1.0/3.0) * -6.28155 * tfactors.T923i - + -2.0416 + (5.0/3.0) * 0.332085 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti51_p_to_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti51_to_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti51 + p --> V52 - // Ti51 + p --> V52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 130.346 + -5.83918 * tfactors.T9i + 220.953 * tfactors.T913i + -370.119 * tfactors.T913 + + 21.0839 * tfactors.T9 + -1.22336 * tfactors.T953 + 182.332 * tfactors.lnT9; - // rath - ln_set_rate = 130.346 + -5.83918 * tfactors.T9i + 220.953 * tfactors.T913i + -370.119 * tfactors.T913 - + 21.0839 * tfactors.T9 + -1.22336 * tfactors.T953 + 182.332 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.83918 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 220.953 * tfactors.T943i + (1.0/3.0) * -370.119 * tfactors.T923i + + 21.0839 + (5.0/3.0) * -1.22336 * tfactors.T923 + 182.332 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.83918 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 220.953 * tfactors.T943i + (1.0/3.0) * -370.119 * tfactors.T923i - + 21.0839 + (5.0/3.0) * -1.22336 * tfactors.T923 + 182.332 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V46_n_to_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V46_to_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V46 + n --> V47 - // V46 + n --> V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.7405 + -0.692996 * tfactors.T913 + + 0.316873 * tfactors.T9 + -0.0417235 * tfactors.T953; - // ths8r - ln_set_rate = 15.7405 + -0.692996 * tfactors.T913 - + 0.316873 * tfactors.T9 + -0.0417235 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.692996 * tfactors.T923i + + 0.316873 + (5.0/3.0) * -0.0417235 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.692996 * tfactors.T923i - + 0.316873 + (5.0/3.0) * -0.0417235 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V46_He4_to_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V46_to_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V46 + He4 --> Mn50 - // V46 + He4 --> Mn50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.311 + -84.2255 * tfactors.T913i + -4.85634 * tfactors.T913 + + 0.0528515 * tfactors.T9 + -0.0425496 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.311 + -84.2255 * tfactors.T913i + -4.85634 * tfactors.T913 - + 0.0528515 * tfactors.T9 + -0.0425496 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.2255 * tfactors.T943i + (1.0/3.0) * -4.85634 * tfactors.T923i + + 0.0528515 + (5.0/3.0) * -0.0425496 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.2255 * tfactors.T943i + (1.0/3.0) * -4.85634 * tfactors.T923i - + 0.0528515 + (5.0/3.0) * -0.0425496 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_n_to_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V47_to_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + n --> V48 - // V47 + n --> V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.5513 + -2.40159 * tfactors.T913 + + 0.594573 * tfactors.T9 + -0.0682896 * tfactors.T953; - // ths8r - ln_set_rate = 17.5513 + -2.40159 * tfactors.T913 - + 0.594573 * tfactors.T9 + -0.0682896 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.40159 * tfactors.T923i + + 0.594573 + (5.0/3.0) * -0.0682896 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.40159 * tfactors.T923i - + 0.594573 + (5.0/3.0) * -0.0682896 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> Cr48 - // V47 + p --> Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 + + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; - // nfisn - ln_set_rate = 42.6798 + -6.0593 * tfactors.T9i + -34.0548 * tfactors.T913i + -3.41973 * tfactors.T913 - + 1.16501 * tfactors.T9 + -0.105543 * tfactors.T953 + -7.70886 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i + + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.0593 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.0548 * tfactors.T943i + (1.0/3.0) * -3.41973 * tfactors.T923i - + 1.16501 + (5.0/3.0) * -0.105543 * tfactors.T923 + -7.70886 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 + + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; - // nfisn - ln_set_rate = 511.463 + -5.29491 * tfactors.T9i + 317.171 * tfactors.T913i + -911.679 * tfactors.T913 - + 94.4245 * tfactors.T9 + -10.1973 * tfactors.T953 + 330.727 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i + + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.29491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 317.171 * tfactors.T943i + (1.0/3.0) * -911.679 * tfactors.T923i - + 94.4245 + (5.0/3.0) * -10.1973 * tfactors.T923 + 330.727 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 + + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.8315 + 0.246665 * tfactors.T9i + -45.9868 * tfactors.T913i + 13.6822 * tfactors.T913 - + -0.376902 * tfactors.T9 + -0.0194875 * tfactors.T953 + -8.42325 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i + + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.246665 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.9868 * tfactors.T943i + (1.0/3.0) * 13.6822 * tfactors.T923i - + -0.376902 + (5.0/3.0) * -0.0194875 * tfactors.T923 + -8.42325 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 + + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; - // nfisn - ln_set_rate = 40.5626 + -0.514414 * tfactors.T9i + -110.655 * tfactors.T913i + 83.0232 * tfactors.T913 - + -19.7762 * tfactors.T9 + 3.03961 * tfactors.T953 + -49.4742 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i + + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.514414 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -110.655 * tfactors.T943i + (1.0/3.0) * 83.0232 * tfactors.T923i - + -19.7762 + (5.0/3.0) * 3.03961 * tfactors.T923 + -49.4742 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_He4_to_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V47_to_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + He4 --> Mn51 - // V47 + He4 --> Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.8618 + -84.2732 * tfactors.T913i + -2.98061 * tfactors.T913 + + -0.531361 * tfactors.T9 + 0.023612 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.8618 + -84.2732 * tfactors.T913i + -2.98061 * tfactors.T913 - + -0.531361 * tfactors.T9 + 0.023612 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.2732 * tfactors.T943i + (1.0/3.0) * -2.98061 * tfactors.T923i + + -0.531361 + (5.0/3.0) * 0.023612 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.2732 * tfactors.T943i + (1.0/3.0) * -2.98061 * tfactors.T923i - + -0.531361 + (5.0/3.0) * 0.023612 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_n_to_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V48_to_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + n --> V49 - // V48 + n --> V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.8835 + -0.917026 * tfactors.T913 + + -0.109162 * tfactors.T9 + 0.0127488 * tfactors.T953; - // ths8r - ln_set_rate = 17.8835 + -0.917026 * tfactors.T913 - + -0.109162 * tfactors.T9 + 0.0127488 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.917026 * tfactors.T923i + + -0.109162 + (5.0/3.0) * 0.0127488 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.917026 * tfactors.T923i - + -0.109162 + (5.0/3.0) * 0.0127488 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_p_to_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V48_to_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + p --> Cr49 - // V48 + p --> Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.5168 + -34.2123 * tfactors.T913i + 2.51264 * tfactors.T913 + + -2.09211 * tfactors.T9 + 0.219444 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.5168 + -34.2123 * tfactors.T913i + 2.51264 * tfactors.T913 - + -2.09211 * tfactors.T9 + 0.219444 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -34.2123 * tfactors.T943i + (1.0/3.0) * 2.51264 * tfactors.T923i + + -2.09211 + (5.0/3.0) * 0.219444 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -34.2123 * tfactors.T943i + (1.0/3.0) * 2.51264 * tfactors.T923i - + -2.09211 + (5.0/3.0) * 0.219444 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_He4_to_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V48_to_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + He4 --> Mn52 - // V48 + He4 --> Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.5923 + -84.3192 * tfactors.T913i + -8.32959 * tfactors.T913 + + 0.33994 * tfactors.T9 + -0.0359909 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.5923 + -84.3192 * tfactors.T913i + -8.32959 * tfactors.T913 - + 0.33994 * tfactors.T9 + -0.0359909 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.3192 * tfactors.T943i + (1.0/3.0) * -8.32959 * tfactors.T923i + + 0.33994 + (5.0/3.0) * -0.0359909 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.3192 * tfactors.T943i + (1.0/3.0) * -8.32959 * tfactors.T923i - + 0.33994 + (5.0/3.0) * -0.0359909 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_n_to_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V49_to_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + n --> V50 - // V49 + n --> V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.5445 + -1.8725 * tfactors.T913 + + 0.291609 * tfactors.T9 + -0.0370216 * tfactors.T953; - // ths8r - ln_set_rate = 17.5445 + -1.8725 * tfactors.T913 - + 0.291609 * tfactors.T9 + -0.0370216 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.8725 * tfactors.T923i + + 0.291609 + (5.0/3.0) * -0.0370216 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.8725 * tfactors.T923i - + 0.291609 + (5.0/3.0) * -0.0370216 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_p_to_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V49_to_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + p --> Cr50 - // V49 + p --> Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.2335 + -34.217 * tfactors.T913i + 1.28258 * tfactors.T913 + + -1.5098 * tfactors.T9 + 0.142011 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.2335 + -34.217 * tfactors.T913i + 1.28258 * tfactors.T913 - + -1.5098 * tfactors.T9 + 0.142011 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -34.217 * tfactors.T943i + (1.0/3.0) * 1.28258 * tfactors.T923i + + -1.5098 + (5.0/3.0) * 0.142011 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -34.217 * tfactors.T943i + (1.0/3.0) * 1.28258 * tfactors.T923i - + -1.5098 + (5.0/3.0) * 0.142011 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_He4_to_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V49_to_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + He4 --> Mn53 - // V49 + He4 --> Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.4555 + -84.3633 * tfactors.T913i + -5.28933 * tfactors.T913 + + -1.3103 * tfactors.T9 + 0.187088 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.4555 + -84.3633 * tfactors.T913i + -5.28933 * tfactors.T913 - + -1.3103 * tfactors.T9 + 0.187088 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.3633 * tfactors.T943i + (1.0/3.0) * -5.28933 * tfactors.T923i + + -1.3103 + (5.0/3.0) * 0.187088 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.3633 * tfactors.T943i + (1.0/3.0) * -5.28933 * tfactors.T923i - + -1.3103 + (5.0/3.0) * 0.187088 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_n_to_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V50_to_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + n --> V51 - // V50 + n --> V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 26.4771 + -0.118554 * tfactors.T9i + 10.9535 * tfactors.T913i + -23.1254 * tfactors.T913 + + 1.53091 * tfactors.T9 + -0.0992995 * tfactors.T953 + 9.62203 * tfactors.lnT9; - // ks03 - ln_set_rate = 26.4771 + -0.118554 * tfactors.T9i + 10.9535 * tfactors.T913i + -23.1254 * tfactors.T913 - + 1.53091 * tfactors.T9 + -0.0992995 * tfactors.T953 + 9.62203 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.118554 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 10.9535 * tfactors.T943i + (1.0/3.0) * -23.1254 * tfactors.T923i + + 1.53091 + (5.0/3.0) * -0.0992995 * tfactors.T923 + 9.62203 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.118554 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 10.9535 * tfactors.T943i + (1.0/3.0) * -23.1254 * tfactors.T923i - + 1.53091 + (5.0/3.0) * -0.0992995 * tfactors.T923 + 9.62203 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_p_to_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V50_to_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + p --> Cr51 - // V50 + p --> Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.5894 + -34.2216 * tfactors.T913i + 2.39774 * tfactors.T913 + + -2.15306 * tfactors.T9 + 0.232283 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.5894 + -34.2216 * tfactors.T913i + 2.39774 * tfactors.T913 - + -2.15306 * tfactors.T9 + 0.232283 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 2.39774 * tfactors.T923i + + -2.15306 + (5.0/3.0) * 0.232283 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 2.39774 * tfactors.T923i - + -2.15306 + (5.0/3.0) * 0.232283 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_He4_to_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V50_to_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + He4 --> Mn54 - // V50 + He4 --> Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.3156 + -84.4058 * tfactors.T913i + -6.25173 * tfactors.T913 + + -1.31339 * tfactors.T9 + 0.208695 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.3156 + -84.4058 * tfactors.T913i + -6.25173 * tfactors.T913 - + -1.31339 * tfactors.T9 + 0.208695 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.4058 * tfactors.T943i + (1.0/3.0) * -6.25173 * tfactors.T923i + + -1.31339 + (5.0/3.0) * 0.208695 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.4058 * tfactors.T943i + (1.0/3.0) * -6.25173 * tfactors.T923i - + -1.31339 + (5.0/3.0) * 0.208695 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_n_to_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V51_to_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + n --> V52 - // V51 + n --> V52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 3.43672 + 0.00903385 * tfactors.T9i + -4.14102 * tfactors.T913i + 17.4073 * tfactors.T913 + + -1.59715 * tfactors.T9 + 0.114181 * tfactors.T953 + -5.93987 * tfactors.lnT9; - // ks03 - ln_set_rate = 3.43672 + 0.00903385 * tfactors.T9i + -4.14102 * tfactors.T913i + 17.4073 * tfactors.T913 - + -1.59715 * tfactors.T9 + 0.114181 * tfactors.T953 + -5.93987 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.00903385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.14102 * tfactors.T943i + (1.0/3.0) * 17.4073 * tfactors.T923i + + -1.59715 + (5.0/3.0) * 0.114181 * tfactors.T923 + -5.93987 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.00903385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.14102 * tfactors.T943i + (1.0/3.0) * 17.4073 * tfactors.T923i - + -1.59715 + (5.0/3.0) * 0.114181 * tfactors.T923 + -5.93987 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_p_to_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V51_to_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + p --> Cr52 - // V51 + p --> Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.1505 + -34.2261 * tfactors.T913i + 3.30454 * tfactors.T913 + + -2.61654 * tfactors.T9 + 0.283602 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.1505 + -34.2261 * tfactors.T913i + 3.30454 * tfactors.T913 - + -2.61654 * tfactors.T9 + 0.283602 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -34.2261 * tfactors.T943i + (1.0/3.0) * 3.30454 * tfactors.T923i + + -2.61654 + (5.0/3.0) * 0.283602 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -34.2261 * tfactors.T943i + (1.0/3.0) * 3.30454 * tfactors.T923i - + -2.61654 + (5.0/3.0) * 0.283602 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_He4_to_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V51_to_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + He4 --> Mn55 - // V51 + He4 --> Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.6131 + -84.4467 * tfactors.T913i + -1.29542 * tfactors.T913 + + -3.56909 * tfactors.T9 + 0.513926 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.6131 + -84.4467 * tfactors.T913i + -1.29542 * tfactors.T913 - + -3.56909 * tfactors.T9 + 0.513926 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.4467 * tfactors.T943i + (1.0/3.0) * -1.29542 * tfactors.T923i + + -3.56909 + (5.0/3.0) * 0.513926 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.4467 * tfactors.T943i + (1.0/3.0) * -1.29542 * tfactors.T923i - + -3.56909 + (5.0/3.0) * 0.513926 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V52_p_to_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V52_to_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V52 + p --> Cr53 - // V52 + p --> Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 129.295 + -6.02127 * tfactors.T9i + 224.733 * tfactors.T913i + -373.356 * tfactors.T913 + + 21.346 * tfactors.T9 + -1.24075 * tfactors.T953 + 184.549 * tfactors.lnT9; - // rath - ln_set_rate = 129.295 + -6.02127 * tfactors.T9i + 224.733 * tfactors.T913i + -373.356 * tfactors.T913 - + 21.346 * tfactors.T9 + -1.24075 * tfactors.T953 + 184.549 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.02127 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 224.733 * tfactors.T943i + (1.0/3.0) * -373.356 * tfactors.T923i + + 21.346 + (5.0/3.0) * -1.24075 * tfactors.T923 + 184.549 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.02127 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 224.733 * tfactors.T943i + (1.0/3.0) * -373.356 * tfactors.T923i - + 21.346 + (5.0/3.0) * -1.24075 * tfactors.T923 + 184.549 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_n_to_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr48_to_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + n --> Cr49 - // Cr48 + n --> Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.8544 + -0.000452357 * tfactors.T913 + + 0.0412838 * tfactors.T9 + -0.0160865 * tfactors.T953; - // ths8r - ln_set_rate = 15.8544 + -0.000452357 * tfactors.T913 - + 0.0412838 * tfactors.T9 + -0.0160865 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.000452357 * tfactors.T923i + + 0.0412838 + (5.0/3.0) * -0.0160865 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.000452357 * tfactors.T923i - + 0.0412838 + (5.0/3.0) * -0.0160865 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> Fe52 - // Cr48 + He4 --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 + + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1754 + -86.7459 * tfactors.T913i + -9.79373 * tfactors.T913 - + -0.772169 * tfactors.T9 + 0.155883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i + + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * -9.79373 * tfactors.T923i - + -0.772169 + (5.0/3.0) * 0.155883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_n_to_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr49_to_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 + n --> Cr50 - // Cr49 + n --> Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.8355 + -1.98927 * tfactors.T913 + + 0.465124 * tfactors.T9 + -0.0582249 * tfactors.T953; - // ths8r - ln_set_rate = 17.8355 + -1.98927 * tfactors.T913 - + 0.465124 * tfactors.T9 + -0.0582249 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.98927 * tfactors.T923i + + 0.465124 + (5.0/3.0) * -0.0582249 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.98927 * tfactors.T923i - + 0.465124 + (5.0/3.0) * -0.0582249 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_p_to_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr49_to_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 + p --> Mn50 - // Cr49 + p --> Mn50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.3884 + -35.2018 * tfactors.T913i + 0.168579 * tfactors.T913 + + -2.87983 * tfactors.T9 + 0.378768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.3884 + -35.2018 * tfactors.T913i + 0.168579 * tfactors.T913 - + -2.87983 * tfactors.T9 + 0.378768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.2018 * tfactors.T943i + (1.0/3.0) * 0.168579 * tfactors.T923i + + -2.87983 + (5.0/3.0) * 0.378768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.2018 * tfactors.T943i + (1.0/3.0) * 0.168579 * tfactors.T923i - + -2.87983 + (5.0/3.0) * 0.378768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_He4_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr49_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 + He4 --> Fe53 - // Cr49 + He4 --> Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.1467 + -86.7913 * tfactors.T913i + -6.51572 * tfactors.T913 + + -1.21249 * tfactors.T9 + 0.185473 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.1467 + -86.7913 * tfactors.T913i + -6.51572 * tfactors.T913 - + -1.21249 * tfactors.T9 + 0.185473 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7913 * tfactors.T943i + (1.0/3.0) * -6.51572 * tfactors.T923i + + -1.21249 + (5.0/3.0) * 0.185473 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7913 * tfactors.T943i + (1.0/3.0) * -6.51572 * tfactors.T923i - + -1.21249 + (5.0/3.0) * 0.185473 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_n_to_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr50_to_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + n --> Cr51 - // Cr50 + n --> Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 15.1066 + -0.0225613 * tfactors.T9i + 0.815037 * tfactors.T913i + -0.708732 * tfactors.T913 + + 0.386295 * tfactors.T9 + -0.0615661 * tfactors.T953 + 0.0454627 * tfactors.lnT9; - // ks03 - ln_set_rate = 15.1066 + -0.0225613 * tfactors.T9i + 0.815037 * tfactors.T913i + -0.708732 * tfactors.T913 - + 0.386295 * tfactors.T9 + -0.0615661 * tfactors.T953 + 0.0454627 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0225613 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.815037 * tfactors.T943i + (1.0/3.0) * -0.708732 * tfactors.T923i + + 0.386295 + (5.0/3.0) * -0.0615661 * tfactors.T923 + 0.0454627 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0225613 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.815037 * tfactors.T943i + (1.0/3.0) * -0.708732 * tfactors.T923i - + 0.386295 + (5.0/3.0) * -0.0615661 * tfactors.T923 + 0.0454627 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_p_to_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr50_to_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + p --> Mn51 - // Cr50 + p --> Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.8532 + -35.2065 * tfactors.T913i + 0.884621 * tfactors.T913 + + -1.76421 * tfactors.T9 + 0.202494 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.8532 + -35.2065 * tfactors.T913i + 0.884621 * tfactors.T913 - + -1.76421 * tfactors.T9 + 0.202494 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.2065 * tfactors.T943i + (1.0/3.0) * 0.884621 * tfactors.T923i + + -1.76421 + (5.0/3.0) * 0.202494 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.2065 * tfactors.T943i + (1.0/3.0) * 0.884621 * tfactors.T923i - + -1.76421 + (5.0/3.0) * 0.202494 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_He4_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr50_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + He4 --> Fe54 - // Cr50 + He4 --> Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.7193 + -86.8349 * tfactors.T913i + 2.37343 * tfactors.T913 + + -3.65677 * tfactors.T9 + 0.412128 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.7193 + -86.8349 * tfactors.T913i + 2.37343 * tfactors.T913 - + -3.65677 * tfactors.T9 + 0.412128 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.8349 * tfactors.T943i + (1.0/3.0) * 2.37343 * tfactors.T923i + + -3.65677 + (5.0/3.0) * 0.412128 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.8349 * tfactors.T943i + (1.0/3.0) * 2.37343 * tfactors.T923i - + -3.65677 + (5.0/3.0) * 0.412128 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_n_to_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr51_to_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + n --> Cr52 - // Cr51 + n --> Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 20.1253 + -0.0860167 * tfactors.T9i + 6.95563 * tfactors.T913i + -11.4485 * tfactors.T913 + + 0.736956 * tfactors.T9 + -0.0695323 * tfactors.T953 + 5.31244 * tfactors.lnT9; - // ks03 - ln_set_rate = 20.1253 + -0.0860167 * tfactors.T9i + 6.95563 * tfactors.T913i + -11.4485 * tfactors.T913 - + 0.736956 * tfactors.T9 + -0.0695323 * tfactors.T953 + 5.31244 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0860167 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6.95563 * tfactors.T943i + (1.0/3.0) * -11.4485 * tfactors.T923i + + 0.736956 + (5.0/3.0) * -0.0695323 * tfactors.T923 + 5.31244 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0860167 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6.95563 * tfactors.T943i + (1.0/3.0) * -11.4485 * tfactors.T923i - + 0.736956 + (5.0/3.0) * -0.0695323 * tfactors.T923 + 5.31244 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_p_to_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr51_to_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + p --> Mn52 - // Cr51 + p --> Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.265 + -35.2111 * tfactors.T913i + 1.49375 * tfactors.T913 + + -1.48209 * tfactors.T9 + 0.131902 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.265 + -35.2111 * tfactors.T913i + 1.49375 * tfactors.T913 - + -1.48209 * tfactors.T9 + 0.131902 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.2111 * tfactors.T943i + (1.0/3.0) * 1.49375 * tfactors.T923i + + -1.48209 + (5.0/3.0) * 0.131902 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.2111 * tfactors.T943i + (1.0/3.0) * 1.49375 * tfactors.T923i - + -1.48209 + (5.0/3.0) * 0.131902 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_He4_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr51_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + He4 --> Fe55 - // Cr51 + He4 --> Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.6085 + -86.8771 * tfactors.T913i + -0.0873902 * tfactors.T913 + + -3.40716 * tfactors.T9 + 0.441679 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.6085 + -86.8771 * tfactors.T913i + -0.0873902 * tfactors.T913 - + -3.40716 * tfactors.T9 + 0.441679 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.8771 * tfactors.T943i + (1.0/3.0) * -0.0873902 * tfactors.T923i + + -3.40716 + (5.0/3.0) * 0.441679 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.8771 * tfactors.T943i + (1.0/3.0) * -0.0873902 * tfactors.T923i - + -3.40716 + (5.0/3.0) * 0.441679 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_n_to_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr52_to_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + n --> Cr53 - // Cr52 + n --> Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 27.3183 + -0.0314027 * tfactors.T9i + 5.71728 * tfactors.T913i + -20.4149 * tfactors.T913 + + 1.95304 * tfactors.T9 + -0.175538 * tfactors.T953 + 7.18293 * tfactors.lnT9; - // ks03 - ln_set_rate = 27.3183 + -0.0314027 * tfactors.T9i + 5.71728 * tfactors.T913i + -20.4149 * tfactors.T913 - + 1.95304 * tfactors.T9 + -0.175538 * tfactors.T953 + 7.18293 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0314027 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.71728 * tfactors.T943i + (1.0/3.0) * -20.4149 * tfactors.T923i + + 1.95304 + (5.0/3.0) * -0.175538 * tfactors.T923 + 7.18293 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0314027 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.71728 * tfactors.T943i + (1.0/3.0) * -20.4149 * tfactors.T923i - + 1.95304 + (5.0/3.0) * -0.175538 * tfactors.T923 + 7.18293 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_p_to_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr52_to_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + p --> Mn53 - // Cr52 + p --> Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.6954 + -35.2154 * tfactors.T913i + 0.73019 * tfactors.T913 + + -1.26018 * tfactors.T9 + 0.121141 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.6954 + -35.2154 * tfactors.T913i + 0.73019 * tfactors.T913 - + -1.26018 * tfactors.T9 + 0.121141 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.2154 * tfactors.T943i + (1.0/3.0) * 0.73019 * tfactors.T923i + + -1.26018 + (5.0/3.0) * 0.121141 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.2154 * tfactors.T943i + (1.0/3.0) * 0.73019 * tfactors.T923i - + -1.26018 + (5.0/3.0) * 0.121141 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_He4_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr52_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + He4 --> Fe56 - // Cr52 + He4 --> Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.0146 + -86.9175 * tfactors.T913i + 5.655 * tfactors.T913 + + -4.53625 * tfactors.T9 + 0.479806 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.0146 + -86.9175 * tfactors.T913i + 5.655 * tfactors.T913 - + -4.53625 * tfactors.T9 + 0.479806 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.9175 * tfactors.T943i + (1.0/3.0) * 5.655 * tfactors.T923i + + -4.53625 + (5.0/3.0) * 0.479806 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.9175 * tfactors.T943i + (1.0/3.0) * 5.655 * tfactors.T923i - + -4.53625 + (5.0/3.0) * 0.479806 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_n_to_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr53_to_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 + n --> Cr54 - // Cr53 + n --> Cr54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 10.8793 + -0.00984544 * tfactors.T9i + -1.26805 * tfactors.T913i + 6.34126 * tfactors.T913 + + -0.39287 * tfactors.T9 + 0.000487041 * tfactors.T953 + -2.46456 * tfactors.lnT9; - // ks03 - ln_set_rate = 10.8793 + -0.00984544 * tfactors.T9i + -1.26805 * tfactors.T913i + 6.34126 * tfactors.T913 - + -0.39287 * tfactors.T9 + 0.000487041 * tfactors.T953 + -2.46456 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00984544 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.26805 * tfactors.T943i + (1.0/3.0) * 6.34126 * tfactors.T923i + + -0.39287 + (5.0/3.0) * 0.000487041 * tfactors.T923 + -2.46456 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00984544 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.26805 * tfactors.T943i + (1.0/3.0) * 6.34126 * tfactors.T923i - + -0.39287 + (5.0/3.0) * 0.000487041 * tfactors.T923 + -2.46456 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_p_to_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr53_to_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 + p --> Mn54 - // Cr53 + p --> Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.2032 + -35.2197 * tfactors.T913i + 3.74805 * tfactors.T913 + + -2.77987 * tfactors.T9 + 0.296885 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.2032 + -35.2197 * tfactors.T913i + 3.74805 * tfactors.T913 - + -2.77987 * tfactors.T9 + 0.296885 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.2197 * tfactors.T943i + (1.0/3.0) * 3.74805 * tfactors.T923i + + -2.77987 + (5.0/3.0) * 0.296885 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.2197 * tfactors.T943i + (1.0/3.0) * 3.74805 * tfactors.T923i - + -2.77987 + (5.0/3.0) * 0.296885 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_He4_to_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr53_to_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 + He4 --> Fe57 - // Cr53 + He4 --> Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.95 + -86.9567 * tfactors.T913i + -12.0579 * tfactors.T913 + + 1.33466 * tfactors.T9 + -0.14709 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.95 + -86.9567 * tfactors.T913i + -12.0579 * tfactors.T913 - + 1.33466 * tfactors.T9 + -0.14709 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.9567 * tfactors.T943i + (1.0/3.0) * -12.0579 * tfactors.T923i + + 1.33466 + (5.0/3.0) * -0.14709 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.9567 * tfactors.T943i + (1.0/3.0) * -12.0579 * tfactors.T923i - + 1.33466 + (5.0/3.0) * -0.14709 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr54_p_to_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr54_to_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr54 + p --> Mn55 - // Cr54 + p --> Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.9354 + -35.2237 * tfactors.T913i + 2.60768 * tfactors.T913 + + -1.7864 * tfactors.T9 + 0.134189 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.9354 + -35.2237 * tfactors.T913i + 2.60768 * tfactors.T913 - + -1.7864 * tfactors.T9 + 0.134189 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.2237 * tfactors.T943i + (1.0/3.0) * 2.60768 * tfactors.T923i + + -1.7864 + (5.0/3.0) * 0.134189 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.2237 * tfactors.T943i + (1.0/3.0) * 2.60768 * tfactors.T923i - + -1.7864 + (5.0/3.0) * 0.134189 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr54_He4_to_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr54_to_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr54 + He4 --> Fe58 - // Cr54 + He4 --> Fe58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.2926 + -86.9945 * tfactors.T913i + -1.05674 * tfactors.T913 + + -4.13443 * tfactors.T9 + 0.599141 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.2926 + -86.9945 * tfactors.T913i + -1.05674 * tfactors.T913 - + -4.13443 * tfactors.T9 + 0.599141 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.9945 * tfactors.T943i + (1.0/3.0) * -1.05674 * tfactors.T923i + + -4.13443 + (5.0/3.0) * 0.599141 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.9945 * tfactors.T943i + (1.0/3.0) * -1.05674 * tfactors.T923i - + -4.13443 + (5.0/3.0) * 0.599141 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn50_n_to_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn50_to_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn50 + n --> Mn51 - // Mn50 + n --> Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.4434 + -0.538879 * tfactors.T913 + + 0.284528 * tfactors.T9 + -0.0459849 * tfactors.T953; - // ths8r - ln_set_rate = 15.4434 + -0.538879 * tfactors.T913 - + 0.284528 * tfactors.T9 + -0.0459849 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.538879 * tfactors.T923i + + 0.284528 + (5.0/3.0) * -0.0459849 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.538879 * tfactors.T923i - + 0.284528 + (5.0/3.0) * -0.0459849 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn50_He4_to_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn50_to_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn50 + He4 --> Co54 - // Mn50 + He4 --> Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.3174 + -89.2309 * tfactors.T913i + -1.30702 * tfactors.T913 + + -1.30543 * tfactors.T9 + 0.141679 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.3174 + -89.2309 * tfactors.T913i + -1.30702 * tfactors.T913 - + -1.30543 * tfactors.T9 + 0.141679 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.2309 * tfactors.T943i + (1.0/3.0) * -1.30702 * tfactors.T923i + + -1.30543 + (5.0/3.0) * 0.141679 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.2309 * tfactors.T943i + (1.0/3.0) * -1.30702 * tfactors.T923i - + -1.30543 + (5.0/3.0) * 0.141679 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_n_to_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn51_to_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + n --> Mn52 - // Mn51 + n --> Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.2055 + -1.83611 * tfactors.T913 + + 0.460384 * tfactors.T9 + -0.0584947 * tfactors.T953; - // ths8r - ln_set_rate = 17.2055 + -1.83611 * tfactors.T913 - + 0.460384 * tfactors.T9 + -0.0584947 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.83611 * tfactors.T923i + + 0.460384 + (5.0/3.0) * -0.0584947 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.83611 * tfactors.T923i - + 0.460384 + (5.0/3.0) * -0.0584947 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> Fe52 - // Mn51 + p --> Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 + + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2596 + -36.1825 * tfactors.T913i + 0.873042 * tfactors.T913 - + -2.89731 * tfactors.T9 + 0.364394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i + + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1825 * tfactors.T943i + (1.0/3.0) * 0.873042 * tfactors.T923i - + -2.89731 + (5.0/3.0) * 0.364394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> Co55 - // Mn51 + He4 --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 + + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.9219 + -89.274 * tfactors.T913i + -10.4373 * tfactors.T913 - + 1.00492 * tfactors.T9 + -0.125548 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i + + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -10.4373 * tfactors.T923i - + 1.00492 + (5.0/3.0) * -0.125548 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_n_to_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn52_to_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + n --> Mn53 - // Mn52 + n --> Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.0941 + -0.91084 * tfactors.T913 + + 0.162511 * tfactors.T9 + -0.0279619 * tfactors.T953; - // ths8r - ln_set_rate = 17.0941 + -0.91084 * tfactors.T913 - + 0.162511 * tfactors.T9 + -0.0279619 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.91084 * tfactors.T923i + + 0.162511 + (5.0/3.0) * -0.0279619 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.91084 * tfactors.T923i - + 0.162511 + (5.0/3.0) * -0.0279619 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_p_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn52_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + p --> Fe53 - // Mn52 + p --> Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.4319 + -36.187 * tfactors.T913i + 1.79171 * tfactors.T913 + + -1.77786 * tfactors.T9 + 0.179936 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.4319 + -36.187 * tfactors.T913i + 1.79171 * tfactors.T913 - + -1.77786 * tfactors.T9 + 0.179936 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.187 * tfactors.T943i + (1.0/3.0) * 1.79171 * tfactors.T923i + + -1.77786 + (5.0/3.0) * 0.179936 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.187 * tfactors.T943i + (1.0/3.0) * 1.79171 * tfactors.T923i - + -1.77786 + (5.0/3.0) * 0.179936 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_He4_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn52_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + He4 --> Co56 - // Mn52 + He4 --> Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.5657 + -89.3157 * tfactors.T913i + -1.95982 * tfactors.T913 + + -2.45671 * tfactors.T9 + 0.296095 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.5657 + -89.3157 * tfactors.T913i + -1.95982 * tfactors.T913 - + -2.45671 * tfactors.T9 + 0.296095 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.3157 * tfactors.T943i + (1.0/3.0) * -1.95982 * tfactors.T923i + + -2.45671 + (5.0/3.0) * 0.296095 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.3157 * tfactors.T943i + (1.0/3.0) * -1.95982 * tfactors.T923i - + -2.45671 + (5.0/3.0) * 0.296095 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_n_to_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn53_to_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + n --> Mn54 - // Mn53 + n --> Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.3501 + -1.70171 * tfactors.T913 + + 0.386422 * tfactors.T9 + -0.0536858 * tfactors.T953; - // ths8r - ln_set_rate = 17.3501 + -1.70171 * tfactors.T913 - + 0.386422 * tfactors.T9 + -0.0536858 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.70171 * tfactors.T923i + + 0.386422 + (5.0/3.0) * -0.0536858 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.70171 * tfactors.T923i - + 0.386422 + (5.0/3.0) * -0.0536858 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_p_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn53_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + p --> Fe54 - // Mn53 + p --> Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.586 + -36.1913 * tfactors.T913i + 1.44056 * tfactors.T913 + + -1.50734 * tfactors.T9 + 0.142124 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.586 + -36.1913 * tfactors.T913i + 1.44056 * tfactors.T913 - + -1.50734 * tfactors.T9 + 0.142124 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1913 * tfactors.T943i + (1.0/3.0) * 1.44056 * tfactors.T923i + + -1.50734 + (5.0/3.0) * 0.142124 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1913 * tfactors.T943i + (1.0/3.0) * 1.44056 * tfactors.T923i - + -1.50734 + (5.0/3.0) * 0.142124 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_He4_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn53_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + He4 --> Co57 - // Mn53 + He4 --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.0252 + -89.3558 * tfactors.T913i + 0.000882861 * tfactors.T913 + + -2.79327 * tfactors.T9 + 0.309057 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.0252 + -89.3558 * tfactors.T913i + 0.000882861 * tfactors.T913 - + -2.79327 * tfactors.T9 + 0.309057 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.3558 * tfactors.T943i + (1.0/3.0) * 0.000882861 * tfactors.T923i + + -2.79327 + (5.0/3.0) * 0.309057 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.3558 * tfactors.T943i + (1.0/3.0) * 0.000882861 * tfactors.T923i - + -2.79327 + (5.0/3.0) * 0.309057 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_n_to_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn54_to_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + n --> Mn55 - // Mn54 + n --> Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.4705 + -2.56572 * tfactors.T913 + + 0.352447 * tfactors.T9 + -0.0375878 * tfactors.T953; - // ths8r - ln_set_rate = 18.4705 + -2.56572 * tfactors.T913 - + 0.352447 * tfactors.T9 + -0.0375878 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.56572 * tfactors.T923i + + 0.352447 + (5.0/3.0) * -0.0375878 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.56572 * tfactors.T923i - + 0.352447 + (5.0/3.0) * -0.0375878 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_p_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn54_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + p --> Fe55 - // Mn54 + p --> Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.55 + -36.1955 * tfactors.T913i + 1.08481 * tfactors.T913 + + -1.46703 * tfactors.T9 + 0.13789 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.55 + -36.1955 * tfactors.T913i + 1.08481 * tfactors.T913 - + -1.46703 * tfactors.T9 + 0.13789 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1955 * tfactors.T943i + (1.0/3.0) * 1.08481 * tfactors.T923i + + -1.46703 + (5.0/3.0) * 0.13789 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1955 * tfactors.T943i + (1.0/3.0) * 1.08481 * tfactors.T923i - + -1.46703 + (5.0/3.0) * 0.13789 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_He4_to_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn54_to_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + He4 --> Co58 - // Mn54 + He4 --> Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 67.6083 + -89.3946 * tfactors.T913i + -8.26476 * tfactors.T913 + + -0.766622 * tfactors.T9 + 0.135181 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 67.6083 + -89.3946 * tfactors.T913i + -8.26476 * tfactors.T913 - + -0.766622 * tfactors.T9 + 0.135181 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.3946 * tfactors.T943i + (1.0/3.0) * -8.26476 * tfactors.T923i + + -0.766622 + (5.0/3.0) * 0.135181 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.3946 * tfactors.T943i + (1.0/3.0) * -8.26476 * tfactors.T923i - + -0.766622 + (5.0/3.0) * 0.135181 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_p_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn55_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 + p --> Fe56 - // Mn55 + p --> Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.1888 + -36.1995 * tfactors.T913i + 1.15346 * tfactors.T913 + + -1.94437 * tfactors.T9 + 0.218429 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.1888 + -36.1995 * tfactors.T913i + 1.15346 * tfactors.T913 - + -1.94437 * tfactors.T9 + 0.218429 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 1.15346 * tfactors.T923i + + -1.94437 + (5.0/3.0) * 0.218429 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 1.15346 * tfactors.T923i - + -1.94437 + (5.0/3.0) * 0.218429 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_He4_to_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn55_to_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 + He4 --> Co59 - // Mn55 + He4 --> Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.0838 + -89.432 * tfactors.T913i + 5.33428 * tfactors.T913 + + -5.11461 * tfactors.T9 + 0.613808 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.0838 + -89.432 * tfactors.T913i + 5.33428 * tfactors.T913 - + -5.11461 * tfactors.T9 + 0.613808 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.432 * tfactors.T943i + (1.0/3.0) * 5.33428 * tfactors.T923i + + -5.11461 + (5.0/3.0) * 0.613808 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.432 * tfactors.T943i + (1.0/3.0) * 5.33428 * tfactors.T923i - + -5.11461 + (5.0/3.0) * 0.613808 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe52_to_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + n --> Fe53 - // Fe52 + n --> Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.8885 + -0.344319 * tfactors.T913 + + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; - // ths8r - ln_set_rate = 15.8885 + -0.344319 * tfactors.T913 - + 0.178277 * tfactors.T9 + -0.0334326 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i + + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.344319 * tfactors.T923i - + 0.178277 + (5.0/3.0) * -0.0334326 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_p_to_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe52_to_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + p --> Co53 - // Fe52 + p --> Co53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 39.2879 + -37.1457 * tfactors.T913i + -5.67417 * tfactors.T913 + + -0.559644 * tfactors.T9 + 0.102768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 39.2879 + -37.1457 * tfactors.T913i + -5.67417 * tfactors.T913 - + -0.559644 * tfactors.T9 + 0.102768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1457 * tfactors.T943i + (1.0/3.0) * -5.67417 * tfactors.T923i + + -0.559644 + (5.0/3.0) * 0.102768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1457 * tfactors.T943i + (1.0/3.0) * -5.67417 * tfactors.T923i - + -0.559644 + (5.0/3.0) * 0.102768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> Ni56 - // Fe52 + He4 --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 + + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.6417 + -91.6819 * tfactors.T913i + -9.51885 * tfactors.T913 - + -0.533014 * tfactors.T9 + 0.0892607 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i + + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -9.51885 * tfactors.T923i - + -0.533014 + (5.0/3.0) * 0.0892607 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_n_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe53_to_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + n --> Fe54 - // Fe53 + n --> Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4534 + -1.10421 * tfactors.T913 + + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; - // ths8r - ln_set_rate = 16.4534 + -1.10421 * tfactors.T913 - + 0.379905 * tfactors.T9 + -0.0581878 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i + + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.10421 * tfactors.T923i - + 0.379905 + (5.0/3.0) * -0.0581878 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_p_to_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe53_to_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + p --> Co54 - // Fe53 + p --> Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8739 + -37.1501 * tfactors.T913i + 0.211459 * tfactors.T913 + + -2.79493 * tfactors.T9 + 0.358657 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8739 + -37.1501 * tfactors.T913i + 0.211459 * tfactors.T913 - + -2.79493 * tfactors.T9 + 0.358657 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1501 * tfactors.T943i + (1.0/3.0) * 0.211459 * tfactors.T923i + + -2.79493 + (5.0/3.0) * 0.358657 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1501 * tfactors.T943i + (1.0/3.0) * 0.211459 * tfactors.T923i - + -2.79493 + (5.0/3.0) * 0.358657 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_He4_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe53_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + He4 --> Ni57 - // Fe53 + He4 --> Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 69.0636 + -91.7231 * tfactors.T913i + -10.1816 * tfactors.T913 + + -0.0406303 * tfactors.T9 + 0.0345056 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 69.0636 + -91.7231 * tfactors.T913i + -10.1816 * tfactors.T913 - + -0.0406303 * tfactors.T9 + 0.0345056 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * -10.1816 * tfactors.T923i + + -0.0406303 + (5.0/3.0) * 0.0345056 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * -10.1816 * tfactors.T923i - + -0.0406303 + (5.0/3.0) * 0.0345056 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe54_to_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + n --> Fe55 - // Fe54 + n --> Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 + + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; - // ks03 - ln_set_rate = -0.80864 + 0.0591716 * tfactors.T9i + -8.66617 * tfactors.T913i + 26.4472 * tfactors.T913 - + -1.9222 * tfactors.T9 + 0.0986404 * tfactors.T953 + -9.78317 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i + + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0591716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.66617 * tfactors.T943i + (1.0/3.0) * 26.4472 * tfactors.T923i - + -1.9222 + (5.0/3.0) * 0.0986404 * tfactors.T923 + -9.78317 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe54_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + p --> Co55 - // Fe54 + p --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 + + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2304 + -37.1544 * tfactors.T913i + 0.950364 * tfactors.T913 - + -1.77529 * tfactors.T9 + 0.198562 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i + + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1544 * tfactors.T943i + (1.0/3.0) * 0.950364 * tfactors.T923i - + -1.77529 + (5.0/3.0) * 0.198562 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + He4 --> Ni58 - // Fe54 + He4 --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 + + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.2478 + -91.7628 * tfactors.T913i + 4.23027 * tfactors.T913 - + -3.31305 * tfactors.T9 + 0.271293 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i + + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.7628 * tfactors.T943i + (1.0/3.0) * 4.23027 * tfactors.T923i - + -3.31305 + (5.0/3.0) * 0.271293 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_n_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe55_to_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + n --> Fe56 - // Fe55 + n --> Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 + + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; - // ks03 - ln_set_rate = 21.7202 + -0.0955677 * tfactors.T9i + 8.06062 * tfactors.T913i + -14.4809 * tfactors.T913 - + 0.94252 * tfactors.T9 + -0.0776007 * tfactors.T953 + 6.47093 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i + + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0955677 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.06062 * tfactors.T943i + (1.0/3.0) * -14.4809 * tfactors.T923i - + 0.94252 + (5.0/3.0) * -0.0776007 * tfactors.T923 + 6.47093 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_p_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe55_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + p --> Co56 - // Fe55 + p --> Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.7333 + -37.1585 * tfactors.T913i + 1.66198 * tfactors.T913 + + -1.60842 * tfactors.T9 + 0.148916 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.7333 + -37.1585 * tfactors.T913i + 1.66198 * tfactors.T913 - + -1.60842 * tfactors.T9 + 0.148916 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1585 * tfactors.T943i + (1.0/3.0) * 1.66198 * tfactors.T923i + + -1.60842 + (5.0/3.0) * 0.148916 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1585 * tfactors.T943i + (1.0/3.0) * 1.66198 * tfactors.T923i - + -1.60842 + (5.0/3.0) * 0.148916 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_He4_to_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe55_to_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + He4 --> Ni59 - // Fe55 + He4 --> Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.7732 + -91.8012 * tfactors.T913i + 4.12067 * tfactors.T913 + + -4.13271 * tfactors.T9 + 0.450006 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.7732 + -91.8012 * tfactors.T913i + 4.12067 * tfactors.T913 - + -4.13271 * tfactors.T9 + 0.450006 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.8012 * tfactors.T943i + (1.0/3.0) * 4.12067 * tfactors.T923i + + -4.13271 + (5.0/3.0) * 0.450006 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.8012 * tfactors.T943i + (1.0/3.0) * 4.12067 * tfactors.T923i - + -4.13271 + (5.0/3.0) * 0.450006 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_n_to_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe56_to_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + n --> Fe57 - // Fe56 + n --> Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 35.834 + -0.0600873 * tfactors.T9i + 9.79414 * tfactors.T913i + -33.7366 * tfactors.T913 + + 2.97173 * tfactors.T9 + -0.236498 * tfactors.T953 + 11.8711 * tfactors.lnT9; - // ks03 - ln_set_rate = 35.834 + -0.0600873 * tfactors.T9i + 9.79414 * tfactors.T913i + -33.7366 * tfactors.T913 - + 2.97173 * tfactors.T9 + -0.236498 * tfactors.T953 + 11.8711 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0600873 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.79414 * tfactors.T943i + (1.0/3.0) * -33.7366 * tfactors.T923i + + 2.97173 + (5.0/3.0) * -0.236498 * tfactors.T923 + 11.8711 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0600873 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.79414 * tfactors.T943i + (1.0/3.0) * -33.7366 * tfactors.T923i - + 2.97173 + (5.0/3.0) * -0.236498 * tfactors.T923 + 11.8711 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe56_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + p --> Co57 - // Fe56 + p --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 + + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0665 + -37.1625 * tfactors.T913i + 1.06776 * tfactors.T913 - + -1.31689 * tfactors.T9 + 0.122089 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i + + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1625 * tfactors.T943i + (1.0/3.0) * 1.06776 * tfactors.T923i - + -1.31689 + (5.0/3.0) * 0.122089 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_He4_to_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe56_to_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + He4 --> Ni60 - // Fe56 + He4 --> Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.6673 + -91.8383 * tfactors.T913i + 3.63237 * tfactors.T913 + + -2.73367 * tfactors.T9 + 0.179684 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.6673 + -91.8383 * tfactors.T913i + 3.63237 * tfactors.T913 - + -2.73367 * tfactors.T9 + 0.179684 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.8383 * tfactors.T943i + (1.0/3.0) * 3.63237 * tfactors.T923i + + -2.73367 + (5.0/3.0) * 0.179684 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.8383 * tfactors.T943i + (1.0/3.0) * 3.63237 * tfactors.T923i - + -2.73367 + (5.0/3.0) * 0.179684 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_n_to_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe57_to_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 + n --> Fe58 - // Fe57 + n --> Fe58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 20.2493 + -0.0214497 * tfactors.T9i + 2.1643 * tfactors.T913i + -7.49584 * tfactors.T913 + + 0.656354 * tfactors.T9 + -0.0549855 * tfactors.T953 + 2.38149 * tfactors.lnT9; - // ks03 - ln_set_rate = 20.2493 + -0.0214497 * tfactors.T9i + 2.1643 * tfactors.T913i + -7.49584 * tfactors.T913 - + 0.656354 * tfactors.T9 + -0.0549855 * tfactors.T953 + 2.38149 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0214497 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.1643 * tfactors.T943i + (1.0/3.0) * -7.49584 * tfactors.T923i + + 0.656354 + (5.0/3.0) * -0.0549855 * tfactors.T923 + 2.38149 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0214497 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.1643 * tfactors.T943i + (1.0/3.0) * -7.49584 * tfactors.T923i - + 0.656354 + (5.0/3.0) * -0.0549855 * tfactors.T923 + 2.38149 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_p_to_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe57_to_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 + p --> Co58 - // Fe57 + p --> Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.269 + -37.1663 * tfactors.T913i + 3.48503 * tfactors.T913 + + -2.56204 * tfactors.T9 + 0.272972 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.269 + -37.1663 * tfactors.T913i + 3.48503 * tfactors.T913 - + -2.56204 * tfactors.T9 + 0.272972 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1663 * tfactors.T943i + (1.0/3.0) * 3.48503 * tfactors.T923i + + -2.56204 + (5.0/3.0) * 0.272972 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1663 * tfactors.T943i + (1.0/3.0) * 3.48503 * tfactors.T923i - + -2.56204 + (5.0/3.0) * 0.272972 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_He4_to_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe57_to_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 + He4 --> Ni61 - // Fe57 + He4 --> Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.184 + -91.8742 * tfactors.T913i + -4.07595 * tfactors.T913 + + -1.93027 * tfactors.T9 + 0.240619 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.184 + -91.8742 * tfactors.T913i + -4.07595 * tfactors.T913 - + -1.93027 * tfactors.T9 + 0.240619 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.8742 * tfactors.T943i + (1.0/3.0) * -4.07595 * tfactors.T923i + + -1.93027 + (5.0/3.0) * 0.240619 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.8742 * tfactors.T943i + (1.0/3.0) * -4.07595 * tfactors.T923i - + -1.93027 + (5.0/3.0) * 0.240619 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe58_p_to_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe58_to_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe58 + p --> Co59 - // Fe58 + p --> Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.2182 + -37.17 * tfactors.T913i + 1.63285 * tfactors.T913 + + -1.16636 * tfactors.T9 + 0.0508619 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.2182 + -37.17 * tfactors.T913i + 1.63285 * tfactors.T913 - + -1.16636 * tfactors.T9 + 0.0508619 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.17 * tfactors.T943i + (1.0/3.0) * 1.63285 * tfactors.T923i + + -1.16636 + (5.0/3.0) * 0.0508619 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.17 * tfactors.T943i + (1.0/3.0) * 1.63285 * tfactors.T923i - + -1.16636 + (5.0/3.0) * 0.0508619 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe58_He4_to_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe58_to_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe58 + He4 --> Ni62 - // Fe58 + He4 --> Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.393 + -91.9089 * tfactors.T913i + 8.18581 * tfactors.T913 + + -6.00824 * tfactors.T9 + 0.693434 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.393 + -91.9089 * tfactors.T913i + 8.18581 * tfactors.T913 - + -6.00824 * tfactors.T9 + 0.693434 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.9089 * tfactors.T943i + (1.0/3.0) * 8.18581 * tfactors.T923i + + -6.00824 + (5.0/3.0) * 0.693434 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.9089 * tfactors.T943i + (1.0/3.0) * 8.18581 * tfactors.T923i - + -6.00824 + (5.0/3.0) * 0.693434 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co53_n_to_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co53_to_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co53 + n --> Co54 - // Co53 + n --> Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.2037 + -1.14795 * tfactors.T913 + + 0.413083 * tfactors.T9 + -0.0515627 * tfactors.T953; - // ths8r - ln_set_rate = 11.2037 + -1.14795 * tfactors.T913 - + 0.413083 * tfactors.T9 + -0.0515627 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.14795 * tfactors.T923i + + 0.413083 + (5.0/3.0) * -0.0515627 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.14795 * tfactors.T923i - + 0.413083 + (5.0/3.0) * -0.0515627 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co53_He4_to_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co53_to_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co53 + He4 --> Cu57 - // Co53 + He4 --> Cu57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.9319 + -94.0605 * tfactors.T913i + -2.61232 * tfactors.T913 + + -0.4397 * tfactors.T9 + -0.00420698 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.9319 + -94.0605 * tfactors.T913i + -2.61232 * tfactors.T913 - + -0.4397 * tfactors.T9 + -0.00420698 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.0605 * tfactors.T943i + (1.0/3.0) * -2.61232 * tfactors.T923i + + -0.4397 + (5.0/3.0) * -0.00420698 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.0605 * tfactors.T943i + (1.0/3.0) * -2.61232 * tfactors.T923i - + -0.4397 + (5.0/3.0) * -0.00420698 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_n_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co54_to_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 + n --> Co55 - // Co54 + n --> Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.3761 + 0.433187 * tfactors.T913 + + 0.0888642 * tfactors.T9 + -0.0315521 * tfactors.T953; - // ths8r - ln_set_rate = 14.3761 + 0.433187 * tfactors.T913 - + 0.0888642 * tfactors.T9 + -0.0315521 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.433187 * tfactors.T923i + + 0.0888642 + (5.0/3.0) * -0.0315521 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.433187 * tfactors.T923i - + 0.0888642 + (5.0/3.0) * -0.0315521 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_He4_to_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co54_to_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 + He4 --> Cu58 - // Co54 + He4 --> Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 55.6899 + -94.1012 * tfactors.T913i + 7.09095 * tfactors.T913 + + -5.85934 * tfactors.T9 + 0.728369 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 55.6899 + -94.1012 * tfactors.T913i + 7.09095 * tfactors.T913 - + -5.85934 * tfactors.T9 + 0.728369 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1012 * tfactors.T943i + (1.0/3.0) * 7.09095 * tfactors.T923i + + -5.85934 + (5.0/3.0) * 0.728369 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1012 * tfactors.T943i + (1.0/3.0) * 7.09095 * tfactors.T923i - + -5.85934 + (5.0/3.0) * 0.728369 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_n_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co55_to_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + n --> Co56 - // Co55 + n --> Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.065 + -1.86357 * tfactors.T913 + + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; - // ths8r - ln_set_rate = 17.065 + -1.86357 * tfactors.T913 - + 0.616591 * tfactors.T9 + -0.0839313 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i + + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.86357 * tfactors.T923i - + 0.616591 + (5.0/3.0) * -0.0839313 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> Ni56 - // Co55 + p --> Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 + + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.3736 + -38.1053 * tfactors.T913i + -0.210947 * tfactors.T913 - + -2.68377 * tfactors.T9 + 0.355814 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i + + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1053 * tfactors.T943i + (1.0/3.0) * -0.210947 * tfactors.T923i - + -2.68377 + (5.0/3.0) * 0.355814 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_He4_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co55_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + He4 --> Cu59 - // Co55 + He4 --> Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.2921 + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 + + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.2921 + -94.1404 * tfactors.T913i + -2.62786 * tfactors.T913 - + -2.12066 * tfactors.T9 + 0.237999 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i + + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * -2.62786 * tfactors.T923i - + -2.12066 + (5.0/3.0) * 0.237999 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> Co57 - // Co56 + n --> Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.3552 + -1.37855 * tfactors.T913 + + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; - // ths8r - ln_set_rate = 17.3552 + -1.37855 * tfactors.T913 - + 0.299896 * tfactors.T9 + -0.04382 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i + + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.37855 * tfactors.T923i - + 0.299896 + (5.0/3.0) * -0.04382 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co56_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + p --> Ni57 - // Co56 + p --> Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.5937 + -38.1094 * tfactors.T913i + 2.57091 * tfactors.T913 + + -2.07795 * tfactors.T9 + 0.20757 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.5937 + -38.1094 * tfactors.T913i + 2.57091 * tfactors.T913 - + -2.07795 * tfactors.T9 + 0.20757 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1094 * tfactors.T943i + (1.0/3.0) * 2.57091 * tfactors.T923i + + -2.07795 + (5.0/3.0) * 0.20757 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1094 * tfactors.T943i + (1.0/3.0) * 2.57091 * tfactors.T923i - + -2.07795 + (5.0/3.0) * 0.20757 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_He4_to_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co56_to_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + He4 --> Cu60 - // Co56 + He4 --> Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.4774 + -94.1784 * tfactors.T913i + -1.94118 * tfactors.T913 + + -2.35306 * tfactors.T9 + 0.265186 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.4774 + -94.1784 * tfactors.T913i + -1.94118 * tfactors.T913 - + -2.35306 * tfactors.T9 + 0.265186 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1784 * tfactors.T943i + (1.0/3.0) * -1.94118 * tfactors.T923i + + -2.35306 + (5.0/3.0) * 0.265186 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1784 * tfactors.T943i + (1.0/3.0) * -1.94118 * tfactors.T923i - + -2.35306 + (5.0/3.0) * 0.265186 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_n_to_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co57_to_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + n --> Co58 - // Co57 + n --> Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.9961 + -1.03654 * tfactors.T913 + + 0.342218 * tfactors.T9 + -0.0638367 * tfactors.T953; - // ths8r - ln_set_rate = 16.9961 + -1.03654 * tfactors.T913 - + 0.342218 * tfactors.T9 + -0.0638367 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.03654 * tfactors.T923i + + 0.342218 + (5.0/3.0) * -0.0638367 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.03654 * tfactors.T923i - + 0.342218 + (5.0/3.0) * -0.0638367 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co57_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p --> Ni58 - // Co57 + p --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 + + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0159 + -38.1133 * tfactors.T913i + 1.77414 * tfactors.T913 - + -1.48268 * tfactors.T9 + 0.121073 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i + + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 1.77414 * tfactors.T923i - + -1.48268 + (5.0/3.0) * 0.121073 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_He4_to_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co57_to_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + He4 --> Cu61 - // Co57 + He4 --> Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.6068 + -94.2152 * tfactors.T913i + 0.976269 * tfactors.T913 + + -2.37283 * tfactors.T9 + 0.195501 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.6068 + -94.2152 * tfactors.T913i + 0.976269 * tfactors.T913 - + -2.37283 * tfactors.T9 + 0.195501 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.2152 * tfactors.T943i + (1.0/3.0) * 0.976269 * tfactors.T923i + + -2.37283 + (5.0/3.0) * 0.195501 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.2152 * tfactors.T943i + (1.0/3.0) * 0.976269 * tfactors.T923i - + -2.37283 + (5.0/3.0) * 0.195501 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_n_to_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co58_to_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + n --> Co59 - // Co58 + n --> Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.1906 + -2.18418 * tfactors.T913 + + 0.328629 * tfactors.T9 + -0.0407234 * tfactors.T953; - // ths8r - ln_set_rate = 18.1906 + -2.18418 * tfactors.T913 - + 0.328629 * tfactors.T9 + -0.0407234 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.18418 * tfactors.T923i + + 0.328629 + (5.0/3.0) * -0.0407234 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.18418 * tfactors.T923i - + 0.328629 + (5.0/3.0) * -0.0407234 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_p_to_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co58_to_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + p --> Ni59 - // Co58 + p --> Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.1058 + -38.1171 * tfactors.T913i + 1.68645 * tfactors.T913 + + -1.51404 * tfactors.T9 + 0.126766 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.1058 + -38.1171 * tfactors.T913i + 1.68645 * tfactors.T913 - + -1.51404 * tfactors.T9 + 0.126766 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1171 * tfactors.T943i + (1.0/3.0) * 1.68645 * tfactors.T923i + + -1.51404 + (5.0/3.0) * 0.126766 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1171 * tfactors.T943i + (1.0/3.0) * 1.68645 * tfactors.T923i - + -1.51404 + (5.0/3.0) * 0.126766 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_He4_to_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co58_to_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + He4 --> Cu62 - // Co58 + He4 --> Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.7079 + -94.2508 * tfactors.T913i + 1.47146 * tfactors.T913 + + -2.87996 * tfactors.T9 + 0.26554 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.7079 + -94.2508 * tfactors.T913i + 1.47146 * tfactors.T913 - + -2.87996 * tfactors.T9 + 0.26554 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.2508 * tfactors.T943i + (1.0/3.0) * 1.47146 * tfactors.T923i + + -2.87996 + (5.0/3.0) * 0.26554 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.2508 * tfactors.T943i + (1.0/3.0) * 1.47146 * tfactors.T923i - + -2.87996 + (5.0/3.0) * 0.26554 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_p_to_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co59_to_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 + p --> Ni60 - // Co59 + p --> Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.957 + -38.1208 * tfactors.T913i + 2.42609 * tfactors.T913 + + -1.5885 * tfactors.T9 + 0.110313 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.957 + -38.1208 * tfactors.T913i + 2.42609 * tfactors.T913 - + -1.5885 * tfactors.T9 + 0.110313 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1208 * tfactors.T943i + (1.0/3.0) * 2.42609 * tfactors.T923i + + -1.5885 + (5.0/3.0) * 0.110313 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1208 * tfactors.T943i + (1.0/3.0) * 2.42609 * tfactors.T923i - + -1.5885 + (5.0/3.0) * 0.110313 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_He4_to_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co59_to_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 + He4 --> Cu63 - // Co59 + He4 --> Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.425 + -94.2852 * tfactors.T913i + 1.64751 * tfactors.T913 + + -2.1637 * tfactors.T9 + 0.119598 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.425 + -94.2852 * tfactors.T913i + 1.64751 * tfactors.T913 - + -2.1637 * tfactors.T9 + 0.119598 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.2852 * tfactors.T943i + (1.0/3.0) * 1.64751 * tfactors.T923i + + -2.1637 + (5.0/3.0) * 0.119598 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.2852 * tfactors.T943i + (1.0/3.0) * 1.64751 * tfactors.T923i - + -2.1637 + (5.0/3.0) * 0.119598 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> Ni57 - // Ni56 + n --> Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.0765 + -1.19665 * tfactors.T913 + + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; - // ths8r - ln_set_rate = 16.0765 + -1.19665 * tfactors.T913 - + 0.507179 * tfactors.T9 + -0.074604 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i + + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.19665 * tfactors.T923i - + 0.507179 + (5.0/3.0) * -0.074604 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_p_to_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni56_to_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + p --> Cu57 - // Ni56 + p --> Cu57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wienr + ln_set_rate = -3.60454 + -4.77 * tfactors.T9i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -1.5 * tfactors.lnT9; - // wienr - ln_set_rate = -3.60454 + -4.77 * tfactors.T9i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.77 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.77 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wienr + ln_set_rate = -12.8639 + -3.86 * tfactors.T9i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -1.5 * tfactors.lnT9; - // wienr - ln_set_rate = -12.8639 + -3.86 * tfactors.T9i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.86 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.86 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wienn + ln_set_rate = 21.5163 + -39.3 * tfactors.T913i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // wienn - ln_set_rate = 21.5163 + -39.3 * tfactors.T913i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.3 * tfactors.T943i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.3 * tfactors.T943i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wienr + ln_set_rate = 8.46379 + -21.2 * tfactors.T9i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -1.5 * tfactors.lnT9; - // wienr - ln_set_rate = 8.46379 + -21.2 * tfactors.T9i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.2 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.2 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // wienr + ln_set_rate = 8.63941 + -19.8 * tfactors.T9i + -0.0409988 * tfactors.T913 + + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -1.5 * tfactors.lnT9; - // wienr - ln_set_rate = 8.63941 + -19.8 * tfactors.T9i + -0.0409988 * tfactors.T913 - + 0.0619696 * tfactors.T9 + -0.0172498 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.8 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i + + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.8 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0409988 * tfactors.T923i - + 0.0619696 + (5.0/3.0) * -0.0172498 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_He4_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni56_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + He4 --> Zn60 - // Ni56 + He4 --> Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.0733 + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 + + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.0733 + -96.4898 * tfactors.T913i + 6.47209 * tfactors.T913 - + -5.2029 * tfactors.T9 + 0.533391 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i + + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.4898 * tfactors.T943i + (1.0/3.0) * 6.47209 * tfactors.T923i - + -5.2029 + (5.0/3.0) * 0.533391 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_n_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni57_to_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + n --> Ni58 - // Ni57 + n --> Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.2731 + -1.90814 * tfactors.T913 + + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; - // ths8r - ln_set_rate = 17.2731 + -1.90814 * tfactors.T913 - + 0.493188 * tfactors.T9 + -0.0684633 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i + + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.90814 * tfactors.T923i - + 0.493188 + (5.0/3.0) * -0.0684633 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_p_to_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni57_to_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + p --> Cu58 - // Ni57 + p --> Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.7262 + -39.0487 * tfactors.T913i + -0.339241 * tfactors.T913 + + -2.87307 * tfactors.T9 + 0.382369 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.7262 + -39.0487 * tfactors.T913i + -0.339241 * tfactors.T913 - + -2.87307 * tfactors.T9 + 0.382369 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0487 * tfactors.T943i + (1.0/3.0) * -0.339241 * tfactors.T923i + + -2.87307 + (5.0/3.0) * 0.382369 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0487 * tfactors.T943i + (1.0/3.0) * -0.339241 * tfactors.T923i - + -2.87307 + (5.0/3.0) * 0.382369 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_He4_to_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni57_to_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + He4 --> Zn61 - // Ni57 + He4 --> Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.4873 + -96.5275 * tfactors.T913i + 5.42001 * tfactors.T913 + + -3.93988 * tfactors.T9 + 0.358068 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.4873 + -96.5275 * tfactors.T913i + 5.42001 * tfactors.T913 - + -3.93988 * tfactors.T9 + 0.358068 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.5275 * tfactors.T943i + (1.0/3.0) * 5.42001 * tfactors.T923i + + -3.93988 + (5.0/3.0) * 0.358068 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.5275 * tfactors.T943i + (1.0/3.0) * 5.42001 * tfactors.T923i - + -3.93988 + (5.0/3.0) * 0.358068 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_n_to_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni58_to_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + n --> Ni59 - // Ni58 + n --> Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 8.63197 + 0.13279 * tfactors.T9i + -11.785 * tfactors.T913i + 19.5347 * tfactors.T913 + + -0.857179 * tfactors.T9 + 0.00111653 * tfactors.T953 + -9.35642 * tfactors.lnT9; - // ks03 - ln_set_rate = 8.63197 + 0.13279 * tfactors.T9i + -11.785 * tfactors.T913i + 19.5347 * tfactors.T913 - + -0.857179 * tfactors.T9 + 0.00111653 * tfactors.T953 + -9.35642 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.13279 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.785 * tfactors.T943i + (1.0/3.0) * 19.5347 * tfactors.T923i + + -0.857179 + (5.0/3.0) * 0.00111653 * tfactors.T923 + -9.35642 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.13279 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -11.785 * tfactors.T943i + (1.0/3.0) * 19.5347 * tfactors.T923i - + -0.857179 + (5.0/3.0) * 0.00111653 * tfactors.T923 + -9.35642 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni58_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + p --> Cu59 - // Ni58 + p --> Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 36.6662 + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 + + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // si13n - ln_set_rate = 36.6662 + -39.0526 * tfactors.T913i + 1.0436 * tfactors.T913 - + -2.10834 * tfactors.T9 + 0.239559 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i + + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0526 * tfactors.T943i + (1.0/3.0) * 1.0436 * tfactors.T923i - + -2.10834 + (5.0/3.0) * 0.239559 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_He4_to_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni58_to_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + He4 --> Zn62 - // Ni58 + He4 --> Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.8584 + -96.5638 * tfactors.T913i + 2.81593 * tfactors.T913 + + -2.43398 * tfactors.T9 + 0.140051 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.8584 + -96.5638 * tfactors.T913i + 2.81593 * tfactors.T913 - + -2.43398 * tfactors.T9 + 0.140051 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.5638 * tfactors.T943i + (1.0/3.0) * 2.81593 * tfactors.T923i + + -2.43398 + (5.0/3.0) * 0.140051 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.5638 * tfactors.T943i + (1.0/3.0) * 2.81593 * tfactors.T923i - + -2.43398 + (5.0/3.0) * 0.140051 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_n_to_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni59_to_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + n --> Ni60 - // Ni59 + n --> Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 25.5762 + -0.110079 * tfactors.T9i + 9.92411 * tfactors.T913i + -20.503 * tfactors.T913 + + 1.39981 * tfactors.T9 + -0.101641 * tfactors.T953 + 8.58204 * tfactors.lnT9; - // ks03 - ln_set_rate = 25.5762 + -0.110079 * tfactors.T9i + 9.92411 * tfactors.T913i + -20.503 * tfactors.T913 - + 1.39981 * tfactors.T9 + -0.101641 * tfactors.T953 + 8.58204 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.110079 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.92411 * tfactors.T943i + (1.0/3.0) * -20.503 * tfactors.T923i + + 1.39981 + (5.0/3.0) * -0.101641 * tfactors.T923 + 8.58204 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.110079 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.92411 * tfactors.T943i + (1.0/3.0) * -20.503 * tfactors.T923i - + 1.39981 + (5.0/3.0) * -0.101641 * tfactors.T923 + 8.58204 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_p_to_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni59_to_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + p --> Cu60 - // Ni59 + p --> Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0485 + -39.0563 * tfactors.T913i + 2.1481 * tfactors.T913 + + -1.76507 * tfactors.T9 + 0.1629 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0485 + -39.0563 * tfactors.T913i + 2.1481 * tfactors.T913 - + -1.76507 * tfactors.T9 + 0.1629 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0563 * tfactors.T943i + (1.0/3.0) * 2.1481 * tfactors.T923i + + -1.76507 + (5.0/3.0) * 0.1629 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0563 * tfactors.T943i + (1.0/3.0) * 2.1481 * tfactors.T923i - + -1.76507 + (5.0/3.0) * 0.1629 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_He4_to_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni59_to_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + He4 --> Zn63 - // Ni59 + He4 --> Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.0533 + -96.5991 * tfactors.T913i + 2.66136 * tfactors.T913 + + -2.36841 * tfactors.T9 + 0.148474 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.0533 + -96.5991 * tfactors.T913i + 2.66136 * tfactors.T913 - + -2.36841 * tfactors.T9 + 0.148474 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.5991 * tfactors.T943i + (1.0/3.0) * 2.66136 * tfactors.T923i + + -2.36841 + (5.0/3.0) * 0.148474 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.5991 * tfactors.T943i + (1.0/3.0) * 2.66136 * tfactors.T923i - + -2.36841 + (5.0/3.0) * 0.148474 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_n_to_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni60_to_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 + n --> Ni61 - // Ni60 + n --> Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 5.59123 + 0.0884361 * tfactors.T9i + -9.46323 * tfactors.T913i + 19.9252 * tfactors.T913 + + -0.985724 * tfactors.T9 + 0.0164222 * tfactors.T953 + -8.75824 * tfactors.lnT9; - // ks03 - ln_set_rate = 5.59123 + 0.0884361 * tfactors.T9i + -9.46323 * tfactors.T913i + 19.9252 * tfactors.T913 - + -0.985724 * tfactors.T9 + 0.0164222 * tfactors.T953 + -8.75824 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0884361 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -9.46323 * tfactors.T943i + (1.0/3.0) * 19.9252 * tfactors.T923i + + -0.985724 + (5.0/3.0) * 0.0164222 * tfactors.T923 + -8.75824 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0884361 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -9.46323 * tfactors.T943i + (1.0/3.0) * 19.9252 * tfactors.T923i - + -0.985724 + (5.0/3.0) * 0.0164222 * tfactors.T923 + -8.75824 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_p_to_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni60_to_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 + p --> Cu61 - // Ni60 + p --> Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 36.9916 + -39.06 * tfactors.T913i + 1.28239 * tfactors.T913 + + -1.76356 * tfactors.T9 + 0.18327 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // si13n - ln_set_rate = 36.9916 + -39.06 * tfactors.T913i + 1.28239 * tfactors.T913 - + -1.76356 * tfactors.T9 + 0.18327 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.06 * tfactors.T943i + (1.0/3.0) * 1.28239 * tfactors.T923i + + -1.76356 + (5.0/3.0) * 0.18327 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.06 * tfactors.T943i + (1.0/3.0) * 1.28239 * tfactors.T923i - + -1.76356 + (5.0/3.0) * 0.18327 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_He4_to_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni60_to_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 + He4 --> Zn64 - // Ni60 + He4 --> Zn64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.093 + -96.6332 * tfactors.T913i + 1.06508 * tfactors.T913 + + -1.52905 * tfactors.T9 + 0.0316173 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.093 + -96.6332 * tfactors.T913i + 1.06508 * tfactors.T913 - + -1.52905 * tfactors.T9 + 0.0316173 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.6332 * tfactors.T943i + (1.0/3.0) * 1.06508 * tfactors.T923i + + -1.52905 + (5.0/3.0) * 0.0316173 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.6332 * tfactors.T943i + (1.0/3.0) * 1.06508 * tfactors.T923i - + -1.52905 + (5.0/3.0) * 0.0316173 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_n_to_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni61_to_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 + n --> Ni62 - // Ni61 + n --> Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 11.7403 + 0.0180561 * tfactors.T9i + -2.82482 * tfactors.T913i + 7.69552 * tfactors.T913 + + -0.605244 * tfactors.T9 + 0.0243914 * tfactors.T953 + -3.12147 * tfactors.lnT9; - // ks03 - ln_set_rate = 11.7403 + 0.0180561 * tfactors.T9i + -2.82482 * tfactors.T913i + 7.69552 * tfactors.T913 - + -0.605244 * tfactors.T9 + 0.0243914 * tfactors.T953 + -3.12147 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0180561 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.82482 * tfactors.T943i + (1.0/3.0) * 7.69552 * tfactors.T923i + + -0.605244 + (5.0/3.0) * 0.0243914 * tfactors.T923 + -3.12147 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0180561 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.82482 * tfactors.T943i + (1.0/3.0) * 7.69552 * tfactors.T923i - + -0.605244 + (5.0/3.0) * 0.0243914 * tfactors.T923 + -3.12147 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_p_to_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni61_to_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 + p --> Cu62 - // Ni61 + p --> Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 37.065 + -39.0635 * tfactors.T913i + 2.03251 * tfactors.T913 + + -1.66085 * tfactors.T9 + 0.123527 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // si13n - ln_set_rate = 37.065 + -39.0635 * tfactors.T913i + 2.03251 * tfactors.T913 - + -1.66085 * tfactors.T9 + 0.123527 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0635 * tfactors.T943i + (1.0/3.0) * 2.03251 * tfactors.T923i + + -1.66085 + (5.0/3.0) * 0.123527 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0635 * tfactors.T943i + (1.0/3.0) * 2.03251 * tfactors.T923i - + -1.66085 + (5.0/3.0) * 0.123527 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_He4_to_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni61_to_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 + He4 --> Zn65 - // Ni61 + He4 --> Zn65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.8838 + -96.6663 * tfactors.T913i + 2.54794 * tfactors.T913 + + -2.65791 * tfactors.T9 + 0.204247 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.8838 + -96.6663 * tfactors.T913i + 2.54794 * tfactors.T913 - + -2.65791 * tfactors.T9 + 0.204247 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.6663 * tfactors.T943i + (1.0/3.0) * 2.54794 * tfactors.T923i + + -2.65791 + (5.0/3.0) * 0.204247 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.6663 * tfactors.T943i + (1.0/3.0) * 2.54794 * tfactors.T923i - + -2.65791 + (5.0/3.0) * 0.204247 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_n_to_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni62_to_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 + n --> Ni63 - // Ni62 + n --> Ni63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 5.77316 + -0.0229255 * tfactors.T9i + -1.2799 * tfactors.T913i + 10.7874 * tfactors.T913 + + -0.552819 * tfactors.T9 + -0.0106439 * tfactors.T953 + -3.53486 * tfactors.lnT9; - // ks03 - ln_set_rate = 5.77316 + -0.0229255 * tfactors.T9i + -1.2799 * tfactors.T913i + 10.7874 * tfactors.T913 - + -0.552819 * tfactors.T9 + -0.0106439 * tfactors.T953 + -3.53486 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0229255 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.2799 * tfactors.T943i + (1.0/3.0) * 10.7874 * tfactors.T923i + + -0.552819 + (5.0/3.0) * -0.0106439 * tfactors.T923 + -3.53486 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0229255 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.2799 * tfactors.T943i + (1.0/3.0) * 10.7874 * tfactors.T923i - + -0.552819 + (5.0/3.0) * -0.0106439 * tfactors.T923 + -3.53486 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_p_to_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni62_to_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 + p --> Cu63 - // Ni62 + p --> Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 37.5377 + -39.0669 * tfactors.T913i + 1.33156 * tfactors.T913 + + -1.30043 * tfactors.T9 + 0.0961101 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // si13n - ln_set_rate = 37.5377 + -39.0669 * tfactors.T913i + 1.33156 * tfactors.T913 - + -1.30043 * tfactors.T9 + 0.0961101 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0669 * tfactors.T943i + (1.0/3.0) * 1.33156 * tfactors.T923i + + -1.30043 + (5.0/3.0) * 0.0961101 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0669 * tfactors.T943i + (1.0/3.0) * 1.33156 * tfactors.T923i - + -1.30043 + (5.0/3.0) * 0.0961101 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_He4_to_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni62_to_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 + He4 --> Zn66 - // Ni62 + He4 --> Zn66 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.6647 + -96.6983 * tfactors.T913i + 0.80536 * tfactors.T913 + + -1.39385 * tfactors.T9 + 0.000644409 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.6647 + -96.6983 * tfactors.T913i + 0.80536 * tfactors.T913 - + -1.39385 * tfactors.T9 + 0.000644409 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -96.6983 * tfactors.T943i + (1.0/3.0) * 0.80536 * tfactors.T923i + + -1.39385 + (5.0/3.0) * 0.000644409 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -96.6983 * tfactors.T943i + (1.0/3.0) * 0.80536 * tfactors.T923i - + -1.39385 + (5.0/3.0) * 0.000644409 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni63_n_to_Ni64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni63_to_Ni64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni63 + n --> Ni64 - // Ni63 + n --> Ni64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 29.5272 + -0.0604252 * tfactors.T9i + 7.01558 * tfactors.T913i + -23.8529 * tfactors.T913 + + 2.50513 * tfactors.T9 + -0.227209 * tfactors.T953 + 7.65703 * tfactors.lnT9; - // ks03 - ln_set_rate = 29.5272 + -0.0604252 * tfactors.T9i + 7.01558 * tfactors.T913i + -23.8529 * tfactors.T913 - + 2.50513 * tfactors.T9 + -0.227209 * tfactors.T953 + 7.65703 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0604252 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.01558 * tfactors.T943i + (1.0/3.0) * -23.8529 * tfactors.T923i + + 2.50513 + (5.0/3.0) * -0.227209 * tfactors.T923 + 7.65703 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0604252 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.01558 * tfactors.T943i + (1.0/3.0) * -23.8529 * tfactors.T923i - + 2.50513 + (5.0/3.0) * -0.227209 * tfactors.T923 + 7.65703 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni63_p_to_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni63_to_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni63 + p --> Cu64 - // Ni63 + p --> Cu64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 40.2954 + -39.0703 * tfactors.T913i + -4.4238 * tfactors.T913 + + -0.152239 * tfactors.T9 + 0.0171937 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 40.2954 + -39.0703 * tfactors.T913i + -4.4238 * tfactors.T913 - + -0.152239 * tfactors.T9 + 0.0171937 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0703 * tfactors.T943i + (1.0/3.0) * -4.4238 * tfactors.T923i + + -0.152239 + (5.0/3.0) * 0.0171937 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0703 * tfactors.T943i + (1.0/3.0) * -4.4238 * tfactors.T923i - + -0.152239 + (5.0/3.0) * 0.0171937 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni64_p_to_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni64_to_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni64 + p --> Cu65 - // Ni64 + p --> Cu65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // si13n + ln_set_rate = 37.6675 + -39.0735 * tfactors.T913i + 1.76823 * tfactors.T913 + + -1.38855 * tfactors.T9 + 0.0515179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // si13n - ln_set_rate = 37.6675 + -39.0735 * tfactors.T913i + 1.76823 * tfactors.T913 - + -1.38855 * tfactors.T9 + 0.0515179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0735 * tfactors.T943i + (1.0/3.0) * 1.76823 * tfactors.T923i + + -1.38855 + (5.0/3.0) * 0.0515179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0735 * tfactors.T943i + (1.0/3.0) * 1.76823 * tfactors.T923i - + -1.38855 + (5.0/3.0) * 0.0515179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu57_n_to_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu57_to_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu57 + n --> Cu58 - // Cu57 + n --> Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.7707 + -0.954817 * tfactors.T913 + + 0.394641 * tfactors.T9 + -0.0489206 * tfactors.T953; - // ths8r - ln_set_rate = 10.7707 + -0.954817 * tfactors.T913 - + 0.394641 * tfactors.T9 + -0.0489206 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.954817 * tfactors.T923i + + 0.394641 + (5.0/3.0) * -0.0489206 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.954817 * tfactors.T923i - + 0.394641 + (5.0/3.0) * -0.0489206 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_n_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu58_to_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 + n --> Cu59 - // Cu58 + n --> Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.7859 + -0.307504 * tfactors.T913 + + 0.342948 * tfactors.T9 + -0.0507762 * tfactors.T953; - // ths8r - ln_set_rate = 13.7859 + -0.307504 * tfactors.T913 - + 0.342948 * tfactors.T9 + -0.0507762 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.307504 * tfactors.T923i + + 0.342948 + (5.0/3.0) * -0.0507762 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.307504 * tfactors.T923i - + 0.342948 + (5.0/3.0) * -0.0507762 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_p_to_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu58_to_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 + p --> Zn59 - // Cu58 + p --> Zn59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = -6.80287 + 1.08057 * tfactors.T9i + -142.882 * tfactors.T913i + 138.901 * tfactors.T913 + + -5.7482 * tfactors.T9 + 0.223571 * tfactors.T953 + -84.6553 * tfactors.lnT9; - // nfisn - ln_set_rate = -6.80287 + 1.08057 * tfactors.T9i + -142.882 * tfactors.T913i + 138.901 * tfactors.T913 - + -5.7482 * tfactors.T9 + 0.223571 * tfactors.T953 + -84.6553 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -1.08057 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -142.882 * tfactors.T943i + (1.0/3.0) * 138.901 * tfactors.T923i + + -5.7482 + (5.0/3.0) * 0.223571 * tfactors.T923 + -84.6553 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -1.08057 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -142.882 * tfactors.T943i + (1.0/3.0) * 138.901 * tfactors.T923i - + -5.7482 + (5.0/3.0) * 0.223571 * tfactors.T923 + -84.6553 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 33.1417 + -0.0837118 * tfactors.T9i + -36.2109 * tfactors.T913i + -10.0201 * tfactors.T913 + + 0.882265 * tfactors.T9 + -0.0954725 * tfactors.T953 + 3.28794 * tfactors.lnT9; - // nfisn - ln_set_rate = 33.1417 + -0.0837118 * tfactors.T9i + -36.2109 * tfactors.T913i + -10.0201 * tfactors.T913 - + 0.882265 * tfactors.T9 + -0.0954725 * tfactors.T953 + 3.28794 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0837118 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2109 * tfactors.T943i + (1.0/3.0) * -10.0201 * tfactors.T923i + + 0.882265 + (5.0/3.0) * -0.0954725 * tfactors.T923 + 3.28794 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0837118 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.2109 * tfactors.T943i + (1.0/3.0) * -10.0201 * tfactors.T923i - + 0.882265 + (5.0/3.0) * -0.0954725 * tfactors.T923 + 3.28794 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 34.9479 + 2.4317 * tfactors.T9i + -209.408 * tfactors.T913i + 176.007 * tfactors.T913 + + -6.98867 * tfactors.T9 + 0.295678 * tfactors.T953 + -110.548 * tfactors.lnT9; - // nfisn - ln_set_rate = 34.9479 + 2.4317 * tfactors.T9i + -209.408 * tfactors.T913i + 176.007 * tfactors.T913 - + -6.98867 * tfactors.T9 + 0.295678 * tfactors.T953 + -110.548 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -2.4317 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -209.408 * tfactors.T943i + (1.0/3.0) * 176.007 * tfactors.T923i + + -6.98867 + (5.0/3.0) * 0.295678 * tfactors.T923 + -110.548 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -2.4317 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -209.408 * tfactors.T943i + (1.0/3.0) * 176.007 * tfactors.T923i - + -6.98867 + (5.0/3.0) * 0.295678 * tfactors.T923 + -110.548 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_He4_to_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu58_to_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 + He4 --> Ga62 - // Cu58 + He4 --> Ga62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 77.8609 + -98.8498 * tfactors.T913i + -21.411 * tfactors.T913 + + 1.84489 * tfactors.T9 + -0.142549 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 77.8609 + -98.8498 * tfactors.T913i + -21.411 * tfactors.T913 - + 1.84489 * tfactors.T9 + -0.142549 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -98.8498 * tfactors.T943i + (1.0/3.0) * -21.411 * tfactors.T923i + + 1.84489 + (5.0/3.0) * -0.142549 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -98.8498 * tfactors.T943i + (1.0/3.0) * -21.411 * tfactors.T923i - + 1.84489 + (5.0/3.0) * -0.142549 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_n_to_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu59_to_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + n --> Cu60 - // Cu59 + n --> Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.7349 + -0.952104 * tfactors.T913 + + 0.520444 * tfactors.T9 + -0.0746175 * tfactors.T953; - // ths8r - ln_set_rate = 14.7349 + -0.952104 * tfactors.T913 - + 0.520444 * tfactors.T9 + -0.0746175 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.952104 * tfactors.T923i + + 0.520444 + (5.0/3.0) * -0.0746175 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.952104 * tfactors.T923i - + 0.520444 + (5.0/3.0) * -0.0746175 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_p_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu59_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + p --> Zn60 - // Cu59 + p --> Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.226 + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 + + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.226 + -39.9808 * tfactors.T913i + 1.17311 * tfactors.T913 - + -2.90486 * tfactors.T9 + 0.339644 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i + + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 1.17311 * tfactors.T923i - + -2.90486 + (5.0/3.0) * 0.339644 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_He4_to_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu59_to_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + He4 --> Ga63 - // Cu59 + He4 --> Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 68.0149 + -98.8858 * tfactors.T913i + -2.92113 * tfactors.T913 + + -2.38226 * tfactors.T9 + 0.272994 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 68.0149 + -98.8858 * tfactors.T913i + -2.92113 * tfactors.T913 - + -2.38226 * tfactors.T9 + 0.272994 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -98.8858 * tfactors.T943i + (1.0/3.0) * -2.92113 * tfactors.T923i + + -2.38226 + (5.0/3.0) * 0.272994 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -98.8858 * tfactors.T943i + (1.0/3.0) * -2.92113 * tfactors.T923i - + -2.38226 + (5.0/3.0) * 0.272994 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_n_to_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu60_to_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + n --> Cu61 - // Cu60 + n --> Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.3449 + -0.586034 * tfactors.T913 + + 0.320768 * tfactors.T9 + -0.0484658 * tfactors.T953; - // ths8r - ln_set_rate = 15.3449 + -0.586034 * tfactors.T913 - + 0.320768 * tfactors.T9 + -0.0484658 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.586034 * tfactors.T923i + + 0.320768 + (5.0/3.0) * -0.0484658 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.586034 * tfactors.T923i - + 0.320768 + (5.0/3.0) * -0.0484658 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_p_to_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu60_to_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + p --> Zn61 - // Cu60 + p --> Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.0101 + -39.9846 * tfactors.T913i + 3.2392 * tfactors.T913 + + -2.37211 * tfactors.T9 + 0.239391 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.0101 + -39.9846 * tfactors.T913i + 3.2392 * tfactors.T913 - + -2.37211 * tfactors.T9 + 0.239391 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9846 * tfactors.T943i + (1.0/3.0) * 3.2392 * tfactors.T923i + + -2.37211 + (5.0/3.0) * 0.239391 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9846 * tfactors.T943i + (1.0/3.0) * 3.2392 * tfactors.T923i - + -2.37211 + (5.0/3.0) * 0.239391 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_He4_to_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu60_to_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + He4 --> Ga64 - // Cu60 + He4 --> Ga64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 66.2816 + -98.9207 * tfactors.T913i + 0.933671 * tfactors.T913 + + -3.79958 * tfactors.T9 + 0.446216 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 66.2816 + -98.9207 * tfactors.T913i + 0.933671 * tfactors.T913 - + -3.79958 * tfactors.T9 + 0.446216 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -98.9207 * tfactors.T943i + (1.0/3.0) * 0.933671 * tfactors.T923i + + -3.79958 + (5.0/3.0) * 0.446216 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -98.9207 * tfactors.T943i + (1.0/3.0) * 0.933671 * tfactors.T923i - + -3.79958 + (5.0/3.0) * 0.446216 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_n_to_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu61_to_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 + n --> Cu62 - // Cu61 + n --> Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.3662 + -0.404348 * tfactors.T913 + + 0.218353 * tfactors.T9 + -0.0562018 * tfactors.T953; - // ths8r - ln_set_rate = 16.3662 + -0.404348 * tfactors.T913 - + 0.218353 * tfactors.T9 + -0.0562018 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.404348 * tfactors.T923i + + 0.218353 + (5.0/3.0) * -0.0562018 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.404348 * tfactors.T923i - + 0.218353 + (5.0/3.0) * -0.0562018 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_p_to_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu61_to_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 + p --> Zn62 - // Cu61 + p --> Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.5695 + -39.9882 * tfactors.T913i + 2.26956 * tfactors.T913 + + -1.69006 * tfactors.T9 + 0.132363 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.5695 + -39.9882 * tfactors.T913i + 2.26956 * tfactors.T913 - + -1.69006 * tfactors.T9 + 0.132363 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9882 * tfactors.T943i + (1.0/3.0) * 2.26956 * tfactors.T923i + + -1.69006 + (5.0/3.0) * 0.132363 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9882 * tfactors.T943i + (1.0/3.0) * 2.26956 * tfactors.T923i - + -1.69006 + (5.0/3.0) * 0.132363 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_n_to_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu62_to_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 + n --> Cu63 - // Cu62 + n --> Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.0073 + -0.723484 * tfactors.T913 + + 0.215177 * tfactors.T9 + -0.0473749 * tfactors.T953; - // ths8r - ln_set_rate = 17.0073 + -0.723484 * tfactors.T913 - + 0.215177 * tfactors.T9 + -0.0473749 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.723484 * tfactors.T923i + + 0.215177 + (5.0/3.0) * -0.0473749 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.723484 * tfactors.T923i - + 0.215177 + (5.0/3.0) * -0.0473749 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_p_to_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu62_to_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 + p --> Zn63 - // Cu62 + p --> Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.5491 + -39.9917 * tfactors.T913i + 2.6186 * tfactors.T913 + + -1.69105 * tfactors.T9 + 0.132898 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.5491 + -39.9917 * tfactors.T913i + 2.6186 * tfactors.T913 - + -1.69105 * tfactors.T9 + 0.132898 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9917 * tfactors.T943i + (1.0/3.0) * 2.6186 * tfactors.T923i + + -1.69105 + (5.0/3.0) * 0.132898 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9917 * tfactors.T943i + (1.0/3.0) * 2.6186 * tfactors.T923i - + -1.69105 + (5.0/3.0) * 0.132898 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_n_to_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu63_to_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 + n --> Cu64 - // Cu63 + n --> Cu64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 27.4055 + -0.117212 * tfactors.T9i + 11.3982 * tfactors.T913i + -24.4222 * tfactors.T913 + + 1.95364 * tfactors.T9 + -0.18693 * tfactors.T953 + 10.2458 * tfactors.lnT9; - // ks03 - ln_set_rate = 27.4055 + -0.117212 * tfactors.T9i + 11.3982 * tfactors.T913i + -24.4222 * tfactors.T913 - + 1.95364 * tfactors.T9 + -0.18693 * tfactors.T953 + 10.2458 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.117212 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 11.3982 * tfactors.T943i + (1.0/3.0) * -24.4222 * tfactors.T923i + + 1.95364 + (5.0/3.0) * -0.18693 * tfactors.T923 + 10.2458 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.117212 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 11.3982 * tfactors.T943i + (1.0/3.0) * -24.4222 * tfactors.T923i - + 1.95364 + (5.0/3.0) * -0.18693 * tfactors.T923 + 10.2458 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_p_to_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu63_to_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 + p --> Zn64 - // Cu63 + p --> Zn64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.1256 + -39.995 * tfactors.T913i + 1.69705 * tfactors.T913 + + -1.11391 * tfactors.T9 + 0.0416287 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.1256 + -39.995 * tfactors.T913i + 1.69705 * tfactors.T913 - + -1.11391 * tfactors.T9 + 0.0416287 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.995 * tfactors.T943i + (1.0/3.0) * 1.69705 * tfactors.T923i + + -1.11391 + (5.0/3.0) * 0.0416287 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.995 * tfactors.T943i + (1.0/3.0) * 1.69705 * tfactors.T923i - + -1.11391 + (5.0/3.0) * 0.0416287 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu64_n_to_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu64_to_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu64 + n --> Cu65 - // Cu64 + n --> Cu65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.8488 + -2.31276 * tfactors.T913 + + 0.434599 * tfactors.T9 + -0.0715678 * tfactors.T953; - // ths8r - ln_set_rate = 18.8488 + -2.31276 * tfactors.T913 - + 0.434599 * tfactors.T9 + -0.0715678 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.31276 * tfactors.T923i + + 0.434599 + (5.0/3.0) * -0.0715678 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.31276 * tfactors.T923i - + 0.434599 + (5.0/3.0) * -0.0715678 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu64_p_to_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu64_to_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu64 + p --> Zn65 - // Cu64 + p --> Zn65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 38.9806 + -39.9983 * tfactors.T913i + -2.9846 * tfactors.T913 + + 0.0709769 * tfactors.T9 + -0.0519569 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 38.9806 + -39.9983 * tfactors.T913i + -2.9846 * tfactors.T913 - + 0.0709769 * tfactors.T9 + -0.0519569 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9983 * tfactors.T943i + (1.0/3.0) * -2.9846 * tfactors.T923i + + 0.0709769 + (5.0/3.0) * -0.0519569 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9983 * tfactors.T943i + (1.0/3.0) * -2.9846 * tfactors.T923i - + 0.0709769 + (5.0/3.0) * -0.0519569 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu65_p_to_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu65_to_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu65 + p --> Zn66 - // Cu65 + p --> Zn66 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.8752 + -40.0015 * tfactors.T913i + 2.89473 * tfactors.T913 + + -1.70171 * tfactors.T9 + 0.092664 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.8752 + -40.0015 * tfactors.T913i + 2.89473 * tfactors.T913 - + -1.70171 * tfactors.T9 + 0.092664 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.0015 * tfactors.T943i + (1.0/3.0) * 2.89473 * tfactors.T923i + + -1.70171 + (5.0/3.0) * 0.092664 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.0015 * tfactors.T943i + (1.0/3.0) * 2.89473 * tfactors.T923i - + -1.70171 + (5.0/3.0) * 0.092664 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn59_n_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn59_to_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn59 + n --> Zn60 - // Zn59 + n --> Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.74563 + 0.65324 * tfactors.T913 + + -0.0259697 * tfactors.T9 + -0.00407906 * tfactors.T953; - // ths8r - ln_set_rate = 8.74563 + 0.65324 * tfactors.T913 - + -0.0259697 * tfactors.T9 + -0.00407906 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.65324 * tfactors.T923i + + -0.0259697 + (5.0/3.0) * -0.00407906 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.65324 * tfactors.T923i - + -0.0259697 + (5.0/3.0) * -0.00407906 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn59_He4_to_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Zn59_to_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn59 + He4 --> Ge63 - // Zn59 + He4 --> Ge63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 76.3883 + -101.146 * tfactors.T913i + -14.3723 * tfactors.T913 + + 0.893059 * tfactors.T9 + -0.0564743 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 76.3883 + -101.146 * tfactors.T913i + -14.3723 * tfactors.T913 - + 0.893059 * tfactors.T9 + -0.0564743 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -101.146 * tfactors.T943i + (1.0/3.0) * -14.3723 * tfactors.T923i + + 0.893059 + (5.0/3.0) * -0.0564743 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -101.146 * tfactors.T943i + (1.0/3.0) * -14.3723 * tfactors.T923i - + 0.893059 + (5.0/3.0) * -0.0564743 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_n_to_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn60_to_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 + n --> Zn61 - // Zn60 + n --> Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.4892 + 0.0559751 * tfactors.T913 + + 0.208641 * tfactors.T9 + -0.0357451 * tfactors.T953; - // ths8r - ln_set_rate = 13.4892 + 0.0559751 * tfactors.T913 - + 0.208641 * tfactors.T9 + -0.0357451 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.0559751 * tfactors.T923i + + 0.208641 + (5.0/3.0) * -0.0357451 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.0559751 * tfactors.T923i - + 0.208641 + (5.0/3.0) * -0.0357451 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_He4_to_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Zn60_to_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 + He4 --> Ge64 - // Zn60 + He4 --> Ge64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.1229 + -101.182 * tfactors.T913i + 10.4963 * tfactors.T913 + + -7.04215 * tfactors.T9 + 0.732883 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.1229 + -101.182 * tfactors.T913i + 10.4963 * tfactors.T913 - + -7.04215 * tfactors.T9 + 0.732883 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -101.182 * tfactors.T943i + (1.0/3.0) * 10.4963 * tfactors.T923i + + -7.04215 + (5.0/3.0) * 0.732883 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -101.182 * tfactors.T943i + (1.0/3.0) * 10.4963 * tfactors.T923i - + -7.04215 + (5.0/3.0) * 0.732883 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_n_to_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn61_to_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 + n --> Zn62 - // Zn61 + n --> Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.7022 + 0.174908 * tfactors.T913 + + 0.222207 * tfactors.T9 + -0.0495297 * tfactors.T953; - // ths8r - ln_set_rate = 13.7022 + 0.174908 * tfactors.T913 - + 0.222207 * tfactors.T9 + -0.0495297 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.174908 * tfactors.T923i + + 0.222207 + (5.0/3.0) * -0.0495297 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.174908 * tfactors.T923i - + 0.222207 + (5.0/3.0) * -0.0495297 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_p_to_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn61_to_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 + p --> Ga62 - // Zn61 + p --> Ga62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 11276.1 + -91.1775 * tfactors.T9i + 6932.15 * tfactors.T913i + -20433.4 * tfactors.T913 + + 2726.25 * tfactors.T9 + -416.477 * tfactors.T953 + 7003.74 * tfactors.lnT9; - // nfisn - ln_set_rate = 11276.1 + -91.1775 * tfactors.T9i + 6932.15 * tfactors.T913i + -20433.4 * tfactors.T913 - + 2726.25 * tfactors.T9 + -416.477 * tfactors.T953 + 7003.74 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 91.1775 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6932.15 * tfactors.T943i + (1.0/3.0) * -20433.4 * tfactors.T923i + + 2726.25 + (5.0/3.0) * -416.477 * tfactors.T923 + 7003.74 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 91.1775 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6932.15 * tfactors.T943i + (1.0/3.0) * -20433.4 * tfactors.T923i - + 2726.25 + (5.0/3.0) * -416.477 * tfactors.T923 + 7003.74 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 35.5778 + -0.068885 * tfactors.T9i + -36.9213 * tfactors.T913i + -12.8434 * tfactors.T913 + + 1.30735 * tfactors.T9 + -0.136745 * tfactors.T953 + 3.91008 * tfactors.lnT9; - // nfisn - ln_set_rate = 35.5778 + -0.068885 * tfactors.T9i + -36.9213 * tfactors.T913i + -12.8434 * tfactors.T913 - + 1.30735 * tfactors.T9 + -0.136745 * tfactors.T953 + 3.91008 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.068885 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.9213 * tfactors.T943i + (1.0/3.0) * -12.8434 * tfactors.T923i + + 1.30735 + (5.0/3.0) * -0.136745 * tfactors.T923 + 3.91008 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.068885 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.9213 * tfactors.T943i + (1.0/3.0) * -12.8434 * tfactors.T923i - + 1.30735 + (5.0/3.0) * -0.136745 * tfactors.T923 + 3.91008 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = -19.8777 + -14.8223 * tfactors.T9i + 207.487 * tfactors.T913i + -181.718 * tfactors.T913 + + 5.86358 * tfactors.T9 + -0.221479 * tfactors.T953 + 119.805 * tfactors.lnT9; - // nfisn - ln_set_rate = -19.8777 + -14.8223 * tfactors.T9i + 207.487 * tfactors.T913i + -181.718 * tfactors.T913 - + 5.86358 * tfactors.T9 + -0.221479 * tfactors.T953 + 119.805 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.8223 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 207.487 * tfactors.T943i + (1.0/3.0) * -181.718 * tfactors.T923i + + 5.86358 + (5.0/3.0) * -0.221479 * tfactors.T923 + 119.805 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.8223 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 207.487 * tfactors.T943i + (1.0/3.0) * -181.718 * tfactors.T923i - + 5.86358 + (5.0/3.0) * -0.221479 * tfactors.T923 + 119.805 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_n_to_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn62_to_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 + n --> Zn63 - // Zn62 + n --> Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4953 + -0.365196 * tfactors.T913 + + 0.230327 * tfactors.T9 + -0.0605553 * tfactors.T953; - // ths8r - ln_set_rate = 16.4953 + -0.365196 * tfactors.T913 - + 0.230327 * tfactors.T9 + -0.0605553 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.365196 * tfactors.T923i + + 0.230327 + (5.0/3.0) * -0.0605553 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.365196 * tfactors.T923i - + 0.230327 + (5.0/3.0) * -0.0605553 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_p_to_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn62_to_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 + p --> Ga63 - // Zn62 + p --> Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 37.1867 + -0.194242 * tfactors.T9i + -31.4331 * tfactors.T913i + -19.7752 * tfactors.T913 + + 1.69239 * tfactors.T9 + -0.16473 * tfactors.T953 + 7.6608 * tfactors.lnT9; - // nfisn - ln_set_rate = 37.1867 + -0.194242 * tfactors.T9i + -31.4331 * tfactors.T913i + -19.7752 * tfactors.T913 - + 1.69239 * tfactors.T9 + -0.16473 * tfactors.T953 + 7.6608 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.194242 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.4331 * tfactors.T943i + (1.0/3.0) * -19.7752 * tfactors.T923i + + 1.69239 + (5.0/3.0) * -0.16473 * tfactors.T923 + 7.6608 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.194242 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.4331 * tfactors.T943i + (1.0/3.0) * -19.7752 * tfactors.T923i - + 1.69239 + (5.0/3.0) * -0.16473 * tfactors.T923 + 7.6608 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 7888.93 + -59.9484 * tfactors.T9i + 4643.34 * tfactors.T913i + -14105.9 * tfactors.T913 + + 1925.65 * tfactors.T9 + -299.872 * tfactors.T953 + 4768.64 * tfactors.lnT9; - // nfisn - ln_set_rate = 7888.93 + -59.9484 * tfactors.T9i + 4643.34 * tfactors.T913i + -14105.9 * tfactors.T913 - + 1925.65 * tfactors.T9 + -299.872 * tfactors.T953 + 4768.64 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.9484 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4643.34 * tfactors.T943i + (1.0/3.0) * -14105.9 * tfactors.T923i + + 1925.65 + (5.0/3.0) * -299.872 * tfactors.T923 + 4768.64 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.9484 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4643.34 * tfactors.T943i + (1.0/3.0) * -14105.9 * tfactors.T923i - + 1925.65 + (5.0/3.0) * -299.872 * tfactors.T923 + 4768.64 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 47.3921 + -22.0155 * tfactors.T9i + 516.062 * tfactors.T913i + -567.538 * tfactors.T913 + + 23.7454 * tfactors.T9 + -1.02526 * tfactors.T953 + 327.86 * tfactors.lnT9; - // nfisn - ln_set_rate = 47.3921 + -22.0155 * tfactors.T9i + 516.062 * tfactors.T913i + -567.538 * tfactors.T913 - + 23.7454 * tfactors.T9 + -1.02526 * tfactors.T953 + 327.86 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.0155 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 516.062 * tfactors.T943i + (1.0/3.0) * -567.538 * tfactors.T923i + + 23.7454 + (5.0/3.0) * -1.02526 * tfactors.T923 + 327.86 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.0155 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 516.062 * tfactors.T943i + (1.0/3.0) * -567.538 * tfactors.T923i - + 23.7454 + (5.0/3.0) * -1.02526 * tfactors.T923 + 327.86 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = -38.4285 + -21.8336 * tfactors.T9i + 181.058 * tfactors.T913i + -128.039 * tfactors.T913 + + 5.3613 * tfactors.T9 + -0.329542 * tfactors.T953 + 87.4371 * tfactors.lnT9; - // nfisn - ln_set_rate = -38.4285 + -21.8336 * tfactors.T9i + 181.058 * tfactors.T913i + -128.039 * tfactors.T913 - + 5.3613 * tfactors.T9 + -0.329542 * tfactors.T953 + 87.4371 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.8336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 181.058 * tfactors.T943i + (1.0/3.0) * -128.039 * tfactors.T923i + + 5.3613 + (5.0/3.0) * -0.329542 * tfactors.T923 + 87.4371 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.8336 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 181.058 * tfactors.T943i + (1.0/3.0) * -128.039 * tfactors.T923i - + 5.3613 + (5.0/3.0) * -0.329542 * tfactors.T923 + 87.4371 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_n_to_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn63_to_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 + n --> Zn64 - // Zn63 + n --> Zn64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.2538 + -0.526805 * tfactors.T913 + + 0.294653 * tfactors.T9 + -0.0660418 * tfactors.T953; - // ths8r - ln_set_rate = 16.2538 + -0.526805 * tfactors.T913 - + 0.294653 * tfactors.T9 + -0.0660418 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.526805 * tfactors.T923i + + 0.294653 + (5.0/3.0) * -0.0660418 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.526805 * tfactors.T923i - + 0.294653 + (5.0/3.0) * -0.0660418 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_p_to_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn63_to_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 + p --> Ga64 - // Zn63 + p --> Ga64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 36.839 + -40.9093 * tfactors.T913i + 2.88162 * tfactors.T913 + + -2.11741 * tfactors.T9 + 0.191601 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 36.839 + -40.9093 * tfactors.T913i + 2.88162 * tfactors.T913 - + -2.11741 * tfactors.T9 + 0.191601 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.9093 * tfactors.T943i + (1.0/3.0) * 2.88162 * tfactors.T923i + + -2.11741 + (5.0/3.0) * 0.191601 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.9093 * tfactors.T943i + (1.0/3.0) * 2.88162 * tfactors.T923i - + -2.11741 + (5.0/3.0) * 0.191601 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn64_n_to_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn64_to_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn64 + n --> Zn65 - // Zn64 + n --> Zn65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 13.1015 + 0.0293385 * tfactors.T9i + -3.1973 * tfactors.T913i + 6.0545 * tfactors.T913 + + 0.171155 * tfactors.T9 + -0.0905702 * tfactors.T953 + -2.89286 * tfactors.lnT9; - // ks03 - ln_set_rate = 13.1015 + 0.0293385 * tfactors.T9i + -3.1973 * tfactors.T913i + 6.0545 * tfactors.T913 - + 0.171155 * tfactors.T9 + -0.0905702 * tfactors.T953 + -2.89286 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0293385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.1973 * tfactors.T943i + (1.0/3.0) * 6.0545 * tfactors.T923i + + 0.171155 + (5.0/3.0) * -0.0905702 * tfactors.T923 + -2.89286 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0293385 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.1973 * tfactors.T943i + (1.0/3.0) * 6.0545 * tfactors.T923i - + 0.171155 + (5.0/3.0) * -0.0905702 * tfactors.T923 + -2.89286 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn65_n_to_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn65_to_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn65 + n --> Zn66 - // Zn65 + n --> Zn66 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ks03 + ln_set_rate = 27.6235 + -0.0461963 * tfactors.T9i + 5.38411 * tfactors.T913i + -18.0063 * tfactors.T913 + + 1.89109 * tfactors.T9 + -0.191482 * tfactors.T953 + 5.84419 * tfactors.lnT9; - // ks03 - ln_set_rate = 27.6235 + -0.0461963 * tfactors.T9i + 5.38411 * tfactors.T913i + -18.0063 * tfactors.T913 - + 1.89109 * tfactors.T9 + -0.191482 * tfactors.T953 + 5.84419 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0461963 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.38411 * tfactors.T943i + (1.0/3.0) * -18.0063 * tfactors.T923i + + 1.89109 + (5.0/3.0) * -0.191482 * tfactors.T923 + 5.84419 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0461963 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.38411 * tfactors.T943i + (1.0/3.0) * -18.0063 * tfactors.T923i - + 1.89109 + (5.0/3.0) * -0.191482 * tfactors.T923 + 5.84419 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga62_n_to_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ga62_to_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga62 + n --> Ga63 - // Ga62 + n --> Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.6851 + -0.413123 * tfactors.T913 + + 0.505609 * tfactors.T9 + -0.0792987 * tfactors.T953; - // ths8r - ln_set_rate = 13.6851 + -0.413123 * tfactors.T913 - + 0.505609 * tfactors.T9 + -0.0792987 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.413123 * tfactors.T923i + + 0.505609 + (5.0/3.0) * -0.0792987 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.413123 * tfactors.T923i - + 0.505609 + (5.0/3.0) * -0.0792987 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga62_p_to_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ga62_to_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga62 + p --> Ge63 - // Ga62 + p --> Ge63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nfisn + ln_set_rate = 23.0628 + -1.09614 * tfactors.T9i + -107.856 * tfactors.T913i + 80.6244 * tfactors.T913 + + -2.84514 * tfactors.T9 + 0.087641 * tfactors.T953 + -56.5078 * tfactors.lnT9; - // nfisn - ln_set_rate = 23.0628 + -1.09614 * tfactors.T9i + -107.856 * tfactors.T913i + 80.6244 * tfactors.T913 - + -2.84514 * tfactors.T9 + 0.087641 * tfactors.T953 + -56.5078 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.09614 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -107.856 * tfactors.T943i + (1.0/3.0) * 80.6244 * tfactors.T923i + + -2.84514 + (5.0/3.0) * 0.087641 * tfactors.T923 + -56.5078 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.09614 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -107.856 * tfactors.T943i + (1.0/3.0) * 80.6244 * tfactors.T923i - + -2.84514 + (5.0/3.0) * 0.087641 * tfactors.T923 + -56.5078 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 268.37 + -0.169689 * tfactors.T9i + -8.15451 * tfactors.T913i + -301.681 * tfactors.T913 + + 33.0147 * tfactors.T9 + -2.8672 * tfactors.T953 + 70.7354 * tfactors.lnT9; - // nfisn - ln_set_rate = 268.37 + -0.169689 * tfactors.T9i + -8.15451 * tfactors.T913i + -301.681 * tfactors.T913 - + 33.0147 * tfactors.T9 + -2.8672 * tfactors.T953 + 70.7354 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.169689 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.15451 * tfactors.T943i + (1.0/3.0) * -301.681 * tfactors.T923i + + 33.0147 + (5.0/3.0) * -2.8672 * tfactors.T923 + 70.7354 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.169689 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.15451 * tfactors.T943i + (1.0/3.0) * -301.681 * tfactors.T923i - + 33.0147 + (5.0/3.0) * -2.8672 * tfactors.T923 + 70.7354 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 29.8043 + 0.0615986 * tfactors.T9i + -45.5057 * tfactors.T913i + 1.9831 * tfactors.T913 + + -0.147339 * tfactors.T9 + -0.0169469 * tfactors.T953 + -2.46033 * tfactors.lnT9; - // nfisn - ln_set_rate = 29.8043 + 0.0615986 * tfactors.T9i + -45.5057 * tfactors.T913i + 1.9831 * tfactors.T913 - + -0.147339 * tfactors.T9 + -0.0169469 * tfactors.T953 + -2.46033 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0615986 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.5057 * tfactors.T943i + (1.0/3.0) * 1.9831 * tfactors.T923i + + -0.147339 + (5.0/3.0) * -0.0169469 * tfactors.T923 + -2.46033 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0615986 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -45.5057 * tfactors.T943i + (1.0/3.0) * 1.9831 * tfactors.T923i - + -0.147339 + (5.0/3.0) * -0.0169469 * tfactors.T923 + -2.46033 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 9631.23 + -112.916 * tfactors.T9i + 6926.61 * tfactors.T913i + -18459.0 * tfactors.T913 + + 2374.61 * tfactors.T9 + -366.508 * tfactors.T953 + 6586.96 * tfactors.lnT9; - // nfisn - ln_set_rate = 9631.23 + -112.916 * tfactors.T9i + 6926.61 * tfactors.T913i + -18459.0 * tfactors.T913 - + 2374.61 * tfactors.T9 + -366.508 * tfactors.T953 + 6586.96 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 112.916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6926.61 * tfactors.T943i + (1.0/3.0) * -18459.0 * tfactors.T923i + + 2374.61 + (5.0/3.0) * -366.508 * tfactors.T923 + 6586.96 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 112.916 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 6926.61 * tfactors.T943i + (1.0/3.0) * -18459.0 * tfactors.T923i - + 2374.61 + (5.0/3.0) * -366.508 * tfactors.T923 + 6586.96 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nfisn + ln_set_rate = 53.7251 + -4.53179 * tfactors.T9i + 11.0703 * tfactors.T913i + -66.0297 * tfactors.T913 + + 2.89115 * tfactors.T9 + -0.129107 * tfactors.T953 + 29.3214 * tfactors.lnT9; - // nfisn - ln_set_rate = 53.7251 + -4.53179 * tfactors.T9i + 11.0703 * tfactors.T913i + -66.0297 * tfactors.T913 - + 2.89115 * tfactors.T9 + -0.129107 * tfactors.T953 + 29.3214 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.53179 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 11.0703 * tfactors.T943i + (1.0/3.0) * -66.0297 * tfactors.T923i + + 2.89115 + (5.0/3.0) * -0.129107 * tfactors.T923 + 29.3214 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.53179 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 11.0703 * tfactors.T943i + (1.0/3.0) * -66.0297 * tfactors.T923i - + 2.89115 + (5.0/3.0) * -0.129107 * tfactors.T923 + 29.3214 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_n_to_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ga63_to_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 + n --> Ga64 - // Ga63 + n --> Ga64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.8071 + 1.0342 * tfactors.T913 + + 0.0882306 * tfactors.T9 + -0.0437444 * tfactors.T953; - // ths8r - ln_set_rate = 12.8071 + 1.0342 * tfactors.T913 - + 0.0882306 * tfactors.T9 + -0.0437444 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.0342 * tfactors.T923i + + 0.0882306 + (5.0/3.0) * -0.0437444 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.0342 * tfactors.T923i - + 0.0882306 + (5.0/3.0) * -0.0437444 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_p_to_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ga63_to_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 + p --> Ge64 - // Ga63 + p --> Ge64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 37.9791 + -41.8134 * tfactors.T913i + 1.45084 * tfactors.T913 + + -3.1328 * tfactors.T9 + 0.353318 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 37.9791 + -41.8134 * tfactors.T913i + 1.45084 * tfactors.T913 - + -3.1328 * tfactors.T9 + 0.353318 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -41.8134 * tfactors.T943i + (1.0/3.0) * 1.45084 * tfactors.T923i + + -3.1328 + (5.0/3.0) * 0.353318 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -41.8134 * tfactors.T943i + (1.0/3.0) * 1.45084 * tfactors.T923i - + -3.1328 + (5.0/3.0) * 0.353318 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge63_n_to_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ge63_to_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge63 + n --> Ge64 - // Ge63 + n --> Ge64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.35941 + 0.20987 * tfactors.T913 + + 0.182208 * tfactors.T9 + -0.0339886 * tfactors.T953; - // ths8r - ln_set_rate = 8.35941 + 0.20987 * tfactors.T913 - + 0.182208 * tfactors.T9 + -0.0339886 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.20987 * tfactors.T923i + + 0.182208 + (5.0/3.0) * -0.0339886 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.20987 * tfactors.T923i - + 0.182208 + (5.0/3.0) * -0.0339886 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_d_to_n_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_d_to_n_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + d --> n + He3 - // d + d --> n + He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // gi17n + ln_set_rate = 19.0876 + -0.00019002 * tfactors.T9i + -4.2292 * tfactors.T913i + 1.6932 * tfactors.T913 + + -0.0855529 * tfactors.T9 + -1.35709e-25 * tfactors.T953 + -0.734513 * tfactors.lnT9; - // gi17n - ln_set_rate = 19.0876 + -0.00019002 * tfactors.T9i + -4.2292 * tfactors.T913i + 1.6932 * tfactors.T913 - + -0.0855529 * tfactors.T9 + -1.35709e-25 * tfactors.T953 + -0.734513 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00019002 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.2292 * tfactors.T943i + (1.0/3.0) * 1.6932 * tfactors.T923i + + -0.0855529 + (5.0/3.0) * -1.35709e-25 * tfactors.T923 + -0.734513 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00019002 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.2292 * tfactors.T943i + (1.0/3.0) * 1.6932 * tfactors.T923i - + -0.0855529 + (5.0/3.0) * -1.35709e-25 * tfactors.T923 + -0.734513 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_n_to_d_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_He3_to_d_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + n --> d + d - // He3 + n --> d + d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // gi17n + ln_set_rate = 19.6369 + -37.9358 * tfactors.T9i + -4.2292 * tfactors.T913i + 1.6932 * tfactors.T913 + + -0.0855529 * tfactors.T9 + -1.35709e-25 * tfactors.T953 + -0.734513 * tfactors.lnT9; - // gi17n - ln_set_rate = 19.6369 + -37.9358 * tfactors.T9i + -4.2292 * tfactors.T913i + 1.6932 * tfactors.T913 - + -0.0855529 * tfactors.T9 + -1.35709e-25 * tfactors.T953 + -0.734513 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 37.9358 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.2292 * tfactors.T943i + (1.0/3.0) * 1.6932 * tfactors.T923i + + -0.0855529 + (5.0/3.0) * -1.35709e-25 * tfactors.T923 + -0.734513 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 37.9358 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -4.2292 * tfactors.T943i + (1.0/3.0) * 1.6932 * tfactors.T923i - + -0.0855529 + (5.0/3.0) * -1.35709e-25 * tfactors.T923 + -0.734513 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_d_to_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_He3_to_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + d --> p + He4 - // He3 + d --> p + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04 + ln_set_rate = 41.2969 + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 + + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; - // de04 - ln_set_rate = 41.2969 + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 - + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i + + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i - + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 24.6839 + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 + + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 24.6839 + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 - + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i + + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i - + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_He4_to_p_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He3_to_p_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + He4 --> p + Li6 - // He3 + He4 --> p + Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // pt05n + ln_set_rate = 24.4064 + -46.6405 * tfactors.T9i + -8.39481 * tfactors.T913i + -0.165254 * tfactors.T913 + + -0.16936 * tfactors.T9 + 0.0533676 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // pt05n - ln_set_rate = 24.4064 + -46.6405 * tfactors.T9i + -8.39481 * tfactors.T913i + -0.165254 * tfactors.T913 - + -0.16936 * tfactors.T9 + 0.0533676 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.6405 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.39481 * tfactors.T943i + (1.0/3.0) * -0.165254 * tfactors.T923i + + -0.16936 + (5.0/3.0) * 0.0533676 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.6405 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.39481 * tfactors.T943i + (1.0/3.0) * -0.165254 * tfactors.T923i - + -0.16936 + (5.0/3.0) * 0.0533676 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_p_to_d_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_He4_to_d_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + p --> d + He3 - // p + He4 --> d + He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04 + ln_set_rate = 26.3907 + -212.977 * tfactors.T9i + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 + + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 26.3907 + -212.977 * tfactors.T9i + -7.182 * tfactors.T913i + 0.473288 * tfactors.T913 - + 1.46847 * tfactors.T9 + -27.9603 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 212.977 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i + + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 212.977 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * 0.473288 * tfactors.T923i - + 1.46847 + (5.0/3.0) * -27.9603 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 43.0037 + -212.977 * tfactors.T9i + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 + + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; - // de04 - ln_set_rate = 43.0037 + -212.977 * tfactors.T9i + -7.182 * tfactors.T913i + -17.1349 * tfactors.T913 - + 1.36908 * tfactors.T9 + -0.0814423 * tfactors.T953 + 3.35395 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 212.977 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i + + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 212.977 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -7.182 * tfactors.T943i + (1.0/3.0) * -17.1349 * tfactors.T923i - + 1.36908 + (5.0/3.0) * -0.0814423 * tfactors.T923 + 3.35395 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_to_n_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_to_n_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 --> n + Be7 - // He4 + He4 --> n + Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 19.694 + -220.375 * tfactors.T9i + -0.00210045 * tfactors.T913 + + 0.000176541 * tfactors.T9 + -1.36797e-05 * tfactors.T953 + 1.00083 * tfactors.lnT9; - // wagn - ln_set_rate = 19.694 + -220.375 * tfactors.T9i + -0.00210045 * tfactors.T913 - + 0.000176541 * tfactors.T9 + -1.36797e-05 * tfactors.T953 + 1.00083 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 220.375 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.00210045 * tfactors.T923i + + 0.000176541 + (5.0/3.0) * -1.36797e-05 * tfactors.T923 + 1.00083 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 220.375 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.00210045 * tfactors.T923i - + 0.000176541 + (5.0/3.0) * -1.36797e-05 * tfactors.T923 + 1.00083 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_to_p_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_to_p_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 --> p + Li7 - // He4 + He4 --> p + Li7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04r + ln_set_rate = 15.7864 + -205.79 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // de04r - ln_set_rate = 15.7864 + -205.79 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 205.79 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 205.79 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 13.4902 + -201.312 * tfactors.T9i + -8.4727 * tfactors.T913i + 0.417943 * tfactors.T913 + + 5.34565 * tfactors.T9 + -4.8684 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 13.4902 + -201.312 * tfactors.T9i + -8.4727 * tfactors.T913i + 0.417943 * tfactors.T913 - + 5.34565 * tfactors.T9 + -4.8684 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 201.312 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.417943 * tfactors.T923i + + 5.34565 + (5.0/3.0) * -4.8684 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 201.312 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.417943 * tfactors.T923i - + 5.34565 + (5.0/3.0) * -4.8684 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04r + ln_set_rate = 23.4325 + -227.465 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // de04r - ln_set_rate = 23.4325 + -227.465 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 227.465 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 227.465 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 21.9764 + -201.312 * tfactors.T9i + -8.4727 * tfactors.T913i + 0.297934 * tfactors.T913 + + 0.0582335 * tfactors.T9 + -0.00413383 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 21.9764 + -201.312 * tfactors.T9i + -8.4727 * tfactors.T913i + 0.297934 * tfactors.T913 - + 0.0582335 * tfactors.T9 + -0.00413383 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 201.312 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.297934 * tfactors.T923i + + 0.0582335 + (5.0/3.0) * -0.00413383 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 201.312 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.297934 * tfactors.T923i - + 0.0582335 + (5.0/3.0) * -0.00413383 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_p_to_He4_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Li6_to_He4_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 + p --> He4 + He3 - // Li6 + p --> He4 + He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // pt05n + ln_set_rate = 24.3475 + -8.39481 * tfactors.T913i + -0.165254 * tfactors.T913 + + -0.16936 * tfactors.T9 + 0.0533676 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // pt05n - ln_set_rate = 24.3475 + -8.39481 * tfactors.T913i + -0.165254 * tfactors.T913 - + -0.16936 * tfactors.T9 + 0.0533676 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -8.39481 * tfactors.T943i + (1.0/3.0) * -0.165254 * tfactors.T923i + + -0.16936 + (5.0/3.0) * 0.0533676 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -8.39481 * tfactors.T943i + (1.0/3.0) * -0.165254 * tfactors.T923i - + -0.16936 + (5.0/3.0) * 0.0533676 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_d_to_n_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_Li6_to_n_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 + d --> n + Be7 - // Li6 + d --> n + Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = 28.0095 + -4.77456e-12 * tfactors.T9i + -10.259 * tfactors.T913i + -2.01559e-09 * tfactors.T913 + + 1.99542e-10 * tfactors.T9 + -1.65595e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // mafon - ln_set_rate = 28.0095 + -4.77456e-12 * tfactors.T9i + -10.259 * tfactors.T913i + -2.01559e-09 * tfactors.T913 - + 1.99542e-10 * tfactors.T9 + -1.65595e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.77456e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.259 * tfactors.T943i + (1.0/3.0) * -2.01559e-09 * tfactors.T923i + + 1.99542e-10 + (5.0/3.0) * -1.65595e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.77456e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.259 * tfactors.T943i + (1.0/3.0) * -2.01559e-09 * tfactors.T923i - + 1.99542e-10 + (5.0/3.0) * -1.65595e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_d_to_p_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_Li6_to_p_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 + d --> p + Li7 - // Li6 + d --> p + Li7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = 28.0231 + -10.135 * tfactors.T913i + + -0.666667 * tfactors.lnT9; - // mafon - ln_set_rate = 28.0231 + -10.135 * tfactors.T913i - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.135 * tfactors.T943i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.135 * tfactors.T943i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li6_He4_to_p_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Li6_to_p_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li6 + He4 --> p + Be9 - // Li6 + He4 --> p + Be9 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 25.5847 + -24.6712 * tfactors.T9i + -10.359 * tfactors.T913i + 0.102577 * tfactors.T913 + + 4.43544 * tfactors.T9 + -5.97105 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 25.5847 + -24.6712 * tfactors.T9i + -10.359 * tfactors.T913i + 0.102577 * tfactors.T913 - + 4.43544 * tfactors.T9 + -5.97105 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.6712 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.359 * tfactors.T943i + (1.0/3.0) * 0.102577 * tfactors.T923i + + 4.43544 + (5.0/3.0) * -5.97105 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.6712 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.359 * tfactors.T943i + (1.0/3.0) * 0.102577 * tfactors.T923i - + 4.43544 + (5.0/3.0) * -5.97105 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 19.8324 + -29.8312 * tfactors.T9i + + -0.75 * tfactors.lnT9; - // cf88r - ln_set_rate = 19.8324 + -29.8312 * tfactors.T9i - + -0.75 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.8312 * tfactors.T9i * tfactors.T9i + + -0.75 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.8312 * tfactors.T9i * tfactors.T9i - + -0.75 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 19.4366 + -27.7172 * tfactors.T9i + + -1.0 * tfactors.lnT9; - // cf88r - ln_set_rate = 19.4366 + -27.7172 * tfactors.T9i - + -1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.7172 * tfactors.T9i * tfactors.T9i + + -1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.7172 * tfactors.T9i * tfactors.T9i - + -1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_p_to_n_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Li7_to_n_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + p --> n + Be7 - // Li7 + p --> n + Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // db18 + ln_set_rate = 21.7899 + -19.0779 * tfactors.T9i + -0.30254 * tfactors.T913i + -0.3602 * tfactors.T913 + + 0.17472 * tfactors.T9 + -0.0223 * tfactors.T953 + -0.4581 * tfactors.lnT9; - // db18 - ln_set_rate = 21.7899 + -19.0779 * tfactors.T9i + -0.30254 * tfactors.T913i + -0.3602 * tfactors.T913 - + 0.17472 * tfactors.T9 + -0.0223 * tfactors.T953 + -0.4581 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.0779 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.30254 * tfactors.T943i + (1.0/3.0) * -0.3602 * tfactors.T923i + + 0.17472 + (5.0/3.0) * -0.0223 * tfactors.T923 + -0.4581 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.0779 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.30254 * tfactors.T943i + (1.0/3.0) * -0.3602 * tfactors.T923i - + 0.17472 + (5.0/3.0) * -0.0223 * tfactors.T923 + -0.4581 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_p_to_d_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Li7_to_d_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + p --> d + Li6 - // Li7 + p --> d + Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = 28.9494 + -58.3239 * tfactors.T9i + -10.135 * tfactors.T913i + + -0.666667 * tfactors.lnT9; - // mafon - ln_set_rate = 28.9494 + -58.3239 * tfactors.T9i + -10.135 * tfactors.T913i - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.3239 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.135 * tfactors.T943i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.3239 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.135 * tfactors.T943i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_p_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Li7_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + p --> He4 + He4 - // Li7 + p --> He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // de04r + ln_set_rate = 21.8999 + -26.1527 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // de04r - ln_set_rate = 21.8999 + -26.1527 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.1527 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.1527 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 20.4438 + -8.4727 * tfactors.T913i + 0.297934 * tfactors.T913 + + 0.0582335 * tfactors.T9 + -0.00413383 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 20.4438 + -8.4727 * tfactors.T913i + 0.297934 * tfactors.T913 - + 0.0582335 * tfactors.T9 + -0.00413383 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.297934 * tfactors.T923i + + 0.0582335 + (5.0/3.0) * -0.00413383 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.297934 * tfactors.T923i - + 0.0582335 + (5.0/3.0) * -0.00413383 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04r + ln_set_rate = 14.2538 + -4.478 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // de04r - ln_set_rate = 14.2538 + -4.478 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.478 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.478 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // de04 + ln_set_rate = 11.9576 + -8.4727 * tfactors.T913i + 0.417943 * tfactors.T913 + + 5.34565 * tfactors.T9 + -4.8684 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // de04 - ln_set_rate = 11.9576 + -8.4727 * tfactors.T913i + 0.417943 * tfactors.T913 - + 5.34565 * tfactors.T9 + -4.8684 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.417943 * tfactors.T923i + + 5.34565 + (5.0/3.0) * -4.8684 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -8.4727 * tfactors.T943i + (1.0/3.0) * 0.417943 * tfactors.T923i - + 5.34565 + (5.0/3.0) * -4.8684 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_He4_to_n_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Li7_to_n_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + He4 --> n + B10 - // Li7 + He4 --> n + B10 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 19.7521 + -32.3766 * tfactors.T9i; - // cf88n - ln_set_rate = 19.7521 + -32.3766 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 32.3766 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 32.3766 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_n_to_p_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Be7_to_p_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + n --> p + Li7 - // Be7 + n --> p + Li7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // db18 + ln_set_rate = 21.7899 + 0.000728098 * tfactors.T9i + -0.30254 * tfactors.T913i + -0.3602 * tfactors.T913 + + 0.17472 * tfactors.T9 + -0.0223 * tfactors.T953 + -0.4581 * tfactors.lnT9; - // db18 - ln_set_rate = 21.7899 + 0.000728098 * tfactors.T9i + -0.30254 * tfactors.T913i + -0.3602 * tfactors.T913 - + 0.17472 * tfactors.T9 + -0.0223 * tfactors.T953 + -0.4581 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.000728098 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.30254 * tfactors.T943i + (1.0/3.0) * -0.3602 * tfactors.T923i + + 0.17472 + (5.0/3.0) * -0.0223 * tfactors.T923 + -0.4581 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.000728098 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.30254 * tfactors.T943i + (1.0/3.0) * -0.3602 * tfactors.T923i - + 0.17472 + (5.0/3.0) * -0.0223 * tfactors.T923 + -0.4581 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_n_to_d_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Be7_to_d_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + n --> d + Li6 - // Be7 + n --> d + Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = 28.9358 + -39.2438 * tfactors.T9i + -10.259 * tfactors.T913i + -2.01559e-09 * tfactors.T913 + + 1.99542e-10 * tfactors.T9 + -1.65595e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // mafon - ln_set_rate = 28.9358 + -39.2438 * tfactors.T9i + -10.259 * tfactors.T913i + -2.01559e-09 * tfactors.T913 - + 1.99542e-10 * tfactors.T9 + -1.65595e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.2438 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.259 * tfactors.T943i + (1.0/3.0) * -2.01559e-09 * tfactors.T923i + + 1.99542e-10 + (5.0/3.0) * -1.65595e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.2438 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.259 * tfactors.T943i + (1.0/3.0) * -2.01559e-09 * tfactors.T923i - + 1.99542e-10 + (5.0/3.0) * -1.65595e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_n_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Be7_to_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + n --> He4 + He4 - // Be7 + n --> He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 18.1614 + -0.00210045 * tfactors.T913 + + 0.000176541 * tfactors.T9 + -1.36797e-05 * tfactors.T953 + 1.00083 * tfactors.lnT9; - // wagn - ln_set_rate = 18.1614 + -0.00210045 * tfactors.T913 - + 0.000176541 * tfactors.T9 + -1.36797e-05 * tfactors.T953 + 1.00083 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.00210045 * tfactors.T923i + + 0.000176541 + (5.0/3.0) * -1.36797e-05 * tfactors.T923 + 1.00083 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.00210045 * tfactors.T923i - + 0.000176541 + (5.0/3.0) * -1.36797e-05 * tfactors.T923 + 1.00083 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_He4_to_p_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Be7_to_p_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + He4 --> p + B10 - // Be7 + He4 --> p + B10 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 43.9213 + -13.2872 * tfactors.T9i + -12.9754 * tfactors.T913i + -44.3224 * tfactors.T913 + + 62.9626 * tfactors.T9 + -49.5228 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 43.9213 + -13.2872 * tfactors.T9i + -12.9754 * tfactors.T913i + -44.3224 * tfactors.T913 - + 62.9626 * tfactors.T9 + -49.5228 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.2872 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.9754 * tfactors.T943i + (1.0/3.0) * -44.3224 * tfactors.T923i + + 62.9626 + (5.0/3.0) * -49.5228 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.2872 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.9754 * tfactors.T943i + (1.0/3.0) * -44.3224 * tfactors.T923i - + 62.9626 + (5.0/3.0) * -49.5228 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -6.7467 + -13.8479 * tfactors.T9i + 0.532995 * tfactors.T913i + 22.8893 * tfactors.T913 + + -3.08149 * tfactors.T9 + 0.218269 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.7467 + -13.8479 * tfactors.T9i + 0.532995 * tfactors.T913i + 22.8893 * tfactors.T913 - + -3.08149 * tfactors.T9 + 0.218269 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.8479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.532995 * tfactors.T943i + (1.0/3.0) * 22.8893 * tfactors.T923i + + -3.08149 + (5.0/3.0) * 0.218269 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.8479 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.532995 * tfactors.T943i + (1.0/3.0) * 22.8893 * tfactors.T923i - + -3.08149 + (5.0/3.0) * 0.218269 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be9_p_to_He4_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Be9_to_He4_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be9 + p --> He4 + Li6 - // Be9 + p --> He4 + Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 26.0751 + -10.359 * tfactors.T913i + 0.102577 * tfactors.T913 + + 4.43544 * tfactors.T9 + -5.97105 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 26.0751 + -10.359 * tfactors.T913i + 0.102577 * tfactors.T913 - + 4.43544 * tfactors.T9 + -5.97105 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.359 * tfactors.T943i + (1.0/3.0) * 0.102577 * tfactors.T923i + + 4.43544 + (5.0/3.0) * -5.97105 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.359 * tfactors.T943i + (1.0/3.0) * 0.102577 * tfactors.T923i - + 4.43544 + (5.0/3.0) * -5.97105 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 20.3228 + -5.16 * tfactors.T9i + + -0.75 * tfactors.lnT9; - // cf88r - ln_set_rate = 20.3228 + -5.16 * tfactors.T9i - + -0.75 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.16 * tfactors.T9i * tfactors.T9i + + -0.75 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.16 * tfactors.T9i * tfactors.T9i - + -0.75 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 19.927 + -3.046 * tfactors.T9i + + -1.0 * tfactors.lnT9; - // cf88r - ln_set_rate = 19.927 + -3.046 * tfactors.T9i - + -1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.046 * tfactors.T9i * tfactors.T9i + + -1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.046 * tfactors.T9i * tfactors.T9i - + -1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be9_He4_to_n_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Be9_to_n_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be9 + He4 --> n + C12 - // Be9 + He4 --> n + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 11.744 + -4.179 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 11.744 + -4.179 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.179 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.179 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = -1.48281 + -1.834 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = -1.48281 + -1.834 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.834 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.834 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = -9.51959 + -1.184 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = -9.51959 + -1.184 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.184 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.184 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 31.464 + -23.87 * tfactors.T913i + 0.566698 * tfactors.T913 + + 44.0957 * tfactors.T9 + -314.232 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 31.464 + -23.87 * tfactors.T913i + 0.566698 * tfactors.T913 - + 44.0957 * tfactors.T9 + -314.232 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -23.87 * tfactors.T943i + (1.0/3.0) * 0.566698 * tfactors.T923i + + 44.0957 + (5.0/3.0) * -314.232 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -23.87 * tfactors.T943i + (1.0/3.0) * 0.566698 * tfactors.T923i - + 44.0957 + (5.0/3.0) * -314.232 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 19.2962 + -12.732 * tfactors.T9i; - // cf88r - ln_set_rate = 19.2962 + -12.732 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.732 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.732 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B10_n_to_He4_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_B10_to_He4_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B10 + n --> He4 + Li7 - // B10 + n --> He4 + Li7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 20.0438; + amrex::ignore_unused(tfactors); - // cf88n - ln_set_rate = 20.0438; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B10_p_to_He4_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_B10_to_He4_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B10 + p --> He4 + Be7 - // B10 + p --> He4 + Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -6.45503 + -0.560753 * tfactors.T9i + 0.532995 * tfactors.T913i + 22.8893 * tfactors.T913 + + -3.08149 * tfactors.T9 + 0.218269 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.45503 + -0.560753 * tfactors.T9i + 0.532995 * tfactors.T913i + 22.8893 * tfactors.T913 - + -3.08149 * tfactors.T9 + 0.218269 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.560753 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.532995 * tfactors.T943i + (1.0/3.0) * 22.8893 * tfactors.T923i + + -3.08149 + (5.0/3.0) * 0.218269 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.560753 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 0.532995 * tfactors.T943i + (1.0/3.0) * 22.8893 * tfactors.T923i - + -3.08149 + (5.0/3.0) * 0.218269 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 44.213 + -12.9754 * tfactors.T913i + -44.3224 * tfactors.T913 + + 62.9626 * tfactors.T9 + -49.5228 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 44.213 + -12.9754 * tfactors.T913i + -44.3224 * tfactors.T913 - + 62.9626 * tfactors.T9 + -49.5228 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.9754 * tfactors.T943i + (1.0/3.0) * -44.3224 * tfactors.T923i + + 62.9626 + (5.0/3.0) * -49.5228 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.9754 * tfactors.T943i + (1.0/3.0) * -44.3224 * tfactors.T923i - + 62.9626 + (5.0/3.0) * -49.5228 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B10_He4_to_n_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_B10_to_n_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B10 + He4 --> n + N13 - // B10 + He4 --> n + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 30.5042 + -27.8719 * tfactors.T913i + -0.599503 * tfactors.T913 + + 0.122849 * tfactors.T9 + -0.0393717 * tfactors.T953 + -0.507333 * tfactors.lnT9; - // cf88n - ln_set_rate = 30.5042 + -27.8719 * tfactors.T913i + -0.599503 * tfactors.T913 - + 0.122849 * tfactors.T9 + -0.0393717 * tfactors.T953 + -0.507333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.8719 * tfactors.T943i + (1.0/3.0) * -0.599503 * tfactors.T923i + + 0.122849 + (5.0/3.0) * -0.0393717 * tfactors.T923 + -0.507333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.8719 * tfactors.T943i + (1.0/3.0) * -0.599503 * tfactors.T923i - + 0.122849 + (5.0/3.0) * -0.0393717 * tfactors.T923 + -0.507333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B10_He4_to_p_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_B10_to_p_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B10 + He4 --> p + C13 - // B10 + He4 --> p + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 34.498 + -27.99 * tfactors.T913i + + -0.666667 * tfactors.lnT9; - // wagn - ln_set_rate = 34.498 + -27.99 * tfactors.T913i - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.99 * tfactors.T943i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.99 * tfactors.T943i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B11_He4_to_n_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_B11_to_n_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B11 + He4 --> n + N14 - // B11 + He4 --> n + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 29.5726 + -28.234 * tfactors.T913i + -0.325987 * tfactors.T913 + + 30.135 * tfactors.T9 + -78.4165 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 29.5726 + -28.234 * tfactors.T913i + -0.325987 * tfactors.T913 - + 30.135 * tfactors.T9 + -78.4165 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -28.234 * tfactors.T943i + (1.0/3.0) * -0.325987 * tfactors.T923i + + 30.135 + (5.0/3.0) * -78.4165 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -28.234 * tfactors.T943i + (1.0/3.0) * -0.325987 * tfactors.T923i - + 30.135 + (5.0/3.0) * -78.4165 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 15.3084 + -8.596 * tfactors.T9i + + 0.6 * tfactors.lnT9; - // cf88r - ln_set_rate = 15.3084 + -8.596 * tfactors.T9i - + 0.6 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.596 * tfactors.T9i * tfactors.T9i + + 0.6 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.596 * tfactors.T9i * tfactors.T9i - + 0.6 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 7.44425 + -5.178 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 7.44425 + -5.178 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.178 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.178 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 0.582216 + -2.827 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 0.582216 + -2.827 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.827 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.827 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B11_He4_to_p_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_B11_to_p_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B11 + He4 --> p + C14 - // B11 + He4 --> p + C14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bb92r + ln_set_rate = 5.48852 + -5.147 * tfactors.T9i + -5.81643e-09 * tfactors.T913i + 1.24374e-08 * tfactors.T913 + + -9.55069e-10 * tfactors.T9 + 6.81706e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; - // bb92r - ln_set_rate = 5.48852 + -5.147 * tfactors.T9i + -5.81643e-09 * tfactors.T913i + 1.24374e-08 * tfactors.T913 - + -9.55069e-10 * tfactors.T9 + 6.81706e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.147 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.81643e-09 * tfactors.T943i + (1.0/3.0) * 1.24374e-08 * tfactors.T923i + + -9.55069e-10 + (5.0/3.0) * 6.81706e-11 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.147 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.81643e-09 * tfactors.T943i + (1.0/3.0) * 1.24374e-08 * tfactors.T923i - + -9.55069e-10 + (5.0/3.0) * 6.81706e-11 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92r + ln_set_rate = 6.1942 + -5.157 * tfactors.T9i + -2.8504e-09 * tfactors.T913i + 5.85721e-09 * tfactors.T913 + + -4.34052e-10 * tfactors.T9 + 3.01373e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; - // bb92r - ln_set_rate = 6.1942 + -5.157 * tfactors.T9i + -2.8504e-09 * tfactors.T913i + 5.85721e-09 * tfactors.T913 - + -4.34052e-10 * tfactors.T9 + 3.01373e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.157 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.8504e-09 * tfactors.T943i + (1.0/3.0) * 5.85721e-09 * tfactors.T923i + + -4.34052e-10 + (5.0/3.0) * 3.01373e-11 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.157 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.8504e-09 * tfactors.T943i + (1.0/3.0) * 5.85721e-09 * tfactors.T923i - + -4.34052e-10 + (5.0/3.0) * 3.01373e-11 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92n + ln_set_rate = 178.316 + -0.19519 * tfactors.T9i + 4.28912 * tfactors.T913i + -214.72 * tfactors.T913 + + 57.4073 * tfactors.T9 + -25.5329 * tfactors.T953 + 53.0473 * tfactors.lnT9; - // bb92n - ln_set_rate = 178.316 + -0.19519 * tfactors.T9i + 4.28912 * tfactors.T913i + -214.72 * tfactors.T913 - + 57.4073 * tfactors.T9 + -25.5329 * tfactors.T953 + 53.0473 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.19519 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.28912 * tfactors.T943i + (1.0/3.0) * -214.72 * tfactors.T923i + + 57.4073 + (5.0/3.0) * -25.5329 * tfactors.T923 + 53.0473 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.19519 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.28912 * tfactors.T943i + (1.0/3.0) * -214.72 * tfactors.T923i - + 57.4073 + (5.0/3.0) * -25.5329 * tfactors.T923 + 53.0473 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92r + ln_set_rate = 15.4137 + -11.26 * tfactors.T9i + -1.87598e-08 * tfactors.T913i + 3.26423e-08 * tfactors.T913 + + -2.18782e-09 * tfactors.T9 + 1.43323e-10 * tfactors.T953 + 0.6 * tfactors.lnT9; - // bb92r - ln_set_rate = 15.4137 + -11.26 * tfactors.T9i + -1.87598e-08 * tfactors.T913i + 3.26423e-08 * tfactors.T913 - + -2.18782e-09 * tfactors.T9 + 1.43323e-10 * tfactors.T953 + 0.6 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.26 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.87598e-08 * tfactors.T943i + (1.0/3.0) * 3.26423e-08 * tfactors.T923i + + -2.18782e-09 + (5.0/3.0) * 1.43323e-10 * tfactors.T923 + 0.6 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.26 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.87598e-08 * tfactors.T943i + (1.0/3.0) * 3.26423e-08 * tfactors.T923i - + -2.18782e-09 + (5.0/3.0) * 1.43323e-10 * tfactors.T923 + 0.6 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92r + ln_set_rate = -5.21398 + -2.868 * tfactors.T9i + 2.62625e-09 * tfactors.T913i + -6.58921e-09 * tfactors.T913 + + 5.62244e-10 * tfactors.T9 + -4.28925e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; - // bb92r - ln_set_rate = -5.21398 + -2.868 * tfactors.T9i + 2.62625e-09 * tfactors.T913i + -6.58921e-09 * tfactors.T913 - + 5.62244e-10 * tfactors.T9 + -4.28925e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.868 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.62625e-09 * tfactors.T943i + (1.0/3.0) * -6.58921e-09 * tfactors.T923i + + 5.62244e-10 + (5.0/3.0) * -4.28925e-11 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.868 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.62625e-09 * tfactors.T943i + (1.0/3.0) * -6.58921e-09 * tfactors.T923i - + 5.62244e-10 + (5.0/3.0) * -4.28925e-11 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_n_to_He4_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_C12_to_He4_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + n --> He4 + Be9 - // C12 + n --> He4 + Be9 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 0.858256 + -67.9913 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 0.858256 + -67.9913 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 67.9913 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.9913 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = -7.17852 + -67.3413 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = -7.17852 + -67.3413 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 67.3413 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.3413 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 33.8051 + -66.1573 * tfactors.T9i + -23.87 * tfactors.T913i + 0.566698 * tfactors.T913 + + 44.0957 * tfactors.T9 + -314.232 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 33.8051 + -66.1573 * tfactors.T9i + -23.87 * tfactors.T913i + 0.566698 * tfactors.T913 - + 44.0957 * tfactors.T9 + -314.232 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 66.1573 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.87 * tfactors.T943i + (1.0/3.0) * 0.566698 * tfactors.T923i + + 44.0957 + (5.0/3.0) * -314.232 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 66.1573 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.87 * tfactors.T943i + (1.0/3.0) * 0.566698 * tfactors.T923i - + 44.0957 + (5.0/3.0) * -314.232 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 21.6373 + -78.8893 * tfactors.T9i; - // cf88r - ln_set_rate = 21.6373 + -78.8893 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.8893 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.8893 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 14.0851 + -70.3363 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 14.0851 + -70.3363 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 70.3363 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 70.3363 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_n_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_n_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> n + O15 - // C12 + He4 --> n + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 17.0115 + -98.6615 * tfactors.T9i + 0.124787 * tfactors.T913 + + 0.0588937 * tfactors.T9 + -0.00679206 * tfactors.T953; - // cf88n - ln_set_rate = 17.0115 + -98.6615 * tfactors.T9i + 0.124787 * tfactors.T913 - + 0.0588937 * tfactors.T9 + -0.00679206 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 98.6615 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.124787 * tfactors.T923i + + 0.0588937 + (5.0/3.0) * -0.00679206 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 98.6615 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.124787 * tfactors.T923i - + 0.0588937 + (5.0/3.0) * -0.00679206 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_He4_to_p_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C12_to_p_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + He4 --> p + N15 - // C12 + He4 --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 27.118 + -57.6279 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 27.118 + -57.6279 * tfactors.T9i + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 57.6279 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 57.6279 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -6.93365 + -58.7917 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.93365 + -58.7917 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.7917 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.7917 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 20.5388 + -65.034 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 20.5388 + -65.034 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.034 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.034 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -5.2319 + -59.6491 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -5.2319 + -59.6491 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.6491 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.6491 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> n + Mg23 - // C12 + C12 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8056 + -30.1498 * tfactors.T9i + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1498 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> p + Na23 - // C12 + C12 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9649 + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_C12_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C12 + C12 --> He4 + Ne20 - // C12 + C12 --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.2863 + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_p_to_n_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C13_to_n_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + p --> n + N13 - // C13 + p --> n + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 17.7625 + -34.8483 * tfactors.T9i + 1.26126 * tfactors.T913 + + -0.204952 * tfactors.T9 + 0.0310523 * tfactors.T953; - // nacrn - ln_set_rate = 17.7625 + -34.8483 * tfactors.T9i + 1.26126 * tfactors.T913 - + -0.204952 * tfactors.T9 + 0.0310523 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.8483 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.26126 * tfactors.T923i + + -0.204952 + (5.0/3.0) * 0.0310523 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.8483 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.26126 * tfactors.T923i - + -0.204952 + (5.0/3.0) * 0.0310523 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_p_to_He4_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C13_to_He4_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + p --> He4 + B10 - // C13 + p --> He4 + B10 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 36.7435 + -47.1362 * tfactors.T9i + -27.99 * tfactors.T913i + + -0.666667 * tfactors.lnT9; - // wagn - ln_set_rate = 36.7435 + -47.1362 * tfactors.T9i + -27.99 * tfactors.T913i - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.1362 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.99 * tfactors.T943i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.1362 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.99 * tfactors.T943i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_d_to_n_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_C13_to_n_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + d --> n + N14 - // C13 + d --> n + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bb92n + ln_set_rate = 27.1993 + -0.00261944 * tfactors.T9i + -16.8935 * tfactors.T913i + 4.06445 * tfactors.T913 + + -1.1715 * tfactors.T9 + 0.118556 * tfactors.T953 + -1.13937 * tfactors.lnT9; - // bb92n - ln_set_rate = 27.1993 + -0.00261944 * tfactors.T9i + -16.8935 * tfactors.T913i + 4.06445 * tfactors.T913 - + -1.1715 * tfactors.T9 + 0.118556 * tfactors.T953 + -1.13937 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.00261944 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.8935 * tfactors.T943i + (1.0/3.0) * 4.06445 * tfactors.T923i + + -1.1715 + (5.0/3.0) * 0.118556 * tfactors.T923 + -1.13937 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.00261944 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.8935 * tfactors.T943i + (1.0/3.0) * 4.06445 * tfactors.T923i - + -1.1715 + (5.0/3.0) * 0.118556 * tfactors.T923 + -1.13937 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C13_He4_to_n_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C13_to_n_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C13 + He4 --> n + O16 - // C13 + He4 --> n + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // gl12 + ln_set_rate = 62.5775 + -0.0277331 * tfactors.T9i + -32.3917 * tfactors.T913i + -48.934 * tfactors.T913 + + 44.1843 * tfactors.T9 + -20.8743 * tfactors.T953 + 2.02494 * tfactors.lnT9; - // gl12 - ln_set_rate = 62.5775 + -0.0277331 * tfactors.T9i + -32.3917 * tfactors.T913i + -48.934 * tfactors.T913 - + 44.1843 * tfactors.T9 + -20.8743 * tfactors.T953 + 2.02494 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0277331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.3917 * tfactors.T943i + (1.0/3.0) * -48.934 * tfactors.T923i + + 44.1843 + (5.0/3.0) * -20.8743 * tfactors.T923 + 2.02494 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0277331 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.3917 * tfactors.T943i + (1.0/3.0) * -48.934 * tfactors.T923i - + 44.1843 + (5.0/3.0) * -20.8743 * tfactors.T923 + 2.02494 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // gl12 + ln_set_rate = 79.3008 + -0.30489 * tfactors.T9i + 7.43132 * tfactors.T913i + -84.8689 * tfactors.T913 + + 3.65083 * tfactors.T9 + -0.148015 * tfactors.T953 + 37.6008 * tfactors.lnT9; - // gl12 - ln_set_rate = 79.3008 + -0.30489 * tfactors.T9i + 7.43132 * tfactors.T913i + -84.8689 * tfactors.T913 - + 3.65083 * tfactors.T9 + -0.148015 * tfactors.T953 + 37.6008 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.30489 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.43132 * tfactors.T943i + (1.0/3.0) * -84.8689 * tfactors.T923i + + 3.65083 + (5.0/3.0) * -0.148015 * tfactors.T923 + 37.6008 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.30489 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.43132 * tfactors.T943i + (1.0/3.0) * -84.8689 * tfactors.T923i - + 3.65083 + (5.0/3.0) * -0.148015 * tfactors.T923 + 37.6008 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C14_p_to_n_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C14_to_n_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C14 + p --> n + N14 - // C14 + p --> n + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88 + ln_set_rate = 5.23589 + -7.26442 * tfactors.T9i + 12.3428 * tfactors.T913 + + -2.70025 * tfactors.T9 + 0.236625 * tfactors.T953 + 1.0 * tfactors.lnT9; - // cf88 - ln_set_rate = 5.23589 + -7.26442 * tfactors.T9i + 12.3428 * tfactors.T913 - + -2.70025 * tfactors.T9 + 0.236625 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.26442 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 12.3428 * tfactors.T923i + + -2.70025 + (5.0/3.0) * 0.236625 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.26442 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 12.3428 * tfactors.T923i - + -2.70025 + (5.0/3.0) * 0.236625 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 14.7608 + -7.26442 * tfactors.T9i + -4.33989 * tfactors.T913 + + 11.4311 * tfactors.T9 + -11.7764 * tfactors.T953; - // cf88n - ln_set_rate = 14.7608 + -7.26442 * tfactors.T9i + -4.33989 * tfactors.T913 - + 11.4311 * tfactors.T9 + -11.7764 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.26442 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -4.33989 * tfactors.T923i + + 11.4311 + (5.0/3.0) * -11.7764 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.26442 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -4.33989 * tfactors.T923i - + 11.4311 + (5.0/3.0) * -11.7764 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C14_p_to_He4_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_C14_to_He4_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C14 + p --> He4 + B11 - // C14 + p --> He4 + B11 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bb92r + ln_set_rate = -2.80313 + -11.965 * tfactors.T9i + 2.62625e-09 * tfactors.T913i + -6.58921e-09 * tfactors.T913 + + 5.62244e-10 * tfactors.T9 + -4.28925e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; - // bb92r - ln_set_rate = -2.80313 + -11.965 * tfactors.T9i + 2.62625e-09 * tfactors.T913i + -6.58921e-09 * tfactors.T913 - + 5.62244e-10 * tfactors.T9 + -4.28925e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.62625e-09 * tfactors.T943i + (1.0/3.0) * -6.58921e-09 * tfactors.T923i + + 5.62244e-10 + (5.0/3.0) * -4.28925e-11 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.965 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 2.62625e-09 * tfactors.T943i + (1.0/3.0) * -6.58921e-09 * tfactors.T923i - + 5.62244e-10 + (5.0/3.0) * -4.28925e-11 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92r + ln_set_rate = 7.89937 + -14.244 * tfactors.T9i + -5.81643e-09 * tfactors.T913i + 1.24374e-08 * tfactors.T913 + + -9.55069e-10 * tfactors.T9 + 6.81706e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; - // bb92r - ln_set_rate = 7.89937 + -14.244 * tfactors.T9i + -5.81643e-09 * tfactors.T913i + 1.24374e-08 * tfactors.T913 - + -9.55069e-10 * tfactors.T9 + 6.81706e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.244 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.81643e-09 * tfactors.T943i + (1.0/3.0) * 1.24374e-08 * tfactors.T923i + + -9.55069e-10 + (5.0/3.0) * 6.81706e-11 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.244 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -5.81643e-09 * tfactors.T943i + (1.0/3.0) * 1.24374e-08 * tfactors.T923i - + -9.55069e-10 + (5.0/3.0) * 6.81706e-11 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92r + ln_set_rate = 8.60505 + -14.254 * tfactors.T9i + -2.8504e-09 * tfactors.T913i + 5.85721e-09 * tfactors.T913 + + -4.34052e-10 * tfactors.T9 + 3.01373e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; - // bb92r - ln_set_rate = 8.60505 + -14.254 * tfactors.T9i + -2.8504e-09 * tfactors.T913i + 5.85721e-09 * tfactors.T913 - + -4.34052e-10 * tfactors.T9 + 3.01373e-11 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.8504e-09 * tfactors.T943i + (1.0/3.0) * 5.85721e-09 * tfactors.T923i + + -4.34052e-10 + (5.0/3.0) * 3.01373e-11 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.254 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -2.8504e-09 * tfactors.T943i + (1.0/3.0) * 5.85721e-09 * tfactors.T923i - + -4.34052e-10 + (5.0/3.0) * 3.01373e-11 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92n + ln_set_rate = 180.727 + -9.29223 * tfactors.T9i + 4.28912 * tfactors.T913i + -214.72 * tfactors.T913 + + 57.4073 * tfactors.T9 + -25.5329 * tfactors.T953 + 53.0473 * tfactors.lnT9; - // bb92n - ln_set_rate = 180.727 + -9.29223 * tfactors.T9i + 4.28912 * tfactors.T913i + -214.72 * tfactors.T913 - + 57.4073 * tfactors.T9 + -25.5329 * tfactors.T953 + 53.0473 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.29223 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.28912 * tfactors.T943i + (1.0/3.0) * -214.72 * tfactors.T923i + + 57.4073 + (5.0/3.0) * -25.5329 * tfactors.T923 + 53.0473 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.29223 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.28912 * tfactors.T943i + (1.0/3.0) * -214.72 * tfactors.T923i - + 57.4073 + (5.0/3.0) * -25.5329 * tfactors.T923 + 53.0473 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bb92r + ln_set_rate = 17.8245 + -20.357 * tfactors.T9i + -1.87598e-08 * tfactors.T913i + 3.26423e-08 * tfactors.T913 + + -2.18782e-09 * tfactors.T9 + 1.43323e-10 * tfactors.T953 + 0.6 * tfactors.lnT9; - // bb92r - ln_set_rate = 17.8245 + -20.357 * tfactors.T9i + -1.87598e-08 * tfactors.T913i + 3.26423e-08 * tfactors.T913 - + -2.18782e-09 * tfactors.T9 + 1.43323e-10 * tfactors.T953 + 0.6 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 20.357 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.87598e-08 * tfactors.T943i + (1.0/3.0) * 3.26423e-08 * tfactors.T923i + + -2.18782e-09 + (5.0/3.0) * 1.43323e-10 * tfactors.T923 + 0.6 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 20.357 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.87598e-08 * tfactors.T943i + (1.0/3.0) * 3.26423e-08 * tfactors.T923i - + -2.18782e-09 + (5.0/3.0) * 1.43323e-10 * tfactors.T923 + 0.6 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C14_d_to_n_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_C14_to_n_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C14 + d --> n + N15 - // C14 + d --> n + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bk92 + ln_set_rate = 33.5637 + -16.939 * tfactors.T913i + -4.14392 * tfactors.T913 + + 0.438623 * tfactors.T9 + -0.0354193 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // bk92 - ln_set_rate = 33.5637 + -16.939 * tfactors.T913i + -4.14392 * tfactors.T913 - + 0.438623 * tfactors.T9 + -0.0354193 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.939 * tfactors.T943i + (1.0/3.0) * -4.14392 * tfactors.T923i + + 0.438623 + (5.0/3.0) * -0.0354193 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.939 * tfactors.T943i + (1.0/3.0) * -4.14392 * tfactors.T923i - + 0.438623 + (5.0/3.0) * -0.0354193 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bk92 + ln_set_rate = 30.6841 + -16.939 * tfactors.T913i + -0.582342 * tfactors.T913 + + -8.17066 * tfactors.T9 + 1.70865 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // bk92 - ln_set_rate = 30.6841 + -16.939 * tfactors.T913i + -0.582342 * tfactors.T913 - + -8.17066 * tfactors.T9 + 1.70865 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.939 * tfactors.T943i + (1.0/3.0) * -0.582342 * tfactors.T923i + + -8.17066 + (5.0/3.0) * 1.70865 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.939 * tfactors.T943i + (1.0/3.0) * -0.582342 * tfactors.T923i - + -8.17066 + (5.0/3.0) * 1.70865 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_C14_He4_to_n_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_C14_to_n_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // C14 + He4 --> n + O17 - // C14 + He4 --> n + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // kg91r + ln_set_rate = 18.7889 + -23.8496 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // kg91r - ln_set_rate = 18.7889 + -23.8496 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 23.8496 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 23.8496 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // kg91r + ln_set_rate = 14.4267 + -23.0516 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // kg91r - ln_set_rate = 14.4267 + -23.0516 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 23.0516 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 23.0516 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // kg91n + ln_set_rate = 11.0417 + -21.0906 * tfactors.T9i; - // kg91n - ln_set_rate = 11.0417 + -21.0906 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.0906 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.0906 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_n_to_p_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_N13_to_p_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + n --> p + C13 - // N13 + n --> p + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 17.7625 + 1.26126 * tfactors.T913 + + -0.204952 * tfactors.T9 + 0.0310523 * tfactors.T953; - // nacrn - ln_set_rate = 17.7625 + 1.26126 * tfactors.T913 - + -0.204952 * tfactors.T9 + 0.0310523 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.26126 * tfactors.T923i + + -0.204952 + (5.0/3.0) * 0.0310523 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.26126 * tfactors.T923i - + -0.204952 + (5.0/3.0) * 0.0310523 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_n_to_He4_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_N13_to_He4_B10_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + n --> He4 + B10 - // N13 + n --> He4 + B10 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 32.7497 + -12.2892 * tfactors.T9i + -27.8719 * tfactors.T913i + -0.599503 * tfactors.T913 + + 0.122849 * tfactors.T9 + -0.0393717 * tfactors.T953 + -0.507333 * tfactors.lnT9; - // cf88n - ln_set_rate = 32.7497 + -12.2892 * tfactors.T9i + -27.8719 * tfactors.T913i + -0.599503 * tfactors.T913 - + 0.122849 * tfactors.T9 + -0.0393717 * tfactors.T953 + -0.507333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.2892 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8719 * tfactors.T943i + (1.0/3.0) * -0.599503 * tfactors.T923i + + 0.122849 + (5.0/3.0) * -0.0393717 * tfactors.T923 + -0.507333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.2892 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.8719 * tfactors.T943i + (1.0/3.0) * -0.599503 * tfactors.T923i - + 0.122849 + (5.0/3.0) * -0.0393717 * tfactors.T923 + -0.507333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N13_He4_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N13_to_p_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N13 + He4 --> p + O16 - // N13 + He4 --> p + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 40.4644 + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_n_to_p_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_N14_to_p_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + n --> p + C14 - // N14 + n --> p + C14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88 + ln_set_rate = 4.13728 + 12.3428 * tfactors.T913 + + -2.70025 * tfactors.T9 + 0.236625 * tfactors.T953 + 1.0 * tfactors.lnT9; - // cf88 - ln_set_rate = 4.13728 + 12.3428 * tfactors.T913 - + -2.70025 * tfactors.T9 + 0.236625 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 12.3428 * tfactors.T923i + + -2.70025 + (5.0/3.0) * 0.236625 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 12.3428 * tfactors.T923i - + -2.70025 + (5.0/3.0) * 0.236625 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 13.6622 + -4.33989 * tfactors.T913 + + 11.4311 * tfactors.T9 + -11.7764 * tfactors.T953; - // cf88n - ln_set_rate = 13.6622 + -4.33989 * tfactors.T913 - + 11.4311 * tfactors.T9 + -11.7764 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -4.33989 * tfactors.T923i + + 11.4311 + (5.0/3.0) * -11.7764 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -4.33989 * tfactors.T923i - + 11.4311 + (5.0/3.0) * -11.7764 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_n_to_d_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_N14_to_d_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + n --> d + C13 - // N14 + n --> d + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bb92n + ln_set_rate = 28.1279 + -61.8182 * tfactors.T9i + -16.8935 * tfactors.T913i + 4.06445 * tfactors.T913 + + -1.1715 * tfactors.T9 + 0.118556 * tfactors.T953 + -1.13937 * tfactors.lnT9; - // bb92n - ln_set_rate = 28.1279 + -61.8182 * tfactors.T9i + -16.8935 * tfactors.T913i + 4.06445 * tfactors.T913 - + -1.1715 * tfactors.T9 + 0.118556 * tfactors.T953 + -1.13937 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 61.8182 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.8935 * tfactors.T943i + (1.0/3.0) * 4.06445 * tfactors.T923i + + -1.1715 + (5.0/3.0) * 0.118556 * tfactors.T923 + -1.13937 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 61.8182 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.8935 * tfactors.T943i + (1.0/3.0) * 4.06445 * tfactors.T923i - + -1.1715 + (5.0/3.0) * 0.118556 * tfactors.T923 + -1.13937 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_n_to_He4_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_N14_to_He4_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + n --> He4 + B11 - // N14 + n --> He4 + B11 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 8.75648 + -7.01151 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 8.75648 + -7.01151 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.01151 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.01151 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 1.89445 + -4.66051 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 1.89445 + -4.66051 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.66051 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.66051 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 30.8848 + -1.83351 * tfactors.T9i + -28.234 * tfactors.T913i + -0.325987 * tfactors.T913 + + 30.135 * tfactors.T9 + -78.4165 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 30.8848 + -1.83351 * tfactors.T9i + -28.234 * tfactors.T913i + -0.325987 * tfactors.T913 - + 30.135 * tfactors.T9 + -78.4165 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.83351 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -28.234 * tfactors.T943i + (1.0/3.0) * -0.325987 * tfactors.T923i + + 30.135 + (5.0/3.0) * -78.4165 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.83351 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -28.234 * tfactors.T943i + (1.0/3.0) * -0.325987 * tfactors.T923i - + 30.135 + (5.0/3.0) * -78.4165 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 16.6206 + -10.4295 * tfactors.T9i + + 0.6 * tfactors.lnT9; - // cf88r - ln_set_rate = 16.6206 + -10.4295 * tfactors.T9i - + 0.6 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.4295 * tfactors.T9i * tfactors.T9i + + 0.6 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.4295 * tfactors.T9i * tfactors.T9i - + 0.6 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_p_to_n_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N14_to_n_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + p --> n + O14 - // N14 + p --> n + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 11.3432 + -68.7567 * tfactors.T9i + 5.48024 * tfactors.T913 + + -0.764072 * tfactors.T9 + 0.0587804 * tfactors.T953; - // nacr - ln_set_rate = 11.3432 + -68.7567 * tfactors.T9i + 5.48024 * tfactors.T913 - + -0.764072 * tfactors.T9 + 0.0587804 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 68.7567 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.48024 * tfactors.T923i + + -0.764072 + (5.0/3.0) * 0.0587804 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 68.7567 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.48024 * tfactors.T923i - + -0.764072 + (5.0/3.0) * 0.0587804 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_n_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_n_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> n + F17 - // N14 + He4 --> n + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 19.2094 + -54.9473 * tfactors.T9i + -0.712285 * tfactors.T913 + + 0.240317 * tfactors.T9 + -0.0201705 * tfactors.T953; - // nacr - ln_set_rate = 19.2094 + -54.9473 * tfactors.T9i + -0.712285 * tfactors.T913 - + 0.240317 * tfactors.T9 + -0.0201705 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 54.9473 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.712285 * tfactors.T923i + + 0.240317 + (5.0/3.0) * -0.0201705 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 54.9473 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.712285 * tfactors.T923i - + 0.240317 + (5.0/3.0) * -0.0201705 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N14_He4_to_p_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N14_to_p_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N14 + He4 --> p + O17 - // N14 + He4 --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 5.13169 + -15.9452 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.13169 + -15.9452 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.9452 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.9452 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -7.60954 + -14.5839 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.60954 + -14.5839 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.5839 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.5839 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.1771 + -13.8305 * tfactors.T9i + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.1771 + -13.8305 * tfactors.T9i + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.8305 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.8305 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 9.77209 + -18.7891 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 9.77209 + -18.7891 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.7891 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.7891 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_n_to_d_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_N15_to_d_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + n --> d + C14 - // N15 + n --> d + C14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // bk92 + ln_set_rate = 34.2122 + -92.6344 * tfactors.T9i + -16.939 * tfactors.T913i + -4.14392 * tfactors.T913 + + 0.438623 * tfactors.T9 + -0.0354193 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // bk92 - ln_set_rate = 34.2122 + -92.6344 * tfactors.T9i + -16.939 * tfactors.T913i + -4.14392 * tfactors.T913 - + 0.438623 * tfactors.T9 + -0.0354193 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.6344 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.939 * tfactors.T943i + (1.0/3.0) * -4.14392 * tfactors.T923i + + 0.438623 + (5.0/3.0) * -0.0354193 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.6344 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.939 * tfactors.T943i + (1.0/3.0) * -4.14392 * tfactors.T923i - + 0.438623 + (5.0/3.0) * -0.0354193 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // bk92 + ln_set_rate = 31.3326 + -92.6344 * tfactors.T9i + -16.939 * tfactors.T913i + -0.582342 * tfactors.T913 + + -8.17066 * tfactors.T9 + 1.70865 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // bk92 - ln_set_rate = 31.3326 + -92.6344 * tfactors.T9i + -16.939 * tfactors.T913i + -0.582342 * tfactors.T913 - + -8.17066 * tfactors.T9 + 1.70865 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.6344 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.939 * tfactors.T943i + (1.0/3.0) * -0.582342 * tfactors.T923i + + -8.17066 + (5.0/3.0) * 1.70865 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.6344 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.939 * tfactors.T943i + (1.0/3.0) * -0.582342 * tfactors.T923i - + -8.17066 + (5.0/3.0) * 1.70865 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_n_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_n_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> n + O15 - // N15 + p --> n + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 18.3942 + -41.0335 * tfactors.T9i + 0.331392 * tfactors.T913 + + 0.0171473 * tfactors.T9; - // nacrn - ln_set_rate = 18.3942 + -41.0335 * tfactors.T9i + 0.331392 * tfactors.T913 - + 0.0171473 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 41.0335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.331392 * tfactors.T923i + + 0.0171473; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 41.0335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.331392 * tfactors.T923i - + 0.0171473; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_p_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_N15_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + p --> He4 + C12 - // N15 + p --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 + + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 27.4764 + -15.253 * tfactors.T913i + 1.59318 * tfactors.T913 - + 2.4479 * tfactors.T9 + -2.19708 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i + + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -15.253 * tfactors.T943i + (1.0/3.0) * 1.59318 * tfactors.T923i - + 2.4479 + (5.0/3.0) * -2.19708 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 + + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -6.57522 + -1.1638 * tfactors.T9i + 22.7105 * tfactors.T913 - + -2.90707 * tfactors.T9 + 0.205754 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i + + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.1638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 22.7105 * tfactors.T923i - + -2.90707 + (5.0/3.0) * 0.205754 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 20.8972 + -7.406 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 20.8972 + -7.406 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.406 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 + + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -4.87347 + -2.02117 * tfactors.T9i + 30.8497 * tfactors.T913 - + -8.50433 * tfactors.T9 + -1.54426 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i + + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.02117 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.8497 * tfactors.T923i - + -8.50433 + (5.0/3.0) * -1.54426 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_n_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_n_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + He4 --> n + F18 - // N15 + He4 --> n + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 18.0938 + -74.4713 * tfactors.T9i + 1.74308 * tfactors.T913 + + -1.15123 * tfactors.T9 + 0.135196 * tfactors.T953; - // cf88n - ln_set_rate = 18.0938 + -74.4713 * tfactors.T9i + 1.74308 * tfactors.T913 - + -1.15123 * tfactors.T9 + 0.135196 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.4713 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.74308 * tfactors.T923i + + -1.15123 + (5.0/3.0) * 0.135196 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.4713 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.74308 * tfactors.T923i - + -1.15123 + (5.0/3.0) * 0.135196 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_N15_He4_to_p_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_N15_to_p_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // N15 + He4 --> p + O18 - // N15 + He4 --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 8.46654 + -47.8616 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 8.46654 + -47.8616 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.8616 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.8616 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -29.7104 + -46.4444 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -29.7104 + -46.4444 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.4444 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.4444 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 25.1611 + -46.1986 * tfactors.T9i + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 25.1611 + -46.1986 * tfactors.T9i + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.1986 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.1986 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 7.13756 + -51.5219 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 7.13756 + -51.5219 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 51.5219 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.5219 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_n_to_p_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O14_to_p_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + n --> p + N14 - // O14 + n --> p + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 12.4418 + 5.48024 * tfactors.T913 + + -0.764072 * tfactors.T9 + 0.0587804 * tfactors.T953; - // nacr - ln_set_rate = 12.4418 + 5.48024 * tfactors.T913 - + -0.764072 * tfactors.T9 + 0.0587804 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 5.48024 * tfactors.T923i + + -0.764072 + (5.0/3.0) * 0.0587804 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 5.48024 * tfactors.T923i - + -0.764072 + (5.0/3.0) * 0.0587804 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O14_He4_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O14_to_p_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O14 + He4 --> p + F17 - // O14 + He4 --> p + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Ha96r + ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 12.1289 + -12.0223 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.0223 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 18.6518 + -26.0 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 18.6518 + -26.0 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96n + ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // Ha96n - ln_set_rate = 40.8358 + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 16.3087 + -22.51 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 16.3087 + -22.51 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.51 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 11.1184 + -13.6 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 11.1184 + -13.6 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.6 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = -106.091 + -0.453036 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = -106.091 + -0.453036 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.453036 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_n_to_p_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O15_to_p_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + n --> p + N15 - // O15 + n --> p + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 18.3942 + 0.331392 * tfactors.T913 + + 0.0171473 * tfactors.T9; - // nacrn - ln_set_rate = 18.3942 + 0.331392 * tfactors.T913 - + 0.0171473 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.331392 * tfactors.T923i + + 0.0171473; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.331392 * tfactors.T923i - + 0.0171473; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_n_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O15_to_He4_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + n --> He4 + C12 - // O15 + n --> He4 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 17.3699 + 0.124787 * tfactors.T913 + + 0.0588937 * tfactors.T9 + -0.00679206 * tfactors.T953; - // cf88n - ln_set_rate = 17.3699 + 0.124787 * tfactors.T913 - + 0.0588937 * tfactors.T9 + -0.00679206 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.124787 * tfactors.T923i + + 0.0588937 + (5.0/3.0) * -0.00679206 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.124787 * tfactors.T923i - + 0.0588937 + (5.0/3.0) * -0.00679206 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_n_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_n_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + He4 --> n + Ne18 - // O15 + He4 --> n + Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.2469 + -94.0888 * tfactors.T9i + 0.377325 * tfactors.T913 + + 0.0968945 * tfactors.T9 + -0.007769 * tfactors.T953; - // ths8r - ln_set_rate = 16.2469 + -94.0888 * tfactors.T9i + 0.377325 * tfactors.T913 - + 0.0968945 * tfactors.T9 + -0.007769 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.0888 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.377325 * tfactors.T923i + + 0.0968945 + (5.0/3.0) * -0.007769 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.0888 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.377325 * tfactors.T923i - + 0.0968945 + (5.0/3.0) * -0.007769 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O15_He4_to_p_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O15_to_p_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O15 + He4 --> p + F18 - // O15 + He4 --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10n + ln_set_rate = 61.2985 + -33.4459 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 61.2985 + -33.4459 * tfactors.T9i + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.4459 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.4459 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 1.04969 + -36.4627 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.04969 + -36.4627 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.4627 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.4627 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -32.4461 + -33.8223 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -32.4461 + -33.8223 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.8223 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.8223 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_n_to_He4_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O16_to_He4_C13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + n --> He4 + C13 - // O16 + n --> He4 + C13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // gl12 + ln_set_rate = 64.3455 + -25.7388 * tfactors.T9i + -32.3917 * tfactors.T913i + -48.934 * tfactors.T913 + + 44.1843 * tfactors.T9 + -20.8743 * tfactors.T953 + 2.02494 * tfactors.lnT9; - // gl12 - ln_set_rate = 64.3455 + -25.7388 * tfactors.T9i + -32.3917 * tfactors.T913i + -48.934 * tfactors.T913 - + 44.1843 * tfactors.T9 + -20.8743 * tfactors.T953 + 2.02494 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.7388 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.3917 * tfactors.T943i + (1.0/3.0) * -48.934 * tfactors.T923i + + 44.1843 + (5.0/3.0) * -20.8743 * tfactors.T923 + 2.02494 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.7388 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.3917 * tfactors.T943i + (1.0/3.0) * -48.934 * tfactors.T923i - + 44.1843 + (5.0/3.0) * -20.8743 * tfactors.T923 + 2.02494 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // gl12 + ln_set_rate = 81.0688 + -26.0159 * tfactors.T9i + 7.43132 * tfactors.T913i + -84.8689 * tfactors.T913 + + 3.65083 * tfactors.T9 + -0.148015 * tfactors.T953 + 37.6008 * tfactors.lnT9; - // gl12 - ln_set_rate = 81.0688 + -26.0159 * tfactors.T9i + 7.43132 * tfactors.T913i + -84.8689 * tfactors.T913 - + 3.65083 * tfactors.T9 + -0.148015 * tfactors.T953 + 37.6008 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.0159 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.43132 * tfactors.T943i + (1.0/3.0) * -84.8689 * tfactors.T923i + + 3.65083 + (5.0/3.0) * -0.148015 * tfactors.T923 + 37.6008 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0159 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.43132 * tfactors.T943i + (1.0/3.0) * -84.8689 * tfactors.T923i - + 3.65083 + (5.0/3.0) * -0.148015 * tfactors.T923 + 37.6008 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_p_to_He4_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O16_to_He4_N13_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + p --> He4 + N13 - // O16 + p --> He4 + N13 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 42.2324 + -60.5523 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 + + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 42.2324 + -60.5523 * tfactors.T9i + -35.829 * tfactors.T913i + -0.530275 * tfactors.T913 - + -0.982462 * tfactors.T9 + 0.0808059 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 60.5523 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i + + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 60.5523 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.829 * tfactors.T943i + (1.0/3.0) * -0.530275 * tfactors.T923i - + -0.982462 + (5.0/3.0) * 0.0808059 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_n_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_n_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> n + Ne19 - // O16 + He4 --> n + Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.2055 + -140.818 * tfactors.T9i + 1.70736 * tfactors.T913 + + -0.132579 * tfactors.T9 + 0.00454218 * tfactors.T953; - // ths8r - ln_set_rate = 17.2055 + -140.818 * tfactors.T9i + 1.70736 * tfactors.T913 - + -0.132579 * tfactors.T9 + 0.00454218 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 140.818 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.70736 * tfactors.T923i + + -0.132579 + (5.0/3.0) * 0.00454218 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 140.818 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.70736 * tfactors.T923i - + -0.132579 + (5.0/3.0) * 0.00454218 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_He4_to_p_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O16_to_p_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + He4 --> p + F19 - // O16 + He4 --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 7.80363 + -96.6272 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 7.80363 + -96.6272 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 96.6272 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 96.6272 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = -53.1397 + -94.2866 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = -53.1397 + -94.2866 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.2866 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.2866 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 25.8562 + -94.1589 * tfactors.T9i + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 25.8562 + -94.1589 * tfactors.T9i + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 94.1589 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 94.1589 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 13.9232 + -97.4449 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // nacrr - ln_set_rate = 13.9232 + -97.4449 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 97.4449 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 97.4449 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 14.7601 + -97.9108 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 14.7601 + -97.9108 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 97.9108 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 97.9108 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> p + Al27 - // O16 + C12 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.5253 + 0.205134 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.205134 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_C12_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_O16_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + C12 --> He4 + Mg24 - // O16 + C12 --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 48.5341 + 0.37204 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.37204 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> p + P31 - // O16 + O16 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 85.2628 + 0.223453 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.223453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_O16_O16_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O16 + O16 --> He4 + Si28 - // O16 + O16 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.2435 + -0.268514 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.268514 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_n_to_He4_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_O17_to_He4_C14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + n --> He4 + C14 - // O17 + n --> He4 + C14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // kg91r + ln_set_rate = 13.73 + -1.961 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // kg91r - ln_set_rate = 13.73 + -1.961 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.961 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.961 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // kg91n + ln_set_rate = 10.345; + amrex::ignore_unused(tfactors); - // kg91n - ln_set_rate = 10.345; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // kg91r + ln_set_rate = 18.0922 + -2.759 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // kg91r - ln_set_rate = 18.0922 + -2.759 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.759 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.759 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_n_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_n_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> n + F17 - // O17 + p --> n + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 19.0085 + -41.1187 * tfactors.T9i; - // wagn - ln_set_rate = 19.0085 + -41.1187 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 41.1187 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 41.1187 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_p_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O17_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + p --> He4 + N14 - // O17 + p --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.20763 + -0.753395 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.753395 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.579 + -16.9078 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.579 + -16.9078 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.9078 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 + + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.174 + -4.95865 * tfactors.T9i + 5.10182 * tfactors.T913 - + 0.379373 * tfactors.T9 + -0.0672515 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i + + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.95865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.10182 * tfactors.T923i - + 0.379373 + (5.0/3.0) * -0.0672515 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 5.5336 + -2.11477 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11477 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O17_He4_to_n_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O17_to_n_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O17 + He4 --> n + Ne20 - // O17 + He4 --> n + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 1.80342 + -13.8 * tfactors.T9i + 12.6501 * tfactors.T913 + + -1.10938 * tfactors.T9 + 0.0696232 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 1.80342 + -13.8 * tfactors.T9i + 12.6501 * tfactors.T913 - + -1.10938 * tfactors.T9 + 0.0696232 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.8 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 12.6501 * tfactors.T923i + + -1.10938 + (5.0/3.0) * 0.0696232 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.8 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 12.6501 * tfactors.T923i - + -1.10938 + (5.0/3.0) * 0.0696232 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 7.45588 + -8.55 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 7.45588 + -8.55 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.55 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.55 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 40.621 + -39.918 * tfactors.T913i + + 0.227017 * tfactors.T9 + -0.900234 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 40.621 + -39.918 * tfactors.T913i - + 0.227017 * tfactors.T9 + -0.900234 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.918 * tfactors.T943i + + 0.227017 + (5.0/3.0) * -0.900234 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.918 * tfactors.T943i - + 0.227017 + (5.0/3.0) * -0.900234 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_n_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_n_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> n + F18 - // O18 + p --> n + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 20.1071 + -28.2841 * tfactors.T9i; - // wagn - ln_set_rate = 20.1071 + -28.2841 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 28.2841 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 28.2841 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_p_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_O18_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + p --> He4 + N15 - // O18 + p --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -27.9044 + -0.245884 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.245884 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i + + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 26.9671 + -16.6979 * tfactors.T913i - + -3.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i + + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -16.6979 * tfactors.T943i - + (5.0/3.0) * -3.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 + + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 8.94352 + -5.32335 * tfactors.T9i + 11.6568 * tfactors.T913 - + -2.16303 * tfactors.T9 + 0.209965 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i + + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.32335 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.6568 * tfactors.T923i - + -2.16303 + (5.0/3.0) * 0.209965 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 10.2725 + -1.663 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 10.2725 + -1.663 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.663 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_O18_He4_to_n_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_O18_to_n_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // O18 + He4 --> n + Ne21 - // O18 + He4 --> n + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 2.51575 + -8.41969 * tfactors.T9i + 6.51299 * tfactors.T913 + + -0.334277 * tfactors.T9 + 2.0 * tfactors.lnT9; - // nacr - ln_set_rate = 2.51575 + -8.41969 * tfactors.T9i + 6.51299 * tfactors.T913 - + -0.334277 * tfactors.T9 + 2.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.41969 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.51299 * tfactors.T923i + + -0.334277 + 2.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.41969 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.51299 * tfactors.T923i - + -0.334277 + 2.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 1.3415 + -15.444 * tfactors.T9i + 11.656 * tfactors.T913 + + -1.24869 * tfactors.T9 + 1.0 * tfactors.lnT9; - // nacr - ln_set_rate = 1.3415 + -15.444 * tfactors.T9i + 11.656 * tfactors.T913 - + -1.24869 * tfactors.T9 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.444 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.656 * tfactors.T923i + + -1.24869 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.444 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.656 * tfactors.T923i - + -1.24869 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 2.82796 + -8.085 * tfactors.T9i; - // nacrn - ln_set_rate = 2.82796 + -8.085 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.085 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.085 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_n_to_p_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_F17_to_p_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + n --> p + O17 - // F17 + n --> p + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 19.0085; + amrex::ignore_unused(tfactors); - // wagn - ln_set_rate = 19.0085; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_n_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_F17_to_He4_N14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + n --> He4 + N14 - // F17 + n --> He4 + N14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 19.6113 + -0.712285 * tfactors.T913 + + 0.240317 * tfactors.T9 + -0.0201705 * tfactors.T953; - // nacr - ln_set_rate = 19.6113 + -0.712285 * tfactors.T913 - + 0.240317 * tfactors.T9 + -0.0201705 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.712285 * tfactors.T923i + + 0.240317 + (5.0/3.0) * -0.0201705 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.712285 * tfactors.T923i - + 0.240317 + (5.0/3.0) * -0.0201705 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_p_to_He4_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F17_to_He4_O14_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + p --> He4 + O14 - // F17 + p --> He4 + O14 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // Ha96r + ln_set_rate = 10.4217 + -27.4326 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 10.4217 + -27.4326 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.4326 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.4326 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = -106.788 + -14.2856 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = -106.788 + -14.2856 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.2856 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.2856 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 11.4322 + -25.8549 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 11.4322 + -25.8549 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.8549 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.8549 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 17.9551 + -39.8326 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 17.9551 + -39.8326 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.8326 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.8326 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96n + ln_set_rate = 40.1391 + -13.8326 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 + + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // Ha96n - ln_set_rate = 40.1391 + -13.8326 * tfactors.T9i + -39.388 * tfactors.T913i + -17.4673 * tfactors.T913 - + 35.3029 * tfactors.T9 + -24.8162 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.8326 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i + + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.8326 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.388 * tfactors.T943i + (1.0/3.0) * -17.4673 * tfactors.T923i - + 35.3029 + (5.0/3.0) * -24.8162 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // Ha96r + ln_set_rate = 15.612 + -36.3426 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // Ha96r - ln_set_rate = 15.612 + -36.3426 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.3426 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.3426 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F17_He4_to_p_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F17_to_p_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F17 + He4 --> p + Ne20 - // F17 + He4 --> p + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 38.6287 + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 38.6287 + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_n_to_p_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_F18_to_p_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + n --> p + O18 - // F18 + n --> p + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 19.0085; + amrex::ignore_unused(tfactors); - // wagn - ln_set_rate = 19.0085; - amrex::ignore_unused(tfactors); + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_n_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_F18_to_He4_N15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + n --> He4 + N15 - // F18 + n --> He4 + N15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 18.8011 + 1.74308 * tfactors.T913 + + -1.15123 * tfactors.T9 + 0.135196 * tfactors.T953; - // cf88n - ln_set_rate = 18.8011 + 1.74308 * tfactors.T913 - + -1.15123 * tfactors.T9 + 0.135196 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.74308 * tfactors.T923i + + -1.15123 + (5.0/3.0) * 0.135196 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.74308 * tfactors.T923i - + -1.15123 + (5.0/3.0) * 0.135196 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_n_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_n_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> n + Ne18 - // F18 + p --> n + Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.4443 + -60.6429 * tfactors.T9i + 0.590026 * tfactors.T913 + + 0.0742242 * tfactors.T9 + -0.0116856 * tfactors.T953; - // ths8r - ln_set_rate = 17.4443 + -60.6429 * tfactors.T9i + 0.590026 * tfactors.T913 - + 0.0742242 * tfactors.T9 + -0.0116856 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 60.6429 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.590026 * tfactors.T923i + + 0.0742242 + (5.0/3.0) * -0.0116856 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 60.6429 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.590026 * tfactors.T923i - + 0.0742242 + (5.0/3.0) * -0.0116856 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_p_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F18_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + p --> He4 + O15 - // F18 + p --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 + + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 1.75704 + -3.01675 * tfactors.T9i + 13.3223 * tfactors.T913 - + -1.36696 * tfactors.T9 + 0.0757363 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i + + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.01675 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.3223 * tfactors.T923i - + -1.36696 + (5.0/3.0) * 0.0757363 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 + + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -31.7388 + -0.376432 * tfactors.T9i + 61.738 * tfactors.T913 - + -108.29 * tfactors.T9 + -34.2365 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i + + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.376432 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 61.738 * tfactors.T923i - + -108.29 + (5.0/3.0) * -34.2365 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 + + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 62.0058 + -21.4023 * tfactors.T913i + -80.8891 * tfactors.T913 - + 134.6 * tfactors.T9 + -126.504 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i + + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -21.4023 * tfactors.T943i + (1.0/3.0) * -80.8891 * tfactors.T923i - + 134.6 + (5.0/3.0) * -126.504 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_He4_to_n_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F18_to_n_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + He4 --> n + Na21 - // F18 + He4 --> n + Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.8808 + -30.0387 * tfactors.T9i + 1.06229 * tfactors.T913 + + 0.212448 * tfactors.T9 + -0.020685 * tfactors.T953; - // ths8r - ln_set_rate = 14.8808 + -30.0387 * tfactors.T9i + 1.06229 * tfactors.T913 - + 0.212448 * tfactors.T9 + -0.020685 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.0387 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.06229 * tfactors.T923i + + 0.212448 + (5.0/3.0) * -0.020685 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.0387 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.06229 * tfactors.T923i - + 0.212448 + (5.0/3.0) * -0.020685 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F18_He4_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F18_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F18 + He4 --> p + Ne21 - // F18 + He4 --> p + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; - // rpsmr - ln_set_rate = 49.7863 + -1.84559 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.84559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_n_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_n_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> n + Ne19 - // F19 + p --> n + Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 15.6732 + -46.6617 * tfactors.T9i + 4.34441 * tfactors.T913 + + -1.71268 * tfactors.T9; - // nacr - ln_set_rate = 15.6732 + -46.6617 * tfactors.T9i + 4.34441 * tfactors.T913 - + -1.71268 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.6617 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.34441 * tfactors.T923i + + -1.71268; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.6617 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.34441 * tfactors.T923i - + -1.71268; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 20.353 + -46.6617 * tfactors.T9i + -1.58171 * tfactors.T913 + + 0.0324472 * tfactors.T9 + 1.0 * tfactors.lnT9; - // nacr - ln_set_rate = 20.353 + -46.6617 * tfactors.T9i + -1.58171 * tfactors.T913 - + 0.0324472 * tfactors.T9 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.6617 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.58171 * tfactors.T923i + + 0.0324472 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.6617 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.58171 * tfactors.T923i - + 0.0324472 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_p_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_F19_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + p --> He4 + O16 - // F19 + p --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = -52.7043 + -0.12765 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.12765 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 26.2916 + -18.116 * tfactors.T913i + + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 26.2916 + -18.116 * tfactors.T913i - + 1.86674 * tfactors.T9 + -7.5666 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i + + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -18.116 * tfactors.T943i - + 1.86674 + (5.0/3.0) * -7.5666 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 14.3586 + -3.286 * tfactors.T9i + + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; - // nacrr - ln_set_rate = 14.3586 + -3.286 * tfactors.T9i - + -0.21103 * tfactors.T9 + 2.87702 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i + + -0.21103 + 2.87702 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.286 * tfactors.T9i * tfactors.T9i - + -0.21103 + 2.87702 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 15.1955 + -3.75185 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.75185 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 8.239 + -2.46828 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacr - ln_set_rate = 8.239 + -2.46828 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.46828 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_He4_to_n_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F19_to_n_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + He4 --> n + Na22 - // F19 + He4 --> n + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88 + ln_set_rate = 6.67675 + -22.6172 * tfactors.T9i + 6.22036 * tfactors.T913 + + -0.0209891 * tfactors.T9 + -0.0689843 * tfactors.T953 + 1.0 * tfactors.lnT9; - // cf88 - ln_set_rate = 6.67675 + -22.6172 * tfactors.T9i + 6.22036 * tfactors.T913 - + -0.0209891 * tfactors.T9 + -0.0689843 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.6172 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.22036 * tfactors.T923i + + -0.0209891 + (5.0/3.0) * -0.0689843 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.6172 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.22036 * tfactors.T923i - + -0.0209891 + (5.0/3.0) * -0.0689843 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 15.0925 + -22.6172 * tfactors.T9i + -0.0532251 * tfactors.T913 + + 1.00044 * tfactors.T9 + -0.13238 * tfactors.T953; - // cf88n - ln_set_rate = 15.0925 + -22.6172 * tfactors.T9i + -0.0532251 * tfactors.T913 - + 1.00044 * tfactors.T9 + -0.13238 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.6172 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0532251 * tfactors.T923i + + 1.00044 + (5.0/3.0) * -0.13238 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.6172 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0532251 * tfactors.T923i - + 1.00044 + (5.0/3.0) * -0.13238 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_F19_He4_to_p_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_F19_to_p_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // F19 + He4 --> p + Ne22 - // F19 + He4 --> p + Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // da18r + ln_set_rate = 52.9317 + -2.8444 * tfactors.T9i + -38.7722 * tfactors.T913i + -13.3654 * tfactors.T913 + + 0.863648 * tfactors.T9 + -0.0451491 * tfactors.T953 + 1.33333 * tfactors.lnT9; - // da18r - ln_set_rate = 52.9317 + -2.8444 * tfactors.T9i + -38.7722 * tfactors.T913i + -13.3654 * tfactors.T913 - + 0.863648 * tfactors.T9 + -0.0451491 * tfactors.T953 + 1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.8444 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.7722 * tfactors.T943i + (1.0/3.0) * -13.3654 * tfactors.T923i + + 0.863648 + (5.0/3.0) * -0.0451491 * tfactors.T923 + 1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.8444 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.7722 * tfactors.T943i + (1.0/3.0) * -13.3654 * tfactors.T923i - + 0.863648 + (5.0/3.0) * -0.0451491 * tfactors.T923 + 1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // da18r + ln_set_rate = 51.6709 + -45.7808 * tfactors.T9i + -34.5008 * tfactors.T913i + 56.9316 * tfactors.T913 + + 2.09613 * tfactors.T9 + -32.496 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // da18r - ln_set_rate = 51.6709 + -45.7808 * tfactors.T9i + -34.5008 * tfactors.T913i + 56.9316 * tfactors.T913 - + 2.09613 * tfactors.T9 + -32.496 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 45.7808 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.5008 * tfactors.T943i + (1.0/3.0) * 56.9316 * tfactors.T923i + + 2.09613 + (5.0/3.0) * -32.496 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 45.7808 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.5008 * tfactors.T943i + (1.0/3.0) * 56.9316 * tfactors.T923i - + 2.09613 + (5.0/3.0) * -32.496 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // da18r + ln_set_rate = 29430.6 + -133.026 * tfactors.T9i + 12625.1 * tfactors.T913i + -49107.1 * tfactors.T913 + + 9227.53 * tfactors.T9 + -2086.65 * tfactors.T953 + 14520.2 * tfactors.lnT9; - // da18r - ln_set_rate = 29430.6 + -133.026 * tfactors.T9i + 12625.1 * tfactors.T913i + -49107.1 * tfactors.T913 - + 9227.53 * tfactors.T9 + -2086.65 * tfactors.T953 + 14520.2 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 133.026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 12625.1 * tfactors.T943i + (1.0/3.0) * -49107.1 * tfactors.T923i + + 9227.53 + (5.0/3.0) * -2086.65 * tfactors.T923 + 14520.2 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 133.026 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 12625.1 * tfactors.T943i + (1.0/3.0) * -49107.1 * tfactors.T923i - + 9227.53 + (5.0/3.0) * -2086.65 * tfactors.T923 + 14520.2 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_n_to_p_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne18_to_p_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 + n --> p + F18 - // Ne18 + n --> p + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.5429 + 0.590026 * tfactors.T913 + + 0.0742242 * tfactors.T9 + -0.0116856 * tfactors.T953; - // ths8r - ln_set_rate = 18.5429 + 0.590026 * tfactors.T913 - + 0.0742242 * tfactors.T9 + -0.0116856 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.590026 * tfactors.T923i + + 0.0742242 + (5.0/3.0) * -0.0116856 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.590026 * tfactors.T923i - + 0.0742242 + (5.0/3.0) * -0.0116856 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_n_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne18_to_He4_O15_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 + n --> He4 + O15 - // Ne18 + n --> He4 + O15 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.0529 + 0.377325 * tfactors.T913 + + 0.0968945 * tfactors.T9 + -0.007769 * tfactors.T953; - // ths8r - ln_set_rate = 18.0529 + 0.377325 * tfactors.T913 - + 0.0968945 * tfactors.T9 + -0.007769 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.377325 * tfactors.T923i + + 0.0968945 + (5.0/3.0) * -0.007769 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.377325 * tfactors.T923i - + 0.0968945 + (5.0/3.0) * -0.007769 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne18_He4_to_p_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne18_to_p_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne18 + He4 --> p + Na21 - // Ne18 + He4 --> p + Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mo14r + ln_set_rate = -23.5811 + -5.76874 * tfactors.T9i + 8.5632e-08 * tfactors.T913i + 24.8579 * tfactors.T913 + + 0.0823845 * tfactors.T9 + -0.365374 * tfactors.T953 + -2.21415e-06 * tfactors.lnT9; - // mo14r - ln_set_rate = -23.5811 + -5.76874 * tfactors.T9i + 8.5632e-08 * tfactors.T913i + 24.8579 * tfactors.T913 - + 0.0823845 * tfactors.T9 + -0.365374 * tfactors.T953 + -2.21415e-06 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.76874 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.5632e-08 * tfactors.T943i + (1.0/3.0) * 24.8579 * tfactors.T923i + + 0.0823845 + (5.0/3.0) * -0.365374 * tfactors.T923 + -2.21415e-06 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.76874 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.5632e-08 * tfactors.T943i + (1.0/3.0) * 24.8579 * tfactors.T923i - + 0.0823845 + (5.0/3.0) * -0.365374 * tfactors.T923 + -2.21415e-06 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // mo14r + ln_set_rate = -22.4389 + -10.2598 * tfactors.T9i + 4.73034e-07 * tfactors.T913i + 36.29 * tfactors.T913 + + -6.56565 * tfactors.T9 + -2.96287e-06 * tfactors.T953 + -9.00373e-07 * tfactors.lnT9; - // mo14r - ln_set_rate = -22.4389 + -10.2598 * tfactors.T9i + 4.73034e-07 * tfactors.T913i + 36.29 * tfactors.T913 - + -6.56565 * tfactors.T9 + -2.96287e-06 * tfactors.T953 + -9.00373e-07 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.2598 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.73034e-07 * tfactors.T943i + (1.0/3.0) * 36.29 * tfactors.T923i + + -6.56565 + (5.0/3.0) * -2.96287e-06 * tfactors.T923 + -9.00373e-07 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.2598 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.73034e-07 * tfactors.T943i + (1.0/3.0) * 36.29 * tfactors.T923i - + -6.56565 + (5.0/3.0) * -2.96287e-06 * tfactors.T923 + -9.00373e-07 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // mo14r + ln_set_rate = -37.3979 + -3.8681 * tfactors.T9i + 7.09521e-06 * tfactors.T913i + 34.1789 * tfactors.T913 + + -1.72974 * tfactors.T9 + -0.0395081 * tfactors.T953 + -7.82759e-07 * tfactors.lnT9; - // mo14r - ln_set_rate = -37.3979 + -3.8681 * tfactors.T9i + 7.09521e-06 * tfactors.T913i + 34.1789 * tfactors.T913 - + -1.72974 * tfactors.T9 + -0.0395081 * tfactors.T953 + -7.82759e-07 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.8681 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.09521e-06 * tfactors.T943i + (1.0/3.0) * 34.1789 * tfactors.T923i + + -1.72974 + (5.0/3.0) * -0.0395081 * tfactors.T923 + -7.82759e-07 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.8681 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.09521e-06 * tfactors.T943i + (1.0/3.0) * 34.1789 * tfactors.T923i - + -1.72974 + (5.0/3.0) * -0.0395081 * tfactors.T923 + -7.82759e-07 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_n_to_p_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne19_to_p_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 + n --> p + F19 - // Ne19 + n --> p + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 15.6732 + 4.34441 * tfactors.T913 + + -1.71268 * tfactors.T9; - // nacr - ln_set_rate = 15.6732 + 4.34441 * tfactors.T913 - + -1.71268 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.34441 * tfactors.T923i + + -1.71268; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.34441 * tfactors.T923i - + -1.71268; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 20.353 + -1.58171 * tfactors.T913 + + 0.0324472 * tfactors.T9 + 1.0 * tfactors.lnT9; - // nacr - ln_set_rate = 20.353 + -1.58171 * tfactors.T913 - + 0.0324472 * tfactors.T9 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.58171 * tfactors.T923i + + 0.0324472 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.58171 * tfactors.T923i - + 0.0324472 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_n_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne19_to_He4_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 + n --> He4 + O16 - // Ne19 + n --> He4 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.6409 + 1.70736 * tfactors.T913 + + -0.132579 * tfactors.T9 + 0.00454218 * tfactors.T953; - // ths8r - ln_set_rate = 17.6409 + 1.70736 * tfactors.T913 - + -0.132579 * tfactors.T9 + 0.00454218 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.70736 * tfactors.T923i + + -0.132579 + (5.0/3.0) * 0.00454218 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.70736 * tfactors.T923i - + -0.132579 + (5.0/3.0) * 0.00454218 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne19_He4_to_p_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne19_to_p_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne19 + He4 --> p + Na22 - // Ne19 + He4 --> p + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 43.1874 + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 + + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 43.1874 + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 - + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i + + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i - + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_n_to_He4_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne20_to_He4_O17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + n --> He4 + O17 - // Ne20 + n --> He4 + O17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = 4.7377 + -20.6002 * tfactors.T9i + 12.6501 * tfactors.T913 + + -1.10938 * tfactors.T9 + 0.0696232 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 4.7377 + -20.6002 * tfactors.T9i + 12.6501 * tfactors.T913 - + -1.10938 * tfactors.T9 + 0.0696232 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 20.6002 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 12.6501 * tfactors.T923i + + -1.10938 + (5.0/3.0) * 0.0696232 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 20.6002 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 12.6501 * tfactors.T923i - + -1.10938 + (5.0/3.0) * 0.0696232 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 10.3902 + -15.3502 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 10.3902 + -15.3502 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.3502 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.3502 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 43.5553 + -6.80024 * tfactors.T9i + -39.918 * tfactors.T913i + + 0.227017 * tfactors.T9 + -0.900234 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 43.5553 + -6.80024 * tfactors.T9i + -39.918 * tfactors.T913i - + 0.227017 * tfactors.T9 + -0.900234 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.80024 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.918 * tfactors.T943i + + 0.227017 + (5.0/3.0) * -0.900234 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.80024 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.918 * tfactors.T943i - + 0.227017 + (5.0/3.0) * -0.900234 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_p_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne20_to_He4_F17_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + p --> He4 + F17 - // Ne20 + p --> He4 + F17 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 + + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 41.563 + -47.9266 * tfactors.T9i + -43.18 * tfactors.T913i + 4.46827 * tfactors.T913 - + -1.63915 * tfactors.T9 + 0.123483 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i + + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.9266 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -43.18 * tfactors.T943i + (1.0/3.0) * 4.46827 * tfactors.T923i - + -1.63915 + (5.0/3.0) * 0.123483 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> n + Mg23 - // Ne20 + He4 --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.9544 + -83.7215 * tfactors.T9i + 1.83199 * tfactors.T913 + + -0.290485 * tfactors.T9 + 0.0242929 * tfactors.T953; - // ths8r - ln_set_rate = 17.9544 + -83.7215 * tfactors.T9i + 1.83199 * tfactors.T913 - + -0.290485 * tfactors.T9 + 0.0242929 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 83.7215 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.83199 * tfactors.T923i + + -0.290485 + (5.0/3.0) * 0.0242929 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 83.7215 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.83199 * tfactors.T923i - + -0.290485 + (5.0/3.0) * 0.0242929 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> p + Na23 - // Ne20 + He4 --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.37772 + -29.8896 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.37772 + -29.8896 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.8896 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.8896 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.227472 + -29.4348 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.227472 + -29.4348 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.4348 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.4348 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 19.1852 + -27.5738 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 19.1852 + -27.5738 * tfactors.T9i + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.5738 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.5738 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_He4_to_C12_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne20_to_C12_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + He4 --> C12 + C12 - // Ne20 + He4 --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 61.4748 + -53.6267 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 + + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 61.4748 + -53.6267 * tfactors.T9i + -84.165 * tfactors.T913i + -1.56627 * tfactors.T913 - + -0.0736084 * tfactors.T9 + -0.072797 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 53.6267 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i + + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.6267 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.56627 * tfactors.T923i - + -0.0736084 + (5.0/3.0) * -0.072797 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_C12_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_Ne20_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + C12 --> p + P31 - // Ne20 + C12 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rolfr + ln_set_rate = -268.136 + -38.7624 * tfactors.T9i + 361.154 * tfactors.T913i + -92.643 * tfactors.T913 + + -9.98738 * tfactors.T9 + 0.892737 * tfactors.T953 + 161.042 * tfactors.lnT9; - // rolfr - ln_set_rate = -268.136 + -38.7624 * tfactors.T9i + 361.154 * tfactors.T913i + -92.643 * tfactors.T913 - + -9.98738 * tfactors.T9 + 0.892737 * tfactors.T953 + 161.042 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 38.7624 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 361.154 * tfactors.T943i + (1.0/3.0) * -92.643 * tfactors.T923i + + -9.98738 + (5.0/3.0) * 0.892737 * tfactors.T923 + 161.042 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 38.7624 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 361.154 * tfactors.T943i + (1.0/3.0) * -92.643 * tfactors.T923i - + -9.98738 + (5.0/3.0) * 0.892737 * tfactors.T923 + 161.042 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne20_C12_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_C12_Ne20_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne20 + C12 --> He4 + Si28 - // Ne20 + C12 --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rolfr + ln_set_rate = -308.905 + -47.2175 * tfactors.T9i + 514.197 * tfactors.T913i + -200.896 * tfactors.T913 + + -6.42713 * tfactors.T9 + 0.758256 * tfactors.T953 + 236.359 * tfactors.lnT9; - // rolfr - ln_set_rate = -308.905 + -47.2175 * tfactors.T9i + 514.197 * tfactors.T913i + -200.896 * tfactors.T913 - + -6.42713 * tfactors.T9 + 0.758256 * tfactors.T953 + 236.359 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.2175 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 514.197 * tfactors.T943i + (1.0/3.0) * -200.896 * tfactors.T923i + + -6.42713 + (5.0/3.0) * 0.758256 * tfactors.T923 + 236.359 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.2175 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 514.197 * tfactors.T943i + (1.0/3.0) * -200.896 * tfactors.T923i - + -6.42713 + (5.0/3.0) * 0.758256 * tfactors.T923 + 236.359 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_n_to_He4_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ne21_to_He4_O18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + n --> He4 + O18 - // Ne21 + n --> He4 + O18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 1.11027 + -7.35566 * tfactors.T9i + 11.656 * tfactors.T913 + + -1.24869 * tfactors.T9 + 1.0 * tfactors.lnT9; - // nacr - ln_set_rate = 1.11027 + -7.35566 * tfactors.T9i + 11.656 * tfactors.T913 - + -1.24869 * tfactors.T9 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.35566 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.656 * tfactors.T923i + + -1.24869 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.35566 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 11.656 * tfactors.T923i - + -1.24869 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 2.59673 + 0.0033365 * tfactors.T9i; - // nacrn - ln_set_rate = 2.59673 + 0.0033365 * tfactors.T9i; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0033365 * tfactors.T9i * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0033365 * tfactors.T9i * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 2.28452 + -0.331353 * tfactors.T9i + 6.51299 * tfactors.T913 + + -0.334277 * tfactors.T9 + 2.0 * tfactors.lnT9; - // nacr - ln_set_rate = 2.28452 + -0.331353 * tfactors.T9i + 6.51299 * tfactors.T913 - + -0.334277 * tfactors.T9 + 2.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.331353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.51299 * tfactors.T923i + + -0.334277 + 2.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.331353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.51299 * tfactors.T923i - + -0.334277 + 2.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_p_to_n_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne21_to_n_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + p --> n + Na21 - // Ne21 + p --> n + Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.9167 + -50.247 * tfactors.T9i + 2.17917 * tfactors.T913 + + -0.303135 * tfactors.T9 + 0.019321 * tfactors.T953; - // ths8r - ln_set_rate = 17.9167 + -50.247 * tfactors.T9i + 2.17917 * tfactors.T913 - + -0.303135 * tfactors.T9 + 0.019321 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 50.247 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.17917 * tfactors.T923i + + -0.303135 + (5.0/3.0) * 0.019321 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.247 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.17917 * tfactors.T923i - + -0.303135 + (5.0/3.0) * 0.019321 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_p_to_He4_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne21_to_He4_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + p --> He4 + F18 - // Ne21 + p --> He4 + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rpsmr + ln_set_rate = 50.6536 + -22.049 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 + + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; - // rpsmr - ln_set_rate = 50.6536 + -22.049 * tfactors.T9i + 21.4461 * tfactors.T913i + -73.252 * tfactors.T913 - + 2.42329 * tfactors.T9 + -0.077278 * tfactors.T953 + 40.7604 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.049 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i + + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.049 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 21.4461 * tfactors.T943i + (1.0/3.0) * -73.252 * tfactors.T923i - + 2.42329 + (5.0/3.0) * -0.077278 * tfactors.T923 + 40.7604 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne21_He4_to_n_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne21_to_n_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne21 + He4 --> n + Mg24 - // Ne21 + He4 --> n + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -7.26831 + -13.2638 * tfactors.T9i + 18.0748 * tfactors.T913 + + -0.981883 * tfactors.T9 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -7.26831 + -13.2638 * tfactors.T9i + 18.0748 * tfactors.T913 - + -0.981883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.2638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0748 * tfactors.T923i + + -0.981883 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.2638 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0748 * tfactors.T923i - + -0.981883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 43.9762 + -46.88 * tfactors.T913i + -0.536629 * tfactors.T913 + + 0.144715 * tfactors.T9 + -0.197624 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 43.9762 + -46.88 * tfactors.T913i + -0.536629 * tfactors.T913 - + 0.144715 * tfactors.T9 + -0.197624 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -46.88 * tfactors.T943i + (1.0/3.0) * -0.536629 * tfactors.T923i + + 0.144715 + (5.0/3.0) * -0.197624 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -46.88 * tfactors.T943i + (1.0/3.0) * -0.536629 * tfactors.T923i - + 0.144715 + (5.0/3.0) * -0.197624 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_p_to_n_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne22_to_n_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne22 + p --> n + Na22 - // Ne22 + p --> n + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 21.5948 + -42.0547 * tfactors.T9i + -0.0514777 * tfactors.T913 + + 0.0274055 * tfactors.T9 + -0.00690277 * tfactors.T953; - // cf88n - ln_set_rate = 21.5948 + -42.0547 * tfactors.T9i + -0.0514777 * tfactors.T913 - + 0.0274055 * tfactors.T9 + -0.00690277 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 42.0547 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0514777 * tfactors.T923i + + 0.0274055 + (5.0/3.0) * -0.00690277 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 42.0547 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.0514777 * tfactors.T923i - + 0.0274055 + (5.0/3.0) * -0.00690277 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_p_to_He4_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ne22_to_He4_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne22 + p --> He4 + F19 - // Ne22 + p --> He4 + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // da18r + ln_set_rate = 53.5304 + -65.1991 * tfactors.T9i + -34.5008 * tfactors.T913i + 56.9316 * tfactors.T913 + + 2.09613 * tfactors.T9 + -32.496 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // da18r - ln_set_rate = 53.5304 + -65.1991 * tfactors.T9i + -34.5008 * tfactors.T913i + 56.9316 * tfactors.T913 - + 2.09613 * tfactors.T9 + -32.496 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.1991 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.5008 * tfactors.T943i + (1.0/3.0) * 56.9316 * tfactors.T923i + + 2.09613 + (5.0/3.0) * -32.496 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.1991 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.5008 * tfactors.T943i + (1.0/3.0) * 56.9316 * tfactors.T923i - + 2.09613 + (5.0/3.0) * -32.496 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // da18r + ln_set_rate = 29432.5 + -152.444 * tfactors.T9i + 12625.1 * tfactors.T913i + -49107.1 * tfactors.T913 + + 9227.53 * tfactors.T9 + -2086.65 * tfactors.T953 + 14520.2 * tfactors.lnT9; - // da18r - ln_set_rate = 29432.5 + -152.444 * tfactors.T9i + 12625.1 * tfactors.T913i + -49107.1 * tfactors.T913 - + 9227.53 * tfactors.T9 + -2086.65 * tfactors.T953 + 14520.2 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 152.444 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 12625.1 * tfactors.T943i + (1.0/3.0) * -49107.1 * tfactors.T923i + + 9227.53 + (5.0/3.0) * -2086.65 * tfactors.T923 + 14520.2 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 152.444 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 12625.1 * tfactors.T943i + (1.0/3.0) * -49107.1 * tfactors.T923i - + 9227.53 + (5.0/3.0) * -2086.65 * tfactors.T923 + 14520.2 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // da18r + ln_set_rate = 54.7912 + -22.2627 * tfactors.T9i + -38.7722 * tfactors.T913i + -13.3654 * tfactors.T913 + + 0.863648 * tfactors.T9 + -0.0451491 * tfactors.T953 + 1.33333 * tfactors.lnT9; - // da18r - ln_set_rate = 54.7912 + -22.2627 * tfactors.T9i + -38.7722 * tfactors.T913i + -13.3654 * tfactors.T913 - + 0.863648 * tfactors.T9 + -0.0451491 * tfactors.T953 + 1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.2627 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.7722 * tfactors.T943i + (1.0/3.0) * -13.3654 * tfactors.T923i + + 0.863648 + (5.0/3.0) * -0.0451491 * tfactors.T923 + 1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.2627 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.7722 * tfactors.T943i + (1.0/3.0) * -13.3654 * tfactors.T923i - + 0.863648 + (5.0/3.0) * -0.0451491 * tfactors.T923 + 1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ne22_He4_to_n_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ne22_to_n_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ne22 + He4 --> n + Mg25 - // Ne22 + He4 --> n + Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li12r + ln_set_rate = -27.5027 + -7.38607 * tfactors.T9i + 35.987 * tfactors.T913 + + -4.12183 * tfactors.T9 + 0.263326 * tfactors.T953 + -1.5 * tfactors.lnT9; - // li12r - ln_set_rate = -27.5027 + -7.38607 * tfactors.T9i + 35.987 * tfactors.T913 - + -4.12183 * tfactors.T9 + 0.263326 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.38607 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.987 * tfactors.T923i + + -4.12183 + (5.0/3.0) * 0.263326 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.38607 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.987 * tfactors.T923i - + -4.12183 + (5.0/3.0) * 0.263326 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12n + ln_set_rate = -10.4729 + -5.55032 * tfactors.T9i + 15.4898 * tfactors.T913 + + -30.8154 * tfactors.T9 + -3.0 * tfactors.T953 + 2.0 * tfactors.lnT9; - // li12n - ln_set_rate = -10.4729 + -5.55032 * tfactors.T9i + 15.4898 * tfactors.T913 - + -30.8154 * tfactors.T9 + -3.0 * tfactors.T953 + 2.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.55032 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 15.4898 * tfactors.T923i + + -30.8154 + (5.0/3.0) * -3.0 * tfactors.T923 + 2.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.55032 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 15.4898 * tfactors.T923i - + -30.8154 + (5.0/3.0) * -3.0 * tfactors.T923 + 2.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12n + ln_set_rate = -52.326 + -5.55032 * tfactors.T9i + 88.2725 * tfactors.T913 + + -40.1578 * tfactors.T9 + -3.0 * tfactors.T953; - // li12n - ln_set_rate = -52.326 + -5.55032 * tfactors.T9i + 88.2725 * tfactors.T913 - + -40.1578 * tfactors.T9 + -3.0 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.55032 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 88.2725 * tfactors.T923i + + -40.1578 + (5.0/3.0) * -3.0 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.55032 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 88.2725 * tfactors.T923i - + -40.1578 + (5.0/3.0) * -3.0 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_n_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Na21_to_p_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na21 + n --> p + Ne21 - // Na21 + n --> p + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.9167 + 2.17917 * tfactors.T913 + + -0.303135 * tfactors.T9 + 0.019321 * tfactors.T953; - // ths8r - ln_set_rate = 17.9167 + 2.17917 * tfactors.T913 - + -0.303135 * tfactors.T9 + 0.019321 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.17917 * tfactors.T923i + + -0.303135 + (5.0/3.0) * 0.019321 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.17917 * tfactors.T923i - + -0.303135 + (5.0/3.0) * 0.019321 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_n_to_He4_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Na21_to_He4_F18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na21 + n --> He4 + F18 - // Na21 + n --> He4 + F18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.7482 + 1.06229 * tfactors.T913 + + 0.212448 * tfactors.T9 + -0.020685 * tfactors.T953; - // ths8r - ln_set_rate = 15.7482 + 1.06229 * tfactors.T913 - + 0.212448 * tfactors.T9 + -0.020685 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.06229 * tfactors.T923i + + 0.212448 + (5.0/3.0) * -0.020685 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.06229 * tfactors.T923i - + 0.212448 + (5.0/3.0) * -0.020685 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_p_to_He4_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na21_to_He4_Ne18_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na21 + p --> He4 + Ne18 - // Na21 + p --> He4 + Ne18 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mo14r + ln_set_rate = -23.8123 + -36.3851 * tfactors.T9i + 8.5632e-08 * tfactors.T913i + 24.8579 * tfactors.T913 + + 0.0823845 * tfactors.T9 + -0.365374 * tfactors.T953 + -2.21415e-06 * tfactors.lnT9; - // mo14r - ln_set_rate = -23.8123 + -36.3851 * tfactors.T9i + 8.5632e-08 * tfactors.T913i + 24.8579 * tfactors.T913 - + 0.0823845 * tfactors.T9 + -0.365374 * tfactors.T953 + -2.21415e-06 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.3851 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.5632e-08 * tfactors.T943i + (1.0/3.0) * 24.8579 * tfactors.T923i + + 0.0823845 + (5.0/3.0) * -0.365374 * tfactors.T923 + -2.21415e-06 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.3851 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.5632e-08 * tfactors.T943i + (1.0/3.0) * 24.8579 * tfactors.T923i - + 0.0823845 + (5.0/3.0) * -0.365374 * tfactors.T923 + -2.21415e-06 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // mo14r + ln_set_rate = -22.6701 + -40.8761 * tfactors.T9i + 4.73034e-07 * tfactors.T913i + 36.29 * tfactors.T913 + + -6.56565 * tfactors.T9 + -2.96287e-06 * tfactors.T953 + -9.00373e-07 * tfactors.lnT9; - // mo14r - ln_set_rate = -22.6701 + -40.8761 * tfactors.T9i + 4.73034e-07 * tfactors.T913i + 36.29 * tfactors.T913 - + -6.56565 * tfactors.T9 + -2.96287e-06 * tfactors.T953 + -9.00373e-07 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 40.8761 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.73034e-07 * tfactors.T943i + (1.0/3.0) * 36.29 * tfactors.T923i + + -6.56565 + (5.0/3.0) * -2.96287e-06 * tfactors.T923 + -9.00373e-07 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.8761 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 4.73034e-07 * tfactors.T943i + (1.0/3.0) * 36.29 * tfactors.T923i - + -6.56565 + (5.0/3.0) * -2.96287e-06 * tfactors.T923 + -9.00373e-07 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // mo14r + ln_set_rate = -37.6291 + -34.4844 * tfactors.T9i + 7.09521e-06 * tfactors.T913i + 34.1789 * tfactors.T913 + + -1.72974 * tfactors.T9 + -0.0395081 * tfactors.T953 + -7.82759e-07 * tfactors.lnT9; - // mo14r - ln_set_rate = -37.6291 + -34.4844 * tfactors.T9i + 7.09521e-06 * tfactors.T913i + 34.1789 * tfactors.T913 - + -1.72974 * tfactors.T9 + -0.0395081 * tfactors.T953 + -7.82759e-07 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.4844 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.09521e-06 * tfactors.T943i + (1.0/3.0) * 34.1789 * tfactors.T923i + + -1.72974 + (5.0/3.0) * -0.0395081 * tfactors.T923 + -7.82759e-07 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.4844 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 7.09521e-06 * tfactors.T943i + (1.0/3.0) * 34.1789 * tfactors.T923i - + -1.72974 + (5.0/3.0) * -0.0395081 * tfactors.T923 + -7.82759e-07 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na21_He4_to_p_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na21_to_p_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na21 + He4 --> p + Mg24 - // Na21 + He4 --> p + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 39.8144 + -49.9621 * tfactors.T913i + 5.90498 * tfactors.T913 + + -1.6598 * tfactors.T9 + 0.117817 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 39.8144 + -49.9621 * tfactors.T913i + 5.90498 * tfactors.T913 - + -1.6598 * tfactors.T9 + 0.117817 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -49.9621 * tfactors.T943i + (1.0/3.0) * 5.90498 * tfactors.T923i + + -1.6598 + (5.0/3.0) * 0.117817 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -49.9621 * tfactors.T943i + (1.0/3.0) * 5.90498 * tfactors.T923i - + -1.6598 + (5.0/3.0) * 0.117817 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_n_to_p_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Na22_to_p_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + n --> p + Ne22 - // Na22 + n --> p + Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 19.6489 + -0.0514777 * tfactors.T913 + + 0.0274055 * tfactors.T9 + -0.00690277 * tfactors.T953; - // cf88n - ln_set_rate = 19.6489 + -0.0514777 * tfactors.T913 - + 0.0274055 * tfactors.T9 + -0.00690277 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.0514777 * tfactors.T923i + + 0.0274055 + (5.0/3.0) * -0.00690277 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.0514777 * tfactors.T923i - + 0.0274055 + (5.0/3.0) * -0.00690277 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_n_to_He4_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Na22_to_He4_F19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + n --> He4 + F19 - // Na22 + n --> He4 + F19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88 + ln_set_rate = 6.59038 + 6.22036 * tfactors.T913 + + -0.0209891 * tfactors.T9 + -0.0689843 * tfactors.T953 + 1.0 * tfactors.lnT9; - // cf88 - ln_set_rate = 6.59038 + 6.22036 * tfactors.T913 - + -0.0209891 * tfactors.T9 + -0.0689843 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 6.22036 * tfactors.T923i + + -0.0209891 + (5.0/3.0) * -0.0689843 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 6.22036 * tfactors.T923i - + -0.0209891 + (5.0/3.0) * -0.0689843 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 15.0061 + -0.0532251 * tfactors.T913 + + 1.00044 * tfactors.T9 + -0.13238 * tfactors.T953; - // cf88n - ln_set_rate = 15.0061 + -0.0532251 * tfactors.T913 - + 1.00044 * tfactors.T9 + -0.13238 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.0532251 * tfactors.T923i + + 1.00044 + (5.0/3.0) * -0.13238 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.0532251 * tfactors.T923i - + 1.00044 + (5.0/3.0) * -0.13238 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_p_to_He4_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na22_to_He4_Ne19_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + p --> He4 + Ne19 - // Na22 + p --> He4 + Ne19 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 43.101 + -24.0192 * tfactors.T9i + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 + + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 43.101 + -24.0192 * tfactors.T9i + -46.6346 * tfactors.T913i + 0.866532 * tfactors.T913 - + -0.893541 * tfactors.T9 + 0.0747971 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.0192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i + + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.0192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.6346 * tfactors.T943i + (1.0/3.0) * 0.866532 * tfactors.T923i - + -0.893541 + (5.0/3.0) * 0.0747971 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_He4_to_n_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na22_to_n_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + He4 --> n + Al25 - // Na22 + He4 --> n + Al25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.59058 + -22.1956 * tfactors.T9i + 2.92382 * tfactors.T913 + + 0.706669 * tfactors.T9 + -0.0950292 * tfactors.T953; - // ths8r - ln_set_rate = 7.59058 + -22.1956 * tfactors.T9i + 2.92382 * tfactors.T913 - + 0.706669 * tfactors.T9 + -0.0950292 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.1956 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.92382 * tfactors.T923i + + 0.706669 + (5.0/3.0) * -0.0950292 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.1956 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.92382 * tfactors.T923i - + 0.706669 + (5.0/3.0) * -0.0950292 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na22_He4_to_p_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na22_to_p_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na22 + He4 --> p + Mg25 - // Na22 + He4 --> p + Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 44.973 + -50.0924 * tfactors.T913i + 0.807739 * tfactors.T913 + + -0.956029 * tfactors.T9 + 0.0793321 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 44.973 + -50.0924 * tfactors.T913i + 0.807739 * tfactors.T913 - + -0.956029 * tfactors.T9 + 0.0793321 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * 0.807739 * tfactors.T923i + + -0.956029 + (5.0/3.0) * 0.0793321 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * 0.807739 * tfactors.T923i - + -0.956029 + (5.0/3.0) * 0.0793321 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_n_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> n + Mg23 - // Na23 + p --> n + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 19.4638 + -56.1542 * tfactors.T9i + 0.993488 * tfactors.T913 + + -0.257094 * tfactors.T9 + 0.0284334 * tfactors.T953; - // nacr - ln_set_rate = 19.4638 + -56.1542 * tfactors.T9i + 0.993488 * tfactors.T913 - + -0.257094 * tfactors.T9 + 0.0284334 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 56.1542 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.993488 * tfactors.T923i + + -0.257094 + (5.0/3.0) * 0.0284334 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 56.1542 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.993488 * tfactors.T923i - + -0.257094 + (5.0/3.0) * 0.0284334 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> He4 + Ne20 - // Na23 + p --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 + + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.58736 + -2.31577 * tfactors.T9i + 19.7297 * tfactors.T913 - + -2.20987 * tfactors.T9 + 0.153374 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i + + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.31577 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 19.7297 * tfactors.T923i - + -2.20987 + (5.0/3.0) * 0.153374 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 0.0178295 + -1.86103 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.86103 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 + + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 18.9756 + -20.0024 * tfactors.T913i + 11.5988 * tfactors.T913 - + -1.37398 * tfactors.T9 + -1.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i + + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -20.0024 * tfactors.T943i + (1.0/3.0) * 11.5988 * tfactors.T923i - + -1.37398 + (5.0/3.0) * -1.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_p_to_C12_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Na23_to_C12_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + p --> C12 + C12 - // Na23 + p --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 60.9438 + -26.0184 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 + + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88r - ln_set_rate = 60.9438 + -26.0184 * tfactors.T9i + -84.165 * tfactors.T913i + -1.4191 * tfactors.T913 - + -0.114619 * tfactors.T9 + -0.070307 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.0184 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i + + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.0184 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.165 * tfactors.T943i + (1.0/3.0) * -1.4191 * tfactors.T923i - + -0.114619 + (5.0/3.0) * -0.070307 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_He4_to_n_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na23_to_n_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + He4 --> n + Al26 - // Na23 + He4 --> n + Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ol11r + ln_set_rate = 14.5219 + -34.8285 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ol11r - ln_set_rate = 14.5219 + -34.8285 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.8285 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.8285 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ol11r + ln_set_rate = 13.4292 + -34.4845 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ol11r - ln_set_rate = 13.4292 + -34.4845 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.4845 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.4845 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ol11n + ln_set_rate = 11.4506 + -34.4184 * tfactors.T9i + 5.07134 * tfactors.T913 + + -0.557537 * tfactors.T9 + 0.0451737 * tfactors.T953; - // ol11n - ln_set_rate = 11.4506 + -34.4184 * tfactors.T9i + 5.07134 * tfactors.T913 - + -0.557537 * tfactors.T9 + 0.0451737 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.4184 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.07134 * tfactors.T923i + + -0.557537 + (5.0/3.0) * 0.0451737 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.4184 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.07134 * tfactors.T923i - + -0.557537 + (5.0/3.0) * 0.0451737 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Na23_He4_to_p_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Na23_to_p_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Na23 + He4 --> p + Mg26 - // Na23 + He4 --> p + Mg26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 44.527 + -50.2042 * tfactors.T913i + 1.76141 * tfactors.T913 + + -1.36813 * tfactors.T9 + 0.123087 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 44.527 + -50.2042 * tfactors.T913i + 1.76141 * tfactors.T913 - + -1.36813 * tfactors.T9 + 0.123087 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * 1.76141 * tfactors.T923i + + -1.36813 + (5.0/3.0) * 0.123087 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * 1.76141 * tfactors.T923i - + -1.36813 + (5.0/3.0) * 0.123087 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_n_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg23_to_p_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + n --> p + Na23 - // Mg23 + n --> p + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 19.4638 + 0.993488 * tfactors.T913 + + -0.257094 * tfactors.T9 + 0.0284334 * tfactors.T953; - // nacr - ln_set_rate = 19.4638 + 0.993488 * tfactors.T913 - + -0.257094 * tfactors.T9 + 0.0284334 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.993488 * tfactors.T923i + + -0.257094 + (5.0/3.0) * 0.0284334 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.993488 * tfactors.T923i - + -0.257094 + (5.0/3.0) * 0.0284334 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_n_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg23_to_He4_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + n --> He4 + Ne20 - // Mg23 + n --> He4 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.7448 + 1.83199 * tfactors.T913 + + -0.290485 * tfactors.T9 + 0.0242929 * tfactors.T953; - // ths8r - ln_set_rate = 17.7448 + 1.83199 * tfactors.T913 - + -0.290485 * tfactors.T9 + 0.0242929 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.83199 * tfactors.T923i + + -0.290485 + (5.0/3.0) * 0.0242929 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.83199 * tfactors.T923i - + -0.290485 + (5.0/3.0) * 0.0242929 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_n_to_C12_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg23_to_C12_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + n --> C12 + C12 - // Mg23 + n --> C12 + C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.8267 + 11.4826 * tfactors.T913 + + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; - // cf88r - ln_set_rate = -12.8267 + 11.4826 * tfactors.T913 - + 1.82849 * tfactors.T9 + -0.34844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 11.4826 * tfactors.T923i + + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 11.4826 * tfactors.T923i - + 1.82849 + (5.0/3.0) * -0.34844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg23_He4_to_p_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg23_to_p_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg23 + He4 --> p + Al26 - // Mg23 + He4 --> p + Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 46.215 + -53.203 * tfactors.T913i + 0.71292 * tfactors.T913 + + -0.892548 * tfactors.T9 + 0.0709813 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 46.215 + -53.203 * tfactors.T913i + 0.71292 * tfactors.T913 - + -0.892548 * tfactors.T9 + 0.0709813 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -53.203 * tfactors.T943i + (1.0/3.0) * 0.71292 * tfactors.T923i + + -0.892548 + (5.0/3.0) * 0.0709813 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -53.203 * tfactors.T943i + (1.0/3.0) * 0.71292 * tfactors.T923i - + -0.892548 + (5.0/3.0) * 0.0709813 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_n_to_He4_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg24_to_He4_Ne21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + n --> He4 + Ne21 - // Mg24 + n --> He4 + Ne21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -4.69602 + -42.9133 * tfactors.T9i + 18.0748 * tfactors.T913 + + -0.981883 * tfactors.T9 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -4.69602 + -42.9133 * tfactors.T9i + 18.0748 * tfactors.T913 - + -0.981883 * tfactors.T9 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 42.9133 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0748 * tfactors.T923i + + -0.981883 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 42.9133 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0748 * tfactors.T923i - + -0.981883 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 46.5485 + -29.6495 * tfactors.T9i + -46.88 * tfactors.T913i + -0.536629 * tfactors.T913 + + 0.144715 * tfactors.T9 + -0.197624 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 46.5485 + -29.6495 * tfactors.T9i + -46.88 * tfactors.T913i + -0.536629 * tfactors.T913 - + 0.144715 * tfactors.T9 + -0.197624 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.6495 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.88 * tfactors.T943i + (1.0/3.0) * -0.536629 * tfactors.T923i + + 0.144715 + (5.0/3.0) * -0.197624 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.6495 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -46.88 * tfactors.T943i + (1.0/3.0) * -0.536629 * tfactors.T923i - + 0.144715 + (5.0/3.0) * -0.197624 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_p_to_He4_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg24_to_He4_Na21_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + p --> He4 + Na21 - // Mg24 + p --> He4 + Na21 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 42.3867 + -79.897 * tfactors.T9i + -49.9621 * tfactors.T913i + 5.90498 * tfactors.T913 + + -1.6598 * tfactors.T9 + 0.117817 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacr - ln_set_rate = 42.3867 + -79.897 * tfactors.T9i + -49.9621 * tfactors.T913i + 5.90498 * tfactors.T913 - + -1.6598 * tfactors.T9 + 0.117817 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 79.897 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -49.9621 * tfactors.T943i + (1.0/3.0) * 5.90498 * tfactors.T923i + + -1.6598 + (5.0/3.0) * 0.117817 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 79.897 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -49.9621 * tfactors.T943i + (1.0/3.0) * 5.90498 * tfactors.T923i - + -1.6598 + (5.0/3.0) * 0.117817 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_p_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> p + Al27 - // Mg24 + He4 --> p + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -26.2862 + -19.5422 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.2862 + -19.5422 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.5422 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.5422 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -6.44575 + -22.8216 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -6.44575 + -22.8216 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.8216 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.8216 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 30.0397 + -18.5791 * tfactors.T9i + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 30.0397 + -18.5791 * tfactors.T9i + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.5791 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.5791 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg24_He4_to_C12_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg24_to_C12_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg24 + He4 --> C12 + O16 - // Mg24 + He4 --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 49.5738 + -78.202 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 + + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; - // cf88r - ln_set_rate = 49.5738 + -78.202 * tfactors.T9i + -133.413 * tfactors.T913i + 50.1572 * tfactors.T913 - + -3.15987 * tfactors.T9 + 0.0178251 * tfactors.T953 + -23.7027 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 78.202 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i + + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 78.202 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -133.413 * tfactors.T943i + (1.0/3.0) * 50.1572 * tfactors.T923i - + -3.15987 + (5.0/3.0) * 0.0178251 * tfactors.T923 + -23.7027 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_n_to_He4_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mg25_to_He4_Ne22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 + n --> He4 + Ne22 - // Mg25 + n --> He4 + Ne22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // li12n + ln_set_rate = -11.0701 + 15.4898 * tfactors.T913 + + -30.8154 * tfactors.T9 + -3.0 * tfactors.T953 + 2.0 * tfactors.lnT9; - // li12n - ln_set_rate = -11.0701 + 15.4898 * tfactors.T913 - + -30.8154 * tfactors.T9 + -3.0 * tfactors.T953 + 2.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 15.4898 * tfactors.T923i + + -30.8154 + (5.0/3.0) * -3.0 * tfactors.T923 + 2.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 15.4898 * tfactors.T923i - + -30.8154 + (5.0/3.0) * -3.0 * tfactors.T923 + 2.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12n + ln_set_rate = -52.9232 + 88.2725 * tfactors.T913 + + -40.1578 * tfactors.T9 + -3.0 * tfactors.T953; - // li12n - ln_set_rate = -52.9232 + 88.2725 * tfactors.T913 - + -40.1578 * tfactors.T9 + -3.0 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 88.2725 * tfactors.T923i + + -40.1578 + (5.0/3.0) * -3.0 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 88.2725 * tfactors.T923i - + -40.1578 + (5.0/3.0) * -3.0 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // li12r + ln_set_rate = -28.0999 + -1.83575 * tfactors.T9i + 35.987 * tfactors.T913 + + -4.12183 * tfactors.T9 + 0.263326 * tfactors.T953 + -1.5 * tfactors.lnT9; - // li12r - ln_set_rate = -28.0999 + -1.83575 * tfactors.T9i + 35.987 * tfactors.T913 - + -4.12183 * tfactors.T9 + 0.263326 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.83575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.987 * tfactors.T923i + + -4.12183 + (5.0/3.0) * 0.263326 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.83575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.987 * tfactors.T923i - + -4.12183 + (5.0/3.0) * 0.263326 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_p_to_n_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg25_to_n_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 + p --> n + Al25 - // Mg25 + p --> n + Al25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.4104 + -58.7072 * tfactors.T9i + 2.28536 * tfactors.T913 + + -0.38512 * tfactors.T9 + 0.0288056 * tfactors.T953; - // ths8r - ln_set_rate = 18.4104 + -58.7072 * tfactors.T9i + 2.28536 * tfactors.T913 - + -0.38512 * tfactors.T9 + 0.0288056 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.7072 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.28536 * tfactors.T923i + + -0.38512 + (5.0/3.0) * 0.0288056 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.7072 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.28536 * tfactors.T923i - + -0.38512 + (5.0/3.0) * 0.0288056 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_p_to_He4_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg25_to_He4_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 + p --> He4 + Na22 - // Mg25 + p --> He4 + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 46.3217 + -36.5117 * tfactors.T9i + -50.0924 * tfactors.T913i + 0.807739 * tfactors.T913 + + -0.956029 * tfactors.T9 + 0.0793321 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 46.3217 + -36.5117 * tfactors.T9i + -50.0924 * tfactors.T913i + 0.807739 * tfactors.T913 - + -0.956029 * tfactors.T9 + 0.0793321 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.5117 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * 0.807739 * tfactors.T923i + + -0.956029 + (5.0/3.0) * 0.0793321 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.5117 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.0924 * tfactors.T943i + (1.0/3.0) * 0.807739 * tfactors.T923i - + -0.956029 + (5.0/3.0) * 0.0793321 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg25_He4_to_n_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg25_to_n_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg25 + He4 --> n + Si28 - // Mg25 + He4 --> n + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 45.7613 + -53.415 * tfactors.T913i + -1.46489 * tfactors.T913 + + 1.7777 * tfactors.T9 + -0.903499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 45.7613 + -53.415 * tfactors.T913i + -1.46489 * tfactors.T913 - + 1.7777 * tfactors.T9 + -0.903499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -53.415 * tfactors.T943i + (1.0/3.0) * -1.46489 * tfactors.T923i + + 1.7777 + (5.0/3.0) * -0.903499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -53.415 * tfactors.T943i + (1.0/3.0) * -1.46489 * tfactors.T923i - + 1.7777 + (5.0/3.0) * -0.903499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 38.337 + -53.416 * tfactors.T913i + 8.01209 * tfactors.T913 + + -2.64791 * tfactors.T9 + 0.218637 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // nacr - ln_set_rate = 38.337 + -53.416 * tfactors.T913i + 8.01209 * tfactors.T913 - + -2.64791 * tfactors.T9 + 0.218637 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -53.416 * tfactors.T943i + (1.0/3.0) * 8.01209 * tfactors.T923i + + -2.64791 + (5.0/3.0) * 0.218637 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -53.416 * tfactors.T943i + (1.0/3.0) * 8.01209 * tfactors.T923i - + -2.64791 + (5.0/3.0) * 0.218637 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg26_p_to_n_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg26_to_n_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg26 + p --> n + Al26 - // Mg26 + p --> n + Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ol11n + ln_set_rate = 13.5366 + -55.5463 * tfactors.T9i + 7.36773 * tfactors.T913 + + -2.42424 * tfactors.T9 + 0.313743 * tfactors.T953; - // ol11n - ln_set_rate = 13.5366 + -55.5463 * tfactors.T9i + 7.36773 * tfactors.T913 - + -2.42424 * tfactors.T9 + 0.313743 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.5463 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.36773 * tfactors.T923i + + -2.42424 + (5.0/3.0) * 0.313743 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.5463 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.36773 * tfactors.T923i - + -2.42424 + (5.0/3.0) * 0.313743 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ol11r + ln_set_rate = 15.9629 + -55.7499 * tfactors.T9i + 3.87515 * tfactors.T913 + + 0.228327 * tfactors.T9 + -0.045872 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ol11r - ln_set_rate = 15.9629 + -55.7499 * tfactors.T9i + 3.87515 * tfactors.T913 - + 0.228327 * tfactors.T9 + -0.045872 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.7499 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.87515 * tfactors.T923i + + 0.228327 + (5.0/3.0) * -0.045872 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.7499 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.87515 * tfactors.T923i - + 0.228327 + (5.0/3.0) * -0.045872 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ol11r + ln_set_rate = 14.8989 + -55.6072 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ol11r - ln_set_rate = 14.8989 + -55.6072 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.6072 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.6072 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg26_p_to_He4_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mg26_to_He4_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg26 + p --> He4 + Na23 - // Mg26 + p --> He4 + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.1157 + -21.128 * tfactors.T9i + -50.2042 * tfactors.T913i + 1.76141 * tfactors.T913 + + -1.36813 * tfactors.T9 + 0.123087 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.1157 + -21.128 * tfactors.T9i + -50.2042 * tfactors.T913i + 1.76141 * tfactors.T913 - + -1.36813 * tfactors.T9 + 0.123087 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * 1.76141 * tfactors.T923i + + -1.36813 + (5.0/3.0) * 0.123087 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.128 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -50.2042 * tfactors.T943i + (1.0/3.0) * 1.76141 * tfactors.T923i - + -1.36813 + (5.0/3.0) * 0.123087 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mg26_He4_to_n_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mg26_to_n_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mg26 + He4 --> n + Si29 - // Mg26 + He4 --> n + Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 45.8397 + -53.505 * tfactors.T913i + 0.045598 * tfactors.T913 + + -0.194481 * tfactors.T9 + -0.0748153 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 45.8397 + -53.505 * tfactors.T913i + 0.045598 * tfactors.T913 - + -0.194481 * tfactors.T9 + -0.0748153 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -53.505 * tfactors.T943i + (1.0/3.0) * 0.045598 * tfactors.T923i + + -0.194481 + (5.0/3.0) * -0.0748153 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -53.505 * tfactors.T943i + (1.0/3.0) * 0.045598 * tfactors.T923i - + -0.194481 + (5.0/3.0) * -0.0748153 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 15.7057 + -18.73 * tfactors.T9i + -9.54056 * tfactors.T913 + + 4.71712 * tfactors.T9 + -0.461053 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 15.7057 + -18.73 * tfactors.T9i + -9.54056 * tfactors.T913 - + 4.71712 * tfactors.T9 + -0.461053 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.73 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -9.54056 * tfactors.T923i + + 4.71712 + (5.0/3.0) * -0.461053 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.73 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -9.54056 * tfactors.T923i - + 4.71712 + (5.0/3.0) * -0.461053 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al25_n_to_p_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Al25_to_p_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al25 + n --> p + Mg25 - // Al25 + n --> p + Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.4104 + 2.28536 * tfactors.T913 + + -0.38512 * tfactors.T9 + 0.0288056 * tfactors.T953; - // ths8r - ln_set_rate = 18.4104 + 2.28536 * tfactors.T913 - + -0.38512 * tfactors.T9 + 0.0288056 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.28536 * tfactors.T923i + + -0.38512 + (5.0/3.0) * 0.0288056 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.28536 * tfactors.T923i - + -0.38512 + (5.0/3.0) * 0.0288056 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al25_n_to_He4_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Al25_to_He4_Na22_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al25 + n --> He4 + Na22 - // Al25 + n --> He4 + Na22 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.93927 + 2.92382 * tfactors.T913 + + 0.706669 * tfactors.T9 + -0.0950292 * tfactors.T953; - // ths8r - ln_set_rate = 8.93927 + 2.92382 * tfactors.T913 - + 0.706669 * tfactors.T9 + -0.0950292 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.92382 * tfactors.T923i + + 0.706669 + (5.0/3.0) * -0.0950292 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.92382 * tfactors.T923i - + 0.706669 + (5.0/3.0) * -0.0950292 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al25_He4_to_p_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al25_to_p_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al25 + He4 --> p + Si28 - // Al25 + He4 --> p + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.6167 + -56.3424 * tfactors.T913i + 0.553763 * tfactors.T913 + + -0.84072 * tfactors.T9 + 0.0634219 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.6167 + -56.3424 * tfactors.T913i + 0.553763 * tfactors.T913 - + -0.84072 * tfactors.T9 + 0.0634219 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -56.3424 * tfactors.T943i + (1.0/3.0) * 0.553763 * tfactors.T923i + + -0.84072 + (5.0/3.0) * 0.0634219 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -56.3424 * tfactors.T943i + (1.0/3.0) * 0.553763 * tfactors.T923i - + -0.84072 + (5.0/3.0) * 0.0634219 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_n_to_p_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Al26_to_p_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 + n --> p + Mg26 - // Al26 + n --> p + Mg26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ol11r + ln_set_rate = 13.565 + -0.203581 * tfactors.T9i + 3.87515 * tfactors.T913 + + 0.228327 * tfactors.T9 + -0.045872 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ol11r - ln_set_rate = 13.565 + -0.203581 * tfactors.T9i + 3.87515 * tfactors.T913 - + 0.228327 * tfactors.T9 + -0.045872 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.203581 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.87515 * tfactors.T923i + + 0.228327 + (5.0/3.0) * -0.045872 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.203581 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.87515 * tfactors.T923i - + 0.228327 + (5.0/3.0) * -0.045872 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ol11r + ln_set_rate = 12.501 + -0.0608268 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ol11r - ln_set_rate = 12.501 + -0.0608268 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0608268 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0608268 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ol11n + ln_set_rate = 11.1387 + 7.36773 * tfactors.T913 + + -2.42424 * tfactors.T9 + 0.313743 * tfactors.T953; - // ol11n - ln_set_rate = 11.1387 + 7.36773 * tfactors.T913 - + -2.42424 * tfactors.T9 + 0.313743 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 7.36773 * tfactors.T923i + + -2.42424 + (5.0/3.0) * 0.313743 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 7.36773 * tfactors.T923i - + -2.42424 + (5.0/3.0) * 0.313743 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_n_to_He4_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Al26_to_He4_Na23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 + n --> He4 + Na23 - // Al26 + n --> He4 + Na23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ol11r + ln_set_rate = 13.62 + -0.0661138 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ol11r - ln_set_rate = 13.62 + -0.0661138 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.0661138 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.0661138 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ol11n + ln_set_rate = 11.6414 + 5.07134 * tfactors.T913 + + -0.557537 * tfactors.T9 + 0.0451737 * tfactors.T953; - // ol11n - ln_set_rate = 11.6414 + 5.07134 * tfactors.T913 - + -0.557537 * tfactors.T9 + 0.0451737 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 5.07134 * tfactors.T923i + + -0.557537 + (5.0/3.0) * 0.0451737 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 5.07134 * tfactors.T923i - + -0.557537 + (5.0/3.0) * 0.0451737 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ol11r + ln_set_rate = 14.7127 + -0.41015 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // ol11r - ln_set_rate = 14.7127 + -0.41015 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.41015 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.41015 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_p_to_He4_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al26_to_He4_Mg23_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 + p --> He4 + Mg23 - // Al26 + p --> He4 + Mg23 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 46.4058 + -21.7293 * tfactors.T9i + -53.203 * tfactors.T913i + 0.71292 * tfactors.T913 + + -0.892548 * tfactors.T9 + 0.0709813 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 46.4058 + -21.7293 * tfactors.T9i + -53.203 * tfactors.T913i + 0.71292 * tfactors.T913 - + -0.892548 * tfactors.T9 + 0.0709813 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.7293 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.203 * tfactors.T943i + (1.0/3.0) * 0.71292 * tfactors.T923i + + -0.892548 + (5.0/3.0) * 0.0709813 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.7293 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.203 * tfactors.T943i + (1.0/3.0) * 0.71292 * tfactors.T923i - + -0.892548 + (5.0/3.0) * 0.0709813 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_He4_to_n_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al26_to_n_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 + He4 --> n + P29 - // Al26 + He4 --> n + P29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -42.1718 + -10.4914 * tfactors.T9i + 41.9938 * tfactors.T913 + + -4.54859 * tfactors.T9 + 0.243841 * tfactors.T953; - // ths8r - ln_set_rate = -42.1718 + -10.4914 * tfactors.T9i + 41.9938 * tfactors.T913 - + -4.54859 * tfactors.T9 + 0.243841 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.4914 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 41.9938 * tfactors.T923i + + -4.54859 + (5.0/3.0) * 0.243841 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.4914 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 41.9938 * tfactors.T923i - + -4.54859 + (5.0/3.0) * 0.243841 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al26_He4_to_p_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al26_to_p_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al26 + He4 --> p + Si29 - // Al26 + He4 --> p + Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.7092 + -56.4422 * tfactors.T913i + 0.705353 * tfactors.T913 + + -0.957427 * tfactors.T9 + 0.0756045 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.7092 + -56.4422 * tfactors.T913i + 0.705353 * tfactors.T913 - + -0.957427 * tfactors.T9 + 0.0756045 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -56.4422 * tfactors.T943i + (1.0/3.0) * 0.705353 * tfactors.T923i + + -0.957427 + (5.0/3.0) * 0.0756045 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -56.4422 * tfactors.T943i + (1.0/3.0) * 0.705353 * tfactors.T923i - + -0.957427 + (5.0/3.0) * 0.0756045 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_He4_Mg24_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> He4 + Mg24 - // Al27 + p --> He4 + Mg24 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 + + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -7.02789 + -4.2425 * tfactors.T9i + 18.0416 * tfactors.T913 - + -1.54137 * tfactors.T9 + 0.0847506 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i + + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.2425 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 18.0416 * tfactors.T923i - + -1.54137 + (5.0/3.0) * 0.0847506 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 + + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -26.8683 + -0.963012 * tfactors.T9i + 5.18642 * tfactors.T913i + -34.7936 * tfactors.T913 - + 168.225 * tfactors.T9 + -115.825 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i + + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.963012 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 5.18642 * tfactors.T943i + (1.0/3.0) * -34.7936 * tfactors.T923i - + 168.225 + (5.0/3.0) * -115.825 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i + + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 29.4576 + -26.4162 * tfactors.T913i - + -2.0 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i + + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.4162 * tfactors.T943i - + (5.0/3.0) * -2.0 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_p_to_C12_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Al27_to_C12_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + p --> C12 + O16 - // Al27 + p --> C12 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 68.9829 + -59.8017 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 + + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; - // cf88r - ln_set_rate = 68.9829 + -59.8017 * tfactors.T9i + -119.242 * tfactors.T913i + 13.3667 * tfactors.T913 - + 0.295425 * tfactors.T9 + -0.267288 * tfactors.T953 + -9.91729 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.8017 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i + + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.8017 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.242 * tfactors.T943i + (1.0/3.0) * 13.3667 * tfactors.T923i - + 0.295425 + (5.0/3.0) * -0.267288 * tfactors.T923 + -9.91729 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_He4_to_n_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al27_to_n_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + He4 --> n + P30 - // Al27 + He4 --> n + P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 6.09163 + -30.667 * tfactors.T9i + 5.40982 * tfactors.T913 + + -0.265676 * tfactors.T9 + 1.0 * tfactors.lnT9; - // nacr - ln_set_rate = 6.09163 + -30.667 * tfactors.T9i + 5.40982 * tfactors.T913 - + -0.265676 * tfactors.T9 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.667 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.40982 * tfactors.T923i + + -0.265676 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.667 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.40982 * tfactors.T923i - + -0.265676 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 11.3074 + -30.667 * tfactors.T9i + 0.311974 * tfactors.T913 + + -2.02044 * tfactors.T9; - // nacr - ln_set_rate = 11.3074 + -30.667 * tfactors.T9i + 0.311974 * tfactors.T913 - + -2.02044 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.667 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.311974 * tfactors.T923i + + -2.02044; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.667 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.311974 * tfactors.T923i - + -2.02044; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Al27_He4_to_p_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Al27_to_p_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Al27 + He4 --> p + Si30 - // Al27 + He4 --> p + Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 47.4856 + -56.5351 * tfactors.T913i + 1.60477 * tfactors.T913 + + -1.40594 * tfactors.T9 + 0.127353 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 47.4856 + -56.5351 * tfactors.T913i + 1.60477 * tfactors.T913 - + -1.40594 * tfactors.T9 + 0.127353 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * 1.60477 * tfactors.T923i + + -1.40594 + (5.0/3.0) * 0.127353 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * 1.60477 * tfactors.T923i - + -1.40594 + (5.0/3.0) * 0.127353 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_n_to_He4_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Si28_to_He4_Mg25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + n --> He4 + Mg25 - // Si28 + n --> He4 + Mg25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 48.7694 + -30.7983 * tfactors.T9i + -53.415 * tfactors.T913i + -1.46489 * tfactors.T913 + + 1.7777 * tfactors.T9 + -0.903499 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 48.7694 + -30.7983 * tfactors.T9i + -53.415 * tfactors.T913i + -1.46489 * tfactors.T913 - + 1.7777 * tfactors.T9 + -0.903499 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.7983 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.415 * tfactors.T943i + (1.0/3.0) * -1.46489 * tfactors.T923i + + 1.7777 + (5.0/3.0) * -0.903499 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.7983 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.415 * tfactors.T943i + (1.0/3.0) * -1.46489 * tfactors.T923i - + 1.7777 + (5.0/3.0) * -0.903499 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 41.3451 + -30.7983 * tfactors.T9i + -53.416 * tfactors.T913i + 8.01209 * tfactors.T913 + + -2.64791 * tfactors.T9 + 0.218637 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // nacr - ln_set_rate = 41.3451 + -30.7983 * tfactors.T9i + -53.416 * tfactors.T913i + 8.01209 * tfactors.T913 - + -2.64791 * tfactors.T9 + 0.218637 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.7983 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.416 * tfactors.T943i + (1.0/3.0) * 8.01209 * tfactors.T923i + + -2.64791 + (5.0/3.0) * 0.218637 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.7983 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.416 * tfactors.T943i + (1.0/3.0) * 8.01209 * tfactors.T923i - + -2.64791 + (5.0/3.0) * 0.218637 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_p_to_He4_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si28_to_He4_Al25_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + p --> He4 + Al25 - // Si28 + p --> He4 + Al25 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 50.6248 + -89.5005 * tfactors.T9i + -56.3424 * tfactors.T913i + 0.553763 * tfactors.T913 + + -0.84072 * tfactors.T9 + 0.0634219 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 50.6248 + -89.5005 * tfactors.T9i + -56.3424 * tfactors.T913i + 0.553763 * tfactors.T913 - + -0.84072 * tfactors.T9 + 0.0634219 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 89.5005 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.3424 * tfactors.T943i + (1.0/3.0) * 0.553763 * tfactors.T923i + + -0.84072 + (5.0/3.0) * 0.0634219 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.5005 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.3424 * tfactors.T943i + (1.0/3.0) * 0.553763 * tfactors.T923i - + -0.84072 + (5.0/3.0) * 0.0634219 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_p_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> p + P31 - // Si28 + He4 --> p + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -13.4595 + -24.112 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -13.4595 + -24.112 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.112 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.112 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -11.4335 + -25.6606 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -11.4335 + -25.6606 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.6606 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.6606 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.3424 + -22.2348 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.3424 + -22.2348 * tfactors.T9i + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.2348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.2348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_C12_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_C12_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> C12 + Ne20 - // Si28 + He4 --> C12 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rolfr + ln_set_rate = -307.762 + -186.722 * tfactors.T9i + 514.197 * tfactors.T913i + -200.896 * tfactors.T913 + + -6.42713 * tfactors.T9 + 0.758256 * tfactors.T953 + 236.359 * tfactors.lnT9; - // rolfr - ln_set_rate = -307.762 + -186.722 * tfactors.T9i + 514.197 * tfactors.T913i + -200.896 * tfactors.T913 - + -6.42713 * tfactors.T9 + 0.758256 * tfactors.T953 + 236.359 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 186.722 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 514.197 * tfactors.T943i + (1.0/3.0) * -200.896 * tfactors.T923i + + -6.42713 + (5.0/3.0) * 0.758256 * tfactors.T923 + 236.359 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 186.722 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 514.197 * tfactors.T943i + (1.0/3.0) * -200.896 * tfactors.T923i - + -6.42713 + (5.0/3.0) * 0.758256 * tfactors.T923 + 236.359 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si28_He4_to_O16_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si28_to_O16_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si28 + He4 --> O16 + O16 - // Si28 + He4 --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 97.7904 + -111.595 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 + + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; - // cf88r - ln_set_rate = 97.7904 + -111.595 * tfactors.T9i + -119.324 * tfactors.T913i + -32.2497 * tfactors.T913 - + 1.46214 * tfactors.T9 + -0.200893 * tfactors.T953 + 13.2148 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 111.595 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i + + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 111.595 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -119.324 * tfactors.T943i + (1.0/3.0) * -32.2497 * tfactors.T923i - + 1.46214 + (5.0/3.0) * -0.200893 * tfactors.T923 + 13.2148 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_n_to_He4_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Si29_to_He4_Mg26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 + n --> He4 + Mg26 - // Si29 + n --> He4 + Mg26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 46.369 + -0.394553 * tfactors.T9i + -53.505 * tfactors.T913i + 0.045598 * tfactors.T913 + + -0.194481 * tfactors.T9 + -0.0748153 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 46.369 + -0.394553 * tfactors.T9i + -53.505 * tfactors.T913i + 0.045598 * tfactors.T913 - + -0.194481 * tfactors.T9 + -0.0748153 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.394553 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.505 * tfactors.T943i + (1.0/3.0) * 0.045598 * tfactors.T923i + + -0.194481 + (5.0/3.0) * -0.0748153 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.394553 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -53.505 * tfactors.T943i + (1.0/3.0) * 0.045598 * tfactors.T923i - + -0.194481 + (5.0/3.0) * -0.0748153 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = 16.235 + -19.1246 * tfactors.T9i + -9.54056 * tfactors.T913 + + 4.71712 * tfactors.T9 + -0.461053 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = 16.235 + -19.1246 * tfactors.T9i + -9.54056 * tfactors.T913 - + 4.71712 * tfactors.T9 + -0.461053 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.1246 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -9.54056 * tfactors.T923i + + 4.71712 + (5.0/3.0) * -0.461053 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.1246 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -9.54056 * tfactors.T923i - + 4.71712 + (5.0/3.0) * -0.461053 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_p_to_n_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si29_to_n_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 + p --> n + P29 - // Si29 + p --> n + P29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.5351 + -66.4331 * tfactors.T9i + 1.48018 * tfactors.T913 + + -0.177129 * tfactors.T9 + 0.0127163 * tfactors.T953; - // ths8r - ln_set_rate = 18.5351 + -66.4331 * tfactors.T9i + 1.48018 * tfactors.T913 - + -0.177129 * tfactors.T9 + 0.0127163 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 66.4331 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.48018 * tfactors.T923i + + -0.177129 + (5.0/3.0) * 0.0127163 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 66.4331 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.48018 * tfactors.T923i - + -0.177129 + (5.0/3.0) * 0.0127163 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_p_to_He4_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si29_to_He4_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 + p --> He4 + Al26 - // Si29 + p --> He4 + Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 50.6364 + -55.9416 * tfactors.T9i + -56.4422 * tfactors.T913i + 0.705353 * tfactors.T913 + + -0.957427 * tfactors.T9 + 0.0756045 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 50.6364 + -55.9416 * tfactors.T9i + -56.4422 * tfactors.T913i + 0.705353 * tfactors.T913 - + -0.957427 * tfactors.T9 + 0.0756045 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.9416 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.4422 * tfactors.T943i + (1.0/3.0) * 0.705353 * tfactors.T923i + + -0.957427 + (5.0/3.0) * 0.0756045 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.9416 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.4422 * tfactors.T943i + (1.0/3.0) * 0.705353 * tfactors.T923i - + -0.957427 + (5.0/3.0) * 0.0756045 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_He4_to_n_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si29_to_n_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 + He4 --> n + S32 - // Si29 + He4 --> n + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -2.87932 + -17.7056 * tfactors.T9i + 9.48125 * tfactors.T913 + + 0.4472 * tfactors.T9 + -0.119237 * tfactors.T953; - // ths8r - ln_set_rate = -2.87932 + -17.7056 * tfactors.T9i + 9.48125 * tfactors.T913 - + 0.4472 * tfactors.T9 + -0.119237 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 17.7056 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 9.48125 * tfactors.T923i + + 0.4472 + (5.0/3.0) * -0.119237 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 17.7056 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 9.48125 * tfactors.T923i - + 0.4472 + (5.0/3.0) * -0.119237 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si29_He4_to_p_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si29_to_p_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si29 + He4 --> p + P32 - // Si29 + He4 --> p + P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 117.4 + -32.3767 * tfactors.T9i + 160.025 * tfactors.T913i + -285.126 * tfactors.T913 + + 16.3226 * tfactors.T9 + -0.928477 * tfactors.T953 + 138.458 * tfactors.lnT9; - // rath - ln_set_rate = 117.4 + -32.3767 * tfactors.T9i + 160.025 * tfactors.T913i + -285.126 * tfactors.T913 - + 16.3226 * tfactors.T9 + -0.928477 * tfactors.T953 + 138.458 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 32.3767 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 160.025 * tfactors.T943i + (1.0/3.0) * -285.126 * tfactors.T923i + + 16.3226 + (5.0/3.0) * -0.928477 * tfactors.T923 + 138.458 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 32.3767 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 160.025 * tfactors.T943i + (1.0/3.0) * -285.126 * tfactors.T923i - + 16.3226 + (5.0/3.0) * -0.928477 * tfactors.T923 + 138.458 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_p_to_n_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si30_to_n_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 + p --> n + P30 - // Si30 + p --> n + P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.4345 + -58.1931 * tfactors.T9i + 1.88379 * tfactors.T913 + + -0.330243 * tfactors.T9 + 0.0239836 * tfactors.T953; - // ths8r - ln_set_rate = 19.4345 + -58.1931 * tfactors.T9i + 1.88379 * tfactors.T913 - + -0.330243 * tfactors.T9 + 0.0239836 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.1931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.88379 * tfactors.T923i + + -0.330243 + (5.0/3.0) * 0.0239836 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.1931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.88379 * tfactors.T923i - + -0.330243 + (5.0/3.0) * 0.0239836 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_p_to_He4_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si30_to_He4_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 + p --> He4 + Al27 - // Si30 + p --> He4 + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 50.5056 + -27.5284 * tfactors.T9i + -56.5351 * tfactors.T913i + 1.60477 * tfactors.T913 + + -1.40594 * tfactors.T9 + 0.127353 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 50.5056 + -27.5284 * tfactors.T9i + -56.5351 * tfactors.T913i + 1.60477 * tfactors.T913 - + -1.40594 * tfactors.T9 + 0.127353 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.5284 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * 1.60477 * tfactors.T923i + + -1.40594 + (5.0/3.0) * 0.127353 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.5284 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -56.5351 * tfactors.T943i + (1.0/3.0) * 1.60477 * tfactors.T923i - + -1.40594 + (5.0/3.0) * 0.127353 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_He4_to_n_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si30_to_n_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 + He4 --> n + S33 - // Si30 + He4 --> n + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.3228 + -40.5385 * tfactors.T9i + -0.725571 * tfactors.T913 + + 0.430731 * tfactors.T9 + -0.0323663 * tfactors.T953; - // ths8r - ln_set_rate = 17.3228 + -40.5385 * tfactors.T9i + -0.725571 * tfactors.T913 - + 0.430731 * tfactors.T9 + -0.0323663 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 40.5385 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.725571 * tfactors.T923i + + 0.430731 + (5.0/3.0) * -0.0323663 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.5385 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.725571 * tfactors.T923i - + 0.430731 + (5.0/3.0) * -0.0323663 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si30_He4_to_p_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si30_to_p_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si30 + He4 --> p + P33 - // Si30 + He4 --> p + P33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 81.0152 + -37.7526 * tfactors.T9i + 110.297 * tfactors.T913i + -193.863 * tfactors.T913 + + 11.4977 * tfactors.T9 + -0.687235 * tfactors.T953 + 94.819 * tfactors.lnT9; - // rath - ln_set_rate = 81.0152 + -37.7526 * tfactors.T9i + 110.297 * tfactors.T913i + -193.863 * tfactors.T913 - + 11.4977 * tfactors.T9 + -0.687235 * tfactors.T953 + 94.819 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 37.7526 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 110.297 * tfactors.T943i + (1.0/3.0) * -193.863 * tfactors.T923i + + 11.4977 + (5.0/3.0) * -0.687235 * tfactors.T923 + 94.819 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 37.7526 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 110.297 * tfactors.T943i + (1.0/3.0) * -193.863 * tfactors.T923i - + 11.4977 + (5.0/3.0) * -0.687235 * tfactors.T923 + 94.819 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si31_p_to_n_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si31_to_n_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si31 + p --> n + P31 - // Si31 + p --> n + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 80.5195 + -3.3832 * tfactors.T9i + 119.352 * tfactors.T913i + -198.709 * tfactors.T913 + + 10.5994 * tfactors.T9 + -0.583506 * tfactors.T953 + 100.693 * tfactors.lnT9; - // rath - ln_set_rate = 80.5195 + -3.3832 * tfactors.T9i + 119.352 * tfactors.T913i + -198.709 * tfactors.T913 - + 10.5994 * tfactors.T9 + -0.583506 * tfactors.T953 + 100.693 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.3832 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 119.352 * tfactors.T943i + (1.0/3.0) * -198.709 * tfactors.T923i + + 10.5994 + (5.0/3.0) * -0.583506 * tfactors.T923 + 100.693 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.3832 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 119.352 * tfactors.T943i + (1.0/3.0) * -198.709 * tfactors.T923i - + 10.5994 + (5.0/3.0) * -0.583506 * tfactors.T923 + 100.693 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si31_He4_to_n_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si31_to_n_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si31 + He4 --> n + S34 - // Si31 + He4 --> n + S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -5.10649 + -2.7438 * tfactors.T9i + -22.4045 * tfactors.T913i + 23.4647 * tfactors.T913 + + -4.73922 * tfactors.T9 + 0.371237 * tfactors.T953 + 4.62837 * tfactors.lnT9; - // rath - ln_set_rate = -5.10649 + -2.7438 * tfactors.T9i + -22.4045 * tfactors.T913i + 23.4647 * tfactors.T913 - + -4.73922 * tfactors.T9 + 0.371237 * tfactors.T953 + 4.62837 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.7438 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -22.4045 * tfactors.T943i + (1.0/3.0) * 23.4647 * tfactors.T923i + + -4.73922 + (5.0/3.0) * 0.371237 * tfactors.T923 + 4.62837 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.7438 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -22.4045 * tfactors.T943i + (1.0/3.0) * 23.4647 * tfactors.T923i - + -4.73922 + (5.0/3.0) * 0.371237 * tfactors.T923 + 4.62837 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si32_p_to_n_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Si32_to_n_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si32 + p --> n + P32 - // Si32 + p --> n + P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -32.8411 + -6.17898 * tfactors.T9i + -31.4944 * tfactors.T913i + 82.7906 * tfactors.T913 + + -5.28792 * tfactors.T9 + 0.278753 * tfactors.T953 + -31.7623 * tfactors.lnT9; - // rath - ln_set_rate = -32.8411 + -6.17898 * tfactors.T9i + -31.4944 * tfactors.T913i + 82.7906 * tfactors.T913 - + -5.28792 * tfactors.T9 + 0.278753 * tfactors.T953 + -31.7623 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.17898 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.4944 * tfactors.T943i + (1.0/3.0) * 82.7906 * tfactors.T923i + + -5.28792 + (5.0/3.0) * 0.278753 * tfactors.T923 + -31.7623 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.17898 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.4944 * tfactors.T943i + (1.0/3.0) * 82.7906 * tfactors.T923i - + -5.28792 + (5.0/3.0) * 0.278753 * tfactors.T923 + -31.7623 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Si32_He4_to_n_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Si32_to_n_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Si32 + He4 --> n + S35 - // Si32 + He4 --> n + S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -29.9932 + -10.223 * tfactors.T9i + 32.5444 * tfactors.T913 + + -2.95994 * tfactors.T9 + 0.119682 * tfactors.T953; - // ths8r - ln_set_rate = -29.9932 + -10.223 * tfactors.T9i + 32.5444 * tfactors.T913 - + -2.95994 * tfactors.T9 + 0.119682 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.223 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 32.5444 * tfactors.T923i + + -2.95994 + (5.0/3.0) * 0.119682 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.223 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 32.5444 * tfactors.T923i - + -2.95994 + (5.0/3.0) * 0.119682 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P29_n_to_p_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P29_to_p_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P29 + n --> p + Si29 - // P29 + n --> p + Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.5351 + 1.48018 * tfactors.T913 + + -0.177129 * tfactors.T9 + 0.0127163 * tfactors.T953; - // ths8r - ln_set_rate = 18.5351 + 1.48018 * tfactors.T913 - + -0.177129 * tfactors.T9 + 0.0127163 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.48018 * tfactors.T923i + + -0.177129 + (5.0/3.0) * 0.0127163 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.48018 * tfactors.T923i - + -0.177129 + (5.0/3.0) * 0.0127163 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P29_n_to_He4_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P29_to_He4_Al26_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P29 + n --> He4 + Al26 - // P29 + n --> He4 + Al26 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -39.2446 + 41.9938 * tfactors.T913 + + -4.54859 * tfactors.T9 + 0.243841 * tfactors.T953; - // ths8r - ln_set_rate = -39.2446 + 41.9938 * tfactors.T913 - + -4.54859 * tfactors.T9 + 0.243841 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 41.9938 * tfactors.T923i + + -4.54859 + (5.0/3.0) * 0.243841 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 41.9938 * tfactors.T923i - + -4.54859 + (5.0/3.0) * 0.243841 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P29_He4_to_p_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P29_to_p_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P29 + He4 --> p + S32 - // P29 + He4 --> p + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 50.2824 + -62.3802 * tfactors.T913i + 0.459085 * tfactors.T913 + + -0.870169 * tfactors.T9 + 0.0631143 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 50.2824 + -62.3802 * tfactors.T913i + 0.459085 * tfactors.T913 - + -0.870169 * tfactors.T9 + 0.0631143 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -62.3802 * tfactors.T943i + (1.0/3.0) * 0.459085 * tfactors.T923i + + -0.870169 + (5.0/3.0) * 0.0631143 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -62.3802 * tfactors.T943i + (1.0/3.0) * 0.459085 * tfactors.T923i - + -0.870169 + (5.0/3.0) * 0.0631143 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_n_to_p_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P30_to_p_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 + n --> p + Si30 - // P30 + n --> p + Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.3359 + 1.88379 * tfactors.T913 + + -0.330243 * tfactors.T9 + 0.0239836 * tfactors.T953; - // ths8r - ln_set_rate = 18.3359 + 1.88379 * tfactors.T913 - + -0.330243 * tfactors.T9 + 0.0239836 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.88379 * tfactors.T923i + + -0.330243 + (5.0/3.0) * 0.0239836 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.88379 * tfactors.T923i - + -0.330243 + (5.0/3.0) * 0.0239836 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_n_to_He4_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P30_to_He4_Al27_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 + n --> He4 + Al27 - // P30 + n --> He4 + Al27 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacr + ln_set_rate = 8.01303 + 0.0036935 * tfactors.T9i + 5.40982 * tfactors.T913 + + -0.265676 * tfactors.T9 + 1.0 * tfactors.lnT9; - // nacr - ln_set_rate = 8.01303 + 0.0036935 * tfactors.T9i + 5.40982 * tfactors.T913 - + -0.265676 * tfactors.T9 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0036935 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.40982 * tfactors.T923i + + -0.265676 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0036935 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.40982 * tfactors.T923i - + -0.265676 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacr + ln_set_rate = 13.2288 + 0.0036935 * tfactors.T9i + 0.311974 * tfactors.T913 + + -2.02044 * tfactors.T9; - // nacr - ln_set_rate = 13.2288 + 0.0036935 * tfactors.T9i + 0.311974 * tfactors.T913 - + -2.02044 * tfactors.T9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.0036935 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.311974 * tfactors.T923i + + -2.02044; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.0036935 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.311974 * tfactors.T923i - + -2.02044; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_He4_to_n_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P30_to_n_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 + He4 --> n + Cl33 - // P30 + He4 --> n + Cl33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.9462 + -56.2069 * tfactors.T9i + 1.33535 * tfactors.T913 + + -0.149988 * tfactors.T9 + 0.0279218 * tfactors.T953; - // ths8r - ln_set_rate = 14.9462 + -56.2069 * tfactors.T9i + 1.33535 * tfactors.T913 - + -0.149988 * tfactors.T9 + 0.0279218 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 56.2069 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.33535 * tfactors.T923i + + -0.149988 + (5.0/3.0) * 0.0279218 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 56.2069 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.33535 * tfactors.T923i - + -0.149988 + (5.0/3.0) * 0.0279218 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P30_He4_to_p_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P30_to_p_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P30 + He4 --> p + S33 - // P30 + He4 --> p + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 49.813 + -62.4643 * tfactors.T913i + 0.492934 * tfactors.T913 + + -0.841855 * tfactors.T9 + 0.059263 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 49.813 + -62.4643 * tfactors.T913i + 0.492934 * tfactors.T913 - + -0.841855 * tfactors.T9 + 0.059263 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -62.4643 * tfactors.T943i + (1.0/3.0) * 0.492934 * tfactors.T923i + + -0.841855 + (5.0/3.0) * 0.059263 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -62.4643 * tfactors.T943i + (1.0/3.0) * 0.492934 * tfactors.T923i - + -0.841855 + (5.0/3.0) * 0.059263 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_n_to_p_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P31_to_p_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + n --> p + Si31 - // P31 + n --> p + Si31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 81.2126 + -11.6108 * tfactors.T9i + 119.352 * tfactors.T913i + -198.709 * tfactors.T913 + + 10.5994 * tfactors.T9 + -0.583506 * tfactors.T953 + 100.693 * tfactors.lnT9; - // rath - ln_set_rate = 81.2126 + -11.6108 * tfactors.T9i + 119.352 * tfactors.T913i + -198.709 * tfactors.T913 - + 10.5994 * tfactors.T9 + -0.583506 * tfactors.T953 + 100.693 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.6108 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 119.352 * tfactors.T943i + (1.0/3.0) * -198.709 * tfactors.T923i + + 10.5994 + (5.0/3.0) * -0.583506 * tfactors.T923 + 100.693 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.6108 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 119.352 * tfactors.T943i + (1.0/3.0) * -198.709 * tfactors.T923i - + 10.5994 + (5.0/3.0) * -0.583506 * tfactors.T923 + 100.693 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_He4_Si28_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> He4 + Si28 - // P31 + p --> He4 + Si28 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 + + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -10.893 + -3.42575 * tfactors.T9i + 21.521 * tfactors.T913 - + -1.90355 * tfactors.T9 + 0.092724 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i + + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.42575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.521 * tfactors.T923i - + -1.90355 + (5.0/3.0) * 0.092724 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -12.919 + -1.87716 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -12.919 + -1.87716 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.87716 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 + + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 60.8829 + -31.932 * tfactors.T913i + -77.0334 * tfactors.T913 - + -43.6847 * tfactors.T9 + -4.28955 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i + + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.932 * tfactors.T943i + (1.0/3.0) * -77.0334 * tfactors.T923i - + -43.6847 + (5.0/3.0) * -4.28955 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_C12_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_C12_Ne20_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> C12 + Ne20 - // P31 + p --> C12 + Ne20 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rolfr + ln_set_rate = -266.452 + -156.019 * tfactors.T9i + 361.154 * tfactors.T913i + -92.643 * tfactors.T913 + + -9.98738 * tfactors.T9 + 0.892737 * tfactors.T953 + 161.042 * tfactors.lnT9; - // rolfr - ln_set_rate = -266.452 + -156.019 * tfactors.T9i + 361.154 * tfactors.T913i + -92.643 * tfactors.T913 - + -9.98738 * tfactors.T9 + 0.892737 * tfactors.T953 + 161.042 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 156.019 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 361.154 * tfactors.T943i + (1.0/3.0) * -92.643 * tfactors.T923i + + -9.98738 + (5.0/3.0) * 0.892737 * tfactors.T923 + 161.042 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 156.019 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 361.154 * tfactors.T943i + (1.0/3.0) * -92.643 * tfactors.T923i - + -9.98738 + (5.0/3.0) * 0.892737 * tfactors.T923 + 161.042 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_p_to_O16_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P31_to_O16_O16_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + p --> O16 + O16 - // P31 + p --> O16 + O16 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 86.3501 + -88.8797 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 + + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; - // cf88r - ln_set_rate = 86.3501 + -88.8797 * tfactors.T9i + -145.844 * tfactors.T913i + 8.72612 * tfactors.T913 - + -0.554035 * tfactors.T9 + -0.137562 * tfactors.T953 + -6.88807 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 88.8797 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i + + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 88.8797 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -145.844 * tfactors.T943i + (1.0/3.0) * 8.72612 * tfactors.T923i - + -0.554035 + (5.0/3.0) * -0.137562 * tfactors.T923 + -6.88807 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_He4_to_n_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P31_to_n_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + He4 --> n + Cl34 - // P31 + He4 --> n + Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.9244 + -65.5365 * tfactors.T9i + -0.466069 * tfactors.T913 + + 0.167169 * tfactors.T9 + -0.00537463 * tfactors.T953; - // ths8r - ln_set_rate = 16.9244 + -65.5365 * tfactors.T9i + -0.466069 * tfactors.T913 - + 0.167169 * tfactors.T9 + -0.00537463 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.5365 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.466069 * tfactors.T923i + + 0.167169 + (5.0/3.0) * -0.00537463 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.5365 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.466069 * tfactors.T923i - + 0.167169 + (5.0/3.0) * -0.00537463 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P31_He4_to_p_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P31_to_p_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P31 + He4 --> p + S34 - // P31 + He4 --> p + S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 49.0993 + -62.5433 * tfactors.T913i + 1.69339 * tfactors.T913 + + -1.27872 * tfactors.T9 + 0.106616 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 49.0993 + -62.5433 * tfactors.T913i + 1.69339 * tfactors.T913 - + -1.27872 * tfactors.T9 + 0.106616 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -62.5433 * tfactors.T943i + (1.0/3.0) * 1.69339 * tfactors.T923i + + -1.27872 + (5.0/3.0) * 0.106616 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -62.5433 * tfactors.T943i + (1.0/3.0) * 1.69339 * tfactors.T923i - + -1.27872 + (5.0/3.0) * 0.106616 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_n_to_p_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_P32_to_p_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 + n --> p + Si32 - // P32 + n --> p + Si32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -33.9397 + 0.296332 * tfactors.T9i + -31.4944 * tfactors.T913i + 82.7906 * tfactors.T913 + + -5.28792 * tfactors.T9 + 0.278753 * tfactors.T953 + -31.7623 * tfactors.lnT9; - // rath - ln_set_rate = -33.9397 + 0.296332 * tfactors.T9i + -31.4944 * tfactors.T913i + 82.7906 * tfactors.T913 - + -5.28792 * tfactors.T9 + 0.278753 * tfactors.T953 + -31.7623 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -0.296332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.4944 * tfactors.T943i + (1.0/3.0) * 82.7906 * tfactors.T923i + + -5.28792 + (5.0/3.0) * 0.278753 * tfactors.T923 + -31.7623 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -0.296332 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.4944 * tfactors.T943i + (1.0/3.0) * 82.7906 * tfactors.T923i - + -5.28792 + (5.0/3.0) * 0.278753 * tfactors.T923 + -31.7623 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_p_to_n_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P32_to_n_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 + p --> n + S32 - // P32 + p --> n + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 82.294 + -3.56696 * tfactors.T9i + 124.605 * tfactors.T913i + -206.844 * tfactors.T913 + + 11.0016 * tfactors.T9 + -0.612898 * tfactors.T953 + 104.905 * tfactors.lnT9; - // rath - ln_set_rate = 82.294 + -3.56696 * tfactors.T9i + 124.605 * tfactors.T913i + -206.844 * tfactors.T913 - + 11.0016 * tfactors.T9 + -0.612898 * tfactors.T953 + 104.905 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.56696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 124.605 * tfactors.T943i + (1.0/3.0) * -206.844 * tfactors.T923i + + 11.0016 + (5.0/3.0) * -0.612898 * tfactors.T923 + 104.905 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.56696 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 124.605 * tfactors.T943i + (1.0/3.0) * -206.844 * tfactors.T923i - + 11.0016 + (5.0/3.0) * -0.612898 * tfactors.T923 + 104.905 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_p_to_He4_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P32_to_He4_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 + p --> He4 + Si29 - // P32 + p --> He4 + Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 118.233 + -3.89928 * tfactors.T9i + 160.025 * tfactors.T913i + -285.126 * tfactors.T913 + + 16.3226 * tfactors.T9 + -0.928477 * tfactors.T953 + 138.458 * tfactors.lnT9; - // rath - ln_set_rate = 118.233 + -3.89928 * tfactors.T9i + 160.025 * tfactors.T913i + -285.126 * tfactors.T913 - + 16.3226 * tfactors.T9 + -0.928477 * tfactors.T953 + 138.458 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.89928 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 160.025 * tfactors.T943i + (1.0/3.0) * -285.126 * tfactors.T923i + + 16.3226 + (5.0/3.0) * -0.928477 * tfactors.T923 + 138.458 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.89928 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 160.025 * tfactors.T943i + (1.0/3.0) * -285.126 * tfactors.T923i - + 16.3226 + (5.0/3.0) * -0.928477 * tfactors.T923 + 138.458 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_He4_to_n_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P32_to_n_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 + He4 --> n + Cl35 - // P32 + He4 --> n + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -33.0327 + -10.8859 * tfactors.T9i + 35.1367 * tfactors.T913 + + -3.30169 * tfactors.T9 + 0.150699 * tfactors.T953; - // ths8r - ln_set_rate = -33.0327 + -10.8859 * tfactors.T9i + 35.1367 * tfactors.T913 - + -3.30169 * tfactors.T9 + 0.150699 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.8859 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.1367 * tfactors.T923i + + -3.30169 + (5.0/3.0) * 0.150699 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.8859 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 35.1367 * tfactors.T923i - + -3.30169 + (5.0/3.0) * 0.150699 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P32_He4_to_p_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P32_to_p_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P32 + He4 --> p + S35 - // P32 + He4 --> p + S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -31.5296 + -3.74729 * tfactors.T9i + -26.7922 * tfactors.T913i + 56.581 * tfactors.T913 + + -10.5304 * tfactors.T9 + 0.9493 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -31.5296 + -3.74729 * tfactors.T9i + -26.7922 * tfactors.T913i + 56.581 * tfactors.T913 - + -10.5304 * tfactors.T9 + 0.9493 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.74729 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.7922 * tfactors.T943i + (1.0/3.0) * 56.581 * tfactors.T923i + + -10.5304 + (5.0/3.0) * 0.9493 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.74729 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.7922 * tfactors.T943i + (1.0/3.0) * 56.581 * tfactors.T923i - + -10.5304 + (5.0/3.0) * 0.9493 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P33_p_to_n_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P33_to_n_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P33 + p --> n + S33 - // P33 + p --> n + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 5.79458 + -6.19492 * tfactors.T9i + 8.02978 * tfactors.T913 + + -0.479244 * tfactors.T9 + 0.0134889 * tfactors.T953; - // ths8r - ln_set_rate = 5.79458 + -6.19492 * tfactors.T9i + 8.02978 * tfactors.T913 - + -0.479244 * tfactors.T9 + 0.0134889 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.19492 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.02978 * tfactors.T923i + + -0.479244 + (5.0/3.0) * 0.0134889 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.19492 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.02978 * tfactors.T923i - + -0.479244 + (5.0/3.0) * 0.0134889 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P33_p_to_He4_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_P33_to_He4_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P33 + p --> He4 + Si30 - // P33 + p --> He4 + Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 81.5654 + -3.41491 * tfactors.T9i + 110.297 * tfactors.T913i + -193.863 * tfactors.T913 + + 11.4977 * tfactors.T9 + -0.687235 * tfactors.T953 + 94.819 * tfactors.lnT9; - // rath - ln_set_rate = 81.5654 + -3.41491 * tfactors.T9i + 110.297 * tfactors.T913i + -193.863 * tfactors.T913 - + 11.4977 * tfactors.T9 + -0.687235 * tfactors.T953 + 94.819 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.41491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 110.297 * tfactors.T943i + (1.0/3.0) * -193.863 * tfactors.T923i + + 11.4977 + (5.0/3.0) * -0.687235 * tfactors.T923 + 94.819 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.41491 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 110.297 * tfactors.T943i + (1.0/3.0) * -193.863 * tfactors.T923i - + 11.4977 + (5.0/3.0) * -0.687235 * tfactors.T923 + 94.819 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P33_He4_to_n_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P33_to_n_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P33 + He4 --> n + Cl36 - // P33 + He4 --> n + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.13 + -28.5706 * tfactors.T9i + -0.927614 * tfactors.T913 + + 1.68083 * tfactors.T9 + -0.183233 * tfactors.T953; - // ths8r - ln_set_rate = 11.13 + -28.5706 * tfactors.T9i + -0.927614 * tfactors.T913 - + 1.68083 * tfactors.T9 + -0.183233 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 28.5706 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.927614 * tfactors.T923i + + 1.68083 + (5.0/3.0) * -0.183233 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 28.5706 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.927614 * tfactors.T923i - + 1.68083 + (5.0/3.0) * -0.183233 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_P33_He4_to_p_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_P33_to_p_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // P33 + He4 --> p + S36 - // P33 + He4 --> p + S36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -16.0835 + -6.23702 * tfactors.T9i + -26.7991 * tfactors.T913i + 44.6374 * tfactors.T913 + + -9.82916 * tfactors.T9 + 0.995523 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -16.0835 + -6.23702 * tfactors.T9i + -26.7991 * tfactors.T913i + 44.6374 * tfactors.T913 - + -9.82916 * tfactors.T9 + 0.995523 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.23702 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.7991 * tfactors.T943i + (1.0/3.0) * 44.6374 * tfactors.T923i + + -9.82916 + (5.0/3.0) * 0.995523 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.23702 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -26.7991 * tfactors.T943i + (1.0/3.0) * 44.6374 * tfactors.T923i - + -9.82916 + (5.0/3.0) * 0.995523 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_n_to_p_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S32_to_p_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + n --> p + P32 - // S32 + n --> p + P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 83.3926 + -14.3359 * tfactors.T9i + 124.605 * tfactors.T913i + -206.844 * tfactors.T913 + + 11.0016 * tfactors.T9 + -0.612898 * tfactors.T953 + 104.905 * tfactors.lnT9; - // rath - ln_set_rate = 83.3926 + -14.3359 * tfactors.T9i + 124.605 * tfactors.T913i + -206.844 * tfactors.T913 - + 11.0016 * tfactors.T9 + -0.612898 * tfactors.T953 + 104.905 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.3359 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 124.605 * tfactors.T943i + (1.0/3.0) * -206.844 * tfactors.T923i + + 11.0016 + (5.0/3.0) * -0.612898 * tfactors.T923 + 104.905 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.3359 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 124.605 * tfactors.T943i + (1.0/3.0) * -206.844 * tfactors.T923i - + 11.0016 + (5.0/3.0) * -0.612898 * tfactors.T923 + 104.905 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_n_to_He4_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S32_to_He4_Si29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + n --> He4 + Si29 - // S32 + n --> He4 + Si29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -0.947538 + 9.48125 * tfactors.T913 + + 0.4472 * tfactors.T9 + -0.119237 * tfactors.T953; - // ths8r - ln_set_rate = -0.947538 + 9.48125 * tfactors.T913 - + 0.4472 * tfactors.T9 + -0.119237 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 9.48125 * tfactors.T923i + + 0.4472 + (5.0/3.0) * -0.119237 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 9.48125 * tfactors.T923i - + 0.4472 + (5.0/3.0) * -0.119237 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_p_to_He4_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S32_to_He4_P29_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + p --> He4 + P29 - // S32 + p --> He4 + P29 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.2142 + -48.7275 * tfactors.T9i + -62.3802 * tfactors.T913i + 0.459085 * tfactors.T913 + + -0.870169 * tfactors.T9 + 0.0631143 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.2142 + -48.7275 * tfactors.T9i + -62.3802 * tfactors.T913i + 0.459085 * tfactors.T913 - + -0.870169 * tfactors.T9 + 0.0631143 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 48.7275 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.3802 * tfactors.T943i + (1.0/3.0) * 0.459085 * tfactors.T923i + + -0.870169 + (5.0/3.0) * 0.0631143 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 48.7275 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.3802 * tfactors.T943i + (1.0/3.0) * 0.459085 * tfactors.T923i - + -0.870169 + (5.0/3.0) * 0.0631143 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S32_He4_to_p_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S32_to_p_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S32 + He4 --> p + Cl35 - // S32 + He4 --> p + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -57.395 + -22.1894 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -57.395 + -22.1894 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.1894 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.1894 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.2544 + -21.6564 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 32.2544 + -21.6564 * tfactors.T9i + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.6564 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.6564 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.42563 + -27.6662 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.42563 + -27.6662 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.6662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.6662 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -0.877602 + -25.5914 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -0.877602 + -25.5914 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.5914 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.5914 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_n_to_p_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S33_to_p_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + n --> p + P33 - // S33 + n --> p + P33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 5.10143 + 8.02978 * tfactors.T913 + + -0.479244 * tfactors.T9 + 0.0134889 * tfactors.T953; - // ths8r - ln_set_rate = 5.10143 + 8.02978 * tfactors.T913 - + -0.479244 * tfactors.T9 + 0.0134889 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 8.02978 * tfactors.T923i + + -0.479244 + (5.0/3.0) * 0.0134889 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 8.02978 * tfactors.T923i - + -0.479244 + (5.0/3.0) * 0.0134889 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_n_to_He4_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S33_to_He4_Si30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + n --> He4 + Si30 - // S33 + n --> He4 + Si30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.1798 + -0.725571 * tfactors.T913 + + 0.430731 * tfactors.T9 + -0.0323663 * tfactors.T953; - // ths8r - ln_set_rate = 17.1798 + -0.725571 * tfactors.T913 - + 0.430731 * tfactors.T9 + -0.0323663 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.725571 * tfactors.T923i + + 0.430731 + (5.0/3.0) * -0.0323663 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.725571 * tfactors.T923i - + 0.430731 + (5.0/3.0) * -0.0323663 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_p_to_n_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S33_to_n_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + p --> n + Cl33 - // S33 + p --> n + Cl33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.5772 + -73.8616 * tfactors.T9i + 1.39633 * tfactors.T913 + + -0.136457 * tfactors.T9 + 0.00585594 * tfactors.T953; - // ths8r - ln_set_rate = 18.5772 + -73.8616 * tfactors.T9i + 1.39633 * tfactors.T913 - + -0.136457 * tfactors.T9 + 0.00585594 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 73.8616 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.39633 * tfactors.T923i + + -0.136457 + (5.0/3.0) * 0.00585594 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 73.8616 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.39633 * tfactors.T923i - + -0.136457 + (5.0/3.0) * 0.00585594 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_p_to_He4_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S33_to_He4_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + p --> He4 + P30 - // S33 + p --> He4 + P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 50.7686 + -17.6546 * tfactors.T9i + -62.4643 * tfactors.T913i + 0.492934 * tfactors.T913 + + -0.841855 * tfactors.T9 + 0.059263 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 50.7686 + -17.6546 * tfactors.T9i + -62.4643 * tfactors.T913i + 0.492934 * tfactors.T913 - + -0.841855 * tfactors.T9 + 0.059263 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 17.6546 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.4643 * tfactors.T943i + (1.0/3.0) * 0.492934 * tfactors.T923i + + -0.841855 + (5.0/3.0) * 0.059263 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 17.6546 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.4643 * tfactors.T943i + (1.0/3.0) * 0.492934 * tfactors.T923i - + -0.841855 + (5.0/3.0) * 0.059263 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_He4_to_n_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S33_to_n_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + He4 --> n + Ar36 - // S33 + He4 --> n + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 0.398258 + -23.219 * tfactors.T9i + 5.44923 * tfactors.T913 + + 1.17359 * tfactors.T9 + -0.175811 * tfactors.T953; - // ths8r - ln_set_rate = 0.398258 + -23.219 * tfactors.T9i + 5.44923 * tfactors.T913 - + 1.17359 * tfactors.T9 + -0.175811 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 23.219 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.44923 * tfactors.T923i + + 1.17359 + (5.0/3.0) * -0.175811 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 23.219 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.44923 * tfactors.T923i - + 1.17359 + (5.0/3.0) * -0.175811 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S33_He4_to_p_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S33_to_p_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S33 + He4 --> p + Cl36 - // S33 + He4 --> p + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 23.6067 + -22.3757 * tfactors.T9i + -27.9044 * tfactors.T913i + 7.06482 * tfactors.T913 + + -1.77458 * tfactors.T9 + 0.192878 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 23.6067 + -22.3757 * tfactors.T9i + -27.9044 * tfactors.T913i + 7.06482 * tfactors.T913 - + -1.77458 * tfactors.T9 + 0.192878 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.3757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.9044 * tfactors.T943i + (1.0/3.0) * 7.06482 * tfactors.T923i + + -1.77458 + (5.0/3.0) * 0.192878 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.3757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -27.9044 * tfactors.T943i + (1.0/3.0) * 7.06482 * tfactors.T923i - + -1.77458 + (5.0/3.0) * 0.192878 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_n_to_He4_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S34_to_He4_Si31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 + n --> He4 + Si31 - // S34 + n --> He4 + Si31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -2.47246 + -18.2474 * tfactors.T9i + -22.4045 * tfactors.T913i + 23.4647 * tfactors.T913 + + -4.73922 * tfactors.T9 + 0.371237 * tfactors.T953 + 4.62837 * tfactors.lnT9; - // rath - ln_set_rate = -2.47246 + -18.2474 * tfactors.T9i + -22.4045 * tfactors.T913i + 23.4647 * tfactors.T913 - + -4.73922 * tfactors.T9 + 0.371237 * tfactors.T953 + 4.62837 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.2474 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -22.4045 * tfactors.T943i + (1.0/3.0) * 23.4647 * tfactors.T923i + + -4.73922 + (5.0/3.0) * 0.371237 * tfactors.T923 + 4.62837 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.2474 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -22.4045 * tfactors.T943i + (1.0/3.0) * 23.4647 * tfactors.T923i - + -4.73922 + (5.0/3.0) * 0.371237 * tfactors.T923 + 4.62837 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_p_to_n_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S34_to_n_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 + p --> n + Cl34 - // S34 + p --> n + Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.4445 + -72.8108 * tfactors.T9i + 0.847427 * tfactors.T913 + + 0.000125282 * tfactors.T9 + -0.00573985 * tfactors.T953; - // ths8r - ln_set_rate = 18.4445 + -72.8108 * tfactors.T9i + 0.847427 * tfactors.T913 - + 0.000125282 * tfactors.T9 + -0.00573985 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 72.8108 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.847427 * tfactors.T923i + + 0.000125282 + (5.0/3.0) * -0.00573985 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 72.8108 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.847427 * tfactors.T923i - + 0.000125282 + (5.0/3.0) * -0.00573985 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_p_to_He4_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S34_to_He4_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 + p --> He4 + P31 - // S34 + p --> He4 + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 51.0402 + -7.27426 * tfactors.T9i + -62.5433 * tfactors.T913i + 1.69339 * tfactors.T913 + + -1.27872 * tfactors.T9 + 0.106616 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 51.0402 + -7.27426 * tfactors.T9i + -62.5433 * tfactors.T913i + 1.69339 * tfactors.T913 - + -1.27872 * tfactors.T9 + 0.106616 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.27426 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.5433 * tfactors.T943i + (1.0/3.0) * 1.69339 * tfactors.T923i + + -1.27872 + (5.0/3.0) * 0.106616 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.27426 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -62.5433 * tfactors.T943i + (1.0/3.0) * 1.69339 * tfactors.T923i - + -1.27872 + (5.0/3.0) * 0.106616 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_He4_to_n_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S34_to_n_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 + He4 --> n + Ar37 - // S34 + He4 --> n + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM93 + ln_set_rate = 18.5358 + -53.7288 * tfactors.T9i + -1.69894 * tfactors.T913 + + 0.371187 * tfactors.T9 + -0.0457242 * tfactors.T953 + 1.0 * tfactors.lnT9; - // SM93 - ln_set_rate = 18.5358 + -53.7288 * tfactors.T9i + -1.69894 * tfactors.T913 - + 0.371187 * tfactors.T9 + -0.0457242 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 53.7288 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.69894 * tfactors.T923i + + 0.371187 + (5.0/3.0) * -0.0457242 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.7288 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.69894 * tfactors.T923i - + 0.371187 + (5.0/3.0) * -0.0457242 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM93 + ln_set_rate = 18.5358 + -53.7288 * tfactors.T9i + 0.522368 * tfactors.T913 + + -1.03944 * tfactors.T9 + 0.142735 * tfactors.T953; - // SM93 - ln_set_rate = 18.5358 + -53.7288 * tfactors.T9i + 0.522368 * tfactors.T913 - + -1.03944 * tfactors.T9 + 0.142735 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 53.7288 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.522368 * tfactors.T923i + + -1.03944 + (5.0/3.0) * 0.142735 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 53.7288 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.522368 * tfactors.T923i - + -1.03944 + (5.0/3.0) * 0.142735 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S34_He4_to_p_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S34_to_p_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S34 + He4 --> p + Cl37 - // S34 + He4 --> p + Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM93 + ln_set_rate = 80.8229 + -35.2081 * tfactors.T9i + -47.5185 * tfactors.T913i + -32.046 * tfactors.T913 + + 4.43077 * tfactors.T9 + -0.368628 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // SM93 - ln_set_rate = 80.8229 + -35.2081 * tfactors.T9i + -47.5185 * tfactors.T913i + -32.046 * tfactors.T913 - + 4.43077 * tfactors.T9 + -0.368628 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 35.2081 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -47.5185 * tfactors.T943i + (1.0/3.0) * -32.046 * tfactors.T923i + + 4.43077 + (5.0/3.0) * -0.368628 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 35.2081 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -47.5185 * tfactors.T943i + (1.0/3.0) * -32.046 * tfactors.T923i - + 4.43077 + (5.0/3.0) * -0.368628 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_n_to_He4_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_S35_to_He4_Si32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 + n --> He4 + Si32 - // S35 + n --> He4 + Si32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -30.1276 + 32.5444 * tfactors.T913 + + -2.95994 * tfactors.T9 + 0.119682 * tfactors.T953; - // ths8r - ln_set_rate = -30.1276 + 32.5444 * tfactors.T913 - + -2.95994 * tfactors.T9 + 0.119682 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 32.5444 * tfactors.T923i + + -2.95994 + (5.0/3.0) * 0.119682 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 32.5444 * tfactors.T923i - + -2.95994 + (5.0/3.0) * 0.119682 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_p_to_n_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S35_to_n_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 + p --> n + Cl35 - // S35 + p --> n + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.51079 + -7.13865 * tfactors.T9i + 6.51754 * tfactors.T913 + + -0.295846 * tfactors.T9 + -0.00271436 * tfactors.T953; - // ths8r - ln_set_rate = 7.51079 + -7.13865 * tfactors.T9i + 6.51754 * tfactors.T913 - + -0.295846 * tfactors.T9 + -0.00271436 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.13865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.51754 * tfactors.T923i + + -0.295846 + (5.0/3.0) * -0.00271436 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.13865 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.51754 * tfactors.T923i - + -0.295846 + (5.0/3.0) * -0.00271436 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_p_to_He4_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S35_to_He4_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 + p --> He4 + P32 - // S35 + p --> He4 + P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -30.5654 + -26.7922 * tfactors.T913i + 56.581 * tfactors.T913 + + -10.5304 * tfactors.T9 + 0.9493 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -30.5654 + -26.7922 * tfactors.T913i + 56.581 * tfactors.T913 - + -10.5304 * tfactors.T9 + 0.9493 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.7922 * tfactors.T943i + (1.0/3.0) * 56.581 * tfactors.T923i + + -10.5304 + (5.0/3.0) * 0.9493 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.7922 * tfactors.T943i + (1.0/3.0) * 56.581 * tfactors.T923i - + -10.5304 + (5.0/3.0) * 0.9493 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S35_He4_to_n_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S35_to_n_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S35 + He4 --> n + Ar38 - // S35 + He4 --> n + Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 51.1473 + -65.58 * tfactors.T913i + 0.762185 * tfactors.T913 + + -0.938779 * tfactors.T9 + 0.0668864 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 51.1473 + -65.58 * tfactors.T913i + 0.762185 * tfactors.T913 - + -0.938779 * tfactors.T9 + 0.0668864 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -65.58 * tfactors.T943i + (1.0/3.0) * 0.762185 * tfactors.T923i + + -0.938779 + (5.0/3.0) * 0.0668864 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -65.58 * tfactors.T943i + (1.0/3.0) * 0.762185 * tfactors.T923i - + -0.938779 + (5.0/3.0) * 0.0668864 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S36_p_to_n_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S36_to_n_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S36 + p --> n + Cl36 - // S36 + p --> n + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.7498 + -22.3336 * tfactors.T9i + 2.26066 * tfactors.T913 + + -0.487956 * tfactors.T9 + 0.0471708 * tfactors.T953; - // ths8r - ln_set_rate = 16.7498 + -22.3336 * tfactors.T9i + 2.26066 * tfactors.T913 - + -0.487956 * tfactors.T9 + 0.0471708 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.3336 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.26066 * tfactors.T923i + + -0.487956 + (5.0/3.0) * 0.0471708 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.3336 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.26066 * tfactors.T923i - + -0.487956 + (5.0/3.0) * 0.0471708 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S36_p_to_He4_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_S36_to_He4_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S36 + p --> He4 + P33 - // S36 + p --> He4 + P33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -14.1346 + -26.7991 * tfactors.T913i + 44.6374 * tfactors.T913 + + -9.82916 * tfactors.T9 + 0.995523 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -14.1346 + -26.7991 * tfactors.T913i + 44.6374 * tfactors.T913 - + -9.82916 * tfactors.T9 + 0.995523 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -26.7991 * tfactors.T943i + (1.0/3.0) * 44.6374 * tfactors.T923i + + -9.82916 + (5.0/3.0) * 0.995523 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -26.7991 * tfactors.T943i + (1.0/3.0) * 44.6374 * tfactors.T923i - + -9.82916 + (5.0/3.0) * 0.995523 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_S36_He4_to_n_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_S36_to_n_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // S36 + He4 --> n + Ar39 - // S36 + He4 --> n + Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.1201 + -35.6081 * tfactors.T9i + -1.97008 * tfactors.T913 + + 1.52238 * tfactors.T9 + -0.159721 * tfactors.T953; - // ths8r - ln_set_rate = 14.1201 + -35.6081 * tfactors.T9i + -1.97008 * tfactors.T913 - + 1.52238 * tfactors.T9 + -0.159721 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 35.6081 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.97008 * tfactors.T923i + + 1.52238 + (5.0/3.0) * -0.159721 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 35.6081 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.97008 * tfactors.T923i - + 1.52238 + (5.0/3.0) * -0.159721 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl33_n_to_p_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl33_to_p_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl33 + n --> p + S33 - // Cl33 + n --> p + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.5772 + 1.39633 * tfactors.T913 + + -0.136457 * tfactors.T9 + 0.00585594 * tfactors.T953; - // ths8r - ln_set_rate = 18.5772 + 1.39633 * tfactors.T913 - + -0.136457 * tfactors.T9 + 0.00585594 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.39633 * tfactors.T923i + + -0.136457 + (5.0/3.0) * 0.00585594 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.39633 * tfactors.T923i - + -0.136457 + (5.0/3.0) * 0.00585594 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl33_n_to_He4_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl33_to_He4_P30_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl33 + n --> He4 + P30 - // Cl33 + n --> He4 + P30 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.9018 + 1.33535 * tfactors.T913 + + -0.149988 * tfactors.T9 + 0.0279218 * tfactors.T953; - // ths8r - ln_set_rate = 15.9018 + 1.33535 * tfactors.T913 - + -0.149988 * tfactors.T9 + 0.0279218 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.33535 * tfactors.T923i + + -0.149988 + (5.0/3.0) * 0.0279218 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.33535 * tfactors.T923i - + -0.149988 + (5.0/3.0) * 0.0279218 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl33_He4_to_p_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl33_to_p_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl33 + He4 --> p + Ar36 - // Cl33 + He4 --> p + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.1588 + -68.1442 * tfactors.T913i + 0.291238 * tfactors.T913 + + -0.791384 * tfactors.T9 + 0.0524823 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.1588 + -68.1442 * tfactors.T913i + 0.291238 * tfactors.T913 - + -0.791384 * tfactors.T9 + 0.0524823 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -68.1442 * tfactors.T943i + (1.0/3.0) * 0.291238 * tfactors.T923i + + -0.791384 + (5.0/3.0) * 0.0524823 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -68.1442 * tfactors.T943i + (1.0/3.0) * 0.291238 * tfactors.T923i - + -0.791384 + (5.0/3.0) * 0.0524823 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_n_to_p_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl34_to_p_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 + n --> p + S34 - // Cl34 + n --> p + S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.4445 + 0.847427 * tfactors.T913 + + 0.000125282 * tfactors.T9 + -0.00573985 * tfactors.T953; - // ths8r - ln_set_rate = 18.4445 + 0.847427 * tfactors.T913 - + 0.000125282 * tfactors.T9 + -0.00573985 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.847427 * tfactors.T923i + + 0.000125282 + (5.0/3.0) * -0.00573985 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.847427 * tfactors.T923i - + 0.000125282 + (5.0/3.0) * -0.00573985 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_n_to_He4_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl34_to_He4_P31_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 + n --> He4 + P31 - // Cl34 + n --> He4 + P31 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.8653 + -0.466069 * tfactors.T913 + + 0.167169 * tfactors.T9 + -0.00537463 * tfactors.T953; - // ths8r - ln_set_rate = 18.8653 + -0.466069 * tfactors.T913 - + 0.167169 * tfactors.T9 + -0.00537463 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.466069 * tfactors.T923i + + 0.167169 + (5.0/3.0) * -0.00537463 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.466069 * tfactors.T923i - + 0.167169 + (5.0/3.0) * -0.00537463 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_He4_to_n_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl34_to_n_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 + He4 --> n + K37 - // Cl34 + He4 --> n + K37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.0909 + -61.3412 * tfactors.T9i + 1.35231 * tfactors.T913 + + -0.147095 * tfactors.T9 + 0.0306549 * tfactors.T953; - // ths8r - ln_set_rate = 16.0909 + -61.3412 * tfactors.T9i + 1.35231 * tfactors.T913 - + -0.147095 * tfactors.T9 + 0.0306549 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 61.3412 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.35231 * tfactors.T923i + + -0.147095 + (5.0/3.0) * 0.0306549 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 61.3412 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.35231 * tfactors.T923i - + -0.147095 + (5.0/3.0) * 0.0306549 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl34_He4_to_p_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl34_to_p_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl34 + He4 --> p + Ar37 - // Cl34 + He4 --> p + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.795 + -68.2165 * tfactors.T913i + 0.330057 * tfactors.T913 + + -0.873334 * tfactors.T9 + 0.0592127 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.795 + -68.2165 * tfactors.T913i + 0.330057 * tfactors.T913 - + -0.873334 * tfactors.T9 + 0.0592127 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -68.2165 * tfactors.T943i + (1.0/3.0) * 0.330057 * tfactors.T923i + + -0.873334 + (5.0/3.0) * 0.0592127 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -68.2165 * tfactors.T943i + (1.0/3.0) * 0.330057 * tfactors.T923i - + -0.873334 + (5.0/3.0) * 0.0592127 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_n_to_p_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl35_to_p_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + n --> p + S35 - // Cl35 + n --> p + S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.51079 + 6.51754 * tfactors.T913 + + -0.295846 * tfactors.T9 + -0.00271436 * tfactors.T953; - // ths8r - ln_set_rate = 7.51079 + 6.51754 * tfactors.T913 - + -0.295846 * tfactors.T9 + -0.00271436 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 6.51754 * tfactors.T923i + + -0.295846 + (5.0/3.0) * -0.00271436 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 6.51754 * tfactors.T923i - + -0.295846 + (5.0/3.0) * -0.00271436 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_n_to_He4_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl35_to_He4_P32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + n --> He4 + P32 - // Cl35 + n --> He4 + P32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -32.0685 + 35.1367 * tfactors.T913 + + -3.30169 * tfactors.T9 + 0.150699 * tfactors.T953; - // ths8r - ln_set_rate = -32.0685 + 35.1367 * tfactors.T913 - + -3.30169 * tfactors.T9 + 0.150699 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 35.1367 * tfactors.T923i + + -3.30169 + (5.0/3.0) * 0.150699 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 35.1367 * tfactors.T923i - + -3.30169 + (5.0/3.0) * 0.150699 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_p_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl35_to_He4_S32_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + p --> He4 + S32 - // Cl35 + p --> He4 + S32 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // il10r + ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i + + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -1.01202 + -3.93495 * tfactors.T9i - + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i + + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.93495 * tfactors.T9i * tfactors.T9i - + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 + + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = -57.5294 + -0.532931 * tfactors.T9i + 25.5338 * tfactors.T913 - + 6.45824 * tfactors.T9 + -0.950294 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i + + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.532931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.5338 * tfactors.T923i - + 6.45824 + (5.0/3.0) * -0.950294 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10n + ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 + + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // il10n - ln_set_rate = 32.12 + -30.9147 * tfactors.T913i + -1.2345 * tfactors.T913 - + 22.5118 * tfactors.T9 + -33.0589 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i + + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.9147 * tfactors.T943i + (1.0/3.0) * -1.2345 * tfactors.T923i - + 22.5118 + (5.0/3.0) * -33.0589 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // il10r + ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 + + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; - // il10r - ln_set_rate = 2.29121 + -6.00976 * tfactors.T9i + 5.33756 * tfactors.T913 - + 1.64418 * tfactors.T9 + -0.246167 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i + + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.00976 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.33756 * tfactors.T923i - + 1.64418 + (5.0/3.0) * -0.246167 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_He4_to_n_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl35_to_n_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + He4 --> n + K38 - // Cl35 + He4 --> n + K38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.8313 + -67.9937 * tfactors.T9i + 1.15173 * tfactors.T913 + + -0.190157 * tfactors.T9 + 0.0305104 * tfactors.T953; - // ths8r - ln_set_rate = 16.8313 + -67.9937 * tfactors.T9i + 1.15173 * tfactors.T913 - + -0.190157 * tfactors.T9 + 0.0305104 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 67.9937 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.15173 * tfactors.T923i + + -0.190157 + (5.0/3.0) * 0.0305104 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.9937 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.15173 * tfactors.T923i - + -0.190157 + (5.0/3.0) * 0.0305104 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl35_He4_to_p_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl35_to_p_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl35 + He4 --> p + Ar38 - // Cl35 + He4 --> p + Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 51.1272 + -68.2848 * tfactors.T913i + 2.5993 * tfactors.T913 + + -1.59144 * tfactors.T9 + 0.137745 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 51.1272 + -68.2848 * tfactors.T913i + 2.5993 * tfactors.T913 - + -1.59144 * tfactors.T9 + 0.137745 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -68.2848 * tfactors.T943i + (1.0/3.0) * 2.5993 * tfactors.T923i + + -1.59144 + (5.0/3.0) * 0.137745 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -68.2848 * tfactors.T943i + (1.0/3.0) * 2.5993 * tfactors.T923i - + -1.59144 + (5.0/3.0) * 0.137745 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_n_to_p_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl36_to_p_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + n --> p + S36 - // Cl36 + n --> p + S36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.1404 + 2.26066 * tfactors.T913 + + -0.487956 * tfactors.T9 + 0.0471708 * tfactors.T953; - // ths8r - ln_set_rate = 15.1404 + 2.26066 * tfactors.T913 - + -0.487956 * tfactors.T9 + 0.0471708 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.26066 * tfactors.T923i + + -0.487956 + (5.0/3.0) * 0.0471708 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.26066 * tfactors.T923i - + -0.487956 + (5.0/3.0) * 0.0471708 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_n_to_He4_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cl36_to_He4_P33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + n --> He4 + P33 - // Cl36 + n --> He4 + P33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.4695 + -0.927614 * tfactors.T913 + + 1.68083 * tfactors.T9 + -0.183233 * tfactors.T953; - // ths8r - ln_set_rate = 11.4695 + -0.927614 * tfactors.T913 - + 1.68083 * tfactors.T9 + -0.183233 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.927614 * tfactors.T923i + + 1.68083 + (5.0/3.0) * -0.183233 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.927614 * tfactors.T923i - + 1.68083 + (5.0/3.0) * -0.183233 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_p_to_n_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl36_to_n_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + p --> n + Ar36 - // Cl36 + p --> n + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -24.2851 + -0.843218 * tfactors.T9i + 34.7356 * tfactors.T913 + + -5.0791 * tfactors.T9 + 0.381814 * tfactors.T953; - // ths8r - ln_set_rate = -24.2851 + -0.843218 * tfactors.T9i + 34.7356 * tfactors.T913 - + -5.0791 * tfactors.T9 + 0.381814 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.843218 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 34.7356 * tfactors.T923i + + -5.0791 + (5.0/3.0) * 0.381814 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.843218 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 34.7356 * tfactors.T923i - + -5.0791 + (5.0/3.0) * 0.381814 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_p_to_He4_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl36_to_He4_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + p --> He4 + S33 - // Cl36 + p --> He4 + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 24.6393 + -27.9044 * tfactors.T913i + 7.06482 * tfactors.T913 + + -1.77458 * tfactors.T9 + 0.192878 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 24.6393 + -27.9044 * tfactors.T913i + 7.06482 * tfactors.T913 - + -1.77458 * tfactors.T9 + 0.192878 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -27.9044 * tfactors.T943i + (1.0/3.0) * 7.06482 * tfactors.T923i + + -1.77458 + (5.0/3.0) * 0.192878 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -27.9044 * tfactors.T943i + (1.0/3.0) * 7.06482 * tfactors.T923i - + -1.77458 + (5.0/3.0) * 0.192878 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_He4_to_n_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl36_to_n_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + He4 --> n + K39 - // Cl36 + He4 --> n + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -19.8313 + -15.7966 * tfactors.T9i + 20.3122 * tfactors.T913 + + -0.37149 * tfactors.T9 + -0.0867942 * tfactors.T953; - // ths8r - ln_set_rate = -19.8313 + -15.7966 * tfactors.T9i + 20.3122 * tfactors.T913 - + -0.37149 * tfactors.T9 + -0.0867942 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.7966 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 20.3122 * tfactors.T923i + + -0.37149 + (5.0/3.0) * -0.0867942 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.7966 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 20.3122 * tfactors.T923i - + -0.37149 + (5.0/3.0) * -0.0867942 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl36_He4_to_p_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl36_to_p_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl36 + He4 --> p + Ar39 - // Cl36 + He4 --> p + Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.40378 + -13.2744 * tfactors.T9i + -29.0085 * tfactors.T913i + 15.2414 * tfactors.T913 + + -1.01027 * tfactors.T9 + -0.0165013 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 7.40378 + -13.2744 * tfactors.T9i + -29.0085 * tfactors.T913i + 15.2414 * tfactors.T913 - + -1.01027 * tfactors.T9 + -0.0165013 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.2744 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0085 * tfactors.T943i + (1.0/3.0) * 15.2414 * tfactors.T923i + + -1.01027 + (5.0/3.0) * -0.0165013 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.2744 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0085 * tfactors.T943i + (1.0/3.0) * 15.2414 * tfactors.T923i - + -1.01027 + (5.0/3.0) * -0.0165013 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_p_to_n_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl37_to_n_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 + p --> n + Ar37 - // Cl37 + p --> n + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.2094 + -18.5233 * tfactors.T9i + 1.64495 * tfactors.T913 + + -0.154677 * tfactors.T9 + 0.0083347 * tfactors.T953; - // ths8r - ln_set_rate = 16.2094 + -18.5233 * tfactors.T9i + 1.64495 * tfactors.T913 - + -0.154677 * tfactors.T9 + 0.0083347 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.5233 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.64495 * tfactors.T923i + + -0.154677 + (5.0/3.0) * 0.0083347 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.5233 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.64495 * tfactors.T923i - + -0.154677 + (5.0/3.0) * 0.0083347 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_p_to_He4_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cl37_to_He4_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 + p --> He4 + S34 - // Cl37 + p --> He4 + S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM93 + ln_set_rate = 80.6961 + -47.5185 * tfactors.T913i + -32.046 * tfactors.T913 + + 4.43077 * tfactors.T9 + -0.368628 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // SM93 - ln_set_rate = 80.6961 + -47.5185 * tfactors.T913i + -32.046 * tfactors.T913 - + 4.43077 * tfactors.T9 + -0.368628 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -47.5185 * tfactors.T943i + (1.0/3.0) * -32.046 * tfactors.T923i + + 4.43077 + (5.0/3.0) * -0.368628 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -47.5185 * tfactors.T943i + (1.0/3.0) * -32.046 * tfactors.T923i - + 4.43077 + (5.0/3.0) * -0.368628 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_He4_to_n_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl37_to_n_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 + He4 --> n + K40 - // Cl37 + He4 --> n + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.6408 + -44.9411 * tfactors.T9i + -0.86425 * tfactors.T913 + + 0.646211 * tfactors.T9 + -0.0583195 * tfactors.T953; - // ths8r - ln_set_rate = 15.6408 + -44.9411 * tfactors.T9i + -0.86425 * tfactors.T913 - + 0.646211 * tfactors.T9 + -0.0583195 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 44.9411 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.86425 * tfactors.T923i + + 0.646211 + (5.0/3.0) * -0.0583195 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 44.9411 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.86425 * tfactors.T923i - + 0.646211 + (5.0/3.0) * -0.0583195 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cl37_He4_to_p_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cl37_to_p_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cl37 + He4 --> p + Ar40 - // Cl37 + He4 --> p + Ar40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.9644 + -18.4011 * tfactors.T9i + -29.0146 * tfactors.T913i + 15.2952 * tfactors.T913 + + -3.22171 * tfactors.T9 + 0.283382 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 13.9644 + -18.4011 * tfactors.T9i + -29.0146 * tfactors.T913i + 15.2952 * tfactors.T913 - + -3.22171 * tfactors.T9 + 0.283382 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.4011 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0146 * tfactors.T943i + (1.0/3.0) * 15.2952 * tfactors.T923i + + -3.22171 + (5.0/3.0) * 0.283382 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.4011 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -29.0146 * tfactors.T943i + (1.0/3.0) * 15.2952 * tfactors.T923i - + -3.22171 + (5.0/3.0) * 0.283382 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_n_to_p_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar36_to_p_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + n --> p + Cl36 - // Ar36 + n --> p + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -22.6757 + 34.7356 * tfactors.T913 + + -5.0791 * tfactors.T9 + 0.381814 * tfactors.T953; - // ths8r - ln_set_rate = -22.6757 + 34.7356 * tfactors.T913 - + -5.0791 * tfactors.T9 + 0.381814 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 34.7356 * tfactors.T923i + + -5.0791 + (5.0/3.0) * 0.381814 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 34.7356 * tfactors.T923i - + -5.0791 + (5.0/3.0) * 0.381814 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_n_to_He4_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar36_to_He4_S33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + n --> He4 + S33 - // Ar36 + n --> He4 + S33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 3.04033 + 5.44923 * tfactors.T913 + + 1.17359 * tfactors.T9 + -0.175811 * tfactors.T953; - // ths8r - ln_set_rate = 3.04033 + 5.44923 * tfactors.T913 - + 1.17359 * tfactors.T9 + -0.175811 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 5.44923 * tfactors.T923i + + 1.17359 + (5.0/3.0) * -0.175811 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 5.44923 * tfactors.T923i - + 1.17359 + (5.0/3.0) * -0.175811 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_p_to_He4_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar36_to_He4_Cl33_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + p --> He4 + Cl33 - // Ar36 + p --> He4 + Cl33 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.8009 + -50.6426 * tfactors.T9i + -68.1442 * tfactors.T913i + 0.291238 * tfactors.T913 + + -0.791384 * tfactors.T9 + 0.0524823 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.8009 + -50.6426 * tfactors.T9i + -68.1442 * tfactors.T913i + 0.291238 * tfactors.T913 - + -0.791384 * tfactors.T9 + 0.0524823 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 50.6426 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.1442 * tfactors.T943i + (1.0/3.0) * 0.291238 * tfactors.T923i + + -0.791384 + (5.0/3.0) * 0.0524823 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.6426 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.1442 * tfactors.T943i + (1.0/3.0) * 0.291238 * tfactors.T923i - + -0.791384 + (5.0/3.0) * 0.0524823 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar36_He4_to_p_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar36_to_p_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar36 + He4 --> p + K39 - // Ar36 + He4 --> p + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.6367 + -14.9533 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.6367 + -14.9533 * tfactors.T9i + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.9533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.9533 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_n_to_p_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar37_to_p_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + n --> p + Cl37 - // Ar37 + n --> p + Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.2094 + 1.64495 * tfactors.T913 + + -0.154677 * tfactors.T9 + 0.0083347 * tfactors.T953; - // ths8r - ln_set_rate = 16.2094 + 1.64495 * tfactors.T913 - + -0.154677 * tfactors.T9 + 0.0083347 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.64495 * tfactors.T923i + + -0.154677 + (5.0/3.0) * 0.0083347 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.64495 * tfactors.T923i - + -0.154677 + (5.0/3.0) * 0.0083347 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_n_to_He4_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar37_to_He4_S34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + n --> He4 + S34 - // Ar37 + n --> He4 + S34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM93 + ln_set_rate = 18.409 + -1.69894 * tfactors.T913 + + 0.371187 * tfactors.T9 + -0.0457242 * tfactors.T953 + 1.0 * tfactors.lnT9; - // SM93 - ln_set_rate = 18.409 + -1.69894 * tfactors.T913 - + 0.371187 * tfactors.T9 + -0.0457242 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.69894 * tfactors.T923i + + 0.371187 + (5.0/3.0) * -0.0457242 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.69894 * tfactors.T923i - + 0.371187 + (5.0/3.0) * -0.0457242 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM93 + ln_set_rate = 18.409 + 0.522368 * tfactors.T913 + + -1.03944 * tfactors.T9 + 0.142735 * tfactors.T953; - // SM93 - ln_set_rate = 18.409 + 0.522368 * tfactors.T913 - + -1.03944 * tfactors.T9 + 0.142735 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.522368 * tfactors.T923i + + -1.03944 + (5.0/3.0) * 0.142735 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.522368 * tfactors.T923i - + -1.03944 + (5.0/3.0) * 0.142735 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_p_to_n_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar37_to_n_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + p --> n + K37 - // Ar37 + p --> n + K37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.3703 + -80.417 * tfactors.T9i + 0.399131 * tfactors.T913 + + 0.0819317 * tfactors.T9 + -0.0133489 * tfactors.T953; - // ths8r - ln_set_rate = 19.3703 + -80.417 * tfactors.T9i + 0.399131 * tfactors.T913 - + 0.0819317 * tfactors.T9 + -0.0133489 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 80.417 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.399131 * tfactors.T923i + + 0.0819317 + (5.0/3.0) * -0.0133489 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 80.417 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.399131 * tfactors.T923i - + 0.0819317 + (5.0/3.0) * -0.0133489 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_p_to_He4_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar37_to_He4_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + p --> He4 + Cl34 - // Ar37 + p --> He4 + Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.6682 + -19.0758 * tfactors.T9i + -68.2165 * tfactors.T913i + 0.330057 * tfactors.T913 + + -0.873334 * tfactors.T9 + 0.0592127 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.6682 + -19.0758 * tfactors.T9i + -68.2165 * tfactors.T913i + 0.330057 * tfactors.T913 - + -0.873334 * tfactors.T9 + 0.0592127 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.0758 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.2165 * tfactors.T943i + (1.0/3.0) * 0.330057 * tfactors.T923i + + -0.873334 + (5.0/3.0) * 0.0592127 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.0758 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.2165 * tfactors.T943i + (1.0/3.0) * 0.330057 * tfactors.T923i - + -0.873334 + (5.0/3.0) * 0.0592127 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_He4_to_n_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar37_to_n_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + He4 --> n + Ca40 - // Ar37 + He4 --> n + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -12.0914 + -20.2822 * tfactors.T9i + 13.8882 * tfactors.T913 + + 0.260223 * tfactors.T9 + -0.108063 * tfactors.T953; - // ths8r - ln_set_rate = -12.0914 + -20.2822 * tfactors.T9i + 13.8882 * tfactors.T913 - + 0.260223 * tfactors.T9 + -0.108063 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 20.2822 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.8882 * tfactors.T923i + + 0.260223 + (5.0/3.0) * -0.108063 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 20.2822 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.8882 * tfactors.T923i - + 0.260223 + (5.0/3.0) * -0.108063 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar37_He4_to_p_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar37_to_p_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar37 + He4 --> p + K40 - // Ar37 + He4 --> p + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 23.3208 + -26.4178 * tfactors.T9i + -30.0795 * tfactors.T913i + 8.28189 * tfactors.T913 + + -2.15178 * tfactors.T9 + 0.242064 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 23.3208 + -26.4178 * tfactors.T9i + -30.0795 * tfactors.T913i + 8.28189 * tfactors.T913 - + -2.15178 * tfactors.T9 + 0.242064 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.4178 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 8.28189 * tfactors.T923i + + -2.15178 + (5.0/3.0) * 0.242064 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.4178 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 8.28189 * tfactors.T923i - + -2.15178 + (5.0/3.0) * 0.242064 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_n_to_He4_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar38_to_He4_S35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 + n --> He4 + S35 - // Ar38 + n --> He4 + S35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 53.7965 + -2.57381 * tfactors.T9i + -65.58 * tfactors.T913i + 0.762185 * tfactors.T913 + + -0.938779 * tfactors.T9 + 0.0668864 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 53.7965 + -2.57381 * tfactors.T9i + -65.58 * tfactors.T913i + 0.762185 * tfactors.T913 - + -0.938779 * tfactors.T9 + 0.0668864 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.57381 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.58 * tfactors.T943i + (1.0/3.0) * 0.762185 * tfactors.T923i + + -0.938779 + (5.0/3.0) * 0.0668864 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.57381 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -65.58 * tfactors.T943i + (1.0/3.0) * 0.762185 * tfactors.T923i - + -0.938779 + (5.0/3.0) * 0.0668864 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_p_to_n_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar38_to_n_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 + p --> n + K38 - // Ar38 + p --> n + K38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.5484 + -77.7062 * tfactors.T9i + -0.5015 * tfactors.T913 + + 0.324921 * tfactors.T9 + -0.0393691 * tfactors.T953; - // ths8r - ln_set_rate = 21.5484 + -77.7062 * tfactors.T9i + -0.5015 * tfactors.T913 - + 0.324921 * tfactors.T9 + -0.0393691 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.7062 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.5015 * tfactors.T923i + + 0.324921 + (5.0/3.0) * -0.0393691 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.7062 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.5015 * tfactors.T923i - + 0.324921 + (5.0/3.0) * -0.0393691 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_p_to_He4_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar38_to_He4_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 + p --> He4 + Cl35 - // Ar38 + p --> He4 + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 53.7764 + -9.71246 * tfactors.T9i + -68.2848 * tfactors.T913i + 2.5993 * tfactors.T913 + + -1.59144 * tfactors.T9 + 0.137745 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 53.7764 + -9.71246 * tfactors.T9i + -68.2848 * tfactors.T913i + 2.5993 * tfactors.T913 - + -1.59144 * tfactors.T9 + 0.137745 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.71246 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.2848 * tfactors.T943i + (1.0/3.0) * 2.5993 * tfactors.T923i + + -1.59144 + (5.0/3.0) * 0.137745 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.71246 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -68.2848 * tfactors.T943i + (1.0/3.0) * 2.5993 * tfactors.T923i - + -1.59144 + (5.0/3.0) * 0.137745 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_He4_to_n_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar38_to_n_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 + He4 --> n + Ca41 - // Ar38 + He4 --> n + Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ta18 + ln_set_rate = 17.7791 + -60.6168 * tfactors.T9i + -0.0142 * tfactors.T913i + -0.10052 * tfactors.T913 + + 0.27737 * tfactors.T9 + -0.00483 * tfactors.T953 + -0.2165 * tfactors.lnT9; - // ta18 - ln_set_rate = 17.7791 + -60.6168 * tfactors.T9i + -0.0142 * tfactors.T913i + -0.10052 * tfactors.T913 - + 0.27737 * tfactors.T9 + -0.00483 * tfactors.T953 + -0.2165 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 60.6168 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.0142 * tfactors.T943i + (1.0/3.0) * -0.10052 * tfactors.T923i + + 0.27737 + (5.0/3.0) * -0.00483 * tfactors.T923 + -0.2165 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 60.6168 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.0142 * tfactors.T943i + (1.0/3.0) * -0.10052 * tfactors.T923i - + 0.27737 + (5.0/3.0) * -0.00483 * tfactors.T923 + -0.2165 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar38_He4_to_p_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar38_to_p_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar38 + He4 --> p + K41 - // Ar38 + He4 --> p + K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // tb18 + ln_set_rate = 64.5247 + -47.3255 * tfactors.T9i + 9.28681 * tfactors.T913i + -73.161 * tfactors.T913 + + 4.26053 * tfactors.T9 + -0.235892 * tfactors.T953 + 31.8226 * tfactors.lnT9; - // tb18 - ln_set_rate = 64.5247 + -47.3255 * tfactors.T9i + 9.28681 * tfactors.T913i + -73.161 * tfactors.T913 - + 4.26053 * tfactors.T9 + -0.235892 * tfactors.T953 + 31.8226 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 47.3255 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.28681 * tfactors.T943i + (1.0/3.0) * -73.161 * tfactors.T923i + + 4.26053 + (5.0/3.0) * -0.235892 * tfactors.T923 + 31.8226 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 47.3255 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.28681 * tfactors.T943i + (1.0/3.0) * -73.161 * tfactors.T923i - + 4.26053 + (5.0/3.0) * -0.235892 * tfactors.T923 + 31.8226 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_n_to_He4_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ar39_to_He4_S36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 + n --> He4 + S36 - // Ar39 + n --> He4 + S36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.3069 + -1.97008 * tfactors.T913 + + 1.52238 * tfactors.T9 + -0.159721 * tfactors.T953; - // ths8r - ln_set_rate = 13.3069 + -1.97008 * tfactors.T913 - + 1.52238 * tfactors.T9 + -0.159721 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.97008 * tfactors.T923i + + 1.52238 + (5.0/3.0) * -0.159721 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.97008 * tfactors.T923i - + 1.52238 + (5.0/3.0) * -0.159721 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_p_to_n_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar39_to_n_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 + p --> n + K39 - // Ar39 + p --> n + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -15.9025 + -2.52219 * tfactors.T9i + 26.5209 * tfactors.T913 + + -3.63684 * tfactors.T9 + 0.276163 * tfactors.T953; - // ths8r - ln_set_rate = -15.9025 + -2.52219 * tfactors.T9i + 26.5209 * tfactors.T913 - + -3.63684 * tfactors.T9 + 0.276163 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.52219 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 26.5209 * tfactors.T923i + + -3.63684 + (5.0/3.0) * 0.276163 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.52219 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 26.5209 * tfactors.T923i - + -3.63684 + (5.0/3.0) * 0.276163 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_p_to_He4_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar39_to_He4_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 + p --> He4 + Cl36 - // Ar39 + p --> He4 + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.20001 + -29.0085 * tfactors.T913i + 15.2414 * tfactors.T913 + + -1.01027 * tfactors.T9 + -0.0165013 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 8.20001 + -29.0085 * tfactors.T913i + 15.2414 * tfactors.T913 - + -1.01027 * tfactors.T9 + -0.0165013 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -29.0085 * tfactors.T943i + (1.0/3.0) * 15.2414 * tfactors.T923i + + -1.01027 + (5.0/3.0) * -0.0165013 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -29.0085 * tfactors.T943i + (1.0/3.0) * 15.2414 * tfactors.T923i - + -1.01027 + (5.0/3.0) * -0.0165013 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar39_He4_to_n_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar39_to_n_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar39 + He4 --> n + Ca42 - // Ar39 + He4 --> n + Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -91.8716 + -3.96108 * tfactors.T9i + 88.8565 * tfactors.T913 + + -12.9534 * tfactors.T9 + 0.93832 * tfactors.T953; - // ths8r - ln_set_rate = -91.8716 + -3.96108 * tfactors.T9i + 88.8565 * tfactors.T913 - + -12.9534 * tfactors.T9 + 0.93832 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.96108 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 88.8565 * tfactors.T923i + + -12.9534 + (5.0/3.0) * 0.93832 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.96108 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 88.8565 * tfactors.T923i - + -12.9534 + (5.0/3.0) * 0.93832 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar40_p_to_n_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar40_to_n_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar40 + p --> n + K40 - // Ar40 + p --> n + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.3302 + -26.54 * tfactors.T9i + -0.499903 * tfactors.T913 + + 0.849663 * tfactors.T9 + -0.0834774 * tfactors.T953; - // ths8r - ln_set_rate = 16.3302 + -26.54 * tfactors.T9i + -0.499903 * tfactors.T913 - + 0.849663 * tfactors.T9 + -0.0834774 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.54 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.499903 * tfactors.T923i + + 0.849663 + (5.0/3.0) * -0.0834774 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.54 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.499903 * tfactors.T923i - + 0.849663 + (5.0/3.0) * -0.0834774 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar40_p_to_He4_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ar40_to_He4_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar40 + p --> He4 + Cl37 - // Ar40 + p --> He4 + Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.62 + -29.0146 * tfactors.T913i + 15.2952 * tfactors.T913 + + -3.22171 * tfactors.T9 + 0.283382 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 16.62 + -29.0146 * tfactors.T913i + 15.2952 * tfactors.T913 - + -3.22171 * tfactors.T9 + 0.283382 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -29.0146 * tfactors.T943i + (1.0/3.0) * 15.2952 * tfactors.T923i + + -3.22171 + (5.0/3.0) * 0.283382 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -29.0146 * tfactors.T943i + (1.0/3.0) * 15.2952 * tfactors.T923i - + -3.22171 + (5.0/3.0) * 0.283382 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ar40_He4_to_n_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ar40_to_n_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ar40 + He4 --> n + Ca43 - // Ar40 + He4 --> n + Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 1.12753 + -26.4311 * tfactors.T9i + 4.3289 * tfactors.T913 + + 1.46375 * tfactors.T9 + -0.180625 * tfactors.T953; - // ths8r - ln_set_rate = 1.12753 + -26.4311 * tfactors.T9i + 4.3289 * tfactors.T913 - + 1.46375 * tfactors.T9 + -0.180625 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.4311 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.3289 * tfactors.T923i + + 1.46375 + (5.0/3.0) * -0.180625 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.4311 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.3289 * tfactors.T923i - + 1.46375 + (5.0/3.0) * -0.180625 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K37_n_to_p_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K37_to_p_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K37 + n --> p + Ar37 - // K37 + n --> p + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.3703 + 0.399131 * tfactors.T913 + + 0.0819317 * tfactors.T9 + -0.0133489 * tfactors.T953; - // ths8r - ln_set_rate = 19.3703 + 0.399131 * tfactors.T913 - + 0.0819317 * tfactors.T9 + -0.0133489 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.399131 * tfactors.T923i + + 0.0819317 + (5.0/3.0) * -0.0133489 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.399131 * tfactors.T923i - + 0.0819317 + (5.0/3.0) * -0.0133489 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K37_n_to_He4_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K37_to_He4_Cl34_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K37 + n --> He4 + Cl34 - // K37 + n --> He4 + Cl34 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.9641 + 1.35231 * tfactors.T913 + + -0.147095 * tfactors.T9 + 0.0306549 * tfactors.T953; - // ths8r - ln_set_rate = 15.9641 + 1.35231 * tfactors.T913 - + -0.147095 * tfactors.T9 + 0.0306549 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.35231 * tfactors.T923i + + -0.147095 + (5.0/3.0) * 0.0306549 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.35231 * tfactors.T923i - + -0.147095 + (5.0/3.0) * 0.0306549 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K37_He4_to_p_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K37_to_p_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K37 + He4 --> p + Ca40 - // K37 + He4 --> p + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.2966 + -73.6776 * tfactors.T913i + 0.493294 * tfactors.T913 + + -0.902307 * tfactors.T9 + 0.0641391 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.2966 + -73.6776 * tfactors.T913i + 0.493294 * tfactors.T913 - + -0.902307 * tfactors.T9 + 0.0641391 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -73.6776 * tfactors.T943i + (1.0/3.0) * 0.493294 * tfactors.T923i + + -0.902307 + (5.0/3.0) * 0.0641391 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -73.6776 * tfactors.T943i + (1.0/3.0) * 0.493294 * tfactors.T923i - + -0.902307 + (5.0/3.0) * 0.0641391 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K38_n_to_p_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K38_to_p_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K38 + n --> p + Ar38 - // K38 + n --> p + Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.6025 + -0.5015 * tfactors.T913 + + 0.324921 * tfactors.T9 + -0.0393691 * tfactors.T953; - // ths8r - ln_set_rate = 19.6025 + -0.5015 * tfactors.T913 - + 0.324921 * tfactors.T9 + -0.0393691 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.5015 * tfactors.T923i + + 0.324921 + (5.0/3.0) * -0.0393691 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.5015 * tfactors.T923i - + 0.324921 + (5.0/3.0) * -0.0393691 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K38_n_to_He4_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K38_to_He4_Cl35_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K38 + n --> He4 + Cl35 - // K38 + n --> He4 + Cl35 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.5346 + 1.15173 * tfactors.T913 + + -0.190157 * tfactors.T9 + 0.0305104 * tfactors.T953; - // ths8r - ln_set_rate = 17.5346 + 1.15173 * tfactors.T913 - + -0.190157 * tfactors.T9 + 0.0305104 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.15173 * tfactors.T923i + + -0.190157 + (5.0/3.0) * 0.0305104 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.15173 * tfactors.T923i - + -0.190157 + (5.0/3.0) * 0.0305104 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K38_He4_to_p_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K38_to_p_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K38 + He4 --> p + Ca41 - // K38 + He4 --> p + Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.4204 + -73.7407 * tfactors.T913i + 0.600725 * tfactors.T913 + + -0.957475 * tfactors.T9 + 0.0689286 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.4204 + -73.7407 * tfactors.T913i + 0.600725 * tfactors.T913 - + -0.957475 * tfactors.T9 + 0.0689286 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -73.7407 * tfactors.T943i + (1.0/3.0) * 0.600725 * tfactors.T923i + + -0.957475 + (5.0/3.0) * 0.0689286 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -73.7407 * tfactors.T943i + (1.0/3.0) * 0.600725 * tfactors.T923i - + -0.957475 + (5.0/3.0) * 0.0689286 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_n_to_p_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K39_to_p_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + n --> p + Ar39 - // K39 + n --> p + Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -15.2094 + 26.5209 * tfactors.T913 + + -3.63684 * tfactors.T9 + 0.276163 * tfactors.T953; - // ths8r - ln_set_rate = -15.2094 + 26.5209 * tfactors.T913 - + -3.63684 * tfactors.T9 + 0.276163 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 26.5209 * tfactors.T923i + + -3.63684 + (5.0/3.0) * 0.276163 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 26.5209 * tfactors.T923i - + -3.63684 + (5.0/3.0) * 0.276163 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_n_to_He4_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K39_to_He4_Cl36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + n --> He4 + Cl36 - // K39 + n --> He4 + Cl36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -18.3419 + 20.3122 * tfactors.T913 + + -0.37149 * tfactors.T9 + -0.0867942 * tfactors.T953; - // ths8r - ln_set_rate = -18.3419 + 20.3122 * tfactors.T913 - + -0.37149 * tfactors.T9 + -0.0867942 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 20.3122 * tfactors.T923i + + -0.37149 + (5.0/3.0) * -0.0867942 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 20.3122 * tfactors.T923i - + -0.37149 + (5.0/3.0) * -0.0867942 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_p_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K39_to_He4_Ar36_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + p --> He4 + Ar36 - // K39 + p --> He4 + Ar36 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 + + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.5166 + -30.0732 * tfactors.T913i + 7.03263 * tfactors.T913 - + -1.10085 * tfactors.T9 + 0.133768 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i + + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0732 * tfactors.T943i + (1.0/3.0) * 7.03263 * tfactors.T923i - + -1.10085 + (5.0/3.0) * 0.133768 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K39_He4_to_p_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K39_to_p_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K39 + He4 --> p + Ca42 - // K39 + He4 --> p + Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -80.8734 + -1.43889 * tfactors.T9i + -31.1381 * tfactors.T913i + 117.868 * tfactors.T913 + + -27.0455 * tfactors.T9 + 2.75661 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -80.8734 + -1.43889 * tfactors.T9i + -31.1381 * tfactors.T913i + 117.868 * tfactors.T913 - + -27.0455 * tfactors.T9 + 2.75661 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.43889 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1381 * tfactors.T943i + (1.0/3.0) * 117.868 * tfactors.T923i + + -27.0455 + (5.0/3.0) * 2.75661 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.43889 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.1381 * tfactors.T943i + (1.0/3.0) * 117.868 * tfactors.T923i - + -27.0455 + (5.0/3.0) * 2.75661 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_n_to_p_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K40_to_p_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + n --> p + Ar40 - // K40 + n --> p + Ar40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.133 + -0.499903 * tfactors.T913 + + 0.849663 * tfactors.T9 + -0.0834774 * tfactors.T953; - // ths8r - ln_set_rate = 14.133 + -0.499903 * tfactors.T913 - + 0.849663 * tfactors.T9 + -0.0834774 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.499903 * tfactors.T923i + + 0.849663 + (5.0/3.0) * -0.0834774 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.499903 * tfactors.T923i - + 0.849663 + (5.0/3.0) * -0.0834774 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_n_to_He4_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_K40_to_He4_Cl37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + n --> He4 + Cl37 - // K40 + n --> He4 + Cl37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.0992 + -0.86425 * tfactors.T913 + + 0.646211 * tfactors.T9 + -0.0583195 * tfactors.T953; - // ths8r - ln_set_rate = 16.0992 + -0.86425 * tfactors.T913 - + 0.646211 * tfactors.T9 + -0.0583195 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.86425 * tfactors.T923i + + 0.646211 + (5.0/3.0) * -0.0583195 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.86425 * tfactors.T923i - + 0.646211 + (5.0/3.0) * -0.0583195 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_p_to_n_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K40_to_n_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + p --> n + Ca40 - // K40 + p --> n + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 32.1312 + -30.0795 * tfactors.T913i + 2.76095 * tfactors.T913 + + -1.51745 * tfactors.T9 + 0.191236 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 32.1312 + -30.0795 * tfactors.T913i + 2.76095 * tfactors.T913 - + -1.51745 * tfactors.T9 + 0.191236 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 2.76095 * tfactors.T923i + + -1.51745 + (5.0/3.0) * 0.191236 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 2.76095 * tfactors.T923i - + -1.51745 + (5.0/3.0) * 0.191236 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_p_to_He4_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K40_to_He4_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + p --> He4 + Ar37 - // K40 + p --> He4 + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 23.7792 + -30.0795 * tfactors.T913i + 8.28189 * tfactors.T913 + + -2.15178 * tfactors.T9 + 0.242064 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 23.7792 + -30.0795 * tfactors.T913i + 8.28189 * tfactors.T913 - + -2.15178 * tfactors.T9 + 0.242064 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 8.28189 * tfactors.T923i + + -2.15178 + (5.0/3.0) * 0.242064 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 8.28189 * tfactors.T923i - + -2.15178 + (5.0/3.0) * 0.242064 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_He4_to_n_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K40_to_n_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + He4 --> n + Sc43 - // K40 + He4 --> n + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.9468 + -34.7402 * tfactors.T9i + -0.653091 * tfactors.T913 + + 1.79632 * tfactors.T9 + -0.19216 * tfactors.T953; - // ths8r - ln_set_rate = 8.9468 + -34.7402 * tfactors.T9i + -0.653091 * tfactors.T913 - + 1.79632 * tfactors.T9 + -0.19216 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.7402 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.653091 * tfactors.T923i + + 1.79632 + (5.0/3.0) * -0.19216 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.7402 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.653091 * tfactors.T923i - + 1.79632 + (5.0/3.0) * -0.19216 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K40_He4_to_p_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K40_to_p_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K40 + He4 --> p + Ca43 - // K40 + He4 --> p + Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 43.3098 + -73.858 * tfactors.T913i + 16.1645 * tfactors.T913 + + -5.93343 * tfactors.T9 + 0.650563 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 43.3098 + -73.858 * tfactors.T913i + 16.1645 * tfactors.T913 - + -5.93343 * tfactors.T9 + 0.650563 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -73.858 * tfactors.T943i + (1.0/3.0) * 16.1645 * tfactors.T923i + + -5.93343 + (5.0/3.0) * 0.650563 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -73.858 * tfactors.T943i + (1.0/3.0) * 16.1645 * tfactors.T923i - + -5.93343 + (5.0/3.0) * 0.650563 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_p_to_n_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K41_to_n_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 + p --> n + Ca41 - // K41 + p --> n + Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM86 + ln_set_rate = 8.69806 + -13.9718 * tfactors.T9i + 6.52588 * tfactors.T913 + + -1.55272 * tfactors.T9 + 0.150334 * tfactors.T953 + 1.0 * tfactors.lnT9; - // SM86 - ln_set_rate = 8.69806 + -13.9718 * tfactors.T9i + 6.52588 * tfactors.T913 - + -1.55272 * tfactors.T9 + 0.150334 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.9718 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.52588 * tfactors.T923i + + -1.55272 + (5.0/3.0) * 0.150334 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.9718 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.52588 * tfactors.T923i - + -1.55272 + (5.0/3.0) * 0.150334 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM86 + ln_set_rate = 15.9784 + -13.9718 * tfactors.T9i + -2.82146 * tfactors.T913 + + 1.71734 * tfactors.T9 + -0.187775 * tfactors.T953; - // SM86 - ln_set_rate = 15.9784 + -13.9718 * tfactors.T9i + -2.82146 * tfactors.T913 - + 1.71734 * tfactors.T9 + -0.187775 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.9718 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.82146 * tfactors.T923i + + 1.71734 + (5.0/3.0) * -0.187775 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.9718 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.82146 * tfactors.T923i - + 1.71734 + (5.0/3.0) * -0.187775 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_p_to_He4_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_K41_to_He4_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 + p --> He4 + Ar38 - // K41 + p --> He4 + Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // tb18 + ln_set_rate = 64.4107 + -0.681143 * tfactors.T9i + 9.28681 * tfactors.T913i + -73.161 * tfactors.T913 + + 4.26053 * tfactors.T9 + -0.235892 * tfactors.T953 + 31.8226 * tfactors.lnT9; - // tb18 - ln_set_rate = 64.4107 + -0.681143 * tfactors.T9i + 9.28681 * tfactors.T913i + -73.161 * tfactors.T913 - + 4.26053 * tfactors.T9 + -0.235892 * tfactors.T953 + 31.8226 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.681143 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.28681 * tfactors.T943i + (1.0/3.0) * -73.161 * tfactors.T923i + + 4.26053 + (5.0/3.0) * -0.235892 * tfactors.T923 + 31.8226 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.681143 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 9.28681 * tfactors.T943i + (1.0/3.0) * -73.161 * tfactors.T923i - + 4.26053 + (5.0/3.0) * -0.235892 * tfactors.T923 + 31.8226 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_He4_to_n_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K41_to_n_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 + He4 --> n + Sc44 - // K41 + He4 --> n + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM91 + ln_set_rate = 12.8237 + -39.3393 * tfactors.T9i + -7.79828 * tfactors.T913 + + 4.55188 * tfactors.T9 + -0.667478 * tfactors.T953 + 1.0 * tfactors.lnT9; - // SM91 - ln_set_rate = 12.8237 + -39.3393 * tfactors.T9i + -7.79828 * tfactors.T913 - + 4.55188 * tfactors.T9 + -0.667478 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.3393 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -7.79828 * tfactors.T923i + + 4.55188 + (5.0/3.0) * -0.667478 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.3393 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -7.79828 * tfactors.T923i - + 4.55188 + (5.0/3.0) * -0.667478 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM91 + ln_set_rate = 12.4167 + -39.3393 * tfactors.T9i + -2.89121 * tfactors.T913 + + 2.26347 * tfactors.T9 + -0.251579 * tfactors.T953; - // SM91 - ln_set_rate = 12.4167 + -39.3393 * tfactors.T9i + -2.89121 * tfactors.T913 - + 2.26347 * tfactors.T9 + -0.251579 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.3393 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.89121 * tfactors.T923i + + 2.26347 + (5.0/3.0) * -0.251579 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.3393 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.89121 * tfactors.T923i - + 2.26347 + (5.0/3.0) * -0.251579 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_K41_He4_to_p_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_K41_to_p_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // K41 + He4 --> p + Ca44 - // K41 + He4 --> p + Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM91n + ln_set_rate = 55.5 + -73.9 * tfactors.T913i + -0.410794 * tfactors.T913 + + 0.365336 * tfactors.T9 + -0.607187 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // SM91n - ln_set_rate = 55.5 + -73.9 * tfactors.T913i + -0.410794 * tfactors.T913 - + 0.365336 * tfactors.T9 + -0.607187 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -73.9 * tfactors.T943i + (1.0/3.0) * -0.410794 * tfactors.T923i + + 0.365336 + (5.0/3.0) * -0.607187 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -73.9 * tfactors.T943i + (1.0/3.0) * -0.410794 * tfactors.T923i - + 0.365336 + (5.0/3.0) * -0.607187 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM91n + ln_set_rate = 48.7841 + -73.9 * tfactors.T913i + 5.43181 * tfactors.T913 + + -2.12763 * tfactors.T9 + 0.134461 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // SM91n - ln_set_rate = 48.7841 + -73.9 * tfactors.T913i + 5.43181 * tfactors.T913 - + -2.12763 * tfactors.T9 + 0.134461 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -73.9 * tfactors.T943i + (1.0/3.0) * 5.43181 * tfactors.T923i + + -2.12763 + (5.0/3.0) * 0.134461 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -73.9 * tfactors.T943i + (1.0/3.0) * 5.43181 * tfactors.T923i - + -2.12763 + (5.0/3.0) * 0.134461 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_n_to_p_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca40_to_p_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + n --> p + K40 - // Ca40 + n --> p + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.3284 + -6.13558 * tfactors.T9i + -30.0795 * tfactors.T913i + 2.76095 * tfactors.T913 + + -1.51745 * tfactors.T9 + 0.191236 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.3284 + -6.13558 * tfactors.T9i + -30.0795 * tfactors.T913i + 2.76095 * tfactors.T913 - + -1.51745 * tfactors.T9 + 0.191236 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.13558 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 2.76095 * tfactors.T923i + + -1.51745 + (5.0/3.0) * 0.191236 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.13558 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -30.0795 * tfactors.T943i + (1.0/3.0) * 2.76095 * tfactors.T923i - + -1.51745 + (5.0/3.0) * 0.191236 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_n_to_He4_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca40_to_He4_Ar37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + n --> He4 + Ar37 - // Ca40 + n --> He4 + Ar37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -9.43576 + 13.8882 * tfactors.T913 + + 0.260223 * tfactors.T9 + -0.108063 * tfactors.T953; - // ths8r - ln_set_rate = -9.43576 + 13.8882 * tfactors.T913 - + 0.260223 * tfactors.T9 + -0.108063 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 13.8882 * tfactors.T923i + + 0.260223 + (5.0/3.0) * -0.108063 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 13.8882 * tfactors.T923i - + 0.260223 + (5.0/3.0) * -0.108063 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_p_to_He4_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca40_to_He4_K37_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + p --> He4 + K37 - // Ca40 + p --> He4 + K37 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.9522 + -60.1348 * tfactors.T9i + -73.6776 * tfactors.T913i + 0.493294 * tfactors.T913 + + -0.902307 * tfactors.T9 + 0.0641391 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.9522 + -60.1348 * tfactors.T9i + -73.6776 * tfactors.T913i + 0.493294 * tfactors.T913 - + -0.902307 * tfactors.T9 + 0.0641391 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 60.1348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.6776 * tfactors.T943i + (1.0/3.0) * 0.493294 * tfactors.T923i + + -0.902307 + (5.0/3.0) * 0.0641391 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 60.1348 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.6776 * tfactors.T943i + (1.0/3.0) * 0.493294 * tfactors.T923i - + -0.902307 + (5.0/3.0) * 0.0641391 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca40_He4_to_p_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca40_to_p_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca40 + He4 --> p + Sc43 - // Ca40 + He4 --> p + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 35.6575 + -40.8757 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 35.6575 + -40.8757 * tfactors.T9i + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 40.8757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.8757 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_n_to_p_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca41_to_p_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 + n --> p + K41 - // Ca41 + n --> p + K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM86 + ln_set_rate = 8.00491 + 6.52588 * tfactors.T913 + + -1.55272 * tfactors.T9 + 0.150334 * tfactors.T953 + 1.0 * tfactors.lnT9; - // SM86 - ln_set_rate = 8.00491 + 6.52588 * tfactors.T913 - + -1.55272 * tfactors.T9 + 0.150334 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 6.52588 * tfactors.T923i + + -1.55272 + (5.0/3.0) * 0.150334 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 6.52588 * tfactors.T923i - + -1.55272 + (5.0/3.0) * 0.150334 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM86 + ln_set_rate = 15.2853 + -2.82146 * tfactors.T913 + + 1.71734 * tfactors.T9 + -0.187775 * tfactors.T953; - // SM86 - ln_set_rate = 15.2853 + -2.82146 * tfactors.T913 - + 1.71734 * tfactors.T9 + -0.187775 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.82146 * tfactors.T923i + + 1.71734 + (5.0/3.0) * -0.187775 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.82146 * tfactors.T923i - + 1.71734 + (5.0/3.0) * -0.187775 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_n_to_He4_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca41_to_He4_Ar38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 + n --> He4 + Ar38 - // Ca41 + n --> He4 + Ar38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ta18 + ln_set_rate = 16.972 + -1.36064e-05 * tfactors.T9i + -0.0142 * tfactors.T913i + -0.10052 * tfactors.T913 + + 0.27737 * tfactors.T9 + -0.00483 * tfactors.T953 + -0.2165 * tfactors.lnT9; - // ta18 - ln_set_rate = 16.972 + -1.36064e-05 * tfactors.T9i + -0.0142 * tfactors.T913i + -0.10052 * tfactors.T913 - + 0.27737 * tfactors.T9 + -0.00483 * tfactors.T953 + -0.2165 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.36064e-05 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.0142 * tfactors.T943i + (1.0/3.0) * -0.10052 * tfactors.T923i + + 0.27737 + (5.0/3.0) * -0.00483 * tfactors.T923 + -0.2165 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.36064e-05 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.0142 * tfactors.T943i + (1.0/3.0) * -0.10052 * tfactors.T923i - + 0.27737 + (5.0/3.0) * -0.00483 * tfactors.T923 + -0.2165 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_p_to_He4_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca41_to_He4_K38_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 + p --> He4 + K38 - // Ca41 + p --> He4 + K38 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 55.5592 + -17.0935 * tfactors.T9i + -73.7407 * tfactors.T913i + 0.600725 * tfactors.T913 + + -0.957475 * tfactors.T9 + 0.0689286 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 55.5592 + -17.0935 * tfactors.T9i + -73.7407 * tfactors.T913i + 0.600725 * tfactors.T913 - + -0.957475 * tfactors.T9 + 0.0689286 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 17.0935 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.7407 * tfactors.T943i + (1.0/3.0) * 0.600725 * tfactors.T923i + + -0.957475 + (5.0/3.0) * 0.0689286 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 17.0935 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.7407 * tfactors.T943i + (1.0/3.0) * 0.600725 * tfactors.T923i - + -0.957475 + (5.0/3.0) * 0.0689286 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_He4_to_n_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca41_to_n_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 + He4 --> n + Ti44 - // Ca41 + He4 --> n + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 4.15144 + -37.5487 * tfactors.T9i + 2.68094 * tfactors.T913 + + 1.34285 * tfactors.T9 + -0.18134 * tfactors.T953; - // ths8r - ln_set_rate = 4.15144 + -37.5487 * tfactors.T9i + 2.68094 * tfactors.T913 - + 1.34285 * tfactors.T9 + -0.18134 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 37.5487 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.68094 * tfactors.T923i + + 1.34285 + (5.0/3.0) * -0.18134 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 37.5487 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.68094 * tfactors.T923i - + 1.34285 + (5.0/3.0) * -0.18134 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca41_He4_to_p_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca41_to_p_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca41 + He4 --> p + Sc44 - // Ca41 + He4 --> p + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.3516 + -25.3642 * tfactors.T9i + -32.179 * tfactors.T913i + 13.8907 * tfactors.T913 + + -3.30408 * tfactors.T9 + 0.332186 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 17.3516 + -25.3642 * tfactors.T9i + -32.179 * tfactors.T913i + 13.8907 * tfactors.T913 - + -3.30408 * tfactors.T9 + 0.332186 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.3642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.179 * tfactors.T943i + (1.0/3.0) * 13.8907 * tfactors.T923i + + -3.30408 + (5.0/3.0) * 0.332186 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.3642 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.179 * tfactors.T943i + (1.0/3.0) * 13.8907 * tfactors.T923i - + -3.30408 + (5.0/3.0) * 0.332186 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_n_to_He4_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca42_to_He4_Ar39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 + n --> He4 + Ar39 - // Ca42 + n --> He4 + Ar39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -88.517 + 88.8565 * tfactors.T913 + + -12.9534 * tfactors.T9 + 0.93832 * tfactors.T953; - // ths8r - ln_set_rate = -88.517 + 88.8565 * tfactors.T913 - + -12.9534 * tfactors.T9 + 0.93832 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 88.8565 * tfactors.T923i + + -12.9534 + (5.0/3.0) * 0.93832 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 88.8565 * tfactors.T923i - + -12.9534 + (5.0/3.0) * 0.93832 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_p_to_He4_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca42_to_He4_K39_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 + p --> He4 + K39 - // Ca42 + p --> He4 + K39 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -78.212 + -31.1381 * tfactors.T913i + 117.868 * tfactors.T913 + + -27.0455 * tfactors.T9 + 2.75661 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -78.212 + -31.1381 * tfactors.T913i + 117.868 * tfactors.T913 - + -27.0455 * tfactors.T9 + 2.75661 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.1381 * tfactors.T943i + (1.0/3.0) * 117.868 * tfactors.T923i + + -27.0455 + (5.0/3.0) * 2.75661 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.1381 * tfactors.T943i + (1.0/3.0) * 117.868 * tfactors.T923i - + -27.0455 + (5.0/3.0) * 2.75661 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_He4_to_n_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca42_to_n_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 + He4 --> n + Ti45 - // Ca42 + He4 --> n + Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.2379 + -60.2011 * tfactors.T9i + -1.31041 * tfactors.T913 + + 0.516347 * tfactors.T9 + -0.0189198 * tfactors.T953; - // ths8r - ln_set_rate = 17.2379 + -60.2011 * tfactors.T9i + -1.31041 * tfactors.T913 - + 0.516347 * tfactors.T9 + -0.0189198 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 60.2011 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.31041 * tfactors.T923i + + 0.516347 + (5.0/3.0) * -0.0189198 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 60.2011 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.31041 * tfactors.T923i - + 0.516347 + (5.0/3.0) * -0.0189198 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca42_He4_to_p_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca42_to_p_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca42 + He4 --> p + Sc45 - // Ca42 + He4 --> p + Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.625 + -27.1933 * tfactors.T9i + -32.1843 * tfactors.T913i + 14.0733 * tfactors.T913 + + -3.38786 * tfactors.T9 + 0.349494 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 18.625 + -27.1933 * tfactors.T9i + -32.1843 * tfactors.T913i + 14.0733 * tfactors.T913 - + -3.38786 * tfactors.T9 + 0.349494 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.1933 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1843 * tfactors.T943i + (1.0/3.0) * 14.0733 * tfactors.T923i + + -3.38786 + (5.0/3.0) * 0.349494 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.1933 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -32.1843 * tfactors.T943i + (1.0/3.0) * 14.0733 * tfactors.T923i - + -3.38786 + (5.0/3.0) * 0.349494 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_n_to_He4_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ca43_to_He4_Ar40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 + n --> He4 + Ar40 - // Ca43 + n --> He4 + Ar40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 0.325905 + 4.3289 * tfactors.T913 + + 1.46375 * tfactors.T9 + -0.180625 * tfactors.T953; - // ths8r - ln_set_rate = 0.325905 + 4.3289 * tfactors.T913 - + 1.46375 * tfactors.T9 + -0.180625 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.3289 * tfactors.T923i + + 1.46375 + (5.0/3.0) * -0.180625 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.3289 * tfactors.T923i - + 1.46375 + (5.0/3.0) * -0.180625 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_p_to_n_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca43_to_n_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 + p --> n + Sc43 - // Ca43 + p --> n + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.4535 + -34.849 * tfactors.T9i + -0.494422 * tfactors.T913 + + 0.261414 * tfactors.T9 + -0.0285528 * tfactors.T953; - // ths8r - ln_set_rate = 19.4535 + -34.849 * tfactors.T9i + -0.494422 * tfactors.T913 - + 0.261414 * tfactors.T9 + -0.0285528 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.849 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.494422 * tfactors.T923i + + 0.261414 + (5.0/3.0) * -0.0285528 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.849 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.494422 * tfactors.T923i - + 0.261414 + (5.0/3.0) * -0.0285528 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_p_to_He4_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca43_to_He4_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 + p --> He4 + K40 - // Ca43 + p --> He4 + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 44.7054 + -0.108839 * tfactors.T9i + -73.858 * tfactors.T913i + 16.1645 * tfactors.T913 + + -5.93343 * tfactors.T9 + 0.650563 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 44.7054 + -0.108839 * tfactors.T9i + -73.858 * tfactors.T913i + 16.1645 * tfactors.T913 - + -5.93343 * tfactors.T9 + 0.650563 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.108839 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.858 * tfactors.T943i + (1.0/3.0) * 16.1645 * tfactors.T923i + + -5.93343 + (5.0/3.0) * 0.650563 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.108839 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.858 * tfactors.T943i + (1.0/3.0) * 16.1645 * tfactors.T923i - + -5.93343 + (5.0/3.0) * 0.650563 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_He4_to_n_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca43_to_n_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 + He4 --> n + Ti46 - // Ca43 + He4 --> n + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 53.4643 + -76.5897 * tfactors.T913i + 3.69244 * tfactors.T913 + + -1.90131 * tfactors.T9 + 0.171994 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 53.4643 + -76.5897 * tfactors.T913i + 3.69244 * tfactors.T913 - + -1.90131 * tfactors.T9 + 0.171994 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.5897 * tfactors.T943i + (1.0/3.0) * 3.69244 * tfactors.T923i + + -1.90131 + (5.0/3.0) * 0.171994 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.5897 * tfactors.T943i + (1.0/3.0) * 3.69244 * tfactors.T923i - + -1.90131 + (5.0/3.0) * 0.171994 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca43_He4_to_p_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca43_to_p_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca43 + He4 --> p + Sc46 - // Ca43 + He4 --> p + Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 69.4699 + -22.8373 * tfactors.T9i + 189.856 * tfactors.T913i + -278.908 * tfactors.T913 + + 13.9142 * tfactors.T9 + -0.770736 * tfactors.T953 + 153.141 * tfactors.lnT9; - // rath - ln_set_rate = 69.4699 + -22.8373 * tfactors.T9i + 189.856 * tfactors.T913i + -278.908 * tfactors.T913 - + 13.9142 * tfactors.T9 + -0.770736 * tfactors.T953 + 153.141 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.8373 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 189.856 * tfactors.T943i + (1.0/3.0) * -278.908 * tfactors.T923i + + 13.9142 + (5.0/3.0) * -0.770736 * tfactors.T923 + 153.141 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.8373 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 189.856 * tfactors.T943i + (1.0/3.0) * -278.908 * tfactors.T923i - + 13.9142 + (5.0/3.0) * -0.770736 * tfactors.T923 + 153.141 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_p_to_n_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca44_to_n_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 + p --> n + Sc44 - // Ca44 + p --> n + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 22.5127 + -51.4628 * tfactors.T9i + -1.95318 * tfactors.T913 + + 0.326277 * tfactors.T9 + -0.0205095 * tfactors.T953; - // ths8r - ln_set_rate = 22.5127 + -51.4628 * tfactors.T9i + -1.95318 * tfactors.T913 - + 0.326277 * tfactors.T9 + -0.0205095 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 51.4628 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.95318 * tfactors.T923i + + 0.326277 + (5.0/3.0) * -0.0205095 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.4628 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.95318 * tfactors.T923i - + 0.326277 + (5.0/3.0) * -0.0205095 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_p_to_He4_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca44_to_He4_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 + p --> He4 + K41 - // Ca44 + p --> He4 + K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM91n + ln_set_rate = 51.4508 + -12.1383 * tfactors.T9i + -73.9 * tfactors.T913i + 5.43181 * tfactors.T913 + + -2.12763 * tfactors.T9 + 0.134461 * tfactors.T953 + 0.333333 * tfactors.lnT9; - // SM91n - ln_set_rate = 51.4508 + -12.1383 * tfactors.T9i + -73.9 * tfactors.T913i + 5.43181 * tfactors.T913 - + -2.12763 * tfactors.T9 + 0.134461 * tfactors.T953 + 0.333333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.1383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.9 * tfactors.T943i + (1.0/3.0) * 5.43181 * tfactors.T923i + + -2.12763 + (5.0/3.0) * 0.134461 * tfactors.T923 + 0.333333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.1383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.9 * tfactors.T943i + (1.0/3.0) * 5.43181 * tfactors.T923i - + -2.12763 + (5.0/3.0) * 0.134461 * tfactors.T923 + 0.333333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM91n + ln_set_rate = 58.1667 + -12.1383 * tfactors.T9i + -73.9 * tfactors.T913i + -0.410794 * tfactors.T913 + + 0.365336 * tfactors.T9 + -0.607187 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // SM91n - ln_set_rate = 58.1667 + -12.1383 * tfactors.T9i + -73.9 * tfactors.T913i + -0.410794 * tfactors.T913 - + 0.365336 * tfactors.T9 + -0.607187 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.1383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.9 * tfactors.T943i + (1.0/3.0) * -0.410794 * tfactors.T923i + + 0.365336 + (5.0/3.0) * -0.607187 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.1383 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -73.9 * tfactors.T943i + (1.0/3.0) * -0.410794 * tfactors.T923i - + 0.365336 + (5.0/3.0) * -0.607187 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_He4_to_n_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca44_to_n_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 + He4 --> n + Ti47 - // Ca44 + He4 --> n + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -3.44255 + -25.3267 * tfactors.T9i + 4.6504 * tfactors.T913 + + 2.25932 * tfactors.T9 + -0.286843 * tfactors.T953; - // ths8r - ln_set_rate = -3.44255 + -25.3267 * tfactors.T9i + 4.6504 * tfactors.T913 - + 2.25932 * tfactors.T9 + -0.286843 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.3267 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.6504 * tfactors.T923i + + 2.25932 + (5.0/3.0) * -0.286843 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.3267 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.6504 * tfactors.T923i - + 2.25932 + (5.0/3.0) * -0.286843 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca44_He4_to_p_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca44_to_p_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca44 + He4 --> p + Sc47 - // Ca44 + He4 --> p + Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 75.2496 + -29.0126 * tfactors.T9i + 224.282 * tfactors.T913i + -318.978 * tfactors.T913 + + 15.9466 * tfactors.T9 + -0.877308 * tfactors.T953 + 174.938 * tfactors.lnT9; - // rath - ln_set_rate = 75.2496 + -29.0126 * tfactors.T9i + 224.282 * tfactors.T913i + -318.978 * tfactors.T913 - + 15.9466 * tfactors.T9 + -0.877308 * tfactors.T953 + 174.938 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.0126 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 224.282 * tfactors.T943i + (1.0/3.0) * -318.978 * tfactors.T923i + + 15.9466 + (5.0/3.0) * -0.877308 * tfactors.T923 + 174.938 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.0126 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 224.282 * tfactors.T943i + (1.0/3.0) * -318.978 * tfactors.T923i - + 15.9466 + (5.0/3.0) * -0.877308 * tfactors.T923 + 174.938 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca45_p_to_n_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca45_to_n_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca45 + p --> n + Sc45 - // Ca45 + p --> n + Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -3.98017 + -6.10982 * tfactors.T9i + 14.7265 * tfactors.T913 + + -1.41914 * tfactors.T9 + 0.0785177 * tfactors.T953; - // ths8r - ln_set_rate = -3.98017 + -6.10982 * tfactors.T9i + 14.7265 * tfactors.T913 - + -1.41914 * tfactors.T9 + 0.0785177 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.10982 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 14.7265 * tfactors.T923i + + -1.41914 + (5.0/3.0) * 0.0785177 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.10982 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 14.7265 * tfactors.T923i - + -1.41914 + (5.0/3.0) * 0.0785177 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca45_He4_to_n_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca45_to_n_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca45 + He4 --> n + Ti48 - // Ca45 + He4 --> n + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.1268 + -76.6866 * tfactors.T913i + -0.885239 * tfactors.T913 + + -0.554755 * tfactors.T9 + 0.0189393 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.1268 + -76.6866 * tfactors.T913i + -0.885239 * tfactors.T913 - + -0.554755 * tfactors.T9 + 0.0189393 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.6866 * tfactors.T943i + (1.0/3.0) * -0.885239 * tfactors.T923i + + -0.554755 + (5.0/3.0) * 0.0189393 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.6866 * tfactors.T943i + (1.0/3.0) * -0.885239 * tfactors.T923i - + -0.554755 + (5.0/3.0) * 0.0189393 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca45_He4_to_p_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca45_to_p_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca45 + He4 --> p + Sc48 - // Ca45 + He4 --> p + Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 71.9187 + -19.6095 * tfactors.T9i + 239.338 * tfactors.T913i + -335.863 * tfactors.T913 + + 14.1283 * tfactors.T9 + -0.596544 * tfactors.T953 + 190.967 * tfactors.lnT9; - // rath - ln_set_rate = 71.9187 + -19.6095 * tfactors.T9i + 239.338 * tfactors.T913i + -335.863 * tfactors.T913 - + 14.1283 * tfactors.T9 + -0.596544 * tfactors.T953 + 190.967 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.6095 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 239.338 * tfactors.T943i + (1.0/3.0) * -335.863 * tfactors.T923i + + 14.1283 + (5.0/3.0) * -0.596544 * tfactors.T923 + 190.967 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.6095 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 239.338 * tfactors.T943i + (1.0/3.0) * -335.863 * tfactors.T923i - + 14.1283 + (5.0/3.0) * -0.596544 * tfactors.T923 + 190.967 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca46_p_to_n_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca46_to_n_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca46 + p --> n + Sc46 - // Ca46 + p --> n + Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 76.3672 + -25.675 * tfactors.T9i + 65.2318 * tfactors.T913i + -132.177 * tfactors.T913 + + 8.05925 * tfactors.T9 + -0.425861 * tfactors.T953 + 59.0907 * tfactors.lnT9; - // rath - ln_set_rate = 76.3672 + -25.675 * tfactors.T9i + 65.2318 * tfactors.T913i + -132.177 * tfactors.T913 - + 8.05925 * tfactors.T9 + -0.425861 * tfactors.T953 + 59.0907 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.675 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 65.2318 * tfactors.T943i + (1.0/3.0) * -132.177 * tfactors.T923i + + 8.05925 + (5.0/3.0) * -0.425861 * tfactors.T923 + 59.0907 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.675 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 65.2318 * tfactors.T943i + (1.0/3.0) * -132.177 * tfactors.T923i - + 8.05925 + (5.0/3.0) * -0.425861 * tfactors.T923 + 59.0907 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca46_He4_to_n_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca46_to_n_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca46 + He4 --> n + Ti49 - // Ca46 + He4 --> n + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -105.987 + -2.58408 * tfactors.T9i + 100.098 * tfactors.T913 + + -14.6121 * tfactors.T9 + 1.09235 * tfactors.T953; - // ths8r - ln_set_rate = -105.987 + -2.58408 * tfactors.T9i + 100.098 * tfactors.T913 - + -14.6121 * tfactors.T9 + 1.09235 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.58408 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 100.098 * tfactors.T923i + + -14.6121 + (5.0/3.0) * 1.09235 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.58408 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 100.098 * tfactors.T923i - + -14.6121 + (5.0/3.0) * 1.09235 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca46_He4_to_p_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca46_to_p_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca46 + He4 --> p + Sc49 - // Ca46 + He4 --> p + Sc49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 74.0275 + -22.4589 * tfactors.T9i + 218.203 * tfactors.T913i + -316.114 * tfactors.T913 + + 14.9186 * tfactors.T9 + -0.720017 * tfactors.T953 + 174.788 * tfactors.lnT9; - // rath - ln_set_rate = 74.0275 + -22.4589 * tfactors.T9i + 218.203 * tfactors.T913i + -316.114 * tfactors.T913 - + 14.9186 * tfactors.T9 + -0.720017 * tfactors.T953 + 174.788 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.4589 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 218.203 * tfactors.T943i + (1.0/3.0) * -316.114 * tfactors.T923i + + 14.9186 + (5.0/3.0) * -0.720017 * tfactors.T923 + 174.788 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.4589 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 218.203 * tfactors.T943i + (1.0/3.0) * -316.114 * tfactors.T923i - + 14.9186 + (5.0/3.0) * -0.720017 * tfactors.T923 + 174.788 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca47_p_to_n_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca47_to_n_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca47 + p --> n + Sc47 - // Ca47 + p --> n + Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8341 + -31.164 * tfactors.T913i + -0.314533 * tfactors.T913 + + -0.0979736 * tfactors.T9 + 0.00385901 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8341 + -31.164 * tfactors.T913i + -0.314533 * tfactors.T913 - + -0.0979736 * tfactors.T9 + 0.00385901 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -31.164 * tfactors.T943i + (1.0/3.0) * -0.314533 * tfactors.T923i + + -0.0979736 + (5.0/3.0) * 0.00385901 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -31.164 * tfactors.T943i + (1.0/3.0) * -0.314533 * tfactors.T923i - + -0.0979736 + (5.0/3.0) * 0.00385901 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca47_He4_to_n_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca47_to_n_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca47 + He4 --> n + Ti50 - // Ca47 + He4 --> n + Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.426 + -76.7758 * tfactors.T913i + -0.981924 * tfactors.T913 + + -0.52791 * tfactors.T9 + 0.0150723 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.426 + -76.7758 * tfactors.T913i + -0.981924 * tfactors.T913 - + -0.52791 * tfactors.T9 + 0.0150723 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -76.7758 * tfactors.T943i + (1.0/3.0) * -0.981924 * tfactors.T923i + + -0.52791 + (5.0/3.0) * 0.0150723 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -76.7758 * tfactors.T943i + (1.0/3.0) * -0.981924 * tfactors.T923i - + -0.52791 + (5.0/3.0) * 0.0150723 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca48_p_to_n_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ca48_to_n_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca48 + p --> n + Sc48 - // Ca48 + p --> n + Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 196.239 + -7.0501 * tfactors.T9i + 149.725 * tfactors.T913i + -359.287 * tfactors.T913 + + 24.8127 * tfactors.T9 + -1.57647 * tfactors.T953 + 151.916 * tfactors.lnT9; - // rath - ln_set_rate = 196.239 + -7.0501 * tfactors.T9i + 149.725 * tfactors.T913i + -359.287 * tfactors.T913 - + 24.8127 * tfactors.T9 + -1.57647 * tfactors.T953 + 151.916 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.0501 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 149.725 * tfactors.T943i + (1.0/3.0) * -359.287 * tfactors.T923i + + 24.8127 + (5.0/3.0) * -1.57647 * tfactors.T923 + 151.916 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.0501 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 149.725 * tfactors.T943i + (1.0/3.0) * -359.287 * tfactors.T923i - + 24.8127 + (5.0/3.0) * -1.57647 * tfactors.T923 + 151.916 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ca48_He4_to_n_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ca48_to_n_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ca48 + He4 --> n + Ti51 - // Ca48 + He4 --> n + Ti51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 72.5425 + -13.9828 * tfactors.T9i + 343.859 * tfactors.T913i + -441.137 * tfactors.T913 + + 18.781 * tfactors.T9 + -0.911515 * tfactors.T953 + 254.789 * tfactors.lnT9; - // rath - ln_set_rate = 72.5425 + -13.9828 * tfactors.T9i + 343.859 * tfactors.T913i + -441.137 * tfactors.T913 - + 18.781 * tfactors.T9 + -0.911515 * tfactors.T953 + 254.789 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.9828 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 343.859 * tfactors.T943i + (1.0/3.0) * -441.137 * tfactors.T923i + + 18.781 + (5.0/3.0) * -0.911515 * tfactors.T923 + 254.789 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.9828 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 343.859 * tfactors.T943i + (1.0/3.0) * -441.137 * tfactors.T923i - + 18.781 + (5.0/3.0) * -0.911515 * tfactors.T923 + 254.789 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_n_to_p_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc43_to_p_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + n --> p + Ca43 - // Sc43 + n --> p + Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.4535 + -0.494422 * tfactors.T913 + + 0.261414 * tfactors.T9 + -0.0285528 * tfactors.T953; - // ths8r - ln_set_rate = 19.4535 + -0.494422 * tfactors.T913 - + 0.261414 * tfactors.T9 + -0.0285528 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.494422 * tfactors.T923i + + 0.261414 + (5.0/3.0) * -0.0285528 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.494422 * tfactors.T923i - + 0.261414 + (5.0/3.0) * -0.0285528 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_n_to_He4_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc43_to_He4_K40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + n --> He4 + K40 - // Sc43 + n --> He4 + K40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.3424 + -0.653091 * tfactors.T913 + + 1.79632 * tfactors.T9 + -0.19216 * tfactors.T953; - // ths8r - ln_set_rate = 10.3424 + -0.653091 * tfactors.T913 - + 1.79632 * tfactors.T9 + -0.19216 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.653091 * tfactors.T923i + + 1.79632 + (5.0/3.0) * -0.19216 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.653091 * tfactors.T923i - + 1.79632 + (5.0/3.0) * -0.19216 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_p_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc43_to_He4_Ca40_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + p --> He4 + Ca40 - // Sc43 + p --> He4 + Ca40 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 + + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8559 + -32.1734 * tfactors.T913i + 0.0296879 * tfactors.T913 - + -0.95232 * tfactors.T9 + 0.129022 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i + + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1734 * tfactors.T943i + (1.0/3.0) * 0.0296879 * tfactors.T923i - + -0.95232 + (5.0/3.0) * 0.129022 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_He4_to_n_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc43_to_n_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + He4 --> n + V46 - // Sc43 + He4 --> n + V46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 4.15978 + -55.2527 * tfactors.T9i + 6.99126 * tfactors.T913 + + -0.552826 * tfactors.T9 + 0.0272052 * tfactors.T953; - // ths8r - ln_set_rate = 4.15978 + -55.2527 * tfactors.T9i + 6.99126 * tfactors.T913 - + -0.552826 * tfactors.T9 + 0.0272052 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.2527 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.99126 * tfactors.T923i + + -0.552826 + (5.0/3.0) * 0.0272052 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.2527 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.99126 * tfactors.T923i - + -0.552826 + (5.0/3.0) * 0.0272052 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc43_He4_to_p_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc43_to_p_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc43 + He4 --> p + Ti46 - // Sc43 + He4 --> p + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.3723 + -79.122 * tfactors.T913i + -0.495539 * tfactors.T913 + + -0.618414 * tfactors.T9 + 0.0175873 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.3723 + -79.122 * tfactors.T913i + -0.495539 * tfactors.T913 - + -0.618414 * tfactors.T9 + 0.0175873 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -79.122 * tfactors.T943i + (1.0/3.0) * -0.495539 * tfactors.T923i + + -0.618414 + (5.0/3.0) * 0.0175873 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -79.122 * tfactors.T943i + (1.0/3.0) * -0.495539 * tfactors.T923i - + -0.618414 + (5.0/3.0) * 0.0175873 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_n_to_p_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc44_to_p_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + n --> p + Ca44 - // Sc44 + n --> p + Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.9033 + -1.95318 * tfactors.T913 + + 0.326277 * tfactors.T9 + -0.0205095 * tfactors.T953; - // ths8r - ln_set_rate = 20.9033 + -1.95318 * tfactors.T913 - + 0.326277 * tfactors.T9 + -0.0205095 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.95318 * tfactors.T923i + + 0.326277 + (5.0/3.0) * -0.0205095 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.95318 * tfactors.T923i - + 0.326277 + (5.0/3.0) * -0.0205095 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_n_to_He4_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc44_to_He4_K41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + n --> He4 + K41 - // Sc44 + n --> He4 + K41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // SM91 + ln_set_rate = 13.8809 + -7.79828 * tfactors.T913 + + 4.55188 * tfactors.T9 + -0.667478 * tfactors.T953 + 1.0 * tfactors.lnT9; - // SM91 - ln_set_rate = 13.8809 + -7.79828 * tfactors.T913 - + 4.55188 * tfactors.T9 + -0.667478 * tfactors.T953 + 1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -7.79828 * tfactors.T923i + + 4.55188 + (5.0/3.0) * -0.667478 * tfactors.T923 + 1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -7.79828 * tfactors.T923i - + 4.55188 + (5.0/3.0) * -0.667478 * tfactors.T923 + 1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // SM91 + ln_set_rate = 13.4739 + -2.89121 * tfactors.T913 + + 2.26347 * tfactors.T9 + -0.251579 * tfactors.T953; - // SM91 - ln_set_rate = 13.4739 + -2.89121 * tfactors.T913 - + 2.26347 * tfactors.T9 + -0.251579 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.89121 * tfactors.T923i + + 2.26347 + (5.0/3.0) * -0.251579 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.89121 * tfactors.T923i - + 2.26347 + (5.0/3.0) * -0.251579 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_p_to_n_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc44_to_n_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + p --> n + Ti44 - // Sc44 + p --> n + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.67946 + -12.1845 * tfactors.T9i + 4.3491 * tfactors.T913 + + 0.421585 * tfactors.T9 + -0.0855256 * tfactors.T953; - // ths8r - ln_set_rate = 8.67946 + -12.1845 * tfactors.T9i + 4.3491 * tfactors.T913 - + 0.421585 * tfactors.T9 + -0.0855256 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.1845 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.3491 * tfactors.T923i + + 0.421585 + (5.0/3.0) * -0.0855256 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.1845 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.3491 * tfactors.T923i - + 0.421585 + (5.0/3.0) * -0.0855256 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_p_to_He4_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc44_to_He4_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + p --> He4 + Ca41 - // Sc44 + p --> He4 + Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.102 + -32.179 * tfactors.T913i + 13.8907 * tfactors.T913 + + -3.30408 * tfactors.T9 + 0.332186 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 19.102 + -32.179 * tfactors.T913i + 13.8907 * tfactors.T913 - + -3.30408 * tfactors.T9 + 0.332186 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.179 * tfactors.T943i + (1.0/3.0) * 13.8907 * tfactors.T923i + + -3.30408 + (5.0/3.0) * 0.332186 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.179 * tfactors.T943i + (1.0/3.0) * 13.8907 * tfactors.T923i - + -3.30408 + (5.0/3.0) * 0.332186 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_He4_to_n_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc44_to_n_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + He4 --> n + V47 - // Sc44 + He4 --> n + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -35.9521 + -16.9477 * tfactors.T9i + 31.743 * tfactors.T913 + + -1.66241 * tfactors.T9 + -0.0278854 * tfactors.T953; - // ths8r - ln_set_rate = -35.9521 + -16.9477 * tfactors.T9i + 31.743 * tfactors.T913 - + -1.66241 * tfactors.T9 + -0.0278854 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 16.9477 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 31.743 * tfactors.T923i + + -1.66241 + (5.0/3.0) * -0.0278854 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 16.9477 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 31.743 * tfactors.T923i - + -1.66241 + (5.0/3.0) * -0.0278854 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc44_He4_to_p_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc44_to_p_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc44 + He4 --> p + Ti47 - // Sc44 + He4 --> p + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.5285 + -79.1731 * tfactors.T913i + -3.93328 * tfactors.T913 + + 0.112908 * tfactors.T9 + -0.0385366 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.5285 + -79.1731 * tfactors.T913i + -3.93328 * tfactors.T913 - + 0.112908 * tfactors.T9 + -0.0385366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -79.1731 * tfactors.T943i + (1.0/3.0) * -3.93328 * tfactors.T923i + + 0.112908 + (5.0/3.0) * -0.0385366 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -79.1731 * tfactors.T943i + (1.0/3.0) * -3.93328 * tfactors.T923i - + 0.112908 + (5.0/3.0) * -0.0385366 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_n_to_p_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc45_to_p_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 + n --> p + Ca45 - // Sc45 + n --> p + Ca45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -3.98017 + 14.7265 * tfactors.T913 + + -1.41914 * tfactors.T9 + 0.0785177 * tfactors.T953; - // ths8r - ln_set_rate = -3.98017 + 14.7265 * tfactors.T913 - + -1.41914 * tfactors.T9 + 0.0785177 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 14.7265 * tfactors.T923i + + -1.41914 + (5.0/3.0) * 0.0785177 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 14.7265 * tfactors.T923i - + -1.41914 + (5.0/3.0) * 0.0785177 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_p_to_n_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc45_to_n_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 + p --> n + Ti45 - // Sc45 + p --> n + Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.2443 + -33.0078 * tfactors.T9i + -1.6182 * tfactors.T913 + + 0.577281 * tfactors.T9 + -0.0582774 * tfactors.T953; - // ths8r - ln_set_rate = 20.2443 + -33.0078 * tfactors.T9i + -1.6182 * tfactors.T913 - + 0.577281 * tfactors.T9 + -0.0582774 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.0078 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.6182 * tfactors.T923i + + 0.577281 + (5.0/3.0) * -0.0582774 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.0078 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.6182 * tfactors.T923i - + 0.577281 + (5.0/3.0) * -0.0582774 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_p_to_He4_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc45_to_He4_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 + p --> He4 + Ca42 - // Sc45 + p --> He4 + Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.8284 + -32.1843 * tfactors.T913i + 14.0733 * tfactors.T913 + + -3.38786 * tfactors.T9 + 0.349494 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 17.8284 + -32.1843 * tfactors.T913i + 14.0733 * tfactors.T913 - + -3.38786 * tfactors.T9 + 0.349494 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -32.1843 * tfactors.T943i + (1.0/3.0) * 14.0733 * tfactors.T923i + + -3.38786 + (5.0/3.0) * 0.349494 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -32.1843 * tfactors.T943i + (1.0/3.0) * 14.0733 * tfactors.T923i - + -3.38786 + (5.0/3.0) * 0.349494 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_He4_to_n_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc45_to_n_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 + He4 --> n + V48 - // Sc45 + He4 --> n + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -7.04722 + -25.9803 * tfactors.T9i + 8.18067 * tfactors.T913 + + 1.50465 * tfactors.T9 + -0.224564 * tfactors.T953; - // ths8r - ln_set_rate = -7.04722 + -25.9803 * tfactors.T9i + 8.18067 * tfactors.T913 - + 1.50465 * tfactors.T9 + -0.224564 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.9803 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.18067 * tfactors.T923i + + 1.50465 + (5.0/3.0) * -0.224564 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.9803 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.18067 * tfactors.T923i - + 1.50465 + (5.0/3.0) * -0.224564 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc45_He4_to_p_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc45_to_p_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc45 + He4 --> p + Ti48 - // Sc45 + He4 --> p + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.207 + -79.222 * tfactors.T913i + 0.0710184 * tfactors.T913 + + -1.47173 * tfactors.T9 + 0.15944 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.207 + -79.222 * tfactors.T913i + 0.0710184 * tfactors.T913 - + -1.47173 * tfactors.T9 + 0.15944 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -79.222 * tfactors.T943i + (1.0/3.0) * 0.0710184 * tfactors.T923i + + -1.47173 + (5.0/3.0) * 0.15944 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -79.222 * tfactors.T943i + (1.0/3.0) * 0.0710184 * tfactors.T923i - + -1.47173 + (5.0/3.0) * 0.15944 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_n_to_p_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc46_to_p_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 + n --> p + Ca46 - // Sc46 + n --> p + Ca46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 74.17 + -0.632473 * tfactors.T9i + 65.2318 * tfactors.T913i + -132.177 * tfactors.T913 + + 8.05925 * tfactors.T9 + -0.425861 * tfactors.T953 + 59.0907 * tfactors.lnT9; - // rath - ln_set_rate = 74.17 + -0.632473 * tfactors.T9i + 65.2318 * tfactors.T913i + -132.177 * tfactors.T913 - + 8.05925 * tfactors.T9 + -0.425861 * tfactors.T953 + 59.0907 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.632473 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 65.2318 * tfactors.T943i + (1.0/3.0) * -132.177 * tfactors.T923i + + 8.05925 + (5.0/3.0) * -0.425861 * tfactors.T923 + 59.0907 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.632473 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 65.2318 * tfactors.T943i + (1.0/3.0) * -132.177 * tfactors.T923i - + 8.05925 + (5.0/3.0) * -0.425861 * tfactors.T923 + 59.0907 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_p_to_n_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc46_to_n_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 + p --> n + Ti46 - // Sc46 + p --> n + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 120.144 + -5.3851 * tfactors.T9i + 200.092 * tfactors.T913i + -329.451 * tfactors.T913 + + 18.1752 * tfactors.T9 + -1.01788 * tfactors.T953 + 164.827 * tfactors.lnT9; - // rath - ln_set_rate = 120.144 + -5.3851 * tfactors.T9i + 200.092 * tfactors.T913i + -329.451 * tfactors.T913 - + 18.1752 * tfactors.T9 + -1.01788 * tfactors.T953 + 164.827 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.3851 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 200.092 * tfactors.T943i + (1.0/3.0) * -329.451 * tfactors.T923i + + 18.1752 + (5.0/3.0) * -1.01788 * tfactors.T923 + 164.827 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.3851 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 200.092 * tfactors.T943i + (1.0/3.0) * -329.451 * tfactors.T923i - + 18.1752 + (5.0/3.0) * -1.01788 * tfactors.T923 + 164.827 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_p_to_He4_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc46_to_He4_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 + p --> He4 + Ca43 - // Sc46 + p --> He4 + Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 70.6373 + -5.26809 * tfactors.T9i + 189.856 * tfactors.T913i + -278.908 * tfactors.T913 + + 13.9142 * tfactors.T9 + -0.770736 * tfactors.T953 + 153.141 * tfactors.lnT9; - // rath - ln_set_rate = 70.6373 + -5.26809 * tfactors.T9i + 189.856 * tfactors.T913i + -278.908 * tfactors.T913 - + 13.9142 * tfactors.T9 + -0.770736 * tfactors.T953 + 153.141 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.26809 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 189.856 * tfactors.T943i + (1.0/3.0) * -278.908 * tfactors.T923i + + 13.9142 + (5.0/3.0) * -0.770736 * tfactors.T923 + 153.141 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.26809 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 189.856 * tfactors.T943i + (1.0/3.0) * -278.908 * tfactors.T923i - + 13.9142 + (5.0/3.0) * -0.770736 * tfactors.T923 + 153.141 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_He4_to_n_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc46_to_n_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 + He4 --> n + V49 - // Sc46 + He4 --> n + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -907.911 + 14.6583 * tfactors.T9i + -1592.71 * tfactors.T913i + 2609.63 * tfactors.T913 + + -155.96 * tfactors.T9 + 8.94971 * tfactors.T953 + -1223.97 * tfactors.lnT9; - // rath - ln_set_rate = -907.911 + 14.6583 * tfactors.T9i + -1592.71 * tfactors.T913i + 2609.63 * tfactors.T913 - + -155.96 * tfactors.T9 + 8.94971 * tfactors.T953 + -1223.97 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -14.6583 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1592.71 * tfactors.T943i + (1.0/3.0) * 2609.63 * tfactors.T923i + + -155.96 + (5.0/3.0) * 8.94971 * tfactors.T923 + -1223.97 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -14.6583 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1592.71 * tfactors.T943i + (1.0/3.0) * 2609.63 * tfactors.T923i - + -155.96 + (5.0/3.0) * 8.94971 * tfactors.T923 + -1223.97 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc46_He4_to_p_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc46_to_p_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc46 + He4 --> p + Ti49 - // Sc46 + He4 --> p + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -938.441 + 14.7159 * tfactors.T9i + -1603.15 * tfactors.T913i + 2650.58 * tfactors.T913 + + -159.776 * tfactors.T9 + 9.24163 * tfactors.T953 + -1237.15 * tfactors.lnT9; - // rath - ln_set_rate = -938.441 + 14.7159 * tfactors.T9i + -1603.15 * tfactors.T913i + 2650.58 * tfactors.T913 - + -159.776 * tfactors.T9 + 9.24163 * tfactors.T953 + -1237.15 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -14.7159 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1603.15 * tfactors.T943i + (1.0/3.0) * 2650.58 * tfactors.T923i + + -159.776 + (5.0/3.0) * 9.24163 * tfactors.T923 + -1237.15 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -14.7159 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1603.15 * tfactors.T943i + (1.0/3.0) * 2650.58 * tfactors.T923i - + -159.776 + (5.0/3.0) * 9.24163 * tfactors.T923 + -1237.15 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_n_to_p_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc47_to_p_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 + n --> p + Ca47 - // Sc47 + n --> p + Ca47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 34.8341 + -14.0374 * tfactors.T9i + -31.164 * tfactors.T913i + -0.314533 * tfactors.T913 + + -0.0979736 * tfactors.T9 + 0.00385901 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 34.8341 + -14.0374 * tfactors.T9i + -31.164 * tfactors.T913i + -0.314533 * tfactors.T913 - + -0.0979736 * tfactors.T9 + 0.00385901 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.0374 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.164 * tfactors.T943i + (1.0/3.0) * -0.314533 * tfactors.T923i + + -0.0979736 + (5.0/3.0) * 0.00385901 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.0374 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -31.164 * tfactors.T943i + (1.0/3.0) * -0.314533 * tfactors.T923i - + -0.0979736 + (5.0/3.0) * 0.00385901 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_p_to_n_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc47_to_n_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 + p --> n + Ti47 - // Sc47 + p --> n + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -22.9861 + -2.11287 * tfactors.T9i + 30.6942 * tfactors.T913 + + -3.81514 * tfactors.T9 + 0.263484 * tfactors.T953; - // ths8r - ln_set_rate = -22.9861 + -2.11287 * tfactors.T9i + 30.6942 * tfactors.T913 - + -3.81514 * tfactors.T9 + 0.263484 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.11287 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.6942 * tfactors.T923i + + -3.81514 + (5.0/3.0) * 0.263484 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.11287 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 30.6942 * tfactors.T923i - + -3.81514 + (5.0/3.0) * 0.263484 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_p_to_He4_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc47_to_He4_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 + p --> He4 + Ca44 - // Sc47 + p --> He4 + Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 74.4575 + -5.79201 * tfactors.T9i + 224.282 * tfactors.T913i + -318.978 * tfactors.T913 + + 15.9466 * tfactors.T9 + -0.877308 * tfactors.T953 + 174.938 * tfactors.lnT9; - // rath - ln_set_rate = 74.4575 + -5.79201 * tfactors.T9i + 224.282 * tfactors.T913i + -318.978 * tfactors.T913 - + 15.9466 * tfactors.T9 + -0.877308 * tfactors.T953 + 174.938 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.79201 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 224.282 * tfactors.T943i + (1.0/3.0) * -318.978 * tfactors.T923i + + 15.9466 + (5.0/3.0) * -0.877308 * tfactors.T923 + 174.938 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.79201 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 224.282 * tfactors.T943i + (1.0/3.0) * -318.978 * tfactors.T923i - + 15.9466 + (5.0/3.0) * -0.877308 * tfactors.T923 + 174.938 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_He4_to_n_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc47_to_n_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 + He4 --> n + V50 - // Sc47 + He4 --> n + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -72.4729 + -8.78424 * tfactors.T9i + 66.0687 * tfactors.T913 + + -8.06344 * tfactors.T9 + 0.527546 * tfactors.T953; - // ths8r - ln_set_rate = -72.4729 + -8.78424 * tfactors.T9i + 66.0687 * tfactors.T913 - + -8.06344 * tfactors.T9 + 0.527546 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.78424 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 66.0687 * tfactors.T923i + + -8.06344 + (5.0/3.0) * 0.527546 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.78424 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 66.0687 * tfactors.T923i - + -8.06344 + (5.0/3.0) * 0.527546 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc47_He4_to_p_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc47_to_p_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc47 + He4 --> p + Ti50 - // Sc47 + He4 --> p + Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -980.428 + 14.926 * tfactors.T9i + -1637.36 * tfactors.T913i + 2730.59 * tfactors.T913 + + -164.393 * tfactors.T9 + 9.47988 * tfactors.T953 + -1271.98 * tfactors.lnT9; - // rath - ln_set_rate = -980.428 + 14.926 * tfactors.T9i + -1637.36 * tfactors.T913i + 2730.59 * tfactors.T913 - + -164.393 * tfactors.T9 + 9.47988 * tfactors.T953 + -1271.98 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -14.926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1637.36 * tfactors.T943i + (1.0/3.0) * 2730.59 * tfactors.T923i + + -164.393 + (5.0/3.0) * 9.47988 * tfactors.T923 + -1271.98 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -14.926 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1637.36 * tfactors.T943i + (1.0/3.0) * 2730.59 * tfactors.T923i - + -164.393 + (5.0/3.0) * 9.47988 * tfactors.T923 + -1271.98 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_n_to_p_Ca48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Sc48_to_p_Ca48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 + n --> p + Ca48 - // Sc48 + n --> p + Ca48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 193.674 + -1.20143 * tfactors.T9i + 149.725 * tfactors.T913i + -359.287 * tfactors.T913 + + 24.8127 * tfactors.T9 + -1.57647 * tfactors.T953 + 151.916 * tfactors.lnT9; - // rath - ln_set_rate = 193.674 + -1.20143 * tfactors.T9i + 149.725 * tfactors.T913i + -359.287 * tfactors.T913 - + 24.8127 * tfactors.T9 + -1.57647 * tfactors.T953 + 151.916 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.20143 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 149.725 * tfactors.T943i + (1.0/3.0) * -359.287 * tfactors.T923i + + 24.8127 + (5.0/3.0) * -1.57647 * tfactors.T923 + 151.916 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.20143 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 149.725 * tfactors.T943i + (1.0/3.0) * -359.287 * tfactors.T923i - + 24.8127 + (5.0/3.0) * -1.57647 * tfactors.T923 + 151.916 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_p_to_n_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc48_to_n_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 + p --> n + Ti48 - // Sc48 + p --> n + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 118.891 + -5.45559 * tfactors.T9i + 201.123 * tfactors.T913i + -329.189 * tfactors.T913 + + 18.2769 * tfactors.T9 + -1.03382 * tfactors.T953 + 164.945 * tfactors.lnT9; - // rath - ln_set_rate = 118.891 + -5.45559 * tfactors.T9i + 201.123 * tfactors.T913i + -329.189 * tfactors.T913 - + 18.2769 * tfactors.T9 + -1.03382 * tfactors.T953 + 164.945 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.45559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 201.123 * tfactors.T943i + (1.0/3.0) * -329.189 * tfactors.T923i + + 18.2769 + (5.0/3.0) * -1.03382 * tfactors.T923 + 164.945 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.45559 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 201.123 * tfactors.T943i + (1.0/3.0) * -329.189 * tfactors.T923i - + 18.2769 + (5.0/3.0) * -1.03382 * tfactors.T923 + 164.945 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_p_to_He4_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc48_to_He4_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 + p --> He4 + Ca45 - // Sc48 + p --> He4 + Ca45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 72.7227 + -5.86977 * tfactors.T9i + 239.338 * tfactors.T913i + -335.863 * tfactors.T913 + + 14.1283 * tfactors.T9 + -0.596544 * tfactors.T953 + 190.967 * tfactors.lnT9; - // rath - ln_set_rate = 72.7227 + -5.86977 * tfactors.T9i + 239.338 * tfactors.T913i + -335.863 * tfactors.T913 - + 14.1283 * tfactors.T9 + -0.596544 * tfactors.T953 + 190.967 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.86977 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 239.338 * tfactors.T943i + (1.0/3.0) * -335.863 * tfactors.T923i + + 14.1283 + (5.0/3.0) * -0.596544 * tfactors.T923 + 190.967 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.86977 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 239.338 * tfactors.T943i + (1.0/3.0) * -335.863 * tfactors.T923i - + 14.1283 + (5.0/3.0) * -0.596544 * tfactors.T923 + 190.967 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_He4_to_n_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc48_to_n_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 + He4 --> n + V51 - // Sc48 + He4 --> n + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -925.664 + 14.9263 * tfactors.T9i + -1621.99 * tfactors.T913i + 2659.5 * tfactors.T913 + + -158.959 * tfactors.T9 + 9.12514 * tfactors.T953 + -1247.44 * tfactors.lnT9; - // rath - ln_set_rate = -925.664 + 14.9263 * tfactors.T9i + -1621.99 * tfactors.T913i + 2659.5 * tfactors.T913 - + -158.959 * tfactors.T9 + 9.12514 * tfactors.T953 + -1247.44 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -14.9263 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1621.99 * tfactors.T943i + (1.0/3.0) * 2659.5 * tfactors.T923i + + -158.959 + (5.0/3.0) * 9.12514 * tfactors.T923 + -1247.44 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -14.9263 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1621.99 * tfactors.T943i + (1.0/3.0) * 2659.5 * tfactors.T923i - + -158.959 + (5.0/3.0) * 9.12514 * tfactors.T923 + -1247.44 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc48_He4_to_p_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc48_to_p_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc48 + He4 --> p + Ti51 - // Sc48 + He4 --> p + Ti51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -846.099 + 17.271 * tfactors.T9i + -1740.8 * tfactors.T913i + 2683.45 * tfactors.T913 + + -154.78 * tfactors.T9 + 8.68561 * tfactors.T953 + -1291.82 * tfactors.lnT9; - // rath - ln_set_rate = -846.099 + 17.271 * tfactors.T9i + -1740.8 * tfactors.T913i + 2683.45 * tfactors.T913 - + -154.78 * tfactors.T9 + 8.68561 * tfactors.T953 + -1291.82 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -17.271 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1740.8 * tfactors.T943i + (1.0/3.0) * 2683.45 * tfactors.T923i + + -154.78 + (5.0/3.0) * 8.68561 * tfactors.T923 + -1291.82 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -17.271 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1740.8 * tfactors.T943i + (1.0/3.0) * 2683.45 * tfactors.T923i - + -154.78 + (5.0/3.0) * 8.68561 * tfactors.T923 + -1291.82 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc49_p_to_n_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc49_to_n_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc49 + p --> n + Ti49 - // Sc49 + p --> n + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 120.282 + -5.52132 * tfactors.T9i + 204.555 * tfactors.T913i + -334.141 * tfactors.T913 + + 18.5078 * tfactors.T9 + -1.04158 * tfactors.T953 + 167.483 * tfactors.lnT9; - // rath - ln_set_rate = 120.282 + -5.52132 * tfactors.T9i + 204.555 * tfactors.T913i + -334.141 * tfactors.T913 - + 18.5078 * tfactors.T9 + -1.04158 * tfactors.T953 + 167.483 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.52132 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 204.555 * tfactors.T943i + (1.0/3.0) * -334.141 * tfactors.T923i + + 18.5078 + (5.0/3.0) * -1.04158 * tfactors.T923 + 167.483 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.52132 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 204.555 * tfactors.T943i + (1.0/3.0) * -334.141 * tfactors.T923i - + 18.5078 + (5.0/3.0) * -1.04158 * tfactors.T923 + 167.483 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc49_p_to_He4_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Sc49_to_He4_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc49 + p --> He4 + Ca46 - // Sc49 + p --> He4 + Ca46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 73.2396 + -5.66716 * tfactors.T9i + 218.203 * tfactors.T913i + -316.114 * tfactors.T913 + + 14.9186 * tfactors.T9 + -0.720017 * tfactors.T953 + 174.788 * tfactors.lnT9; - // rath - ln_set_rate = 73.2396 + -5.66716 * tfactors.T9i + 218.203 * tfactors.T913i + -316.114 * tfactors.T913 - + 14.9186 * tfactors.T9 + -0.720017 * tfactors.T953 + 174.788 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.66716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 218.203 * tfactors.T943i + (1.0/3.0) * -316.114 * tfactors.T923i + + 14.9186 + (5.0/3.0) * -0.720017 * tfactors.T923 + 174.788 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.66716 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 218.203 * tfactors.T943i + (1.0/3.0) * -316.114 * tfactors.T923i - + 14.9186 + (5.0/3.0) * -0.720017 * tfactors.T923 + 174.788 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Sc49_He4_to_n_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Sc49_to_n_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Sc49 + He4 --> n + V52 - // Sc49 + He4 --> n + V52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -14.4353 + -11.0443 * tfactors.T9i + 174.784 * tfactors.T913i + -175.991 * tfactors.T913 + + 2.92402 * tfactors.T9 + 0.0459501 * tfactors.T953 + 127.478 * tfactors.lnT9; - // rath - ln_set_rate = -14.4353 + -11.0443 * tfactors.T9i + 174.784 * tfactors.T913i + -175.991 * tfactors.T913 - + 2.92402 * tfactors.T9 + 0.0459501 * tfactors.T953 + 127.478 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.0443 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 174.784 * tfactors.T943i + (1.0/3.0) * -175.991 * tfactors.T923i + + 2.92402 + (5.0/3.0) * 0.0459501 * tfactors.T923 + 127.478 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.0443 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 174.784 * tfactors.T943i + (1.0/3.0) * -175.991 * tfactors.T923i - + 2.92402 + (5.0/3.0) * 0.0459501 * tfactors.T923 + 127.478 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_n_to_p_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti44_to_p_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + n --> p + Sc44 - // Ti44 + n --> p + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.2889 + 4.3491 * tfactors.T913 + + 0.421585 * tfactors.T9 + -0.0855256 * tfactors.T953; - // ths8r - ln_set_rate = 10.2889 + 4.3491 * tfactors.T913 - + 0.421585 * tfactors.T9 + -0.0855256 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.3491 * tfactors.T923i + + 0.421585 + (5.0/3.0) * -0.0855256 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.3491 * tfactors.T923i - + 0.421585 + (5.0/3.0) * -0.0855256 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_n_to_He4_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti44_to_He4_Ca41_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + n --> He4 + Ca41 - // Ti44 + n --> He4 + Ca41 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.51125 + 2.68094 * tfactors.T913 + + 1.34285 * tfactors.T9 + -0.18134 * tfactors.T953; - // ths8r - ln_set_rate = 7.51125 + 2.68094 * tfactors.T913 - + 1.34285 * tfactors.T9 + -0.18134 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.68094 * tfactors.T923i + + 1.34285 + (5.0/3.0) * -0.18134 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.68094 * tfactors.T923i - + 1.34285 + (5.0/3.0) * -0.18134 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti44_He4_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti44_to_p_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti44 + He4 --> p + V47 - // Ti44 + He4 --> p + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.5154 + -10.7931 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.7931 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_n_to_p_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti45_to_p_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 + n --> p + Sc45 - // Ti45 + n --> p + Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.2443 + -1.6182 * tfactors.T913 + + 0.577281 * tfactors.T9 + -0.0582774 * tfactors.T953; - // ths8r - ln_set_rate = 20.2443 + -1.6182 * tfactors.T913 - + 0.577281 * tfactors.T9 + -0.0582774 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.6182 * tfactors.T923i + + 0.577281 + (5.0/3.0) * -0.0582774 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.6182 * tfactors.T923i - + 0.577281 + (5.0/3.0) * -0.0582774 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_n_to_He4_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti45_to_He4_Ca42_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 + n --> He4 + Ca42 - // Ti45 + n --> He4 + Ca42 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4413 + -1.31041 * tfactors.T913 + + 0.516347 * tfactors.T9 + -0.0189198 * tfactors.T953; - // ths8r - ln_set_rate = 16.4413 + -1.31041 * tfactors.T913 - + 0.516347 * tfactors.T9 + -0.0189198 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.31041 * tfactors.T923i + + 0.516347 + (5.0/3.0) * -0.0189198 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.31041 * tfactors.T923i - + 0.516347 + (5.0/3.0) * -0.0189198 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_He4_to_n_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti45_to_n_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 + He4 --> n + Cr48 - // Ti45 + He4 --> n + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -30.7717 + -21.2706 * tfactors.T9i + 29.3634 * tfactors.T913 + + -2.63599 * tfactors.T9 + 0.159116 * tfactors.T953; - // ths8r - ln_set_rate = -30.7717 + -21.2706 * tfactors.T9i + 29.3634 * tfactors.T913 - + -2.63599 * tfactors.T9 + 0.159116 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.2706 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 29.3634 * tfactors.T923i + + -2.63599 + (5.0/3.0) * 0.159116 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.2706 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 29.3634 * tfactors.T923i - + -2.63599 + (5.0/3.0) * 0.159116 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti45_He4_to_p_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti45_to_p_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti45 + He4 --> p + V48 - // Ti45 + He4 --> p + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.1979 + -81.7175 * tfactors.T913i + 5.07471 * tfactors.T913 + + -2.34907 * tfactors.T9 + 0.226169 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.1979 + -81.7175 * tfactors.T913i + 5.07471 * tfactors.T913 - + -2.34907 * tfactors.T9 + 0.226169 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.7175 * tfactors.T943i + (1.0/3.0) * 5.07471 * tfactors.T923i + + -2.34907 + (5.0/3.0) * 0.226169 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.7175 * tfactors.T943i + (1.0/3.0) * 5.07471 * tfactors.T923i - + -2.34907 + (5.0/3.0) * 0.226169 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_n_to_p_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti46_to_p_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + n --> p + Sc46 - // Ti46 + n --> p + Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 122.341 + -23.7666 * tfactors.T9i + 200.092 * tfactors.T913i + -329.451 * tfactors.T913 + + 18.1752 * tfactors.T9 + -1.01788 * tfactors.T953 + 164.827 * tfactors.lnT9; - // rath - ln_set_rate = 122.341 + -23.7666 * tfactors.T9i + 200.092 * tfactors.T913i + -329.451 * tfactors.T913 - + 18.1752 * tfactors.T9 + -1.01788 * tfactors.T953 + 164.827 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 23.7666 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 200.092 * tfactors.T943i + (1.0/3.0) * -329.451 * tfactors.T923i + + 18.1752 + (5.0/3.0) * -1.01788 * tfactors.T923 + 164.827 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 23.7666 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 200.092 * tfactors.T943i + (1.0/3.0) * -329.451 * tfactors.T923i - + 18.1752 + (5.0/3.0) * -1.01788 * tfactors.T923 + 164.827 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_n_to_He4_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti46_to_He4_Ca43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + n --> He4 + Ca43 - // Ti46 + n --> He4 + Ca43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.8289 + -0.793539 * tfactors.T9i + -76.5897 * tfactors.T913i + 3.69244 * tfactors.T913 + + -1.90131 * tfactors.T9 + 0.171994 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.8289 + -0.793539 * tfactors.T9i + -76.5897 * tfactors.T913i + 3.69244 * tfactors.T913 - + -1.90131 * tfactors.T9 + 0.171994 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.793539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.5897 * tfactors.T943i + (1.0/3.0) * 3.69244 * tfactors.T923i + + -1.90131 + (5.0/3.0) * 0.171994 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.793539 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.5897 * tfactors.T943i + (1.0/3.0) * 3.69244 * tfactors.T923i - + -1.90131 + (5.0/3.0) * 0.171994 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_p_to_n_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti46_to_n_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + p --> n + V46 - // Ti46 + p --> n + V46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.15 + -90.8951 * tfactors.T9i + -0.663329 * tfactors.T913 + + 0.174849 * tfactors.T9 + -0.0157869 * tfactors.T953; - // ths8r - ln_set_rate = 21.15 + -90.8951 * tfactors.T9i + -0.663329 * tfactors.T913 - + 0.174849 * tfactors.T9 + -0.0157869 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 90.8951 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.663329 * tfactors.T923i + + 0.174849 + (5.0/3.0) * -0.0157869 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 90.8951 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.663329 * tfactors.T923i - + 0.174849 + (5.0/3.0) * -0.0157869 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_p_to_He4_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti46_to_He4_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + p --> He4 + Sc43 - // Ti46 + p --> He4 + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.7369 + -35.6425 * tfactors.T9i + -79.122 * tfactors.T913i + -0.495539 * tfactors.T913 + + -0.618414 * tfactors.T9 + 0.0175873 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.7369 + -35.6425 * tfactors.T9i + -79.122 * tfactors.T913i + -0.495539 * tfactors.T913 - + -0.618414 * tfactors.T9 + 0.0175873 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 35.6425 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.122 * tfactors.T943i + (1.0/3.0) * -0.495539 * tfactors.T923i + + -0.618414 + (5.0/3.0) * 0.0175873 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 35.6425 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.122 * tfactors.T943i + (1.0/3.0) * -0.495539 * tfactors.T923i - + -0.618414 + (5.0/3.0) * 0.0175873 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_He4_to_n_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti46_to_n_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + He4 --> n + Cr49 - // Ti46 + He4 --> n + Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.9788 + -51.5163 * tfactors.T9i + -2.81456 * tfactors.T913 + + 1.61029 * tfactors.T9 + -0.138467 * tfactors.T953; - // ths8r - ln_set_rate = 13.9788 + -51.5163 * tfactors.T9i + -2.81456 * tfactors.T913 - + 1.61029 * tfactors.T9 + -0.138467 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 51.5163 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.81456 * tfactors.T923i + + 1.61029 + (5.0/3.0) * -0.138467 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 51.5163 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.81456 * tfactors.T923i - + 1.61029 + (5.0/3.0) * -0.138467 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti46_He4_to_p_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti46_to_p_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti46 + He4 --> p + V49 - // Ti46 + He4 --> p + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -19.3117 + -11.9588 * tfactors.T9i + -34.217 * tfactors.T913i + 47.2584 * tfactors.T913 + + -9.18871 * tfactors.T9 + 0.87823 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -19.3117 + -11.9588 * tfactors.T9i + -34.217 * tfactors.T913i + 47.2584 * tfactors.T913 - + -9.18871 * tfactors.T9 + 0.87823 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.9588 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.217 * tfactors.T943i + (1.0/3.0) * 47.2584 * tfactors.T923i + + -9.18871 + (5.0/3.0) * 0.87823 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.9588 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.217 * tfactors.T943i + (1.0/3.0) * 47.2584 * tfactors.T923i - + -9.18871 + (5.0/3.0) * 0.87823 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_n_to_p_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti47_to_p_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + n --> p + Sc47 - // Ti47 + n --> p + Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -22.6984 + 30.6942 * tfactors.T913 + + -3.81514 * tfactors.T9 + 0.263484 * tfactors.T953; - // ths8r - ln_set_rate = -22.6984 + 30.6942 * tfactors.T913 - + -3.81514 * tfactors.T9 + 0.263484 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 30.6942 * tfactors.T923i + + -3.81514 + (5.0/3.0) * 0.263484 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 30.6942 * tfactors.T923i - + -3.81514 + (5.0/3.0) * 0.263484 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_n_to_He4_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti47_to_He4_Ca44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + n --> He4 + Ca44 - // Ti47 + n --> He4 + Ca44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -3.94695 + 4.6504 * tfactors.T913 + + 2.25932 * tfactors.T9 + -0.286843 * tfactors.T953; - // ths8r - ln_set_rate = -3.94695 + 4.6504 * tfactors.T913 - + 2.25932 * tfactors.T9 + -0.286843 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.6504 * tfactors.T923i + + 2.25932 + (5.0/3.0) * -0.286843 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.6504 * tfactors.T923i - + 2.25932 + (5.0/3.0) * -0.286843 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_p_to_n_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti47_to_n_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + p --> n + V47 - // Ti47 + p --> n + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.9856 + -43.0839 * tfactors.T9i + -0.897943 * tfactors.T913 + + 0.233018 * tfactors.T9 + -0.0170844 * tfactors.T953; - // ths8r - ln_set_rate = 19.9856 + -43.0839 * tfactors.T9i + -0.897943 * tfactors.T913 - + 0.233018 * tfactors.T9 + -0.0170844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 43.0839 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.897943 * tfactors.T923i + + 0.233018 + (5.0/3.0) * -0.0170844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 43.0839 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.897943 * tfactors.T923i - + 0.233018 + (5.0/3.0) * -0.0170844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_p_to_He4_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti47_to_He4_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + p --> He4 + Sc44 - // Ti47 + p --> He4 + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.6335 + -26.1362 * tfactors.T9i + -79.1731 * tfactors.T913i + -3.93328 * tfactors.T913 + + 0.112908 * tfactors.T9 + -0.0385366 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.6335 + -26.1362 * tfactors.T9i + -79.1731 * tfactors.T913i + -3.93328 * tfactors.T913 - + 0.112908 * tfactors.T9 + -0.0385366 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.1362 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.1731 * tfactors.T943i + (1.0/3.0) * -3.93328 * tfactors.T923i + + 0.112908 + (5.0/3.0) * -0.0385366 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.1362 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.1731 * tfactors.T943i + (1.0/3.0) * -3.93328 * tfactors.T923i - + 0.112908 + (5.0/3.0) * -0.0385366 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_He4_to_n_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti47_to_n_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + He4 --> n + Cr50 - // Ti47 + He4 --> n + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -111.793 + -3.70527 * tfactors.T9i + 104.649 * tfactors.T913 + + -15.3856 * tfactors.T9 + 1.13897 * tfactors.T953; - // ths8r - ln_set_rate = -111.793 + -3.70527 * tfactors.T9i + 104.649 * tfactors.T913 - + -15.3856 * tfactors.T9 + 1.13897 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.70527 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 104.649 * tfactors.T923i + + -15.3856 + (5.0/3.0) * 1.13897 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.70527 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 104.649 * tfactors.T923i - + -15.3856 + (5.0/3.0) * 1.13897 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti47_He4_to_p_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti47_to_p_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti47 + He4 --> p + V50 - // Ti47 + He4 --> p + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -51.1413 + -6.67137 * tfactors.T9i + -34.2216 * tfactors.T913i + 78.8919 * tfactors.T913 + + -16.0561 * tfactors.T9 + 1.55251 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -51.1413 + -6.67137 * tfactors.T9i + -34.2216 * tfactors.T913i + 78.8919 * tfactors.T913 - + -16.0561 * tfactors.T9 + 1.55251 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.67137 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 78.8919 * tfactors.T923i + + -16.0561 + (5.0/3.0) * 1.55251 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.67137 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 78.8919 * tfactors.T923i - + -16.0561 + (5.0/3.0) * 1.55251 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_n_to_p_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti48_to_p_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + n --> p + Sc48 - // Ti48 + n --> p + Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 121.456 + -42.7176 * tfactors.T9i + 201.123 * tfactors.T913i + -329.189 * tfactors.T913 + + 18.2769 * tfactors.T9 + -1.03382 * tfactors.T953 + 164.945 * tfactors.lnT9; - // rath - ln_set_rate = 121.456 + -42.7176 * tfactors.T9i + 201.123 * tfactors.T913i + -329.189 * tfactors.T913 - + 18.2769 * tfactors.T9 + -1.03382 * tfactors.T953 + 164.945 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 42.7176 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 201.123 * tfactors.T943i + (1.0/3.0) * -329.189 * tfactors.T923i + + 18.2769 + (5.0/3.0) * -1.03382 * tfactors.T923 + 164.945 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 42.7176 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 201.123 * tfactors.T943i + (1.0/3.0) * -329.189 * tfactors.T923i - + 18.2769 + (5.0/3.0) * -1.03382 * tfactors.T923 + 164.945 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_n_to_He4_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti48_to_He4_Ca45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + n --> He4 + Ca45 - // Ti48 + n --> He4 + Ca45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.4957 + -23.5499 * tfactors.T9i + -76.6866 * tfactors.T913i + -0.885239 * tfactors.T913 + + -0.554755 * tfactors.T9 + 0.0189393 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.4957 + -23.5499 * tfactors.T9i + -76.6866 * tfactors.T913i + -0.885239 * tfactors.T913 - + -0.554755 * tfactors.T9 + 0.0189393 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 23.5499 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.6866 * tfactors.T943i + (1.0/3.0) * -0.885239 * tfactors.T923i + + -0.554755 + (5.0/3.0) * 0.0189393 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 23.5499 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.6866 * tfactors.T943i + (1.0/3.0) * -0.885239 * tfactors.T923i - + -0.554755 + (5.0/3.0) * 0.0189393 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_p_to_n_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti48_to_n_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + p --> n + V48 - // Ti48 + p --> n + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.7458 + -55.64 * tfactors.T9i + -0.307045 * tfactors.T913 + + 0.0615476 * tfactors.T9 + -0.00172407 * tfactors.T953; - // ths8r - ln_set_rate = 21.7458 + -55.64 * tfactors.T9i + -0.307045 * tfactors.T913 - + 0.0615476 * tfactors.T9 + -0.00172407 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 55.64 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.307045 * tfactors.T923i + + 0.0615476 + (5.0/3.0) * -0.00172407 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 55.64 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.307045 * tfactors.T923i - + 0.0615476 + (5.0/3.0) * -0.00172407 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_p_to_He4_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti48_to_He4_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + p --> He4 + Sc45 - // Ti48 + p --> He4 + Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.5759 + -29.6597 * tfactors.T9i + -79.222 * tfactors.T913i + 0.0710184 * tfactors.T913 + + -1.47173 * tfactors.T9 + 0.15944 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.5759 + -29.6597 * tfactors.T9i + -79.222 * tfactors.T913i + 0.0710184 * tfactors.T913 - + -1.47173 * tfactors.T9 + 0.15944 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.6597 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.222 * tfactors.T943i + (1.0/3.0) * 0.0710184 * tfactors.T923i + + -1.47173 + (5.0/3.0) * 0.15944 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.6597 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -79.222 * tfactors.T943i + (1.0/3.0) * 0.0710184 * tfactors.T923i - + -1.47173 + (5.0/3.0) * 0.15944 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_He4_to_n_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti48_to_n_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + He4 --> n + Cr51 - // Ti48 + He4 --> n + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 0.479256 + -31.1618 * tfactors.T9i + 1.94389 * tfactors.T913 + + 2.5871 * tfactors.T9 + -0.307303 * tfactors.T953; - // ths8r - ln_set_rate = 0.479256 + -31.1618 * tfactors.T9i + 1.94389 * tfactors.T913 - + 2.5871 * tfactors.T9 + -0.307303 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.1618 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.94389 * tfactors.T923i + + 2.5871 + (5.0/3.0) * -0.307303 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.1618 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.94389 * tfactors.T923i - + 2.5871 + (5.0/3.0) * -0.307303 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti48_He4_to_p_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti48_to_p_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti48 + He4 --> p + V51 - // Ti48 + He4 --> p + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -12.9707 + -13.3498 * tfactors.T9i + -34.2261 * tfactors.T913i + 38.6574 * tfactors.T913 + + -7.18743 * tfactors.T9 + 0.692255 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -12.9707 + -13.3498 * tfactors.T9i + -34.2261 * tfactors.T913i + 38.6574 * tfactors.T913 - + -7.18743 * tfactors.T9 + 0.692255 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.3498 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2261 * tfactors.T943i + (1.0/3.0) * 38.6574 * tfactors.T923i + + -7.18743 + (5.0/3.0) * 0.692255 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.3498 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2261 * tfactors.T943i + (1.0/3.0) * 38.6574 * tfactors.T923i - + -7.18743 + (5.0/3.0) * 0.692255 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_n_to_p_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti49_to_p_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + n --> p + Sc49 - // Ti49 + n --> p + Sc49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 120.282 + -19.7252 * tfactors.T9i + 204.555 * tfactors.T913i + -334.141 * tfactors.T913 + + 18.5078 * tfactors.T9 + -1.04158 * tfactors.T953 + 167.483 * tfactors.lnT9; - // rath - ln_set_rate = 120.282 + -19.7252 * tfactors.T9i + 204.555 * tfactors.T913i + -334.141 * tfactors.T913 - + 18.5078 * tfactors.T9 + -1.04158 * tfactors.T953 + 167.483 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.7252 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 204.555 * tfactors.T943i + (1.0/3.0) * -334.141 * tfactors.T923i + + 18.5078 + (5.0/3.0) * -1.04158 * tfactors.T923 + 167.483 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.7252 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 204.555 * tfactors.T943i + (1.0/3.0) * -334.141 * tfactors.T923i - + 18.5078 + (5.0/3.0) * -1.04158 * tfactors.T923 + 167.483 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_n_to_He4_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti49_to_He4_Ca46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + n --> He4 + Ca46 - // Ti49 + n --> He4 + Ca46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -106.775 + 100.098 * tfactors.T913 + + -14.6121 * tfactors.T9 + 1.09235 * tfactors.T953; - // ths8r - ln_set_rate = -106.775 + 100.098 * tfactors.T913 - + -14.6121 * tfactors.T9 + 1.09235 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 100.098 * tfactors.T923i + + -14.6121 + (5.0/3.0) * 1.09235 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 100.098 * tfactors.T923i - + -14.6121 + (5.0/3.0) * 1.09235 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_p_to_n_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti49_to_n_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + p --> n + V49 - // Ti49 + p --> n + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.9391 + -16.0629 * tfactors.T9i + -2.17107 * tfactors.T913 + + 1.10014 * tfactors.T9 + -0.0944408 * tfactors.T953; - // ths8r - ln_set_rate = 15.9391 + -16.0629 * tfactors.T9i + -2.17107 * tfactors.T913 - + 1.10014 * tfactors.T9 + -0.0944408 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 16.0629 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.17107 * tfactors.T923i + + 1.10014 + (5.0/3.0) * -0.0944408 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 16.0629 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.17107 * tfactors.T923i - + 1.10014 + (5.0/3.0) * -0.0944408 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_p_to_He4_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti49_to_He4_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + p --> He4 + Sc46 - // Ti49 + p --> He4 + Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -937.032 + -7.73881 * tfactors.T9i + -1603.15 * tfactors.T913i + 2650.58 * tfactors.T913 + + -159.776 * tfactors.T9 + 9.24163 * tfactors.T953 + -1237.15 * tfactors.lnT9; - // rath - ln_set_rate = -937.032 + -7.73881 * tfactors.T9i + -1603.15 * tfactors.T913i + 2650.58 * tfactors.T913 - + -159.776 * tfactors.T9 + 9.24163 * tfactors.T953 + -1237.15 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.73881 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1603.15 * tfactors.T943i + (1.0/3.0) * 2650.58 * tfactors.T923i + + -159.776 + (5.0/3.0) * 9.24163 * tfactors.T923 + -1237.15 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.73881 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1603.15 * tfactors.T943i + (1.0/3.0) * 2650.58 * tfactors.T923i - + -159.776 + (5.0/3.0) * 9.24163 * tfactors.T923 + -1237.15 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_He4_to_n_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti49_to_n_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + He4 --> n + Cr52 - // Ti49 + He4 --> n + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.814 + -81.8999 * tfactors.T913i + -0.331496 * tfactors.T913 + + -0.758416 * tfactors.T9 + 0.0413394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.814 + -81.8999 * tfactors.T913i + -0.331496 * tfactors.T913 - + -0.758416 * tfactors.T9 + 0.0413394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -81.8999 * tfactors.T943i + (1.0/3.0) * -0.331496 * tfactors.T923i + + -0.758416 + (5.0/3.0) * 0.0413394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -81.8999 * tfactors.T943i + (1.0/3.0) * -0.331496 * tfactors.T923i - + -0.758416 + (5.0/3.0) * 0.0413394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti49_He4_to_p_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti49_to_p_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti49 + He4 --> p + V52 - // Ti49 + He4 --> p + V52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 59.4896 + -28.9283 * tfactors.T9i + 209.633 * tfactors.T913i + -291.46 * tfactors.T913 + + 13.4258 * tfactors.T9 + -0.668366 * tfactors.T953 + 164.685 * tfactors.lnT9; - // rath - ln_set_rate = 59.4896 + -28.9283 * tfactors.T9i + 209.633 * tfactors.T913i + -291.46 * tfactors.T913 - + 13.4258 * tfactors.T9 + -0.668366 * tfactors.T953 + 164.685 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 28.9283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 209.633 * tfactors.T943i + (1.0/3.0) * -291.46 * tfactors.T923i + + 13.4258 + (5.0/3.0) * -0.668366 * tfactors.T923 + 164.685 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 28.9283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 209.633 * tfactors.T943i + (1.0/3.0) * -291.46 * tfactors.T923i - + 13.4258 + (5.0/3.0) * -0.668366 * tfactors.T923 + 164.685 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_n_to_He4_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti50_to_He4_Ca47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 + n --> He4 + Ca47 - // Ti50 + n --> He4 + Ca47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.7989 + -39.9212 * tfactors.T9i + -76.7758 * tfactors.T913i + -0.981924 * tfactors.T913 + + -0.52791 * tfactors.T9 + 0.0150723 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.7989 + -39.9212 * tfactors.T9i + -76.7758 * tfactors.T913i + -0.981924 * tfactors.T913 - + -0.52791 * tfactors.T9 + 0.0150723 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.9212 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.7758 * tfactors.T943i + (1.0/3.0) * -0.981924 * tfactors.T923i + + -0.52791 + (5.0/3.0) * 0.0150723 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.9212 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -76.7758 * tfactors.T943i + (1.0/3.0) * -0.981924 * tfactors.T923i - + -0.52791 + (5.0/3.0) * 0.0150723 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_p_to_n_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti50_to_n_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 + p --> n + V50 - // Ti50 + p --> n + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 4.70506 + -34.668 * tfactors.T9i + 13.156 * tfactors.T913 + + -2.27428 * tfactors.T9 + 0.204692 * tfactors.T953; - // ths8r - ln_set_rate = 4.70506 + -34.668 * tfactors.T9i + 13.156 * tfactors.T913 - + -2.27428 * tfactors.T9 + 0.204692 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 34.668 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.156 * tfactors.T923i + + -2.27428 + (5.0/3.0) * 0.204692 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 34.668 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 13.156 * tfactors.T923i - + -2.27428 + (5.0/3.0) * 0.204692 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_p_to_He4_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti50_to_He4_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 + p --> He4 + Sc47 - // Ti50 + p --> He4 + Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -977.055 + -10.952 * tfactors.T9i + -1637.36 * tfactors.T913i + 2730.59 * tfactors.T913 + + -164.393 * tfactors.T9 + 9.47988 * tfactors.T953 + -1271.98 * tfactors.lnT9; - // rath - ln_set_rate = -977.055 + -10.952 * tfactors.T9i + -1637.36 * tfactors.T913i + 2730.59 * tfactors.T913 - + -164.393 * tfactors.T9 + 9.47988 * tfactors.T953 + -1271.98 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1637.36 * tfactors.T943i + (1.0/3.0) * 2730.59 * tfactors.T923i + + -164.393 + (5.0/3.0) * 9.47988 * tfactors.T923 + -1271.98 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.952 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1637.36 * tfactors.T943i + (1.0/3.0) * 2730.59 * tfactors.T923i - + -164.393 + (5.0/3.0) * 9.47988 * tfactors.T923 + -1271.98 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti50_He4_to_n_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti50_to_n_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti50 + He4 --> n + Cr53 - // Ti50 + He4 --> n + Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -23.5021 + -20.7527 * tfactors.T9i + 21.17 * tfactors.T913 + + -0.195248 * tfactors.T9 + -0.121068 * tfactors.T953; - // ths8r - ln_set_rate = -23.5021 + -20.7527 * tfactors.T9i + 21.17 * tfactors.T913 - + -0.195248 * tfactors.T9 + -0.121068 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 20.7527 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.17 * tfactors.T923i + + -0.195248 + (5.0/3.0) * -0.121068 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 20.7527 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.17 * tfactors.T923i - + -0.195248 + (5.0/3.0) * -0.121068 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti51_n_to_He4_Ca48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ti51_to_He4_Ca48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti51 + n --> He4 + Ca48 - // Ti51 + n --> He4 + Ca48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 72.4516 + -12.4162 * tfactors.T9i + 343.859 * tfactors.T913i + -441.137 * tfactors.T913 + + 18.781 * tfactors.T9 + -0.911515 * tfactors.T953 + 254.789 * tfactors.lnT9; - // rath - ln_set_rate = 72.4516 + -12.4162 * tfactors.T9i + 343.859 * tfactors.T913i + -441.137 * tfactors.T913 - + 18.781 * tfactors.T9 + -0.911515 * tfactors.T953 + 254.789 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.4162 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 343.859 * tfactors.T943i + (1.0/3.0) * -441.137 * tfactors.T923i + + 18.781 + (5.0/3.0) * -0.911515 * tfactors.T923 + 254.789 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.4162 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 343.859 * tfactors.T943i + (1.0/3.0) * -441.137 * tfactors.T923i - + 18.781 + (5.0/3.0) * -0.911515 * tfactors.T923 + 254.789 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti51_p_to_n_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti51_to_n_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti51 + p --> n + V51 - // Ti51 + p --> n + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 121.807 + -5.7807 * tfactors.T9i + 213.317 * tfactors.T913i + -345.382 * tfactors.T913 + + 19.0423 * tfactors.T9 + -1.06972 * tfactors.T953 + 173.788 * tfactors.lnT9; - // rath - ln_set_rate = 121.807 + -5.7807 * tfactors.T9i + 213.317 * tfactors.T913i + -345.382 * tfactors.T913 - + 19.0423 * tfactors.T9 + -1.06972 * tfactors.T953 + 173.788 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.7807 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 213.317 * tfactors.T943i + (1.0/3.0) * -345.382 * tfactors.T923i + + 19.0423 + (5.0/3.0) * -1.06972 * tfactors.T923 + 173.788 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.7807 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 213.317 * tfactors.T943i + (1.0/3.0) * -345.382 * tfactors.T923i - + 19.0423 + (5.0/3.0) * -1.06972 * tfactors.T923 + 173.788 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti51_p_to_He4_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ti51_to_He4_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti51 + p --> He4 + Sc48 - // Ti51 + p --> He4 + Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -843.625 + 12.9889 * tfactors.T9i + -1740.8 * tfactors.T913i + 2683.45 * tfactors.T913 + + -154.78 * tfactors.T9 + 8.68561 * tfactors.T953 + -1291.82 * tfactors.lnT9; - // rath - ln_set_rate = -843.625 + 12.9889 * tfactors.T9i + -1740.8 * tfactors.T913i + 2683.45 * tfactors.T913 - + -154.78 * tfactors.T9 + 8.68561 * tfactors.T953 + -1291.82 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -12.9889 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1740.8 * tfactors.T943i + (1.0/3.0) * 2683.45 * tfactors.T923i + + -154.78 + (5.0/3.0) * 8.68561 * tfactors.T923 + -1291.82 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -12.9889 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1740.8 * tfactors.T943i + (1.0/3.0) * 2683.45 * tfactors.T923i - + -154.78 + (5.0/3.0) * 8.68561 * tfactors.T923 + -1291.82 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ti51_He4_to_n_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ti51_to_n_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ti51 + He4 --> n + Cr54 - // Ti51 + He4 --> n + Cr54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -987.778 + 15.8616 * tfactors.T9i + -1722.81 * tfactors.T913i + 2829.38 * tfactors.T913 + + -169.068 * tfactors.T9 + 9.70315 * tfactors.T953 + -1326.98 * tfactors.lnT9; - // rath - ln_set_rate = -987.778 + 15.8616 * tfactors.T9i + -1722.81 * tfactors.T913i + 2829.38 * tfactors.T913 - + -169.068 * tfactors.T9 + 9.70315 * tfactors.T953 + -1326.98 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -15.8616 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1722.81 * tfactors.T943i + (1.0/3.0) * 2829.38 * tfactors.T923i + + -169.068 + (5.0/3.0) * 9.70315 * tfactors.T923 + -1326.98 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -15.8616 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1722.81 * tfactors.T943i + (1.0/3.0) * 2829.38 * tfactors.T923i - + -169.068 + (5.0/3.0) * 9.70315 * tfactors.T923 + -1326.98 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V46_n_to_p_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V46_to_p_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V46 + n --> p + Ti46 - // V46 + n --> p + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.15 + -0.663329 * tfactors.T913 + + 0.174849 * tfactors.T9 + -0.0157869 * tfactors.T953; - // ths8r - ln_set_rate = 21.15 + -0.663329 * tfactors.T913 - + 0.174849 * tfactors.T9 + -0.0157869 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.663329 * tfactors.T923i + + 0.174849 + (5.0/3.0) * -0.0157869 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.663329 * tfactors.T923i - + 0.174849 + (5.0/3.0) * -0.0157869 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V46_n_to_He4_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V46_to_He4_Sc43_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V46 + n --> He4 + Sc43 - // V46 + n --> He4 + Sc43 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.52435 + 6.99126 * tfactors.T913 + + -0.552826 * tfactors.T9 + 0.0272052 * tfactors.T953; - // ths8r - ln_set_rate = 7.52435 + 6.99126 * tfactors.T913 - + -0.552826 * tfactors.T9 + 0.0272052 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 6.99126 * tfactors.T923i + + -0.552826 + (5.0/3.0) * 0.0272052 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 6.99126 * tfactors.T923i - + -0.552826 + (5.0/3.0) * 0.0272052 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V46_He4_to_p_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V46_to_p_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V46 + He4 --> p + Cr49 - // V46 + He4 --> p + Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.798 + -84.2255 * tfactors.T913i + -1.09776 * tfactors.T913 + + -0.495216 * tfactors.T9 + 0.0124719 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.798 + -84.2255 * tfactors.T913i + -1.09776 * tfactors.T913 - + -0.495216 * tfactors.T9 + 0.0124719 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.2255 * tfactors.T943i + (1.0/3.0) * -1.09776 * tfactors.T923i + + -0.495216 + (5.0/3.0) * 0.0124719 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.2255 * tfactors.T943i + (1.0/3.0) * -1.09776 * tfactors.T923i - + -0.495216 + (5.0/3.0) * 0.0124719 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_n_to_p_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V47_to_p_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + n --> p + Ti47 - // V47 + n --> p + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.3911 + -0.897943 * tfactors.T913 + + 0.233018 * tfactors.T9 + -0.0170844 * tfactors.T953; - // ths8r - ln_set_rate = 20.3911 + -0.897943 * tfactors.T913 - + 0.233018 * tfactors.T9 + -0.0170844 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.897943 * tfactors.T923i + + 0.233018 + (5.0/3.0) * -0.0170844 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.897943 * tfactors.T923i - + 0.233018 + (5.0/3.0) * -0.0170844 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_n_to_He4_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V47_to_He4_Sc44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + n --> He4 + Sc44 - // V47 + n --> He4 + Sc44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -34.4416 + 31.743 * tfactors.T913 + + -1.66241 * tfactors.T9 + -0.0278854 * tfactors.T953; - // ths8r - ln_set_rate = -34.4416 + 31.743 * tfactors.T913 - + -1.66241 * tfactors.T9 + -0.0278854 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 31.743 * tfactors.T923i + + -1.66241 + (5.0/3.0) * -0.0278854 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 31.743 * tfactors.T923i - + -1.66241 + (5.0/3.0) * -0.0278854 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_p_to_He4_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V47_to_He4_Ti44_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + p --> He4 + Ti44 - // V47 + p --> He4 + Ti44 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // chw0r + ln_set_rate = -76.6143 + -6.02945 * tfactors.T9i + 70.2835 * tfactors.T913 + + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; - // chw0r - ln_set_rate = -76.6143 + -6.02945 * tfactors.T9i + 70.2835 * tfactors.T913 - + -7.99061 * tfactors.T9 + 0.486213 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.02945 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i + + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.02945 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 70.2835 * tfactors.T923i - + -7.99061 + (5.0/3.0) * 0.486213 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_He4_to_n_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V47_to_n_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + He4 --> n + Mn50 - // V47 + He4 --> n + Mn50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.0783 + -58.2736 * tfactors.T9i + 0.0723126 * tfactors.T913 + + 0.772457 * tfactors.T9 + -0.0591176 * tfactors.T953; - // ths8r - ln_set_rate = 10.0783 + -58.2736 * tfactors.T9i + 0.0723126 * tfactors.T913 - + 0.772457 * tfactors.T9 + -0.0591176 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.2736 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.0723126 * tfactors.T923i + + 0.772457 + (5.0/3.0) * -0.0591176 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.2736 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.0723126 * tfactors.T923i - + 0.772457 + (5.0/3.0) * -0.0591176 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V47_He4_to_p_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V47_to_p_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V47 + He4 --> p + Cr50 - // V47 + He4 --> p + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.9106 + -84.2732 * tfactors.T913i + -1.10027 * tfactors.T913 + + -0.487084 * tfactors.T9 + 0.00453269 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.9106 + -84.2732 * tfactors.T913i + -1.10027 * tfactors.T913 - + -0.487084 * tfactors.T9 + 0.00453269 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.2732 * tfactors.T943i + (1.0/3.0) * -1.10027 * tfactors.T923i + + -0.487084 + (5.0/3.0) * 0.00453269 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.2732 * tfactors.T943i + (1.0/3.0) * -1.10027 * tfactors.T923i - + -0.487084 + (5.0/3.0) * 0.00453269 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_n_to_p_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V48_to_p_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + n --> p + Ti48 - // V48 + n --> p + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.5486 + -0.307045 * tfactors.T913 + + 0.0615476 * tfactors.T9 + -0.00172407 * tfactors.T953; - // ths8r - ln_set_rate = 19.5486 + -0.307045 * tfactors.T913 - + 0.0615476 * tfactors.T9 + -0.00172407 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.307045 * tfactors.T923i + + 0.0615476 + (5.0/3.0) * -0.00172407 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.307045 * tfactors.T923i - + 0.0615476 + (5.0/3.0) * -0.00172407 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_n_to_He4_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V48_to_He4_Sc45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + n --> He4 + Sc45 - // V48 + n --> He4 + Sc45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -5.87552 + 8.18067 * tfactors.T913 + + 1.50465 * tfactors.T9 + -0.224564 * tfactors.T953; - // ths8r - ln_set_rate = -5.87552 + 8.18067 * tfactors.T913 - + 1.50465 * tfactors.T9 + -0.224564 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 8.18067 * tfactors.T923i + + 1.50465 + (5.0/3.0) * -0.224564 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 8.18067 * tfactors.T923i - + 1.50465 + (5.0/3.0) * -0.224564 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_p_to_n_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V48_to_n_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + p --> n + Cr48 - // V48 + p --> n + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.7028 + -28.2982 * tfactors.T9i + 0.783544 * tfactors.T913 + + 0.521131 * tfactors.T9 + -0.0677724 * tfactors.T953; - // ths8r - ln_set_rate = 14.7028 + -28.2982 * tfactors.T9i + 0.783544 * tfactors.T913 - + 0.521131 * tfactors.T9 + -0.0677724 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 28.2982 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.783544 * tfactors.T923i + + 0.521131 + (5.0/3.0) * -0.0677724 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 28.2982 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.783544 * tfactors.T923i - + 0.521131 + (5.0/3.0) * -0.0677724 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_p_to_He4_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V48_to_He4_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + p --> He4 + Ti45 - // V48 + p --> He4 + Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 55.3696 + -7.0276 * tfactors.T9i + -81.7175 * tfactors.T913i + 5.07471 * tfactors.T913 + + -2.34907 * tfactors.T9 + 0.226169 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 55.3696 + -7.0276 * tfactors.T9i + -81.7175 * tfactors.T913i + 5.07471 * tfactors.T913 - + -2.34907 * tfactors.T9 + 0.226169 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.0276 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.7175 * tfactors.T943i + (1.0/3.0) * 5.07471 * tfactors.T923i + + -2.34907 + (5.0/3.0) * 0.226169 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.0276 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.7175 * tfactors.T943i + (1.0/3.0) * 5.07471 * tfactors.T923i - + -2.34907 + (5.0/3.0) * 0.226169 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_He4_to_n_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V48_to_n_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + He4 --> n + Mn51 - // V48 + He4 --> n + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -25.5516 + -21.8217 * tfactors.T9i + 20.8632 * tfactors.T913 + + 0.466645 * tfactors.T9 + -0.196969 * tfactors.T953; - // ths8r - ln_set_rate = -25.5516 + -21.8217 * tfactors.T9i + 20.8632 * tfactors.T913 - + 0.466645 * tfactors.T9 + -0.196969 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.8217 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 20.8632 * tfactors.T923i + + 0.466645 + (5.0/3.0) * -0.196969 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.8217 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 20.8632 * tfactors.T923i - + 0.466645 + (5.0/3.0) * -0.196969 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V48_He4_to_p_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V48_to_p_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V48 + He4 --> p + Cr51 - // V48 + He4 --> p + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.9483 + -84.3192 * tfactors.T913i + -1.84683 * tfactors.T913 + + -0.459124 * tfactors.T9 + 0.00700566 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.9483 + -84.3192 * tfactors.T913i + -1.84683 * tfactors.T913 - + -0.459124 * tfactors.T9 + 0.00700566 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.3192 * tfactors.T943i + (1.0/3.0) * -1.84683 * tfactors.T923i + + -0.459124 + (5.0/3.0) * 0.00700566 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.3192 * tfactors.T943i + (1.0/3.0) * -1.84683 * tfactors.T923i - + -0.459124 + (5.0/3.0) * 0.00700566 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_n_to_p_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V49_to_p_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + n --> p + Ti49 - // V49 + n --> p + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.9391 + -2.17107 * tfactors.T913 + + 1.10014 * tfactors.T9 + -0.0944408 * tfactors.T953; - // ths8r - ln_set_rate = 15.9391 + -2.17107 * tfactors.T913 - + 1.10014 * tfactors.T9 + -0.0944408 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.17107 * tfactors.T923i + + 1.10014 + (5.0/3.0) * -0.0944408 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.17107 * tfactors.T923i - + 1.10014 + (5.0/3.0) * -0.0944408 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_n_to_He4_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V49_to_He4_Sc46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + n --> He4 + Sc46 - // V49 + n --> He4 + Sc46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -906.502 + 8.26422 * tfactors.T9i + -1592.71 * tfactors.T913i + 2609.63 * tfactors.T913 + + -155.96 * tfactors.T9 + 8.94971 * tfactors.T953 + -1223.97 * tfactors.lnT9; - // rath - ln_set_rate = -906.502 + 8.26422 * tfactors.T9i + -1592.71 * tfactors.T913i + 2609.63 * tfactors.T913 - + -155.96 * tfactors.T9 + 8.94971 * tfactors.T953 + -1223.97 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -8.26422 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1592.71 * tfactors.T943i + (1.0/3.0) * 2609.63 * tfactors.T923i + + -155.96 + (5.0/3.0) * 8.94971 * tfactors.T923 + -1223.97 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -8.26422 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1592.71 * tfactors.T943i + (1.0/3.0) * 2609.63 * tfactors.T923i - + -155.96 + (5.0/3.0) * 8.94971 * tfactors.T923 + -1223.97 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_p_to_n_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V49_to_n_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + p --> n + Cr49 - // V49 + p --> n + Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.8188 + -39.5575 * tfactors.T9i + -1.62261 * tfactors.T913 + + 0.507111 * tfactors.T9 + -0.0492268 * tfactors.T953; - // ths8r - ln_set_rate = 20.8188 + -39.5575 * tfactors.T9i + -1.62261 * tfactors.T913 - + 0.507111 * tfactors.T9 + -0.0492268 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.5575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.62261 * tfactors.T923i + + 0.507111 + (5.0/3.0) * -0.0492268 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.5575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.62261 * tfactors.T923i - + 0.507111 + (5.0/3.0) * -0.0492268 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_p_to_He4_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V49_to_He4_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + p --> He4 + Ti46 - // V49 + p --> He4 + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -20.0996 + -34.217 * tfactors.T913i + 47.2584 * tfactors.T913 + + -9.18871 * tfactors.T9 + 0.87823 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -20.0996 + -34.217 * tfactors.T913i + 47.2584 * tfactors.T913 - + -9.18871 * tfactors.T9 + 0.87823 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -34.217 * tfactors.T943i + (1.0/3.0) * 47.2584 * tfactors.T923i + + -9.18871 + (5.0/3.0) * 0.87823 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -34.217 * tfactors.T943i + (1.0/3.0) * 47.2584 * tfactors.T923i - + -9.18871 + (5.0/3.0) * 0.87823 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_He4_to_n_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V49_to_n_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + He4 --> n + Mn52 - // V49 + He4 --> n + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -3.10657 + -33.6287 * tfactors.T9i + 5.72895 * tfactors.T913 + + 1.74506 * tfactors.T9 + -0.232362 * tfactors.T953; - // ths8r - ln_set_rate = -3.10657 + -33.6287 * tfactors.T9i + 5.72895 * tfactors.T913 - + 1.74506 * tfactors.T9 + -0.232362 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.6287 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.72895 * tfactors.T923i + + 1.74506 + (5.0/3.0) * -0.232362 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.6287 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.72895 * tfactors.T923i - + 1.74506 + (5.0/3.0) * -0.232362 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V49_He4_to_p_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V49_to_p_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V49 + He4 --> p + Cr52 - // V49 + He4 --> p + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.428 + -84.3633 * tfactors.T913i + 2.73419 * tfactors.T913 + + -2.05655 * tfactors.T9 + 0.203834 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.428 + -84.3633 * tfactors.T913i + 2.73419 * tfactors.T913 - + -2.05655 * tfactors.T9 + 0.203834 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.3633 * tfactors.T943i + (1.0/3.0) * 2.73419 * tfactors.T923i + + -2.05655 + (5.0/3.0) * 0.203834 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.3633 * tfactors.T943i + (1.0/3.0) * 2.73419 * tfactors.T923i - + -2.05655 + (5.0/3.0) * 0.203834 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_n_to_p_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V50_to_p_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + n --> p + Ti50 - // V50 + n --> p + Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 2.14011 + 13.156 * tfactors.T913 + + -2.27428 * tfactors.T9 + 0.204692 * tfactors.T953; - // ths8r - ln_set_rate = 2.14011 + 13.156 * tfactors.T913 - + -2.27428 * tfactors.T9 + 0.204692 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 13.156 * tfactors.T923i + + -2.27428 + (5.0/3.0) * 0.204692 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 13.156 * tfactors.T923i - + -2.27428 + (5.0/3.0) * 0.204692 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_n_to_He4_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V50_to_He4_Sc47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + n --> He4 + Sc47 - // V50 + n --> He4 + Sc47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -71.6649 + 66.0687 * tfactors.T913 + + -8.06344 * tfactors.T9 + 0.527546 * tfactors.T953; - // ths8r - ln_set_rate = -71.6649 + 66.0687 * tfactors.T913 - + -8.06344 * tfactors.T9 + 0.527546 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 66.0687 * tfactors.T923i + + -8.06344 + (5.0/3.0) * 0.527546 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 66.0687 * tfactors.T923i - + -8.06344 + (5.0/3.0) * 0.527546 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_p_to_n_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V50_to_n_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + p --> n + Cr50 - // V50 + p --> n + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.9003 + -34.2216 * tfactors.T913i + 18.9337 * tfactors.T913 + + -4.3348 * tfactors.T9 + 0.409807 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 17.9003 + -34.2216 * tfactors.T913i + 18.9337 * tfactors.T913 - + -4.3348 * tfactors.T9 + 0.409807 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 18.9337 * tfactors.T923i + + -4.3348 + (5.0/3.0) * 0.409807 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 18.9337 * tfactors.T923i - + -4.3348 + (5.0/3.0) * 0.409807 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_p_to_He4_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V50_to_He4_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + p --> He4 + Ti47 - // V50 + p --> He4 + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -50.621 + -34.2216 * tfactors.T913i + 78.8919 * tfactors.T913 + + -16.0561 * tfactors.T9 + 1.55251 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -50.621 + -34.2216 * tfactors.T913i + 78.8919 * tfactors.T913 - + -16.0561 * tfactors.T9 + 1.55251 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 78.8919 * tfactors.T923i + + -16.0561 + (5.0/3.0) * 1.55251 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 78.8919 * tfactors.T923i - + -16.0561 + (5.0/3.0) * 1.55251 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_He4_to_n_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V50_to_n_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + He4 --> n + Mn53 - // V50 + He4 --> n + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -124.679 + -2.0894 * tfactors.T9i + 115.52 * tfactors.T913 + + -16.7944 * tfactors.T9 + 1.23427 * tfactors.T953; - // ths8r - ln_set_rate = -124.679 + -2.0894 * tfactors.T9i + 115.52 * tfactors.T913 - + -16.7944 * tfactors.T9 + 1.23427 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.0894 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 115.52 * tfactors.T923i + + -16.7944 + (5.0/3.0) * 1.23427 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.0894 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 115.52 * tfactors.T923i - + -16.7944 + (5.0/3.0) * 1.23427 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V50_He4_to_p_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V50_to_p_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V50 + He4 --> p + Cr53 - // V50 + He4 --> p + Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 43.0514 + -84.4058 * tfactors.T913i + 13.5454 * tfactors.T913 + + -3.26175 * tfactors.T9 + 0.249401 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 43.0514 + -84.4058 * tfactors.T913i + 13.5454 * tfactors.T913 - + -3.26175 * tfactors.T9 + 0.249401 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -84.4058 * tfactors.T943i + (1.0/3.0) * 13.5454 * tfactors.T923i + + -3.26175 + (5.0/3.0) * 0.249401 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -84.4058 * tfactors.T943i + (1.0/3.0) * 13.5454 * tfactors.T923i - + -3.26175 + (5.0/3.0) * 0.249401 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_n_to_p_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V51_to_p_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + n --> p + Ti51 - // V51 + n --> p + Ti51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 121.114 + -25.3807 * tfactors.T9i + 213.317 * tfactors.T913i + -345.382 * tfactors.T913 + + 19.0423 * tfactors.T9 + -1.06972 * tfactors.T953 + 173.788 * tfactors.lnT9; - // rath - ln_set_rate = 121.114 + -25.3807 * tfactors.T9i + 213.317 * tfactors.T913i + -345.382 * tfactors.T913 - + 19.0423 * tfactors.T9 + -1.06972 * tfactors.T953 + 173.788 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.3807 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 213.317 * tfactors.T943i + (1.0/3.0) * -345.382 * tfactors.T923i + + 19.0423 + (5.0/3.0) * -1.06972 * tfactors.T923 + 173.788 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.3807 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 213.317 * tfactors.T943i + (1.0/3.0) * -345.382 * tfactors.T923i - + 19.0423 + (5.0/3.0) * -1.06972 * tfactors.T923 + 173.788 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_n_to_He4_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V51_to_He4_Sc48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + n --> He4 + Sc48 - // V51 + n --> He4 + Sc48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -923.883 + -8.95576 * tfactors.T9i + -1621.99 * tfactors.T913i + 2659.5 * tfactors.T913 + + -158.959 * tfactors.T9 + 9.12514 * tfactors.T953 + -1247.44 * tfactors.lnT9; - // rath - ln_set_rate = -923.883 + -8.95576 * tfactors.T9i + -1621.99 * tfactors.T913i + 2659.5 * tfactors.T913 - + -158.959 * tfactors.T9 + 9.12514 * tfactors.T953 + -1247.44 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.95576 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1621.99 * tfactors.T943i + (1.0/3.0) * 2659.5 * tfactors.T923i + + -158.959 + (5.0/3.0) * 9.12514 * tfactors.T923 + -1247.44 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.95576 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1621.99 * tfactors.T943i + (1.0/3.0) * 2659.5 * tfactors.T923i - + -158.959 + (5.0/3.0) * 9.12514 * tfactors.T923 + -1247.44 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_p_to_n_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V51_to_n_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + p --> n + Cr51 - // V51 + p --> n + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.1388 + -17.812 * tfactors.T9i + -0.462299 * tfactors.T913 + + 0.925265 * tfactors.T9 + -0.103818 * tfactors.T953; - // ths8r - ln_set_rate = 15.1388 + -17.812 * tfactors.T9i + -0.462299 * tfactors.T913 - + 0.925265 * tfactors.T9 + -0.103818 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 17.812 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.462299 * tfactors.T923i + + 0.925265 + (5.0/3.0) * -0.103818 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 17.812 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.462299 * tfactors.T923i - + 0.925265 + (5.0/3.0) * -0.103818 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_p_to_He4_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V51_to_He4_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + p --> He4 + Ti48 - // V51 + p --> He4 + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -13.7548 + -34.2261 * tfactors.T913i + 38.6574 * tfactors.T913 + + -7.18743 * tfactors.T9 + 0.692255 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -13.7548 + -34.2261 * tfactors.T913i + 38.6574 * tfactors.T913 - + -7.18743 * tfactors.T9 + 0.692255 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -34.2261 * tfactors.T943i + (1.0/3.0) * 38.6574 * tfactors.T923i + + -7.18743 + (5.0/3.0) * 0.692255 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -34.2261 * tfactors.T943i + (1.0/3.0) * 38.6574 * tfactors.T923i - + -7.18743 + (5.0/3.0) * 0.692255 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_He4_to_n_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V51_to_n_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + He4 --> n + Mn54 - // V51 + He4 --> n + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -8.83794 + -26.6023 * tfactors.T9i + 7.07865 * tfactors.T913 + + 2.24997 * tfactors.T9 + -0.318964 * tfactors.T953; - // ths8r - ln_set_rate = -8.83794 + -26.6023 * tfactors.T9i + 7.07865 * tfactors.T913 - + 2.24997 * tfactors.T9 + -0.318964 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.6023 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.07865 * tfactors.T923i + + 2.24997 + (5.0/3.0) * -0.318964 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.6023 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.07865 * tfactors.T923i - + 2.24997 + (5.0/3.0) * -0.318964 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V51_He4_to_p_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V51_to_p_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V51 + He4 --> p + Cr54 - // V51 + He4 --> p + Cr54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -98.078 + -1.54216 * tfactors.T9i + -35.2237 * tfactors.T913i + 131.726 * tfactors.T913 + + -29.7395 * tfactors.T9 + 3.03809 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -98.078 + -1.54216 * tfactors.T9i + -35.2237 * tfactors.T913i + 131.726 * tfactors.T913 - + -29.7395 * tfactors.T9 + 3.03809 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.54216 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2237 * tfactors.T943i + (1.0/3.0) * 131.726 * tfactors.T923i + + -29.7395 + (5.0/3.0) * 3.03809 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.54216 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -35.2237 * tfactors.T943i + (1.0/3.0) * 131.726 * tfactors.T923i - + -29.7395 + (5.0/3.0) * 3.03809 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V52_n_to_He4_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_V52_to_He4_Sc49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V52 + n --> He4 + Sc49 - // V52 + n --> He4 + Sc49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -13.0046 + -2.2017 * tfactors.T9i + 174.784 * tfactors.T913i + -175.991 * tfactors.T913 + + 2.92402 * tfactors.T9 + 0.0459501 * tfactors.T953 + 127.478 * tfactors.lnT9; - // rath - ln_set_rate = -13.0046 + -2.2017 * tfactors.T9i + 174.784 * tfactors.T913i + -175.991 * tfactors.T913 - + 2.92402 * tfactors.T9 + 0.0459501 * tfactors.T953 + 127.478 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.2017 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 174.784 * tfactors.T943i + (1.0/3.0) * -175.991 * tfactors.T923i + + 2.92402 + (5.0/3.0) * 0.0459501 * tfactors.T923 + 127.478 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.2017 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 174.784 * tfactors.T943i + (1.0/3.0) * -175.991 * tfactors.T923i - + 2.92402 + (5.0/3.0) * 0.0459501 * tfactors.T923 + 127.478 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V52_p_to_n_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V52_to_n_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V52 + p --> n + Cr52 - // V52 + p --> n + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 130.283 + -6.04059 * tfactors.T9i + 225.572 * tfactors.T913i + -367.914 * tfactors.T913 + + 20.4967 * tfactors.T9 + -1.16016 * tfactors.T953 + 184.15 * tfactors.lnT9; - // rath - ln_set_rate = 130.283 + -6.04059 * tfactors.T9i + 225.572 * tfactors.T913i + -367.914 * tfactors.T913 - + 20.4967 * tfactors.T9 + -1.16016 * tfactors.T953 + 184.15 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.04059 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 225.572 * tfactors.T943i + (1.0/3.0) * -367.914 * tfactors.T923i + + 20.4967 + (5.0/3.0) * -1.16016 * tfactors.T923 + 184.15 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.04059 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 225.572 * tfactors.T943i + (1.0/3.0) * -367.914 * tfactors.T923i - + 20.4967 + (5.0/3.0) * -1.16016 * tfactors.T923 + 184.15 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V52_p_to_He4_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_V52_to_He4_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V52 + p --> He4 + Ti49 - // V52 + p --> He4 + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 60.9203 + -5.89339 * tfactors.T9i + 209.633 * tfactors.T913i + -291.46 * tfactors.T913 + + 13.4258 * tfactors.T9 + -0.668366 * tfactors.T953 + 164.685 * tfactors.lnT9; - // rath - ln_set_rate = 60.9203 + -5.89339 * tfactors.T9i + 209.633 * tfactors.T913i + -291.46 * tfactors.T913 - + 13.4258 * tfactors.T9 + -0.668366 * tfactors.T953 + 164.685 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.89339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 209.633 * tfactors.T943i + (1.0/3.0) * -291.46 * tfactors.T923i + + 13.4258 + (5.0/3.0) * -0.668366 * tfactors.T923 + 164.685 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.89339 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 209.633 * tfactors.T943i + (1.0/3.0) * -291.46 * tfactors.T923i - + 13.4258 + (5.0/3.0) * -0.668366 * tfactors.T923 + 164.685 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_V52_He4_to_n_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_V52_to_n_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // V52 + He4 --> n + Mn55 - // V52 + He4 --> n + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -1026.77 + 16.489 * tfactors.T9i + -1790.25 * tfactors.T913i + 2939.64 * tfactors.T913 + + -175.533 * tfactors.T9 + 10.0701 * tfactors.T953 + -1379.09 * tfactors.lnT9; - // rath - ln_set_rate = -1026.77 + 16.489 * tfactors.T9i + -1790.25 * tfactors.T913i + 2939.64 * tfactors.T913 - + -175.533 * tfactors.T9 + 10.0701 * tfactors.T953 + -1379.09 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -16.489 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1790.25 * tfactors.T943i + (1.0/3.0) * 2939.64 * tfactors.T923i + + -175.533 + (5.0/3.0) * 10.0701 * tfactors.T923 + -1379.09 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -16.489 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1790.25 * tfactors.T943i + (1.0/3.0) * 2939.64 * tfactors.T923i - + -175.533 + (5.0/3.0) * 10.0701 * tfactors.T923 + -1379.09 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_n_to_p_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr48_to_p_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + n --> p + V48 - // Cr48 + n --> p + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.9 + 0.783544 * tfactors.T913 + + 0.521131 * tfactors.T9 + -0.0677724 * tfactors.T953; - // ths8r - ln_set_rate = 16.9 + 0.783544 * tfactors.T913 - + 0.521131 * tfactors.T9 + -0.0677724 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.783544 * tfactors.T923i + + 0.521131 + (5.0/3.0) * -0.0677724 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.783544 * tfactors.T923i - + 0.521131 + (5.0/3.0) * -0.0677724 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_n_to_He4_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr48_to_He4_Ti45_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + n --> He4 + Ti45 - // Cr48 + n --> He4 + Ti45 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -27.4028 + 29.3634 * tfactors.T913 + + -2.63599 * tfactors.T9 + 0.159116 * tfactors.T953; - // ths8r - ln_set_rate = -27.4028 + 29.3634 * tfactors.T913 - + -2.63599 * tfactors.T9 + 0.159116 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 29.3634 * tfactors.T923i + + -2.63599 + (5.0/3.0) * 0.159116 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 29.3634 * tfactors.T923i - + -2.63599 + (5.0/3.0) * 0.159116 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr48_He4_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr48_to_p_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr48 + He4 --> p + Mn51 - // Cr48 + He4 --> p + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2276 + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_n_to_p_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr49_to_p_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 + n --> p + V49 - // Cr49 + n --> p + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.1065 + -1.62261 * tfactors.T913 + + 0.507111 * tfactors.T9 + -0.0492268 * tfactors.T953; - // ths8r - ln_set_rate = 21.1065 + -1.62261 * tfactors.T913 - + 0.507111 * tfactors.T9 + -0.0492268 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.62261 * tfactors.T923i + + 0.507111 + (5.0/3.0) * -0.0492268 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.62261 * tfactors.T923i - + 0.507111 + (5.0/3.0) * -0.0492268 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_n_to_He4_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr49_to_He4_Ti46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 + n --> He4 + Ti46 - // Cr49 + n --> He4 + Ti46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.4786 + -2.81456 * tfactors.T913 + + 1.61029 * tfactors.T9 + -0.138467 * tfactors.T953; - // ths8r - ln_set_rate = 13.4786 + -2.81456 * tfactors.T913 - + 1.61029 * tfactors.T9 + -0.138467 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.81456 * tfactors.T923i + + 1.61029 + (5.0/3.0) * -0.138467 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.81456 * tfactors.T923i - + 1.61029 + (5.0/3.0) * -0.138467 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_p_to_He4_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr49_to_He4_V46_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 + p --> He4 + V46 - // Cr49 + p --> He4 + V46 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.2978 + -39.3789 * tfactors.T9i + -84.2255 * tfactors.T913i + -1.09776 * tfactors.T913 + + -0.495216 * tfactors.T9 + 0.0124719 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.2978 + -39.3789 * tfactors.T9i + -84.2255 * tfactors.T913i + -1.09776 * tfactors.T913 - + -0.495216 * tfactors.T9 + 0.0124719 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.3789 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.2255 * tfactors.T943i + (1.0/3.0) * -1.09776 * tfactors.T923i + + -0.495216 + (5.0/3.0) * 0.0124719 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.3789 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.2255 * tfactors.T943i + (1.0/3.0) * -1.09776 * tfactors.T923i - + -0.495216 + (5.0/3.0) * 0.0124719 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_He4_to_n_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr49_to_n_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 + He4 --> n + Fe52 - // Cr49 + He4 --> n + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -14.2485 + -30.697 * tfactors.T9i + 14.3781 * tfactors.T913 + + 0.0859569 * tfactors.T9 + -0.0900604 * tfactors.T953; - // ths8r - ln_set_rate = -14.2485 + -30.697 * tfactors.T9i + 14.3781 * tfactors.T913 - + 0.0859569 * tfactors.T9 + -0.0900604 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 14.3781 * tfactors.T923i + + 0.0859569 + (5.0/3.0) * -0.0900604 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.697 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 14.3781 * tfactors.T923i - + 0.0859569 + (5.0/3.0) * -0.0900604 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr49_He4_to_p_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr49_to_p_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr49 + He4 --> p + Mn52 - // Cr49 + He4 --> p + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 52.5075 + -86.7913 * tfactors.T913i + 10.6892 * tfactors.T913 + + -4.01586 * tfactors.T9 + 0.411275 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 52.5075 + -86.7913 * tfactors.T913i + 10.6892 * tfactors.T913 - + -4.01586 * tfactors.T9 + 0.411275 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -86.7913 * tfactors.T943i + (1.0/3.0) * 10.6892 * tfactors.T923i + + -4.01586 + (5.0/3.0) * 0.411275 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -86.7913 * tfactors.T943i + (1.0/3.0) * 10.6892 * tfactors.T923i - + -4.01586 + (5.0/3.0) * 0.411275 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_n_to_p_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr50_to_p_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + n --> p + V50 - // Cr50 + n --> p + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.4653 + -2.9661 * tfactors.T9i + -34.2216 * tfactors.T913i + 18.9337 * tfactors.T913 + + -4.3348 * tfactors.T9 + 0.409807 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.4653 + -2.9661 * tfactors.T9i + -34.2216 * tfactors.T913i + 18.9337 * tfactors.T913 - + -4.3348 * tfactors.T9 + 0.409807 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.9661 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 18.9337 * tfactors.T923i + + -4.3348 + (5.0/3.0) * 0.409807 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.9661 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -34.2216 * tfactors.T943i + (1.0/3.0) * 18.9337 * tfactors.T923i - + -4.3348 + (5.0/3.0) * 0.409807 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_n_to_He4_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr50_to_He4_Ti47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + n --> He4 + Ti47 - // Cr50 + n --> He4 + Ti47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -108.708 + 104.649 * tfactors.T913 + + -15.3856 * tfactors.T9 + 1.13897 * tfactors.T953; - // ths8r - ln_set_rate = -108.708 + 104.649 * tfactors.T913 - + -15.3856 * tfactors.T9 + 1.13897 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 104.649 * tfactors.T923i + + -15.3856 + (5.0/3.0) * 1.13897 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 104.649 * tfactors.T923i - + -15.3856 + (5.0/3.0) * 1.13897 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_p_to_n_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr50_to_n_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + p --> n + Mn50 - // Cr50 + p --> n + Mn50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.5859 + -97.6522 * tfactors.T9i + -1.04612 * tfactors.T913 + + 0.340541 * tfactors.T9 + -0.0370932 * tfactors.T953; - // ths8r - ln_set_rate = 21.5859 + -97.6522 * tfactors.T9i + -1.04612 * tfactors.T913 - + 0.340541 * tfactors.T9 + -0.0370932 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 97.6522 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.04612 * tfactors.T923i + + 0.340541 + (5.0/3.0) * -0.0370932 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 97.6522 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.04612 * tfactors.T923i - + 0.340541 + (5.0/3.0) * -0.0370932 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_p_to_He4_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr50_to_He4_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + p --> He4 + V47 - // Cr50 + p --> He4 + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.5904 + -39.3786 * tfactors.T9i + -84.2732 * tfactors.T913i + -1.10027 * tfactors.T913 + + -0.487084 * tfactors.T9 + 0.00453269 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.5904 + -39.3786 * tfactors.T9i + -84.2732 * tfactors.T913i + -1.10027 * tfactors.T913 - + -0.487084 * tfactors.T9 + 0.00453269 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 39.3786 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.2732 * tfactors.T943i + (1.0/3.0) * -1.10027 * tfactors.T923i + + -0.487084 + (5.0/3.0) * 0.00453269 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 39.3786 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.2732 * tfactors.T943i + (1.0/3.0) * -1.10027 * tfactors.T923i - + -0.487084 + (5.0/3.0) * 0.00453269 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_He4_to_n_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr50_to_n_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + He4 --> n + Fe53 - // Cr50 + He4 --> n + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.8056 + -57.5651 * tfactors.T9i + -0.146952 * tfactors.T913 + + 1.12217 * tfactors.T9 + -0.10318 * tfactors.T953; - // ths8r - ln_set_rate = 11.8056 + -57.5651 * tfactors.T9i + -0.146952 * tfactors.T913 - + 1.12217 * tfactors.T9 + -0.10318 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 57.5651 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.146952 * tfactors.T923i + + 1.12217 + (5.0/3.0) * -0.10318 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 57.5651 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.146952 * tfactors.T923i - + 1.12217 + (5.0/3.0) * -0.10318 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr50_He4_to_p_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr50_to_p_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr50 + He4 --> p + Mn53 - // Cr50 + He4 --> p + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -67.5619 + -5.0555 * tfactors.T9i + -36.1913 * tfactors.T913i + 99.0857 * tfactors.T913 + + -20.8943 * tfactors.T9 + 2.06209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -67.5619 + -5.0555 * tfactors.T9i + -36.1913 * tfactors.T913i + 99.0857 * tfactors.T913 - + -20.8943 * tfactors.T9 + 2.06209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.0555 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1913 * tfactors.T943i + (1.0/3.0) * 99.0857 * tfactors.T923i + + -20.8943 + (5.0/3.0) * 2.06209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.0555 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1913 * tfactors.T943i + (1.0/3.0) * 99.0857 * tfactors.T923i - + -20.8943 + (5.0/3.0) * 2.06209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_n_to_p_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr51_to_p_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + n --> p + V51 - // Cr51 + n --> p + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.1388 + -0.462299 * tfactors.T913 + + 0.925265 * tfactors.T9 + -0.103818 * tfactors.T953; - // ths8r - ln_set_rate = 15.1388 + -0.462299 * tfactors.T913 - + 0.925265 * tfactors.T9 + -0.103818 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.462299 * tfactors.T923i + + 0.925265 + (5.0/3.0) * -0.103818 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.462299 * tfactors.T923i - + 0.925265 + (5.0/3.0) * -0.103818 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_n_to_He4_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr51_to_He4_Ti48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + n --> He4 + Ti48 - // Cr51 + n --> He4 + Ti48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -0.304828 + 1.94389 * tfactors.T913 + + 2.5871 * tfactors.T9 + -0.307303 * tfactors.T953; - // ths8r - ln_set_rate = -0.304828 + 1.94389 * tfactors.T913 - + 2.5871 * tfactors.T9 + -0.307303 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.94389 * tfactors.T923i + + 2.5871 + (5.0/3.0) * -0.307303 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.94389 * tfactors.T923i - + 2.5871 + (5.0/3.0) * -0.307303 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_p_to_n_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr51_to_n_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + p --> n + Mn51 - // Cr51 + p --> n + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.6943 + -46.2998 * tfactors.T9i + -1.37768 * tfactors.T913 + + 0.466991 * tfactors.T9 + -0.0461074 * tfactors.T953; - // ths8r - ln_set_rate = 20.6943 + -46.2998 * tfactors.T9i + -1.37768 * tfactors.T913 - + 0.466991 * tfactors.T9 + -0.0461074 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.2998 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37768 * tfactors.T923i + + 0.466991 + (5.0/3.0) * -0.0461074 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.2998 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.37768 * tfactors.T923i - + 0.466991 + (5.0/3.0) * -0.0461074 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_p_to_He4_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr51_to_He4_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + p --> He4 + V48 - // Cr51 + p --> He4 + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.3614 + -24.4782 * tfactors.T9i + -84.3192 * tfactors.T913i + -1.84683 * tfactors.T913 + + -0.459124 * tfactors.T9 + 0.00700566 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.3614 + -24.4782 * tfactors.T9i + -84.3192 * tfactors.T913i + -1.84683 * tfactors.T913 - + -0.459124 * tfactors.T9 + 0.00700566 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.4782 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.3192 * tfactors.T943i + (1.0/3.0) * -1.84683 * tfactors.T923i + + -0.459124 + (5.0/3.0) * 0.00700566 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.4782 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.3192 * tfactors.T943i + (1.0/3.0) * -1.84683 * tfactors.T923i - + -0.459124 + (5.0/3.0) * 0.00700566 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_He4_to_n_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr51_to_n_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + He4 --> n + Fe54 - // Cr51 + He4 --> n + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -86.4622 + -9.77972 * tfactors.T9i + 77.6519 * tfactors.T913 + + -9.70923 * tfactors.T9 + 0.625406 * tfactors.T953; - // ths8r - ln_set_rate = -86.4622 + -9.77972 * tfactors.T9i + 77.6519 * tfactors.T913 - + -9.70923 * tfactors.T9 + 0.625406 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.77972 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 77.6519 * tfactors.T923i + + -9.70923 + (5.0/3.0) * 0.625406 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.77972 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 77.6519 * tfactors.T923i - + -9.70923 + (5.0/3.0) * 0.625406 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr51_He4_to_p_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr51_to_p_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr51 + He4 --> p + Mn54 - // Cr51 + He4 --> p + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -42.067 + -8.79032 * tfactors.T9i + -36.1955 * tfactors.T913i + 69.5086 * tfactors.T913 + + -14.1484 * tfactors.T9 + 1.38598 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -42.067 + -8.79032 * tfactors.T9i + -36.1955 * tfactors.T913i + 69.5086 * tfactors.T913 - + -14.1484 * tfactors.T9 + 1.38598 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.79032 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1955 * tfactors.T943i + (1.0/3.0) * 69.5086 * tfactors.T923i + + -14.1484 + (5.0/3.0) * 1.38598 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.79032 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1955 * tfactors.T943i + (1.0/3.0) * 69.5086 * tfactors.T923i - + -14.1484 + (5.0/3.0) * 1.38598 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_n_to_p_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr52_to_p_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + n --> p + V52 - // Cr52 + n --> p + V52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = 132.229 + -43.1054 * tfactors.T9i + 225.572 * tfactors.T913i + -367.914 * tfactors.T913 + + 20.4967 * tfactors.T9 + -1.16016 * tfactors.T953 + 184.15 * tfactors.lnT9; - // rath - ln_set_rate = 132.229 + -43.1054 * tfactors.T9i + 225.572 * tfactors.T913i + -367.914 * tfactors.T913 - + 20.4967 * tfactors.T9 + -1.16016 * tfactors.T953 + 184.15 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 43.1054 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 225.572 * tfactors.T943i + (1.0/3.0) * -367.914 * tfactors.T923i + + 20.4967 + (5.0/3.0) * -1.16016 * tfactors.T923 + 184.15 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 43.1054 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 225.572 * tfactors.T943i + (1.0/3.0) * -367.914 * tfactors.T923i - + 20.4967 + (5.0/3.0) * -1.16016 * tfactors.T923 + 184.15 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_n_to_He4_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr52_to_He4_Ti49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + n --> He4 + Ti49 - // Cr52 + n --> He4 + Ti49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.1906 + -14.0615 * tfactors.T9i + -81.8999 * tfactors.T913i + -0.331496 * tfactors.T913 + + -0.758416 * tfactors.T9 + 0.0413394 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.1906 + -14.0615 * tfactors.T9i + -81.8999 * tfactors.T913i + -0.331496 * tfactors.T913 - + -0.758416 * tfactors.T9 + 0.0413394 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 14.0615 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.8999 * tfactors.T943i + (1.0/3.0) * -0.331496 * tfactors.T923i + + -0.758416 + (5.0/3.0) * 0.0413394 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 14.0615 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -81.8999 * tfactors.T943i + (1.0/3.0) * -0.331496 * tfactors.T923i - + -0.758416 + (5.0/3.0) * 0.0413394 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_p_to_n_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr52_to_n_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + p --> n + Mn52 - // Cr52 + p --> n + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5136 + -63.7533 * tfactors.T9i + 0.50599 * tfactors.T913 + + 0.283832 * tfactors.T9 + -0.0422814 * tfactors.T953; - // ths8r - ln_set_rate = 20.5136 + -63.7533 * tfactors.T9i + 0.50599 * tfactors.T913 - + 0.283832 * tfactors.T9 + -0.0422814 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 63.7533 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.50599 * tfactors.T923i + + 0.283832 + (5.0/3.0) * -0.0422814 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 63.7533 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.50599 * tfactors.T923i - + 0.283832 + (5.0/3.0) * -0.0422814 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_p_to_He4_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr52_to_He4_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + p --> He4 + V49 - // Cr52 + p --> He4 + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.8046 + -30.1245 * tfactors.T9i + -84.3633 * tfactors.T913i + 2.73419 * tfactors.T913 + + -2.05655 * tfactors.T9 + 0.203834 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.8046 + -30.1245 * tfactors.T9i + -84.3633 * tfactors.T913i + 2.73419 * tfactors.T913 - + -2.05655 * tfactors.T9 + 0.203834 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1245 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.3633 * tfactors.T943i + (1.0/3.0) * 2.73419 * tfactors.T923i + + -2.05655 + (5.0/3.0) * 0.203834 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1245 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.3633 * tfactors.T943i + (1.0/3.0) * 2.73419 * tfactors.T923i - + -2.05655 + (5.0/3.0) * 0.203834 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_He4_to_n_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr52_to_n_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + He4 --> n + Fe55 - // Cr52 + He4 --> n + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.7294 + -41.5902 * tfactors.T9i + -4.54346 * tfactors.T913 + + 2.79557 * tfactors.T9 + -0.273997 * tfactors.T953; - // ths8r - ln_set_rate = 10.7294 + -41.5902 * tfactors.T9i + -4.54346 * tfactors.T913 - + 2.79557 * tfactors.T9 + -0.273997 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 41.5902 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -4.54346 * tfactors.T923i + + 2.79557 + (5.0/3.0) * -0.273997 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 41.5902 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -4.54346 * tfactors.T923i - + 2.79557 + (5.0/3.0) * -0.273997 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr52_He4_to_p_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr52_to_p_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr52 + He4 --> p + Mn55 - // Cr52 + He4 --> p + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.2793 + -29.8283 * tfactors.T9i + -36.1995 * tfactors.T913i + 11.023 * tfactors.T913 + + -2.435 * tfactors.T9 + 0.306933 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 18.2793 + -29.8283 * tfactors.T9i + -36.1995 * tfactors.T913i + 11.023 * tfactors.T913 - + -2.435 * tfactors.T9 + 0.306933 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.8283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 11.023 * tfactors.T923i + + -2.435 + (5.0/3.0) * 0.306933 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.8283 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 11.023 * tfactors.T923i - + -2.435 + (5.0/3.0) * 0.306933 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_n_to_He4_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr53_to_He4_Ti50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 + n --> He4 + Ti50 - // Cr53 + n --> He4 + Ti50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -23.5895 + 21.17 * tfactors.T913 + + -0.195248 * tfactors.T9 + -0.121068 * tfactors.T953; - // ths8r - ln_set_rate = -23.5895 + 21.17 * tfactors.T913 - + -0.195248 * tfactors.T9 + -0.121068 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 21.17 * tfactors.T923i + + -0.195248 + (5.0/3.0) * -0.121068 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 21.17 * tfactors.T923i - + -0.195248 + (5.0/3.0) * -0.121068 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_p_to_n_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr53_to_n_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 + p --> n + Mn53 - // Cr53 + p --> n + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.3906 + -16.0047 * tfactors.T9i + 0.167386 * tfactors.T913 + + 1.15594 * tfactors.T9 + -0.119143 * tfactors.T953; - // ths8r - ln_set_rate = 12.3906 + -16.0047 * tfactors.T9i + 0.167386 * tfactors.T913 - + 1.15594 * tfactors.T9 + -0.119143 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 16.0047 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.167386 * tfactors.T923i + + 1.15594 + (5.0/3.0) * -0.119143 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 16.0047 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.167386 * tfactors.T923i - + 1.15594 + (5.0/3.0) * -0.119143 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_p_to_He4_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr53_to_He4_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 + p --> He4 + V50 - // Cr53 + p --> He4 + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 45.5289 + -13.9153 * tfactors.T9i + -84.4058 * tfactors.T913i + 13.5454 * tfactors.T913 + + -3.26175 * tfactors.T9 + 0.249401 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 45.5289 + -13.9153 * tfactors.T9i + -84.4058 * tfactors.T913i + 13.5454 * tfactors.T913 - + -3.26175 * tfactors.T9 + 0.249401 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.9153 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.4058 * tfactors.T943i + (1.0/3.0) * 13.5454 * tfactors.T923i + + -3.26175 + (5.0/3.0) * 0.249401 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.9153 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -84.4058 * tfactors.T943i + (1.0/3.0) * 13.5454 * tfactors.T923i - + -3.26175 + (5.0/3.0) * 0.249401 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr53_He4_to_n_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr53_to_n_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr53 + He4 --> n + Fe56 - // Cr53 + He4 --> n + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -118.607 + -3.78063 * tfactors.T9i + 108.603 * tfactors.T913 + + -15.5995 * tfactors.T9 + 1.14343 * tfactors.T953; - // ths8r - ln_set_rate = -118.607 + -3.78063 * tfactors.T9i + 108.603 * tfactors.T913 - + -15.5995 * tfactors.T9 + 1.14343 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.78063 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 108.603 * tfactors.T923i + + -15.5995 + (5.0/3.0) * 1.14343 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.78063 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 108.603 * tfactors.T923i - + -15.5995 + (5.0/3.0) * 1.14343 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr54_n_to_He4_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cr54_to_He4_Ti51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr54 + n --> He4 + Ti51 - // Cr54 + n --> He4 + Ti51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -985.091 + -2.195 * tfactors.T9i + -1722.81 * tfactors.T913i + 2829.38 * tfactors.T913 + + -169.068 * tfactors.T9 + 9.70315 * tfactors.T953 + -1326.98 * tfactors.lnT9; - // rath - ln_set_rate = -985.091 + -2.195 * tfactors.T9i + -1722.81 * tfactors.T913i + 2829.38 * tfactors.T913 - + -169.068 * tfactors.T9 + 9.70315 * tfactors.T953 + -1326.98 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.195 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1722.81 * tfactors.T943i + (1.0/3.0) * 2829.38 * tfactors.T923i + + -169.068 + (5.0/3.0) * 9.70315 * tfactors.T923 + -1326.98 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.195 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1722.81 * tfactors.T943i + (1.0/3.0) * 2829.38 * tfactors.T923i - + -169.068 + (5.0/3.0) * 9.70315 * tfactors.T923 + -1326.98 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr54_p_to_n_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr54_to_n_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr54 + p --> n + Mn54 - // Cr54 + p --> n + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.904 + -25.0602 * tfactors.T9i + -1.70783 * tfactors.T913 + + 0.767763 * tfactors.T9 + -0.0572818 * tfactors.T953; - // ths8r - ln_set_rate = 17.904 + -25.0602 * tfactors.T9i + -1.70783 * tfactors.T913 - + 0.767763 * tfactors.T9 + -0.0572818 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.0602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.70783 * tfactors.T923i + + 0.767763 + (5.0/3.0) * -0.0572818 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.0602 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.70783 * tfactors.T923i - + 0.767763 + (5.0/3.0) * -0.0572818 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr54_p_to_He4_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cr54_to_He4_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr54 + p --> He4 + V51 - // Cr54 + p --> He4 + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -94.698 + -35.2237 * tfactors.T913i + 131.726 * tfactors.T913 + + -29.7395 * tfactors.T9 + 3.03809 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -94.698 + -35.2237 * tfactors.T913i + 131.726 * tfactors.T913 - + -29.7395 * tfactors.T9 + 3.03809 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -35.2237 * tfactors.T943i + (1.0/3.0) * 131.726 * tfactors.T923i + + -29.7395 + (5.0/3.0) * 3.03809 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -35.2237 * tfactors.T943i + (1.0/3.0) * 131.726 * tfactors.T923i - + -29.7395 + (5.0/3.0) * 3.03809 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cr54_He4_to_n_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cr54_to_n_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cr54 + He4 --> n + Fe57 - // Cr54 + He4 --> n + Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -7.33581 + -27.8371 * tfactors.T9i + 4.48478 * tfactors.T913 + + 2.88431 * tfactors.T9 + -0.366076 * tfactors.T953; - // ths8r - ln_set_rate = -7.33581 + -27.8371 * tfactors.T9i + 4.48478 * tfactors.T913 - + 2.88431 * tfactors.T9 + -0.366076 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.8371 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.48478 * tfactors.T923i + + 2.88431 + (5.0/3.0) * -0.366076 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.8371 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.48478 * tfactors.T923i - + 2.88431 + (5.0/3.0) * -0.366076 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn50_n_to_p_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn50_to_p_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn50 + n --> p + Cr50 - // Mn50 + n --> p + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.5859 + -1.04612 * tfactors.T913 + + 0.340541 * tfactors.T9 + -0.0370932 * tfactors.T953; - // ths8r - ln_set_rate = 21.5859 + -1.04612 * tfactors.T913 - + 0.340541 * tfactors.T9 + -0.0370932 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.04612 * tfactors.T923i + + 0.340541 + (5.0/3.0) * -0.0370932 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.04612 * tfactors.T923i - + 0.340541 + (5.0/3.0) * -0.0370932 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn50_n_to_He4_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn50_to_He4_V47_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn50 + n --> He4 + V47 - // Mn50 + n --> He4 + V47 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.7581 + 0.0723126 * tfactors.T913 + + 0.772457 * tfactors.T9 + -0.0591176 * tfactors.T953; - // ths8r - ln_set_rate = 12.7581 + 0.0723126 * tfactors.T913 - + 0.772457 * tfactors.T9 + -0.0591176 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.0723126 * tfactors.T923i + + 0.772457 + (5.0/3.0) * -0.0591176 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.0723126 * tfactors.T923i - + 0.772457 + (5.0/3.0) * -0.0591176 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn50_He4_to_n_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn50_to_n_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn50 + He4 --> n + Co53 - // Mn50 + He4 --> n + Co53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.55453 + -65.3147 * tfactors.T9i + 4.96211 * tfactors.T913 + + -1.17699 * tfactors.T9 + 0.226 * tfactors.T953; - // ths8r - ln_set_rate = 8.55453 + -65.3147 * tfactors.T9i + 4.96211 * tfactors.T913 - + -1.17699 * tfactors.T9 + 0.226 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.3147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.96211 * tfactors.T923i + + -1.17699 + (5.0/3.0) * 0.226 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.3147 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.96211 * tfactors.T923i - + -1.17699 + (5.0/3.0) * 0.226 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn50_He4_to_p_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn50_to_p_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn50 + He4 --> p + Fe53 - // Mn50 + He4 --> p + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.6721 + -89.2309 * tfactors.T913i + -1.4758 * tfactors.T913 + + -0.437831 * tfactors.T9 + -0.00354594 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.6721 + -89.2309 * tfactors.T913i + -1.4758 * tfactors.T913 - + -0.437831 * tfactors.T9 + -0.00354594 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.2309 * tfactors.T943i + (1.0/3.0) * -1.4758 * tfactors.T923i + + -0.437831 + (5.0/3.0) * -0.00354594 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.2309 * tfactors.T943i + (1.0/3.0) * -1.4758 * tfactors.T923i - + -0.437831 + (5.0/3.0) * -0.00354594 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_n_to_p_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn51_to_p_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + n --> p + Cr51 - // Mn51 + n --> p + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.982 + -1.37768 * tfactors.T913 + + 0.466991 * tfactors.T9 + -0.0461074 * tfactors.T953; - // ths8r - ln_set_rate = 20.982 + -1.37768 * tfactors.T913 - + 0.466991 * tfactors.T9 + -0.0461074 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.37768 * tfactors.T923i + + 0.466991 + (5.0/3.0) * -0.0461074 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.37768 * tfactors.T923i - + 0.466991 + (5.0/3.0) * -0.0461074 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_n_to_He4_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn51_to_He4_V48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + n --> He4 + V48 - // Mn51 + n --> He4 + V48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -23.8508 + 20.8632 * tfactors.T913 + + 0.466645 * tfactors.T9 + -0.196969 * tfactors.T953; - // ths8r - ln_set_rate = -23.8508 + 20.8632 * tfactors.T913 - + 0.466645 * tfactors.T9 + -0.196969 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 20.8632 * tfactors.T923i + + 0.466645 + (5.0/3.0) * -0.196969 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 20.8632 * tfactors.T923i - + 0.466645 + (5.0/3.0) * -0.196969 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_p_to_He4_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn51_to_He4_Cr48_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + p --> He4 + Cr48 - // Mn51 + p --> He4 + Cr48 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 58.7312 + -6.47654 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 + + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 58.7312 + -6.47654 * tfactors.T9i + -86.7459 * tfactors.T913i + 1.05653 * tfactors.T913 - + -1.15757 * tfactors.T9 + 0.0877546 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 6.47654 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i + + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 6.47654 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7459 * tfactors.T943i + (1.0/3.0) * 1.05653 * tfactors.T923i - + -1.15757 + (5.0/3.0) * 0.0877546 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_n_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_n_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> n + Co54 - // Mn51 + He4 --> n + Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.1923 + -68.2136 * tfactors.T9i + -1.92176 * tfactors.T913 + + 1.2968 * tfactors.T9 + -0.117145 * tfactors.T953; - // ths8r - ln_set_rate = 11.1923 + -68.2136 * tfactors.T9i + -1.92176 * tfactors.T913 - + 1.2968 * tfactors.T9 + -0.117145 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 68.2136 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.92176 * tfactors.T923i + + 1.2968 + (5.0/3.0) * -0.117145 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 68.2136 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.92176 * tfactors.T923i - + 1.2968 + (5.0/3.0) * -0.117145 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn51_He4_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn51_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn51 + He4 --> p + Fe54 - // Mn51 + He4 --> p + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2777 + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 - + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i - + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_n_to_p_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn52_to_p_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + n --> p + Cr52 - // Mn52 + n --> p + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.9487 + 0.50599 * tfactors.T913 + + 0.283832 * tfactors.T9 + -0.0422814 * tfactors.T953; - // ths8r - ln_set_rate = 17.9487 + 0.50599 * tfactors.T913 - + 0.283832 * tfactors.T9 + -0.0422814 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.50599 * tfactors.T923i + + 0.283832 + (5.0/3.0) * -0.0422814 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.50599 * tfactors.T923i - + 0.283832 + (5.0/3.0) * -0.0422814 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_n_to_He4_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn52_to_He4_V49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + n --> He4 + V49 - // Mn52 + n --> He4 + V49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -2.29492 + 5.72895 * tfactors.T913 + + 1.74506 * tfactors.T9 + -0.232362 * tfactors.T953; - // ths8r - ln_set_rate = -2.29492 + 5.72895 * tfactors.T913 - + 1.74506 * tfactors.T9 + -0.232362 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 5.72895 * tfactors.T923i + + 1.74506 + (5.0/3.0) * -0.232362 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 5.72895 * tfactors.T923i - + 1.74506 + (5.0/3.0) * -0.232362 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_p_to_n_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn52_to_n_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + p --> n + Fe52 - // Mn52 + p --> n + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.3836 + -36.6259 * tfactors.T9i + 0.569856 * tfactors.T913 + + 0.390117 * tfactors.T9 + -0.0479043 * tfactors.T953; - // ths8r - ln_set_rate = 15.3836 + -36.6259 * tfactors.T9i + 0.569856 * tfactors.T913 - + 0.390117 * tfactors.T9 + -0.0479043 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.6259 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.569856 * tfactors.T923i + + 0.390117 + (5.0/3.0) * -0.0479043 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.6259 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.569856 * tfactors.T923i - + 0.390117 + (5.0/3.0) * -0.0479043 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_p_to_He4_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn52_to_He4_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + p --> He4 + Cr49 - // Mn52 + p --> He4 + Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 53.0315 + -5.9288 * tfactors.T9i + -86.7913 * tfactors.T913i + 10.6892 * tfactors.T913 + + -4.01586 * tfactors.T9 + 0.411275 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 53.0315 + -5.9288 * tfactors.T9i + -86.7913 * tfactors.T913i + 10.6892 * tfactors.T913 - + -4.01586 * tfactors.T9 + 0.411275 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.9288 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7913 * tfactors.T943i + (1.0/3.0) * 10.6892 * tfactors.T923i + + -4.01586 + (5.0/3.0) * 0.411275 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.9288 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -86.7913 * tfactors.T943i + (1.0/3.0) * 10.6892 * tfactors.T923i - + -4.01586 + (5.0/3.0) * 0.411275 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_He4_to_n_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn52_to_n_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + He4 --> n + Co55 - // Mn52 + He4 --> n + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -14.3346 + -26.9722 * tfactors.T9i + 8.15876 * tfactors.T913 + + 3.05978 * tfactors.T9 + -0.406535 * tfactors.T953; - // ths8r - ln_set_rate = -14.3346 + -26.9722 * tfactors.T9i + 8.15876 * tfactors.T913 - + 3.05978 * tfactors.T9 + -0.406535 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.9722 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.15876 * tfactors.T923i + + 3.05978 + (5.0/3.0) * -0.406535 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.9722 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 8.15876 * tfactors.T923i - + 3.05978 + (5.0/3.0) * -0.406535 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn52_He4_to_p_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn52_to_p_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn52 + He4 --> p + Fe55 - // Mn52 + He4 --> p + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.6689 + -89.3157 * tfactors.T913i + 5.65639 * tfactors.T913 + + -2.28952 * tfactors.T9 + 0.186017 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.6689 + -89.3157 * tfactors.T913i + 5.65639 * tfactors.T913 - + -2.28952 * tfactors.T9 + 0.186017 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.3157 * tfactors.T943i + (1.0/3.0) * 5.65639 * tfactors.T923i + + -2.28952 + (5.0/3.0) * 0.186017 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.3157 * tfactors.T943i + (1.0/3.0) * 5.65639 * tfactors.T923i - + -2.28952 + (5.0/3.0) * 0.186017 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_n_to_p_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn53_to_p_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + n --> p + Cr53 - // Mn53 + n --> p + Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.6975 + 0.167386 * tfactors.T913 + + 1.15594 * tfactors.T9 + -0.119143 * tfactors.T953; - // ths8r - ln_set_rate = 11.6975 + 0.167386 * tfactors.T913 - + 1.15594 * tfactors.T9 + -0.119143 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.167386 * tfactors.T923i + + 1.15594 + (5.0/3.0) * -0.119143 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.167386 * tfactors.T923i - + 1.15594 + (5.0/3.0) * -0.119143 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_n_to_He4_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn53_to_He4_V50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + n --> He4 + V50 - // Mn53 + n --> He4 + V50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -122.895 + 115.52 * tfactors.T913 + + -16.7944 * tfactors.T9 + 1.23427 * tfactors.T953; - // ths8r - ln_set_rate = -122.895 + 115.52 * tfactors.T913 - + -16.7944 * tfactors.T9 + 1.23427 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 115.52 * tfactors.T923i + + -16.7944 + (5.0/3.0) * 1.23427 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 115.52 * tfactors.T923i - + -16.7944 + (5.0/3.0) * 1.23427 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_p_to_n_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn53_to_n_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + p --> n + Fe53 - // Mn53 + p --> n + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.1239 + -52.5096 * tfactors.T9i + -1.19445 * tfactors.T913 + + 0.393603 * tfactors.T9 + -0.0404022 * tfactors.T953; - // ths8r - ln_set_rate = 21.1239 + -52.5096 * tfactors.T9i + -1.19445 * tfactors.T913 - + 0.393603 * tfactors.T9 + -0.0404022 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 52.5096 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19445 * tfactors.T923i + + 0.393603 + (5.0/3.0) * -0.0404022 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 52.5096 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.19445 * tfactors.T923i - + 0.393603 + (5.0/3.0) * -0.0404022 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_p_to_He4_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn53_to_He4_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + p --> He4 + Cr50 - // Mn53 + p --> He4 + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -68.3424 + -36.1913 * tfactors.T913i + 99.0857 * tfactors.T913 + + -20.8943 * tfactors.T9 + 2.06209 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -68.3424 + -36.1913 * tfactors.T913i + 99.0857 * tfactors.T913 - + -20.8943 * tfactors.T9 + 2.06209 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1913 * tfactors.T943i + (1.0/3.0) * 99.0857 * tfactors.T923i + + -20.8943 + (5.0/3.0) * 2.06209 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1913 * tfactors.T943i + (1.0/3.0) * 99.0857 * tfactors.T923i - + -20.8943 + (5.0/3.0) * 2.06209 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_He4_to_n_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn53_to_n_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + He4 --> n + Co56 - // Mn53 + He4 --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.3813 + -49.8407 * tfactors.T9i + -2.81854 * tfactors.T913 + + 1.84188 * tfactors.T9 + -0.164509 * tfactors.T953; - // ths8r - ln_set_rate = 11.3813 + -49.8407 * tfactors.T9i + -2.81854 * tfactors.T913 - + 1.84188 * tfactors.T9 + -0.164509 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 49.8407 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.81854 * tfactors.T923i + + 1.84188 + (5.0/3.0) * -0.164509 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 49.8407 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.81854 * tfactors.T923i - + 1.84188 + (5.0/3.0) * -0.164509 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn53_He4_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn53_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn53 + He4 --> p + Fe56 - // Mn53 + He4 --> p + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.0176 + -89.3558 * tfactors.T913i + 9.25287 * tfactors.T913 + + -3.70352 * tfactors.T9 + 0.372202 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.0176 + -89.3558 * tfactors.T913i + 9.25287 * tfactors.T913 - + -3.70352 * tfactors.T9 + 0.372202 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -89.3558 * tfactors.T943i + (1.0/3.0) * 9.25287 * tfactors.T923i + + -3.70352 + (5.0/3.0) * 0.372202 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -89.3558 * tfactors.T943i + (1.0/3.0) * 9.25287 * tfactors.T923i - + -3.70352 + (5.0/3.0) * 0.372202 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_n_to_p_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn54_to_p_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + n --> p + Cr54 - // Mn54 + n --> p + Cr54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.9581 + -1.70783 * tfactors.T913 + + 0.767763 * tfactors.T9 + -0.0572818 * tfactors.T953; - // ths8r - ln_set_rate = 15.9581 + -1.70783 * tfactors.T913 - + 0.767763 * tfactors.T9 + -0.0572818 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.70783 * tfactors.T923i + + 0.767763 + (5.0/3.0) * -0.0572818 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.70783 * tfactors.T923i - + 0.767763 + (5.0/3.0) * -0.0572818 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_n_to_He4_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn54_to_He4_V51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + n --> He4 + V51 - // Mn54 + n --> He4 + V51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -7.40385 + 7.07865 * tfactors.T913 + + 2.24997 * tfactors.T9 + -0.318964 * tfactors.T953; - // ths8r - ln_set_rate = -7.40385 + 7.07865 * tfactors.T913 - + 2.24997 * tfactors.T9 + -0.318964 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 7.07865 * tfactors.T923i + + 2.24997 + (5.0/3.0) * -0.318964 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 7.07865 * tfactors.T923i - + 2.24997 + (5.0/3.0) * -0.318964 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_p_to_n_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn54_to_n_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + p --> n + Fe54 - // Mn54 + p --> n + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -45.0778 + -0.9894 * tfactors.T9i + 51.9922 * tfactors.T913 + + -7.26639 * tfactors.T9 + 0.502147 * tfactors.T953; - // ths8r - ln_set_rate = -45.0778 + -0.9894 * tfactors.T9i + 51.9922 * tfactors.T913 - + -7.26639 * tfactors.T9 + 0.502147 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.9894 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 51.9922 * tfactors.T923i + + -7.26639 + (5.0/3.0) * 0.502147 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.9894 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 51.9922 * tfactors.T923i - + -7.26639 + (5.0/3.0) * 0.502147 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_p_to_He4_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn54_to_He4_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + p --> He4 + Cr51 - // Mn54 + p --> He4 + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -40.6329 + -36.1955 * tfactors.T913i + 69.5086 * tfactors.T913 + + -14.1484 * tfactors.T9 + 1.38598 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -40.6329 + -36.1955 * tfactors.T913i + 69.5086 * tfactors.T913 - + -14.1484 * tfactors.T9 + 1.38598 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1955 * tfactors.T943i + (1.0/3.0) * 69.5086 * tfactors.T923i + + -14.1484 + (5.0/3.0) * 1.38598 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1955 * tfactors.T943i + (1.0/3.0) * 69.5086 * tfactors.T923i - + -14.1484 + (5.0/3.0) * 1.38598 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_He4_to_n_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn54_to_n_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + He4 --> n + Co57 - // Mn54 + He4 --> n + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -31.7456 + -21.5562 * tfactors.T9i + 26.4125 * tfactors.T913 + + -0.137701 * tfactors.T9 + -0.184911 * tfactors.T953; - // ths8r - ln_set_rate = -31.7456 + -21.5562 * tfactors.T9i + 26.4125 * tfactors.T913 - + -0.137701 * tfactors.T9 + -0.184911 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.5562 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 26.4125 * tfactors.T923i + + -0.137701 + (5.0/3.0) * -0.184911 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.5562 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 26.4125 * tfactors.T923i - + -0.137701 + (5.0/3.0) * -0.184911 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn54_He4_to_p_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn54_to_p_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn54 + He4 --> p + Fe57 - // Mn54 + He4 --> p + Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -90.99 + -2.7769 * tfactors.T9i + -37.1663 * tfactors.T913i + 123.946 * tfactors.T913 + + -27.2803 * tfactors.T9 + 2.75453 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -90.99 + -2.7769 * tfactors.T9i + -37.1663 * tfactors.T913i + 123.946 * tfactors.T913 - + -27.2803 * tfactors.T9 + 2.75453 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.7769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1663 * tfactors.T943i + (1.0/3.0) * 123.946 * tfactors.T923i + + -27.2803 + (5.0/3.0) * 2.75453 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.7769 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.1663 * tfactors.T943i + (1.0/3.0) * 123.946 * tfactors.T923i - + -27.2803 + (5.0/3.0) * 2.75453 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_n_to_He4_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Mn55_to_He4_V52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 + n --> He4 + V52 - // Mn55 + n --> He4 + V52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // rath + ln_set_rate = -1025.31 + 9.271 * tfactors.T9i + -1790.25 * tfactors.T913i + 2939.64 * tfactors.T913 + + -175.533 * tfactors.T9 + 10.0701 * tfactors.T953 + -1379.09 * tfactors.lnT9; - // rath - ln_set_rate = -1025.31 + 9.271 * tfactors.T9i + -1790.25 * tfactors.T913i + 2939.64 * tfactors.T913 - + -175.533 * tfactors.T9 + 10.0701 * tfactors.T953 + -1379.09 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = -9.271 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1790.25 * tfactors.T943i + (1.0/3.0) * 2939.64 * tfactors.T923i + + -175.533 + (5.0/3.0) * 10.0701 * tfactors.T923 + -1379.09 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = -9.271 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1790.25 * tfactors.T943i + (1.0/3.0) * 2939.64 * tfactors.T923i - + -175.533 + (5.0/3.0) * 10.0701 * tfactors.T923 + -1379.09 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_p_to_n_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn55_to_n_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 + p --> n + Fe55 - // Mn55 + p --> n + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 4.30092 + -11.7619 * tfactors.T9i + 7.03052 * tfactors.T913 + + 0.260509 * tfactors.T9 + -0.0813397 * tfactors.T953; - // ths8r - ln_set_rate = 4.30092 + -11.7619 * tfactors.T9i + 7.03052 * tfactors.T913 - + 0.260509 * tfactors.T9 + -0.0813397 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.7619 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.03052 * tfactors.T923i + + 0.260509 + (5.0/3.0) * -0.0813397 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.7619 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.03052 * tfactors.T923i - + 0.260509 + (5.0/3.0) * -0.0813397 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_p_to_He4_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Mn55_to_He4_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 + p --> He4 + Cr52 - // Mn55 + p --> He4 + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.7897 + -36.1995 * tfactors.T913i + 11.023 * tfactors.T913 + + -2.435 * tfactors.T9 + 0.306933 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 17.7897 + -36.1995 * tfactors.T913i + 11.023 * tfactors.T913 - + -2.435 * tfactors.T9 + 0.306933 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 11.023 * tfactors.T923i + + -2.435 + (5.0/3.0) * 0.306933 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -36.1995 * tfactors.T943i + (1.0/3.0) * 11.023 * tfactors.T923i - + -2.435 + (5.0/3.0) * 0.306933 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_He4_to_n_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn55_to_n_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 + He4 --> n + Co58 - // Mn55 + He4 --> n + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 9.14605 + -40.7447 * tfactors.T9i + -5.4323 * tfactors.T913 + + 3.33275 * tfactors.T9 + -0.339917 * tfactors.T953; - // ths8r - ln_set_rate = 9.14605 + -40.7447 * tfactors.T9i + -5.4323 * tfactors.T913 - + 3.33275 * tfactors.T9 + -0.339917 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 40.7447 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -5.4323 * tfactors.T923i + + 3.33275 + (5.0/3.0) * -0.339917 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.7447 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -5.4323 * tfactors.T923i - + 3.33275 + (5.0/3.0) * -0.339917 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Mn55_He4_to_p_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Mn55_to_p_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Mn55 + He4 --> p + Fe58 - // Mn55 + He4 --> p + Fe58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -77.6133 + -4.88801 * tfactors.T9i + -37.17 * tfactors.T913i + 110.878 * tfactors.T913 + + -24.5555 * tfactors.T9 + 2.47003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -77.6133 + -4.88801 * tfactors.T9i + -37.17 * tfactors.T913i + 110.878 * tfactors.T913 - + -24.5555 * tfactors.T9 + 2.47003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.88801 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.17 * tfactors.T943i + (1.0/3.0) * 110.878 * tfactors.T923i + + -24.5555 + (5.0/3.0) * 2.47003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.88801 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -37.17 * tfactors.T943i + (1.0/3.0) * 110.878 * tfactors.T923i - + -24.5555 + (5.0/3.0) * 2.47003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_to_p_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe52_to_p_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + n --> p + Mn52 - // Fe52 + n --> p + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.9485 + 0.569856 * tfactors.T913 + + 0.390117 * tfactors.T9 + -0.0479043 * tfactors.T953; - // ths8r - ln_set_rate = 17.9485 + 0.569856 * tfactors.T913 - + 0.390117 * tfactors.T9 + -0.0479043 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.569856 * tfactors.T923i + + 0.390117 + (5.0/3.0) * -0.0479043 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.569856 * tfactors.T923i - + 0.390117 + (5.0/3.0) * -0.0479043 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_n_to_He4_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe52_to_He4_Cr49_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + n --> He4 + Cr49 - // Fe52 + n --> He4 + Cr49 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -11.1596 + 14.3781 * tfactors.T913 + + 0.0859569 * tfactors.T9 + -0.0900604 * tfactors.T953; - // ths8r - ln_set_rate = -11.1596 + 14.3781 * tfactors.T913 - + 0.0859569 * tfactors.T9 + -0.0900604 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 14.3781 * tfactors.T923i + + 0.0859569 + (5.0/3.0) * -0.0900604 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 14.3781 * tfactors.T923i - + 0.0859569 + (5.0/3.0) * -0.0900604 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe52_He4_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe52_to_p_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe52 + He4 --> p + Co55 - // Fe52 + He4 --> p + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 62.2207 + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_n_to_p_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe53_to_p_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + n --> p + Mn53 - // Fe53 + n --> p + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.1239 + -1.19445 * tfactors.T913 + + 0.393603 * tfactors.T9 + -0.0404022 * tfactors.T953; - // ths8r - ln_set_rate = 21.1239 + -1.19445 * tfactors.T913 - + 0.393603 * tfactors.T9 + -0.0404022 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.19445 * tfactors.T923i + + 0.393603 + (5.0/3.0) * -0.0404022 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.19445 * tfactors.T923i - + 0.393603 + (5.0/3.0) * -0.0404022 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_n_to_He4_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe53_to_He4_Cr50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + n --> He4 + Cr50 - // Fe53 + n --> He4 + Cr50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.025 + -0.146952 * tfactors.T913 + + 1.12217 * tfactors.T9 + -0.10318 * tfactors.T953; - // ths8r - ln_set_rate = 11.025 + -0.146952 * tfactors.T913 - + 1.12217 * tfactors.T9 + -0.10318 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.146952 * tfactors.T923i + + 1.12217 + (5.0/3.0) * -0.10318 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.146952 * tfactors.T923i - + 1.12217 + (5.0/3.0) * -0.10318 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_p_to_n_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe53_to_n_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + p --> n + Co53 - // Fe53 + p --> n + Co53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.5271 + -105.402 * tfactors.T9i + -0.94587 * tfactors.T913 + + 0.327891 * tfactors.T9 + -0.0355667 * tfactors.T953; - // ths8r - ln_set_rate = 21.5271 + -105.402 * tfactors.T9i + -0.94587 * tfactors.T913 - + 0.327891 * tfactors.T9 + -0.0355667 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 105.402 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.94587 * tfactors.T923i + + 0.327891 + (5.0/3.0) * -0.0355667 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 105.402 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.94587 * tfactors.T923i - + 0.327891 + (5.0/3.0) * -0.0355667 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_p_to_He4_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe53_to_He4_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + p --> He4 + Mn50 - // Fe53 + p --> He4 + Mn50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.8915 + -40.0872 * tfactors.T9i + -89.2309 * tfactors.T913i + -1.4758 * tfactors.T913 + + -0.437831 * tfactors.T9 + -0.00354594 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.8915 + -40.0872 * tfactors.T9i + -89.2309 * tfactors.T913i + -1.4758 * tfactors.T913 - + -0.437831 * tfactors.T9 + -0.00354594 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 40.0872 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.2309 * tfactors.T943i + (1.0/3.0) * -1.4758 * tfactors.T923i + + -0.437831 + (5.0/3.0) * -0.00354594 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.0872 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.2309 * tfactors.T943i + (1.0/3.0) * -1.4758 * tfactors.T923i - + -0.437831 + (5.0/3.0) * -0.00354594 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_He4_to_n_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe53_to_n_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + He4 --> n + Ni56 - // Fe53 + He4 --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -11.2271 + -31.1935 * tfactors.T9i + 6.43259 * tfactors.T913 + + 2.29591 * tfactors.T9 + -0.254724 * tfactors.T953; - // ths8r - ln_set_rate = -11.2271 + -31.1935 * tfactors.T9i + 6.43259 * tfactors.T913 - + 2.29591 * tfactors.T9 + -0.254724 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 31.1935 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.43259 * tfactors.T923i + + 2.29591 + (5.0/3.0) * -0.254724 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 31.1935 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 6.43259 * tfactors.T923i - + 2.29591 + (5.0/3.0) * -0.254724 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe53_He4_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe53_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe53 + He4 --> p + Co56 - // Fe53 + He4 --> p + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 54.8614 + -91.7231 * tfactors.T913i + 10.052 * tfactors.T913 + + -3.86332 * tfactors.T9 + 0.391105 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 54.8614 + -91.7231 * tfactors.T913i + 10.052 * tfactors.T913 - + -3.86332 * tfactors.T9 + 0.391105 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * 10.052 * tfactors.T923i + + -3.86332 + (5.0/3.0) * 0.391105 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * 10.052 * tfactors.T923i - + -3.86332 + (5.0/3.0) * 0.391105 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_to_p_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe54_to_p_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + n --> p + Mn54 - // Fe54 + n --> p + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -43.1319 + 51.9922 * tfactors.T913 + + -7.26639 * tfactors.T9 + 0.502147 * tfactors.T953; - // ths8r - ln_set_rate = -43.1319 + 51.9922 * tfactors.T913 - + -7.26639 * tfactors.T9 + 0.502147 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 51.9922 * tfactors.T923i + + -7.26639 + (5.0/3.0) * 0.502147 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 51.9922 * tfactors.T923i - + -7.26639 + (5.0/3.0) * 0.502147 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_n_to_He4_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe54_to_He4_Cr51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + n --> He4 + Cr51 - // Fe54 + n --> He4 + Cr51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -83.0822 + 77.6519 * tfactors.T913 + + -9.70923 * tfactors.T9 + 0.625406 * tfactors.T953; - // ths8r - ln_set_rate = -83.0822 + 77.6519 * tfactors.T913 - + -9.70923 * tfactors.T9 + 0.625406 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 77.6519 * tfactors.T923i + + -9.70923 + (5.0/3.0) * 0.625406 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 77.6519 * tfactors.T923i - + -9.70923 + (5.0/3.0) * 0.625406 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_to_n_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe54_to_n_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + p --> n + Co54 - // Fe54 + p --> n + Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.6932 + -104.734 * tfactors.T9i + -1.41064 * tfactors.T913 + + 0.417457 * tfactors.T9 + -0.0400596 * tfactors.T953; - // ths8r - ln_set_rate = 21.6932 + -104.734 * tfactors.T9i + -1.41064 * tfactors.T913 - + 0.417457 * tfactors.T9 + -0.0400596 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 104.734 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.41064 * tfactors.T923i + + 0.417457 + (5.0/3.0) * -0.0400596 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 104.734 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.41064 * tfactors.T923i - + 0.417457 + (5.0/3.0) * -0.0400596 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_p_to_He4_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe54_to_He4_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + p --> He4 + Mn51 - // Fe54 + p --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.37 + -36.5201 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 + + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.37 + -36.5201 * tfactors.T9i + -89.274 * tfactors.T913i + -0.862452 * tfactors.T913 - + -0.635672 * tfactors.T9 + 0.0196464 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.5201 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i + + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.5201 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.274 * tfactors.T943i + (1.0/3.0) * -0.862452 * tfactors.T923i - + -0.635672 + (5.0/3.0) * 0.0196464 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_n_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_n_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + He4 --> n + Ni57 - // Fe54 + He4 --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.6138 + -67.5021 * tfactors.T9i + 0.48562 * tfactors.T913 + + -0.0249302 * tfactors.T9 + 0.0509605 * tfactors.T953; - // ths8r - ln_set_rate = 14.6138 + -67.5021 * tfactors.T9i + 0.48562 * tfactors.T913 - + -0.0249302 * tfactors.T9 + 0.0509605 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 67.5021 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.48562 * tfactors.T923i + + -0.0249302 + (5.0/3.0) * 0.0509605 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 67.5021 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.48562 * tfactors.T923i - + -0.0249302 + (5.0/3.0) * 0.0509605 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe54_He4_to_p_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe54_to_p_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe54 + He4 --> p + Co57 - // Fe54 + He4 --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -1.42195 + -20.5668 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -1.42195 + -20.5668 * tfactors.T9i + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 - + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 20.5668 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 20.5668 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i - + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_n_to_p_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe55_to_p_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + n --> p + Mn55 - // Fe55 + n --> p + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 4.70639 + 7.03052 * tfactors.T913 + + 0.260509 * tfactors.T9 + -0.0813397 * tfactors.T953; - // ths8r - ln_set_rate = 4.70639 + 7.03052 * tfactors.T913 - + 0.260509 * tfactors.T9 + -0.0813397 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 7.03052 * tfactors.T923i + + 0.260509 + (5.0/3.0) * -0.0813397 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 7.03052 * tfactors.T923i - + 0.260509 + (5.0/3.0) * -0.0813397 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_n_to_He4_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe55_to_He4_Cr52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + n --> He4 + Cr52 - // Fe55 + n --> He4 + Cr52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.6453 + -4.54346 * tfactors.T913 + + 2.79557 * tfactors.T9 + -0.273997 * tfactors.T953; - // ths8r - ln_set_rate = 10.6453 + -4.54346 * tfactors.T913 - + 2.79557 * tfactors.T9 + -0.273997 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -4.54346 * tfactors.T923i + + 2.79557 + (5.0/3.0) * -0.273997 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -4.54346 * tfactors.T923i - + 2.79557 + (5.0/3.0) * -0.273997 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_p_to_n_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe55_to_n_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + p --> n + Co55 - // Fe55 + p --> n + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.4329 + -49.1353 * tfactors.T9i + -1.62382 * tfactors.T913 + + 0.58115 * tfactors.T9 + -0.0537057 * tfactors.T953; - // ths8r - ln_set_rate = 21.4329 + -49.1353 * tfactors.T9i + -1.62382 * tfactors.T913 - + 0.58115 * tfactors.T9 + -0.0537057 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 49.1353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.62382 * tfactors.T923i + + 0.58115 + (5.0/3.0) * -0.0537057 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 49.1353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.62382 * tfactors.T923i - + 0.58115 + (5.0/3.0) * -0.0537057 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_p_to_He4_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe55_to_He4_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + p --> He4 + Mn52 - // Fe55 + p --> He4 + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 59.1497 + -22.1631 * tfactors.T9i + -89.3157 * tfactors.T913i + 5.65639 * tfactors.T913 + + -2.28952 * tfactors.T9 + 0.186017 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 59.1497 + -22.1631 * tfactors.T9i + -89.3157 * tfactors.T913i + 5.65639 * tfactors.T913 - + -2.28952 * tfactors.T9 + 0.186017 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 22.1631 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3157 * tfactors.T943i + (1.0/3.0) * 5.65639 * tfactors.T923i + + -2.28952 + (5.0/3.0) * 0.186017 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 22.1631 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3157 * tfactors.T943i + (1.0/3.0) * 5.65639 * tfactors.T923i - + -2.28952 + (5.0/3.0) * 0.186017 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_He4_to_n_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe55_to_n_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + He4 --> n + Ni58 - // Fe55 + He4 --> n + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -4.73193 + -33.6308 * tfactors.T9i + 3.44996 * tfactors.T913 + + 2.98226 * tfactors.T9 + -0.387699 * tfactors.T953; - // ths8r - ln_set_rate = -4.73193 + -33.6308 * tfactors.T9i + 3.44996 * tfactors.T913 - + 2.98226 * tfactors.T9 + -0.387699 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.6308 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.44996 * tfactors.T923i + + 2.98226 + (5.0/3.0) * -0.387699 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.6308 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 3.44996 * tfactors.T923i - + 2.98226 + (5.0/3.0) * -0.387699 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe55_He4_to_p_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe55_to_p_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe55 + He4 --> p + Co58 - // Fe55 + He4 --> p + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.0177 + -28.9828 * tfactors.T9i + -38.1171 * tfactors.T913i + 13.2187 * tfactors.T913 + + -1.74746 * tfactors.T9 + 0.142513 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 14.0177 + -28.9828 * tfactors.T9i + -38.1171 * tfactors.T913i + 13.2187 * tfactors.T913 - + -1.74746 * tfactors.T9 + 0.142513 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 28.9828 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1171 * tfactors.T943i + (1.0/3.0) * 13.2187 * tfactors.T923i + + -1.74746 + (5.0/3.0) * 0.142513 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 28.9828 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1171 * tfactors.T943i + (1.0/3.0) * 13.2187 * tfactors.T923i - + -1.74746 + (5.0/3.0) * 0.142513 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_n_to_He4_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe56_to_He4_Cr53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + n --> He4 + Cr53 - // Fe56 + n --> He4 + Cr53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -115.917 + 108.603 * tfactors.T913 + + -15.5995 * tfactors.T9 + 1.14343 * tfactors.T953; - // ths8r - ln_set_rate = -115.917 + 108.603 * tfactors.T913 - + -15.5995 * tfactors.T9 + 1.14343 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 108.603 * tfactors.T923i + + -15.5995 + (5.0/3.0) * 1.14343 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 108.603 * tfactors.T923i - + -15.5995 + (5.0/3.0) * 1.14343 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_to_n_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe56_to_n_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + p --> n + Co56 - // Fe56 + p --> n + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 22.6511 + -62.0649 * tfactors.T9i + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; - // ths8r - ln_set_rate = 22.6511 + -62.0649 * tfactors.T9i + -1.13331 * tfactors.T913 - + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 62.0649 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 62.0649 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13331 * tfactors.T923i - + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_p_to_He4_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe56_to_He4_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + p --> He4 + Mn53 - // Fe56 + p --> He4 + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 57.4007 + -12.2241 * tfactors.T9i + -89.3558 * tfactors.T913i + 9.25287 * tfactors.T913 + + -3.70352 * tfactors.T9 + 0.372202 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 57.4007 + -12.2241 * tfactors.T9i + -89.3558 * tfactors.T913i + 9.25287 * tfactors.T913 - + -3.70352 * tfactors.T9 + 0.372202 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 12.2241 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3558 * tfactors.T943i + (1.0/3.0) * 9.25287 * tfactors.T923i + + -3.70352 + (5.0/3.0) * 0.372202 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 12.2241 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -89.3558 * tfactors.T943i + (1.0/3.0) * 9.25287 * tfactors.T923i - + -3.70352 + (5.0/3.0) * 0.372202 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_He4_to_n_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe56_to_n_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + He4 --> n + Ni59 - // Fe56 + He4 --> n + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4866 + -59.1377 * tfactors.T9i + -4.21617 * tfactors.T913 + + 1.58032 * tfactors.T9 + -0.126895 * tfactors.T953; - // ths8r - ln_set_rate = 16.4866 + -59.1377 * tfactors.T9i + -4.21617 * tfactors.T913 - + 1.58032 * tfactors.T9 + -0.126895 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 59.1377 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -4.21617 * tfactors.T923i + + 1.58032 + (5.0/3.0) * -0.126895 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 59.1377 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -4.21617 * tfactors.T923i - + 1.58032 + (5.0/3.0) * -0.126895 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe56_He4_to_p_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe56_to_p_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe56 + He4 --> p + Co59 - // Fe56 + He4 --> p + Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.2414 + -37.6102 * tfactors.T9i + -38.1208 * tfactors.T913i + 13.9086 * tfactors.T913 + + -3.45838 * tfactors.T9 + 0.391302 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.2414 + -37.6102 * tfactors.T9i + -38.1208 * tfactors.T913i + 13.9086 * tfactors.T913 - + -3.45838 * tfactors.T9 + 0.391302 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 37.6102 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1208 * tfactors.T943i + (1.0/3.0) * 13.9086 * tfactors.T923i + + -3.45838 + (5.0/3.0) * 0.391302 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 37.6102 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -38.1208 * tfactors.T943i + (1.0/3.0) * 13.9086 * tfactors.T923i - + -3.45838 + (5.0/3.0) * 0.391302 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_n_to_He4_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Fe57_to_He4_Cr54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 + n --> He4 + Cr54 - // Fe57 + n --> He4 + Cr54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -6.72376 + 4.48478 * tfactors.T913 + + 2.88431 * tfactors.T9 + -0.366076 * tfactors.T953; - // ths8r - ln_set_rate = -6.72376 + 4.48478 * tfactors.T913 - + 2.88431 * tfactors.T9 + -0.366076 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.48478 * tfactors.T923i + + 2.88431 + (5.0/3.0) * -0.366076 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.48478 * tfactors.T923i - + 2.88431 + (5.0/3.0) * -0.366076 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_p_to_n_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe57_to_n_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 + p --> n + Co57 - // Fe57 + p --> n + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.9333 + -18.7792 * tfactors.T9i + -0.061056 * tfactors.T913 + + 1.28749 * tfactors.T9 + -0.156423 * tfactors.T953; - // ths8r - ln_set_rate = 14.9333 + -18.7792 * tfactors.T9i + -0.061056 * tfactors.T913 - + 1.28749 * tfactors.T9 + -0.156423 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 18.7792 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.061056 * tfactors.T923i + + 1.28749 + (5.0/3.0) * -0.156423 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 18.7792 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.061056 * tfactors.T923i - + 1.28749 + (5.0/3.0) * -0.156423 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_p_to_He4_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe57_to_He4_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 + p --> He4 + Mn54 - // Fe57 + p --> He4 + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -88.432 + -37.1663 * tfactors.T913i + 123.946 * tfactors.T913 + + -27.2803 * tfactors.T9 + 2.75453 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -88.432 + -37.1663 * tfactors.T913i + 123.946 * tfactors.T913 - + -27.2803 * tfactors.T9 + 2.75453 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.1663 * tfactors.T943i + (1.0/3.0) * 123.946 * tfactors.T923i + + -27.2803 + (5.0/3.0) * 2.75453 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.1663 * tfactors.T943i + (1.0/3.0) * 123.946 * tfactors.T923i - + -27.2803 + (5.0/3.0) * 2.75453 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe57_He4_to_n_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe57_to_n_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe57 + He4 --> n + Ni60 - // Fe57 + He4 --> n + Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -62.4146 + -15.7177 * tfactors.T9i + 55.1407 * tfactors.T913 + + -5.1585 * tfactors.T9 + 0.212248 * tfactors.T953; - // ths8r - ln_set_rate = -62.4146 + -15.7177 * tfactors.T9i + 55.1407 * tfactors.T913 - + -5.1585 * tfactors.T9 + 0.212248 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.7177 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 55.1407 * tfactors.T923i + + -5.1585 + (5.0/3.0) * 0.212248 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.7177 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 55.1407 * tfactors.T923i - + -5.1585 + (5.0/3.0) * 0.212248 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe58_p_to_n_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe58_to_n_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe58 + p --> n + Co58 - // Fe58 + p --> n + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.159 + -35.8567 * tfactors.T9i + -3.2947 * tfactors.T913 + + 0.833003 * tfactors.T9 + -0.0604538 * tfactors.T953; - // ths8r - ln_set_rate = 21.159 + -35.8567 * tfactors.T9i + -3.2947 * tfactors.T913 - + 0.833003 * tfactors.T9 + -0.0604538 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 35.8567 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.2947 * tfactors.T923i + + 0.833003 + (5.0/3.0) * -0.0604538 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 35.8567 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -3.2947 * tfactors.T923i - + 0.833003 + (5.0/3.0) * -0.0604538 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe58_p_to_He4_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Fe58_to_He4_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe58 + p --> He4 + Mn55 - // Fe58 + p --> He4 + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -74.5149 + -37.17 * tfactors.T913i + 110.878 * tfactors.T913 + + -24.5555 * tfactors.T9 + 2.47003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -74.5149 + -37.17 * tfactors.T913i + 110.878 * tfactors.T913 - + -24.5555 * tfactors.T9 + 2.47003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.17 * tfactors.T943i + (1.0/3.0) * 110.878 * tfactors.T923i + + -24.5555 + (5.0/3.0) * 2.47003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.17 * tfactors.T943i + (1.0/3.0) * 110.878 * tfactors.T923i - + -24.5555 + (5.0/3.0) * 2.47003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Fe58_He4_to_n_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Fe58_to_n_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Fe58 + He4 --> n + Ni61 - // Fe58 + He4 --> n + Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.5941 + -41.5317 * tfactors.T9i + -7.53968 * tfactors.T913 + + 4.09062 * tfactors.T9 + -0.416412 * tfactors.T953; - // ths8r - ln_set_rate = 10.5941 + -41.5317 * tfactors.T9i + -7.53968 * tfactors.T913 - + 4.09062 * tfactors.T9 + -0.416412 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 41.5317 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -7.53968 * tfactors.T923i + + 4.09062 + (5.0/3.0) * -0.416412 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 41.5317 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -7.53968 * tfactors.T923i - + 4.09062 + (5.0/3.0) * -0.416412 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co53_n_to_p_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co53_to_p_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co53 + n --> p + Fe53 - // Co53 + n --> p + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.5271 + -0.94587 * tfactors.T913 + + 0.327891 * tfactors.T9 + -0.0355667 * tfactors.T953; - // ths8r - ln_set_rate = 21.5271 + -0.94587 * tfactors.T913 - + 0.327891 * tfactors.T9 + -0.0355667 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.94587 * tfactors.T923i + + 0.327891 + (5.0/3.0) * -0.0355667 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.94587 * tfactors.T923i - + 0.327891 + (5.0/3.0) * -0.0355667 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co53_n_to_He4_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co53_to_He4_Mn50_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co53 + n --> He4 + Mn50 - // Co53 + n --> He4 + Mn50 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.77398 + 4.96211 * tfactors.T913 + + -1.17699 * tfactors.T9 + 0.226 * tfactors.T953; - // ths8r - ln_set_rate = 7.77398 + 4.96211 * tfactors.T913 - + -1.17699 * tfactors.T9 + 0.226 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.96211 * tfactors.T923i + + -1.17699 + (5.0/3.0) * 0.226 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.96211 * tfactors.T923i - + -1.17699 + (5.0/3.0) * 0.226 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co53_He4_to_p_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co53_to_p_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co53 + He4 --> p + Ni56 - // Co53 + He4 --> p + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.2463 + -94.0605 * tfactors.T913i + -1.48203 * tfactors.T913 + + -0.476442 * tfactors.T9 + 0.00631587 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.2463 + -94.0605 * tfactors.T913i + -1.48203 * tfactors.T913 - + -0.476442 * tfactors.T9 + 0.00631587 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.0605 * tfactors.T943i + (1.0/3.0) * -1.48203 * tfactors.T923i + + -0.476442 + (5.0/3.0) * 0.00631587 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.0605 * tfactors.T943i + (1.0/3.0) * -1.48203 * tfactors.T923i - + -0.476442 + (5.0/3.0) * 0.00631587 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_n_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co54_to_p_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 + n --> p + Fe54 - // Co54 + n --> p + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.6932 + -1.41064 * tfactors.T913 + + 0.417457 * tfactors.T9 + -0.0400596 * tfactors.T953; - // ths8r - ln_set_rate = 21.6932 + -1.41064 * tfactors.T913 - + 0.417457 * tfactors.T9 + -0.0400596 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.41064 * tfactors.T923i + + 0.417457 + (5.0/3.0) * -0.0400596 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.41064 * tfactors.T923i - + 0.417457 + (5.0/3.0) * -0.0400596 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_n_to_He4_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co54_to_He4_Mn51_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 + n --> He4 + Mn51 - // Co54 + n --> He4 + Mn51 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.2846 + -1.92176 * tfactors.T913 + + 1.2968 * tfactors.T9 + -0.117145 * tfactors.T953; - // ths8r - ln_set_rate = 14.2846 + -1.92176 * tfactors.T913 - + 1.2968 * tfactors.T9 + -0.117145 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.92176 * tfactors.T923i + + 1.2968 + (5.0/3.0) * -0.117145 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.92176 * tfactors.T923i - + 1.2968 + (5.0/3.0) * -0.117145 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_He4_to_n_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co54_to_n_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 + He4 --> n + Cu57 - // Co54 + He4 --> n + Cu57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.5817 + -73.6465 * tfactors.T9i + 1.52892 * tfactors.T913 + + -0.01999 * tfactors.T9 + 0.0715186 * tfactors.T953; - // ths8r - ln_set_rate = 10.5817 + -73.6465 * tfactors.T9i + 1.52892 * tfactors.T913 - + -0.01999 * tfactors.T9 + 0.0715186 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 73.6465 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.52892 * tfactors.T923i + + -0.01999 + (5.0/3.0) * 0.0715186 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 73.6465 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.52892 * tfactors.T923i - + -0.01999 + (5.0/3.0) * 0.0715186 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co54_He4_to_p_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co54_to_p_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co54 + He4 --> p + Ni57 - // Co54 + He4 --> p + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.379 + -94.1012 * tfactors.T913i + -1.53121 * tfactors.T913 + + -0.462669 * tfactors.T9 + 0.00353266 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.379 + -94.1012 * tfactors.T913i + -1.53121 * tfactors.T913 - + -0.462669 * tfactors.T9 + 0.00353266 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1012 * tfactors.T943i + (1.0/3.0) * -1.53121 * tfactors.T923i + + -0.462669 + (5.0/3.0) * 0.00353266 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1012 * tfactors.T943i + (1.0/3.0) * -1.53121 * tfactors.T923i - + -0.462669 + (5.0/3.0) * 0.00353266 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_n_to_p_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co55_to_p_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + n --> p + Fe55 - // Co55 + n --> p + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.7398 + -1.62382 * tfactors.T913 + + 0.58115 * tfactors.T9 + -0.0537057 * tfactors.T953; - // ths8r - ln_set_rate = 20.7398 + -1.62382 * tfactors.T913 - + 0.58115 * tfactors.T9 + -0.0537057 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.62382 * tfactors.T923i + + 0.58115 + (5.0/3.0) * -0.0537057 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.62382 * tfactors.T923i - + 0.58115 + (5.0/3.0) * -0.0537057 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_n_to_He4_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co55_to_He4_Mn52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + n --> He4 + Mn52 - // Co55 + n --> He4 + Mn52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -12.5469 + 8.15876 * tfactors.T913 + + 3.05978 * tfactors.T9 + -0.406535 * tfactors.T953; - // ths8r - ln_set_rate = -12.5469 + 8.15876 * tfactors.T913 - + 3.05978 * tfactors.T9 + -0.406535 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 8.15876 * tfactors.T923i + + 3.05978 + (5.0/3.0) * -0.406535 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 8.15876 * tfactors.T923i - + 3.05978 + (5.0/3.0) * -0.406535 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_p_to_He4_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co55_to_He4_Fe52_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + p --> He4 + Fe52 - // Co55 + p --> He4 + Fe52 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 61.4434 + -9.65363 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 + + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 61.4434 + -9.65363 * tfactors.T9i + -91.6819 * tfactors.T913i + -0.329235 * tfactors.T913 - + -0.780924 * tfactors.T9 + 0.0425179 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.65363 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i + + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.65363 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.6819 * tfactors.T943i + (1.0/3.0) * -0.329235 * tfactors.T923i - + -0.780924 + (5.0/3.0) * 0.0425179 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_He4_to_n_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co55_to_n_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + He4 --> n + Cu58 - // Co55 + He4 --> n + Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 9.69034 + -92.9741 * tfactors.T9i + 4.29921 * tfactors.T913 + + -0.76309 * tfactors.T9 + 0.10257 * tfactors.T953; - // ths8r - ln_set_rate = 9.69034 + -92.9741 * tfactors.T9i + 4.29921 * tfactors.T913 - + -0.76309 * tfactors.T9 + 0.10257 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.9741 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.29921 * tfactors.T923i + + -0.76309 + (5.0/3.0) * 0.10257 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.9741 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.29921 * tfactors.T923i - + -0.76309 + (5.0/3.0) * 0.10257 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co55_He4_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co55_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co55 + He4 --> p + Ni58 - // Co55 + He4 --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 60.2281 + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 - + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i - + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_p_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> p + Fe56 - // Co56 + n --> p + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.4539 + -1.13331 * tfactors.T913 + + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; - // ths8r - ln_set_rate = 20.4539 + -1.13331 * tfactors.T913 - + 0.347185 * tfactors.T9 + -0.0328879 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i + + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.13331 * tfactors.T923i - + 0.347185 + (5.0/3.0) * -0.0328879 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_n_to_He4_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co56_to_He4_Mn53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + n --> He4 + Mn53 - // Co56 + n --> He4 + Mn53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.5672 + -2.81854 * tfactors.T913 + + 1.84188 * tfactors.T9 + -0.164509 * tfactors.T953; - // ths8r - ln_set_rate = 12.5672 + -2.81854 * tfactors.T913 - + 1.84188 * tfactors.T9 + -0.164509 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.81854 * tfactors.T923i + + 1.84188 + (5.0/3.0) * -0.164509 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.81854 * tfactors.T923i - + 1.84188 + (5.0/3.0) * -0.164509 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_to_n_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co56_to_n_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + p --> n + Ni56 - // Co56 + p --> n + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.3721 + -33.8622 * tfactors.T9i + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; - // ths8r - ln_set_rate = 13.3721 + -33.8622 * tfactors.T9i + 1.76846 * tfactors.T913 - + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 33.8622 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 33.8622 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.76846 * tfactors.T923i - + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_p_to_He4_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co56_to_He4_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + p --> He4 + Fe53 - // Co56 + p --> He4 + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 56.0473 + -2.66873 * tfactors.T9i + -91.7231 * tfactors.T913i + 10.052 * tfactors.T913 + + -3.86332 * tfactors.T9 + 0.391105 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 56.0473 + -2.66873 * tfactors.T9i + -91.7231 * tfactors.T913i + 10.052 * tfactors.T913 - + -3.86332 * tfactors.T9 + 0.391105 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.66873 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * 10.052 * tfactors.T923i + + -3.86332 + (5.0/3.0) * 0.391105 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.66873 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -91.7231 * tfactors.T943i + (1.0/3.0) * 10.052 * tfactors.T923i - + -3.86332 + (5.0/3.0) * 0.391105 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_He4_to_n_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co56_to_n_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + He4 --> n + Cu59 - // Co56 + He4 --> n + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.89185 + -61.8349 * tfactors.T9i + -1.00882 * tfactors.T913 + + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; - // ths8r - ln_set_rate = 8.89185 + -61.8349 * tfactors.T9i + -1.00882 * tfactors.T913 - + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 61.8349 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.00882 * tfactors.T923i + + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 61.8349 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.00882 * tfactors.T923i - + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co56_He4_to_p_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co56_to_p_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co56 + He4 --> p + Ni59 - // Co56 + He4 --> p + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 49.7325 + -94.1784 * tfactors.T913i + 17.5303 * tfactors.T913 + + -5.78946 * tfactors.T9 + 0.587654 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 49.7325 + -94.1784 * tfactors.T913i + 17.5303 * tfactors.T913 - + -5.78946 * tfactors.T9 + 0.587654 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.1784 * tfactors.T943i + (1.0/3.0) * 17.5303 * tfactors.T923i + + -5.78946 + (5.0/3.0) * 0.587654 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.1784 * tfactors.T943i + (1.0/3.0) * 17.5303 * tfactors.T923i - + -5.78946 + (5.0/3.0) * 0.587654 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_n_to_p_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co57_to_p_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + n --> p + Fe57 - // Co57 + n --> p + Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.547 + -0.061056 * tfactors.T913 + + 1.28749 * tfactors.T9 + -0.156423 * tfactors.T953; - // ths8r - ln_set_rate = 13.547 + -0.061056 * tfactors.T913 - + 1.28749 * tfactors.T9 + -0.156423 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.061056 * tfactors.T923i + + 1.28749 + (5.0/3.0) * -0.156423 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.061056 * tfactors.T923i - + 1.28749 + (5.0/3.0) * -0.156423 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_n_to_He4_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co57_to_He4_Mn54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + n --> He4 + Mn54 - // Co57 + n --> He4 + Mn54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -30.5739 + 26.4125 * tfactors.T913 + + -0.137701 * tfactors.T9 + -0.184911 * tfactors.T953; - // ths8r - ln_set_rate = -30.5739 + 26.4125 * tfactors.T913 - + -0.137701 * tfactors.T9 + -0.184911 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 26.4125 * tfactors.T923i + + -0.137701 + (5.0/3.0) * -0.184911 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 26.4125 * tfactors.T923i - + -0.137701 + (5.0/3.0) * -0.184911 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_to_n_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co57_to_n_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p --> n + Ni57 - // Co57 + p --> n + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.3008 + -46.9353 * tfactors.T9i + -1.13177 * tfactors.T913 + + 0.56875 * tfactors.T9 + -0.0579913 * tfactors.T953; - // ths8r - ln_set_rate = 19.3008 + -46.9353 * tfactors.T9i + -1.13177 * tfactors.T913 - + 0.56875 * tfactors.T9 + -0.0579913 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 46.9353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13177 * tfactors.T923i + + 0.56875 + (5.0/3.0) * -0.0579913 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 46.9353 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.13177 * tfactors.T923i - + 0.56875 + (5.0/3.0) * -0.0579913 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_p_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co57_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + p --> He4 + Fe54 - // Co57 + p --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 + + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -2.1962 + -38.1133 * tfactors.T913i + 29.3541 * tfactors.T913 - + -4.75966 * tfactors.T9 + 0.40418 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i + + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1133 * tfactors.T943i + (1.0/3.0) * 29.3541 * tfactors.T923i - + -4.75966 + (5.0/3.0) * 0.40418 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_He4_to_n_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co57_to_n_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + He4 --> n + Cu60 - // Co57 + He4 --> n + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.0625 + -77.1294 * tfactors.T9i + 2.72669 * tfactors.T913 + + -0.141713 * tfactors.T9 + 0.025172 * tfactors.T953; - // ths8r - ln_set_rate = 11.0625 + -77.1294 * tfactors.T9i + 2.72669 * tfactors.T913 - + -0.141713 * tfactors.T9 + 0.025172 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 77.1294 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.72669 * tfactors.T923i + + -0.141713 + (5.0/3.0) * 0.025172 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 77.1294 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.72669 * tfactors.T923i - + -0.141713 + (5.0/3.0) * 0.025172 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co57_He4_to_p_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co57_to_p_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co57 + He4 --> p + Ni60 - // Co57 + He4 --> p + Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 49.6113 + -94.2152 * tfactors.T913i + 16.1097 * tfactors.T913 + + -4.84624 * tfactors.T9 + 0.441487 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 49.6113 + -94.2152 * tfactors.T913i + 16.1097 * tfactors.T913 - + -4.84624 * tfactors.T9 + 0.441487 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -94.2152 * tfactors.T943i + (1.0/3.0) * 16.1097 * tfactors.T923i + + -4.84624 + (5.0/3.0) * 0.441487 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -94.2152 * tfactors.T943i + (1.0/3.0) * 16.1097 * tfactors.T923i - + -4.84624 + (5.0/3.0) * 0.441487 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_n_to_p_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co58_to_p_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + n --> p + Fe58 - // Co58 + n --> p + Fe58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.5496 + -3.2947 * tfactors.T913 + + 0.833003 * tfactors.T9 + -0.0604538 * tfactors.T953; - // ths8r - ln_set_rate = 19.5496 + -3.2947 * tfactors.T913 - + 0.833003 * tfactors.T9 + -0.0604538 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -3.2947 * tfactors.T923i + + 0.833003 + (5.0/3.0) * -0.0604538 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -3.2947 * tfactors.T923i - + 0.833003 + (5.0/3.0) * -0.0604538 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_n_to_He4_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Co58_to_He4_Mn55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + n --> He4 + Mn55 - // Co58 + n --> He4 + Mn55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.635 + -5.4323 * tfactors.T913 + + 3.33275 * tfactors.T9 + -0.339917 * tfactors.T953; - // ths8r - ln_set_rate = 10.635 + -5.4323 * tfactors.T913 - + 3.33275 * tfactors.T9 + -0.339917 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -5.4323 * tfactors.T923i + + 3.33275 + (5.0/3.0) * -0.339917 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -5.4323 * tfactors.T923i - + 3.33275 + (5.0/3.0) * -0.339917 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_p_to_n_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co58_to_n_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + p --> n + Ni58 - // Co58 + p --> n + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -27.5032 + -4.64783 * tfactors.T9i + 34.6301 * tfactors.T913 + + -3.77385 * tfactors.T9 + 0.190506 * tfactors.T953; - // ths8r - ln_set_rate = -27.5032 + -4.64783 * tfactors.T9i + 34.6301 * tfactors.T913 - + -3.77385 * tfactors.T9 + 0.190506 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.64783 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 34.6301 * tfactors.T923i + + -3.77385 + (5.0/3.0) * 0.190506 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.64783 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 34.6301 * tfactors.T923i - + -3.77385 + (5.0/3.0) * 0.190506 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_p_to_He4_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co58_to_He4_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + p --> He4 + Fe55 - // Co58 + p --> He4 + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.1012 + -38.1171 * tfactors.T913i + 13.2187 * tfactors.T913 + + -1.74746 * tfactors.T9 + 0.142513 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 15.1012 + -38.1171 * tfactors.T913i + 13.2187 * tfactors.T913 - + -1.74746 * tfactors.T9 + 0.142513 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1171 * tfactors.T943i + (1.0/3.0) * 13.2187 * tfactors.T923i + + -1.74746 + (5.0/3.0) * 0.142513 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1171 * tfactors.T943i + (1.0/3.0) * 13.2187 * tfactors.T923i - + -1.74746 + (5.0/3.0) * 0.142513 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_He4_to_n_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co58_to_n_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + He4 --> n + Cu61 - // Co58 + He4 --> n + Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 1.34095 + -40.7159 * tfactors.T9i + 1.07449 * tfactors.T913 + + 3.05815 * tfactors.T9 + -0.386686 * tfactors.T953; - // ths8r - ln_set_rate = 1.34095 + -40.7159 * tfactors.T9i + 1.07449 * tfactors.T913 - + 3.05815 * tfactors.T9 + -0.386686 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 40.7159 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.07449 * tfactors.T923i + + 3.05815 + (5.0/3.0) * -0.386686 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 40.7159 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.07449 * tfactors.T923i - + 3.05815 + (5.0/3.0) * -0.386686 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co58_He4_to_p_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co58_to_p_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co58 + He4 --> p + Ni61 - // Co58 + He4 --> p + Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -75.9084 + -5.67496 * tfactors.T9i + -39.0635 * tfactors.T913i + 109.727 * tfactors.T913 + + -23.3971 * tfactors.T9 + 2.29485 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -75.9084 + -5.67496 * tfactors.T9i + -39.0635 * tfactors.T913i + 109.727 * tfactors.T913 - + -23.3971 * tfactors.T9 + 2.29485 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.67496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0635 * tfactors.T943i + (1.0/3.0) * 109.727 * tfactors.T923i + + -23.3971 + (5.0/3.0) * 2.29485 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.67496 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0635 * tfactors.T943i + (1.0/3.0) * 109.727 * tfactors.T923i - + -23.3971 + (5.0/3.0) * 2.29485 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_p_to_n_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co59_to_n_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 + p --> n + Ni59 - // Co59 + p --> n + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.9735 + -21.5276 * tfactors.T9i + 2.48878 * tfactors.T913 + + 0.158023 * tfactors.T9 + -0.0135864 * tfactors.T953; - // ths8r - ln_set_rate = 11.9735 + -21.5276 * tfactors.T9i + 2.48878 * tfactors.T913 - + 0.158023 * tfactors.T9 + -0.0135864 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.5276 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.48878 * tfactors.T923i + + 0.158023 + (5.0/3.0) * -0.0135864 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.5276 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.48878 * tfactors.T923i - + 0.158023 + (5.0/3.0) * -0.0135864 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_p_to_He4_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Co59_to_He4_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 + p --> He4 + Fe56 - // Co59 + p --> He4 + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.47 + -38.1208 * tfactors.T913i + 13.9086 * tfactors.T913 + + -3.45838 * tfactors.T9 + 0.391302 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 19.47 + -38.1208 * tfactors.T913i + 13.9086 * tfactors.T913 - + -3.45838 * tfactors.T9 + 0.391302 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -38.1208 * tfactors.T943i + (1.0/3.0) * 13.9086 * tfactors.T923i + + -3.45838 + (5.0/3.0) * 0.391302 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -38.1208 * tfactors.T943i + (1.0/3.0) * 13.9086 * tfactors.T923i - + -3.45838 + (5.0/3.0) * 0.391302 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_He4_to_n_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co59_to_n_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 + He4 --> n + Cu62 - // Co59 + He4 --> n + Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 9.13317 + -58.9158 * tfactors.T9i + 0.965159 * tfactors.T913 + + 0.563053 * tfactors.T9 + -0.0358157 * tfactors.T953; - // ths8r - ln_set_rate = 9.13317 + -58.9158 * tfactors.T9i + 0.965159 * tfactors.T913 - + 0.563053 * tfactors.T9 + -0.0358157 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 58.9158 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.965159 * tfactors.T923i + + 0.563053 + (5.0/3.0) * -0.0358157 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 58.9158 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.965159 * tfactors.T923i - + 0.563053 + (5.0/3.0) * -0.0358157 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Co59_He4_to_p_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Co59_to_p_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Co59 + He4 --> p + Ni62 - // Co59 + He4 --> p + Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -93.0347 + -4.01946 * tfactors.T9i + -39.0669 * tfactors.T913i + 126.723 * tfactors.T913 + + -27.3047 * tfactors.T9 + 2.67436 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -93.0347 + -4.01946 * tfactors.T9i + -39.0669 * tfactors.T913i + 126.723 * tfactors.T913 - + -27.3047 * tfactors.T9 + 2.67436 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.01946 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0669 * tfactors.T943i + (1.0/3.0) * 126.723 * tfactors.T923i + + -27.3047 + (5.0/3.0) * 2.67436 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.01946 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.0669 * tfactors.T943i + (1.0/3.0) * 126.723 * tfactors.T923i - + -27.3047 + (5.0/3.0) * 2.67436 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_p_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> p + Co56 - // Ni56 + n --> p + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.5693 + 1.76846 * tfactors.T913 + + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; - // ths8r - ln_set_rate = 15.5693 + 1.76846 * tfactors.T913 - + 0.197992 * tfactors.T9 + -0.017494 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i + + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.76846 * tfactors.T923i - + 0.197992 + (5.0/3.0) * -0.017494 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_n_to_He4_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni56_to_He4_Fe53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + n --> He4 + Fe53 - // Ni56 + n --> He4 + Fe53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -7.84393 + 6.43259 * tfactors.T913 + + 2.29591 * tfactors.T9 + -0.254724 * tfactors.T953; - // ths8r - ln_set_rate = -7.84393 + 6.43259 * tfactors.T913 - + 2.29591 * tfactors.T9 + -0.254724 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 6.43259 * tfactors.T923i + + 2.29591 + (5.0/3.0) * -0.254724 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 6.43259 * tfactors.T923i - + 2.29591 + (5.0/3.0) * -0.254724 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_p_to_He4_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni56_to_He4_Co53_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + p --> He4 + Co53 - // Ni56 + p --> He4 + Co53 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 67.6294 + -74.2085 * tfactors.T9i + -94.0605 * tfactors.T913i + -1.48203 * tfactors.T913 + + -0.476442 * tfactors.T9 + 0.00631587 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 67.6294 + -74.2085 * tfactors.T9i + -94.0605 * tfactors.T913i + -1.48203 * tfactors.T913 - + -0.476442 * tfactors.T9 + 0.00631587 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.2085 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.0605 * tfactors.T943i + (1.0/3.0) * -1.48203 * tfactors.T923i + + -0.476442 + (5.0/3.0) * 0.00631587 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.2085 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.0605 * tfactors.T943i + (1.0/3.0) * -1.48203 * tfactors.T923i - + -0.476442 + (5.0/3.0) * 0.00631587 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_He4_to_n_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni56_to_n_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + He4 --> n + Zn59 - // Ni56 + He4 --> n + Zn59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.1566 + -142.615 * tfactors.T9i + 4.01795 * tfactors.T913 + + -1.00571 * tfactors.T9 + 0.129548 * tfactors.T953; - // ths8r - ln_set_rate = 13.1566 + -142.615 * tfactors.T9i + 4.01795 * tfactors.T913 - + -1.00571 * tfactors.T9 + 0.129548 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 142.615 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.01795 * tfactors.T923i + + -1.00571 + (5.0/3.0) * 0.129548 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 142.615 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.01795 * tfactors.T923i - + -1.00571 + (5.0/3.0) * 0.129548 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni56_He4_to_p_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni56_to_p_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni56 + He4 --> p + Cu59 - // Ni56 + He4 --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.8471 + -27.9728 * tfactors.T9i + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 + + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.8471 + -27.9728 * tfactors.T9i + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 - + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.9728 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i + + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.9728 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i - + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_n_to_p_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni57_to_p_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + n --> p + Co57 - // Ni57 + n --> p + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.9939 + -1.13177 * tfactors.T913 + + 0.56875 * tfactors.T9 + -0.0579913 * tfactors.T953; - // ths8r - ln_set_rate = 19.9939 + -1.13177 * tfactors.T913 - + 0.56875 * tfactors.T9 + -0.0579913 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.13177 * tfactors.T923i + + 0.56875 + (5.0/3.0) * -0.0579913 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.13177 * tfactors.T923i - + 0.56875 + (5.0/3.0) * -0.0579913 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_n_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni57_to_He4_Fe54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + n --> He4 + Fe54 - // Ni57 + n --> He4 + Fe54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.5327 + 0.48562 * tfactors.T913 + + -0.0249302 * tfactors.T9 + 0.0509605 * tfactors.T953; - // ths8r - ln_set_rate = 14.5327 + 0.48562 * tfactors.T913 - + -0.0249302 * tfactors.T9 + 0.0509605 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.48562 * tfactors.T923i + + -0.0249302 + (5.0/3.0) * 0.0509605 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.48562 * tfactors.T923i - + -0.0249302 + (5.0/3.0) * 0.0509605 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_p_to_n_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni57_to_n_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + p --> n + Cu57 - // Ni57 + p --> n + Cu57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.0221 + -110.878 * tfactors.T9i + -0.57954 * tfactors.T913 + + 0.250954 * tfactors.T9 + -0.0264877 * tfactors.T953; - // ths8r - ln_set_rate = 21.0221 + -110.878 * tfactors.T9i + -0.57954 * tfactors.T913 - + 0.250954 * tfactors.T9 + -0.0264877 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.878 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.57954 * tfactors.T923i + + 0.250954 + (5.0/3.0) * -0.0264877 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.878 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.57954 * tfactors.T923i - + 0.250954 + (5.0/3.0) * -0.0264877 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_p_to_He4_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni57_to_He4_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + p --> He4 + Co54 - // Ni57 + p --> He4 + Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 64.2979 + -37.2315 * tfactors.T9i + -94.1012 * tfactors.T913i + -1.53121 * tfactors.T913 + + -0.462669 * tfactors.T9 + 0.00353266 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 64.2979 + -37.2315 * tfactors.T9i + -94.1012 * tfactors.T913i + -1.53121 * tfactors.T913 - + -0.462669 * tfactors.T9 + 0.00353266 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 37.2315 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1012 * tfactors.T943i + (1.0/3.0) * -1.53121 * tfactors.T923i + + -0.462669 + (5.0/3.0) * 0.00353266 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 37.2315 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1012 * tfactors.T943i + (1.0/3.0) * -1.53121 * tfactors.T923i - + -0.462669 + (5.0/3.0) * 0.00353266 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_He4_to_n_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni57_to_n_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + He4 --> n + Zn60 - // Ni57 + He4 --> n + Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 9.72845 + -87.5049 * tfactors.T9i + 5.43552 * tfactors.T913 + + -1.25169 * tfactors.T9 + 0.148383 * tfactors.T953; - // ths8r - ln_set_rate = 9.72845 + -87.5049 * tfactors.T9i + 5.43552 * tfactors.T913 - + -1.25169 * tfactors.T9 + 0.148383 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 87.5049 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.43552 * tfactors.T923i + + -1.25169 + (5.0/3.0) * 0.148383 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 87.5049 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.43552 * tfactors.T923i - + -1.25169 + (5.0/3.0) * 0.148383 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni57_He4_to_p_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni57_to_p_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni57 + He4 --> p + Cu60 - // Ni57 + He4 --> p + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.6894 + -30.1941 * tfactors.T9i + -39.9846 * tfactors.T913i + 20.3348 * tfactors.T913 + + -4.47882 * tfactors.T9 + 0.442893 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 12.6894 + -30.1941 * tfactors.T9i + -39.9846 * tfactors.T913i + 20.3348 * tfactors.T913 - + -4.47882 * tfactors.T9 + 0.442893 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 30.1941 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9846 * tfactors.T943i + (1.0/3.0) * 20.3348 * tfactors.T923i + + -4.47882 + (5.0/3.0) * 0.442893 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 30.1941 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9846 * tfactors.T943i + (1.0/3.0) * 20.3348 * tfactors.T923i - + -4.47882 + (5.0/3.0) * 0.442893 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_n_to_p_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni58_to_p_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + n --> p + Co58 - // Ni58 + n --> p + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -25.8938 + 34.6301 * tfactors.T913 + + -3.77385 * tfactors.T9 + 0.190506 * tfactors.T953; - // ths8r - ln_set_rate = -25.8938 + 34.6301 * tfactors.T913 - + -3.77385 * tfactors.T9 + 0.190506 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 34.6301 * tfactors.T923i + + -3.77385 + (5.0/3.0) * 0.190506 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 34.6301 * tfactors.T923i - + -3.77385 + (5.0/3.0) * 0.190506 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_n_to_He4_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni58_to_He4_Fe55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + n --> He4 + Fe55 - // Ni58 + n --> He4 + Fe55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -2.03901 + 3.44996 * tfactors.T913 + + 2.98226 * tfactors.T9 + -0.387699 * tfactors.T953; - // ths8r - ln_set_rate = -2.03901 + 3.44996 * tfactors.T913 - + 2.98226 * tfactors.T9 + -0.387699 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 3.44996 * tfactors.T923i + + 2.98226 + (5.0/3.0) * -0.387699 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 3.44996 * tfactors.T923i - + 2.98226 + (5.0/3.0) * -0.387699 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_to_n_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni58_to_n_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + p --> n + Cu58 - // Ni58 + p --> n + Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.9037 + -108.479 * tfactors.T9i + -0.603447 * tfactors.T913 + + 0.300346 * tfactors.T9 + -0.0361808 * tfactors.T953; - // ths8r - ln_set_rate = 21.9037 + -108.479 * tfactors.T9i + -0.603447 * tfactors.T913 - + 0.300346 * tfactors.T9 + -0.0361808 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 108.479 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.603447 * tfactors.T923i + + 0.300346 + (5.0/3.0) * -0.0361808 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 108.479 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.603447 * tfactors.T923i - + 0.300346 + (5.0/3.0) * -0.0361808 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_p_to_He4_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni58_to_He4_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + p --> He4 + Co55 - // Ni58 + p --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 63.6142 + -15.5045 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 + + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 63.6142 + -15.5045 * tfactors.T9i + -94.1404 * tfactors.T913i + 3.39179 * tfactors.T913 - + -1.71062 * tfactors.T9 + 0.133003 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 15.5045 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i + + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 15.5045 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1404 * tfactors.T943i + (1.0/3.0) * 3.39179 * tfactors.T923i - + -1.71062 + (5.0/3.0) * 0.133003 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_He4_to_n_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni58_to_n_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + He4 --> n + Zn61 - // Ni58 + He4 --> n + Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.06 + -110.575 * tfactors.T9i + 2.9413 * tfactors.T913 + + -0.542181 * tfactors.T9 + 0.0584262 * tfactors.T953; - // ths8r - ln_set_rate = 15.06 + -110.575 * tfactors.T9i + 2.9413 * tfactors.T913 - + -0.542181 * tfactors.T9 + 0.0584262 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 110.575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.9413 * tfactors.T923i + + -0.542181 + (5.0/3.0) * 0.0584262 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 110.575 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.9413 * tfactors.T923i - + -0.542181 + (5.0/3.0) * 0.0584262 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni58_He4_to_p_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni58_to_p_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni58 + He4 --> p + Cu61 - // Ni58 + He4 --> p + Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.4671 + -36.0681 * tfactors.T9i + -39.9882 * tfactors.T913i + 13.3129 * tfactors.T913 + + -2.90092 * tfactors.T9 + 0.277699 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 21.4671 + -36.0681 * tfactors.T9i + -39.9882 * tfactors.T913i + 13.3129 * tfactors.T913 - + -2.90092 * tfactors.T9 + 0.277699 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 36.0681 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9882 * tfactors.T943i + (1.0/3.0) * 13.3129 * tfactors.T923i + + -2.90092 + (5.0/3.0) * 0.277699 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 36.0681 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9882 * tfactors.T943i + (1.0/3.0) * 13.3129 * tfactors.T923i - + -2.90092 + (5.0/3.0) * 0.277699 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_n_to_p_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni59_to_p_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + n --> p + Co59 - // Ni59 + n --> p + Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.6666 + 2.48878 * tfactors.T913 + + 0.158023 * tfactors.T9 + -0.0135864 * tfactors.T953; - // ths8r - ln_set_rate = 12.6666 + 2.48878 * tfactors.T913 - + 0.158023 * tfactors.T9 + -0.0135864 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.48878 * tfactors.T923i + + 0.158023 + (5.0/3.0) * -0.0135864 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.48878 * tfactors.T923i - + 0.158023 + (5.0/3.0) * -0.0135864 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_n_to_He4_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni59_to_He4_Fe56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + n --> He4 + Fe56 - // Ni59 + n --> He4 + Fe56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4083 + -4.21617 * tfactors.T913 + + 1.58032 * tfactors.T9 + -0.126895 * tfactors.T953; - // ths8r - ln_set_rate = 16.4083 + -4.21617 * tfactors.T913 - + 1.58032 * tfactors.T9 + -0.126895 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -4.21617 * tfactors.T923i + + 1.58032 + (5.0/3.0) * -0.126895 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -4.21617 * tfactors.T923i - + 1.58032 + (5.0/3.0) * -0.126895 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_p_to_n_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni59_to_n_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + p --> n + Cu59 - // Ni59 + p --> n + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.6885 + -64.762 * tfactors.T9i + -0.680585 * tfactors.T913 + + 0.344111 * tfactors.T9 + -0.0446623 * tfactors.T953; - // ths8r - ln_set_rate = 20.6885 + -64.762 * tfactors.T9i + -0.680585 * tfactors.T913 - + 0.344111 * tfactors.T9 + -0.0446623 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 64.762 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.680585 * tfactors.T923i + + 0.344111 + (5.0/3.0) * -0.0446623 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 64.762 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.680585 * tfactors.T923i - + 0.344111 + (5.0/3.0) * -0.0446623 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_p_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni59_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + p --> He4 + Co56 - // Ni59 + p --> He4 + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 51.8514 + -2.92715 * tfactors.T9i + -94.1784 * tfactors.T913i + 17.5303 * tfactors.T913 + + -5.78946 * tfactors.T9 + 0.587654 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 51.8514 + -2.92715 * tfactors.T9i + -94.1784 * tfactors.T913i + 17.5303 * tfactors.T913 - + -5.78946 * tfactors.T9 + 0.587654 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.92715 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1784 * tfactors.T943i + (1.0/3.0) * 17.5303 * tfactors.T923i + + -5.78946 + (5.0/3.0) * 0.587654 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.92715 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.1784 * tfactors.T943i + (1.0/3.0) * 17.5303 * tfactors.T923i - + -5.78946 + (5.0/3.0) * 0.587654 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_He4_to_n_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni59_to_n_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + He4 --> n + Zn62 - // Ni59 + He4 --> n + Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.7055 + -65.3405 * tfactors.T9i + -0.824101 * tfactors.T913 + + 0.913843 * tfactors.T9 + -0.084157 * tfactors.T953; - // ths8r - ln_set_rate = 12.7055 + -65.3405 * tfactors.T9i + -0.824101 * tfactors.T913 - + 0.913843 * tfactors.T9 + -0.084157 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 65.3405 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.824101 * tfactors.T923i + + 0.913843 + (5.0/3.0) * -0.084157 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 65.3405 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.824101 * tfactors.T923i - + 0.913843 + (5.0/3.0) * -0.084157 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni59_He4_to_p_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni59_to_p_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni59 + He4 --> p + Cu62 - // Ni59 + He4 --> p + Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.4545 + -37.3882 * tfactors.T9i + -39.9917 * tfactors.T913i + 15.2078 * tfactors.T913 + + -3.13691 * tfactors.T9 + 0.278116 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 18.4545 + -37.3882 * tfactors.T9i + -39.9917 * tfactors.T913i + 15.2078 * tfactors.T913 - + -3.13691 * tfactors.T9 + 0.278116 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 37.3882 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9917 * tfactors.T943i + (1.0/3.0) * 15.2078 * tfactors.T923i + + -3.13691 + (5.0/3.0) * 0.278116 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 37.3882 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9917 * tfactors.T943i + (1.0/3.0) * 15.2078 * tfactors.T923i - + -3.13691 + (5.0/3.0) * 0.278116 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_n_to_He4_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni60_to_He4_Fe57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 + n --> He4 + Fe57 - // Ni60 + n --> He4 + Fe57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -60.4121 + 55.1407 * tfactors.T913 + + -5.1585 * tfactors.T9 + 0.212248 * tfactors.T953; - // ths8r - ln_set_rate = -60.4121 + 55.1407 * tfactors.T913 - + -5.1585 * tfactors.T9 + 0.212248 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 55.1407 * tfactors.T923i + + -5.1585 + (5.0/3.0) * 0.212248 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 55.1407 * tfactors.T923i - + -5.1585 + (5.0/3.0) * 0.212248 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_p_to_n_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni60_to_n_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 + p --> n + Cu60 - // Ni60 + p --> n + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 22.2617 + -80.1909 * tfactors.T9i + -0.671684 * tfactors.T913 + + 0.215296 * tfactors.T9 + -0.0251141 * tfactors.T953; - // ths8r - ln_set_rate = 22.2617 + -80.1909 * tfactors.T9i + -0.671684 * tfactors.T913 - + 0.215296 * tfactors.T9 + -0.0251141 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 80.1909 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.671684 * tfactors.T923i + + 0.215296 + (5.0/3.0) * -0.0251141 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 80.1909 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.671684 * tfactors.T923i - + 0.215296 + (5.0/3.0) * -0.0251141 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_p_to_He4_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni60_to_He4_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 + p --> He4 + Co57 - // Ni60 + p --> He4 + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 53.0001 + -3.0615 * tfactors.T9i + -94.2152 * tfactors.T913i + 16.1097 * tfactors.T913 + + -4.84624 * tfactors.T9 + 0.441487 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 53.0001 + -3.0615 * tfactors.T9i + -94.2152 * tfactors.T913i + 16.1097 * tfactors.T913 - + -4.84624 * tfactors.T9 + 0.441487 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.0615 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.2152 * tfactors.T943i + (1.0/3.0) * 16.1097 * tfactors.T923i + + -4.84624 + (5.0/3.0) * 0.441487 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.0615 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -94.2152 * tfactors.T943i + (1.0/3.0) * 16.1097 * tfactors.T923i - + -4.84624 + (5.0/3.0) * 0.441487 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_He4_to_n_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni60_to_n_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 + He4 --> n + Zn63 - // Ni60 + He4 --> n + Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.4158 + -91.7388 * tfactors.T9i + 1.29216 * tfactors.T913 + + -0.174127 * tfactors.T9 + 0.0226404 * tfactors.T953; - // ths8r - ln_set_rate = 16.4158 + -91.7388 * tfactors.T9i + 1.29216 * tfactors.T913 - + -0.174127 * tfactors.T9 + 0.0226404 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 91.7388 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.29216 * tfactors.T923i + + -0.174127 + (5.0/3.0) * 0.0226404 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 91.7388 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.29216 * tfactors.T923i - + -0.174127 + (5.0/3.0) * 0.0226404 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni60_He4_to_p_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni60_to_p_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni60 + He4 --> p + Cu63 - // Ni60 + He4 --> p + Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 25.9226 + -43.5935 * tfactors.T9i + -39.995 * tfactors.T913i + 9.96871 * tfactors.T913 + + -2.08607 * tfactors.T9 + 0.166693 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 25.9226 + -43.5935 * tfactors.T9i + -39.995 * tfactors.T913i + 9.96871 * tfactors.T913 - + -2.08607 * tfactors.T9 + 0.166693 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 43.5935 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.995 * tfactors.T943i + (1.0/3.0) * 9.96871 * tfactors.T923i + + -2.08607 + (5.0/3.0) * 0.166693 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 43.5935 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.995 * tfactors.T943i + (1.0/3.0) * 9.96871 * tfactors.T923i - + -2.08607 + (5.0/3.0) * 0.166693 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_n_to_He4_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ni61_to_He4_Fe58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 + n --> He4 + Fe58 - // Ni61 + n --> He4 + Fe58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.5185 + -7.53968 * tfactors.T913 + + 4.09062 * tfactors.T9 + -0.416412 * tfactors.T953; - // ths8r - ln_set_rate = 10.5185 + -7.53968 * tfactors.T913 - + 4.09062 * tfactors.T9 + -0.416412 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -7.53968 * tfactors.T923i + + 4.09062 + (5.0/3.0) * -0.416412 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -7.53968 * tfactors.T923i - + 4.09062 + (5.0/3.0) * -0.416412 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_p_to_n_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni61_to_n_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 + p --> n + Cu61 - // Ni61 + p --> n + Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.1763 + -35.0409 * tfactors.T9i + -1.69187 * tfactors.T913 + + 0.784543 * tfactors.T9 + -0.100904 * tfactors.T953; - // ths8r - ln_set_rate = 20.1763 + -35.0409 * tfactors.T9i + -1.69187 * tfactors.T913 - + 0.784543 * tfactors.T9 + -0.100904 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 35.0409 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.69187 * tfactors.T923i + + 0.784543 + (5.0/3.0) * -0.100904 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 35.0409 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.69187 * tfactors.T923i - + 0.784543 + (5.0/3.0) * -0.100904 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_p_to_He4_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni61_to_He4_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 + p --> He4 + Co58 - // Ni61 + p --> He4 + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -74.3746 + -39.0635 * tfactors.T913i + 109.727 * tfactors.T913 + + -23.3971 * tfactors.T9 + 2.29485 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -74.3746 + -39.0635 * tfactors.T913i + 109.727 * tfactors.T913 - + -23.3971 * tfactors.T9 + 2.29485 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0635 * tfactors.T943i + (1.0/3.0) * 109.727 * tfactors.T923i + + -23.3971 + (5.0/3.0) * 2.29485 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0635 * tfactors.T943i + (1.0/3.0) * 109.727 * tfactors.T923i - + -23.3971 + (5.0/3.0) * 2.29485 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_He4_to_n_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni61_to_n_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 + He4 --> n + Zn64 - // Ni61 + He4 --> n + Zn64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 4.60741 + -44.8367 * tfactors.T9i + -0.988345 * tfactors.T913 + + 3.05973 * tfactors.T9 + -0.380848 * tfactors.T953; - // ths8r - ln_set_rate = 4.60741 + -44.8367 * tfactors.T9i + -0.988345 * tfactors.T913 - + 3.05973 * tfactors.T9 + -0.380848 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 44.8367 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.988345 * tfactors.T923i + + 3.05973 + (5.0/3.0) * -0.380848 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 44.8367 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.988345 * tfactors.T923i - + 3.05973 + (5.0/3.0) * -0.380848 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni61_He4_to_p_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni61_to_p_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni61 + He4 --> p + Cu64 - // Ni61 + He4 --> p + Cu64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 25.1786 + -42.4806 * tfactors.T9i + -39.9983 * tfactors.T913i + 5.14164 * tfactors.T913 + + 0.0632313 * tfactors.T9 + -0.0939329 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 25.1786 + -42.4806 * tfactors.T9i + -39.9983 * tfactors.T913i + 5.14164 * tfactors.T913 - + 0.0632313 * tfactors.T9 + -0.0939329 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 42.4806 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9983 * tfactors.T943i + (1.0/3.0) * 5.14164 * tfactors.T923i + + 0.0632313 + (5.0/3.0) * -0.0939329 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 42.4806 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -39.9983 * tfactors.T943i + (1.0/3.0) * 5.14164 * tfactors.T923i - + 0.0632313 + (5.0/3.0) * -0.0939329 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_p_to_n_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni62_to_n_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 + p --> n + Cu62 - // Ni62 + p --> n + Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 22.2147 + -54.8962 * tfactors.T9i + -2.13932 * tfactors.T913 + + 0.412918 * tfactors.T9 + -0.0409549 * tfactors.T953; - // ths8r - ln_set_rate = 22.2147 + -54.8962 * tfactors.T9i + -2.13932 * tfactors.T913 - + 0.412918 * tfactors.T9 + -0.0409549 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 54.8962 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.13932 * tfactors.T923i + + 0.412918 + (5.0/3.0) * -0.0409549 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 54.8962 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.13932 * tfactors.T923i - + 0.412918 + (5.0/3.0) * -0.0409549 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_p_to_He4_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni62_to_He4_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 + p --> He4 + Co59 - // Ni62 + p --> He4 + Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -89.6434 + -39.0669 * tfactors.T913i + 126.723 * tfactors.T913 + + -27.3047 * tfactors.T9 + 2.67436 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -89.6434 + -39.0669 * tfactors.T913i + 126.723 * tfactors.T913 - + -27.3047 * tfactors.T9 + 2.67436 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.0669 * tfactors.T943i + (1.0/3.0) * 126.723 * tfactors.T923i + + -27.3047 + (5.0/3.0) * 2.67436 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.0669 * tfactors.T943i + (1.0/3.0) * 126.723 * tfactors.T923i - + -27.3047 + (5.0/3.0) * 2.67436 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_He4_to_n_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni62_to_n_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 + He4 --> n + Zn65 - // Ni62 + He4 --> n + Zn65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.1063 + -75.2076 * tfactors.T9i + -1.0424 * tfactors.T913 + + 0.355927 * tfactors.T9 + -0.0148374 * tfactors.T953; - // ths8r - ln_set_rate = 17.1063 + -75.2076 * tfactors.T9i + -1.0424 * tfactors.T913 - + 0.355927 * tfactors.T9 + -0.0148374 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 75.2076 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.0424 * tfactors.T923i + + 0.355927 + (5.0/3.0) * -0.0148374 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 75.2076 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.0424 * tfactors.T923i - + 0.355927 + (5.0/3.0) * -0.0148374 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni62_He4_to_p_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni62_to_p_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni62 + He4 --> p + Cu65 - // Ni62 + He4 --> p + Cu65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 28.6732 + -50.4388 * tfactors.T9i + -40.0015 * tfactors.T913i + 9.18742 * tfactors.T913 + + -2.93395 * tfactors.T9 + 0.309787 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 28.6732 + -50.4388 * tfactors.T9i + -40.0015 * tfactors.T913i + 9.18742 * tfactors.T913 - + -2.93395 * tfactors.T9 + 0.309787 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 50.4388 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.0015 * tfactors.T943i + (1.0/3.0) * 9.18742 * tfactors.T923i + + -2.93395 + (5.0/3.0) * 0.309787 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 50.4388 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.0015 * tfactors.T943i + (1.0/3.0) * 9.18742 * tfactors.T923i - + -2.93395 + (5.0/3.0) * 0.309787 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni63_p_to_n_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni63_to_n_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni63 + p --> n + Cu63 - // Ni63 + p --> n + Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -11.1451 + -8.30152 * tfactors.T9i + 21.0235 * tfactors.T913 + + -1.85553 * tfactors.T9 + 0.0587378 * tfactors.T953; - // ths8r - ln_set_rate = -11.1451 + -8.30152 * tfactors.T9i + 21.0235 * tfactors.T913 - + -1.85553 * tfactors.T9 + 0.0587378 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.30152 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.0235 * tfactors.T923i + + -1.85553 + (5.0/3.0) * 0.0587378 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.30152 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 21.0235 * tfactors.T923i - + -1.85553 + (5.0/3.0) * 0.0587378 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni63_He4_to_n_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Ni63_to_n_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni63 + He4 --> n + Zn66 - // Ni63 + He4 --> n + Zn66 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -30.2433 + -26.2207 * tfactors.T9i + 25.0757 * tfactors.T913 + + 0.0590561 * tfactors.T9 + -0.21357 * tfactors.T953; - // ths8r - ln_set_rate = -30.2433 + -26.2207 * tfactors.T9i + 25.0757 * tfactors.T913 - + 0.0590561 * tfactors.T9 + -0.21357 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.2207 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.0757 * tfactors.T923i + + 0.0590561 + (5.0/3.0) * -0.21357 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.2207 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 25.0757 * tfactors.T923i - + 0.0590561 + (5.0/3.0) * -0.21357 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ni64_p_to_n_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ni64_to_n_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ni64 + p --> n + Cu64 - // Ni64 + p --> n + Cu64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.6809 + -28.5167 * tfactors.T9i + -2.37283 * tfactors.T913 + + 0.155682 * tfactors.T9 + 0.0314201 * tfactors.T953; - // ths8r - ln_set_rate = 19.6809 + -28.5167 * tfactors.T9i + -2.37283 * tfactors.T913 - + 0.155682 * tfactors.T9 + 0.0314201 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 28.5167 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.37283 * tfactors.T923i + + 0.155682 + (5.0/3.0) * 0.0314201 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 28.5167 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.37283 * tfactors.T923i - + 0.155682 + (5.0/3.0) * 0.0314201 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu57_n_to_p_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu57_to_p_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu57 + n --> p + Ni57 - // Cu57 + n --> p + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.0221 + -0.57954 * tfactors.T913 + + 0.250954 * tfactors.T9 + -0.0264877 * tfactors.T953; - // ths8r - ln_set_rate = 21.0221 + -0.57954 * tfactors.T913 - + 0.250954 * tfactors.T9 + -0.0264877 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.57954 * tfactors.T923i + + 0.250954 + (5.0/3.0) * -0.0264877 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.57954 * tfactors.T923i - + 0.250954 + (5.0/3.0) * -0.0264877 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu57_n_to_He4_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu57_to_He4_Co54_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu57 + n --> He4 + Co54 - // Cu57 + n --> He4 + Co54 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.5006 + 1.52892 * tfactors.T913 + + -0.01999 * tfactors.T9 + 0.0715186 * tfactors.T953; - // ths8r - ln_set_rate = 10.5006 + 1.52892 * tfactors.T913 - + -0.01999 * tfactors.T9 + 0.0715186 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.52892 * tfactors.T923i + + -0.01999 + (5.0/3.0) * 0.0715186 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.52892 * tfactors.T923i - + -0.01999 + (5.0/3.0) * 0.0715186 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu57_He4_to_p_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu57_to_p_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu57 + He4 --> p + Zn60 - // Cu57 + He4 --> p + Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 65.3414 + -98.8126 * tfactors.T913i + -0.580624 * tfactors.T913 + + -0.793165 * tfactors.T9 + 0.0435934 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 65.3414 + -98.8126 * tfactors.T913i + -0.580624 * tfactors.T913 - + -0.793165 * tfactors.T9 + 0.0435934 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -98.8126 * tfactors.T943i + (1.0/3.0) * -0.580624 * tfactors.T923i + + -0.793165 + (5.0/3.0) * 0.0435934 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -98.8126 * tfactors.T943i + (1.0/3.0) * -0.580624 * tfactors.T923i - + -0.793165 + (5.0/3.0) * 0.0435934 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_n_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu58_to_p_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 + n --> p + Ni58 - // Cu58 + n --> p + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.8051 + -0.603447 * tfactors.T913 + + 0.300346 * tfactors.T9 + -0.0361808 * tfactors.T953; - // ths8r - ln_set_rate = 20.8051 + -0.603447 * tfactors.T913 - + 0.300346 * tfactors.T9 + -0.0361808 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.603447 * tfactors.T923i + + 0.300346 + (5.0/3.0) * -0.0361808 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.603447 * tfactors.T923i - + 0.300346 + (5.0/3.0) * -0.0361808 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_n_to_He4_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu58_to_He4_Co55_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 + n --> He4 + Co55 - // Cu58 + n --> He4 + Co55 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.9778 + 4.29921 * tfactors.T913 + + -0.76309 * tfactors.T9 + 0.10257 * tfactors.T953; - // ths8r - ln_set_rate = 11.9778 + 4.29921 * tfactors.T913 - + -0.76309 * tfactors.T9 + 0.10257 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.29921 * tfactors.T923i + + -0.76309 + (5.0/3.0) * 0.10257 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.29921 * tfactors.T923i - + -0.76309 + (5.0/3.0) * 0.10257 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu58_He4_to_p_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu58_to_p_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu58 + He4 --> p + Zn61 - // Cu58 + He4 --> p + Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -80.5277 + -2.09612 * tfactors.T9i + -40.9023 * tfactors.T913i + 107.263 * tfactors.T913 + + -20.9034 * tfactors.T9 + 1.9567 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -80.5277 + -2.09612 * tfactors.T9i + -40.9023 * tfactors.T913i + 107.263 * tfactors.T913 - + -20.9034 * tfactors.T9 + 1.9567 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.09612 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9023 * tfactors.T943i + (1.0/3.0) * 107.263 * tfactors.T923i + + -20.9034 + (5.0/3.0) * 1.9567 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.09612 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9023 * tfactors.T943i + (1.0/3.0) * 107.263 * tfactors.T923i - + -20.9034 + (5.0/3.0) * 1.9567 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_n_to_p_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu59_to_p_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + n --> p + Ni59 - // Cu59 + n --> p + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.6885 + -0.680585 * tfactors.T913 + + 0.344111 * tfactors.T9 + -0.0446623 * tfactors.T953; - // ths8r - ln_set_rate = 20.6885 + -0.680585 * tfactors.T913 - + 0.344111 * tfactors.T9 + -0.0446623 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.680585 * tfactors.T923i + + 0.344111 + (5.0/3.0) * -0.0446623 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.680585 * tfactors.T923i - + 0.344111 + (5.0/3.0) * -0.0446623 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_n_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu59_to_He4_Co56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + n --> He4 + Co56 - // Cu59 + n --> He4 + Co56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.0108 + -1.00882 * tfactors.T913 + + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; - // ths8r - ln_set_rate = 11.0108 + -1.00882 * tfactors.T913 - + 1.88993 * tfactors.T9 + -0.202319 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.00882 * tfactors.T923i + + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.00882 * tfactors.T923i - + 1.88993 + (5.0/3.0) * -0.202319 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_p_to_n_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu59_to_n_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + p --> n + Zn59 - // Cu59 + p --> n + Zn59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.3972 + -114.642 * tfactors.T9i + -0.234419 * tfactors.T913 + + 0.226299 * tfactors.T9 + -0.0269152 * tfactors.T953; - // ths8r - ln_set_rate = 20.3972 + -114.642 * tfactors.T9i + -0.234419 * tfactors.T913 - + 0.226299 * tfactors.T9 + -0.0269152 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 114.642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.234419 * tfactors.T923i + + 0.226299 + (5.0/3.0) * -0.0269152 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 114.642 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.234419 * tfactors.T923i - + 0.226299 + (5.0/3.0) * -0.0269152 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_p_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu59_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + p --> He4 + Ni56 - // Cu59 + p --> He4 + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.7688 + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 + + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.7688 + -39.9808 * tfactors.T913i + 13.6773 * tfactors.T913 - + -3.76429 * tfactors.T9 + 0.438096 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i + + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9808 * tfactors.T943i + (1.0/3.0) * 13.6773 * tfactors.T923i - + -3.76429 + (5.0/3.0) * 0.438096 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_He4_to_n_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu59_to_n_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + He4 --> n + Ga62 - // Cu59 + He4 --> n + Ga62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 10.6411 + -116.082 * tfactors.T9i + 5.15052 * tfactors.T913 + + -1.31888 * tfactors.T9 + 0.177044 * tfactors.T953; - // ths8r - ln_set_rate = 10.6411 + -116.082 * tfactors.T9i + 5.15052 * tfactors.T913 - + -1.31888 * tfactors.T9 + 0.177044 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 116.082 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.15052 * tfactors.T923i + + -1.31888 + (5.0/3.0) * 0.177044 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 116.082 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 5.15052 * tfactors.T923i - + -1.31888 + (5.0/3.0) * 0.177044 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu59_He4_to_p_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu59_to_p_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu59 + He4 --> p + Zn62 - // Cu59 + He4 --> p + Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -110.088 + -0.578461 * tfactors.T9i + -40.9058 * tfactors.T913i + 144.145 * tfactors.T913 + + -30.7303 * tfactors.T9 + 3.0118 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -110.088 + -0.578461 * tfactors.T9i + -40.9058 * tfactors.T913i + 144.145 * tfactors.T913 - + -30.7303 * tfactors.T9 + 3.0118 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 0.578461 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9058 * tfactors.T943i + (1.0/3.0) * 144.145 * tfactors.T923i + + -30.7303 + (5.0/3.0) * 3.0118 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 0.578461 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9058 * tfactors.T943i + (1.0/3.0) * 144.145 * tfactors.T923i - + -30.7303 + (5.0/3.0) * 3.0118 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_n_to_p_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu60_to_p_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + n --> p + Ni60 - // Cu60 + n --> p + Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.6523 + -0.671684 * tfactors.T913 + + 0.215296 * tfactors.T9 + -0.0251141 * tfactors.T953; - // ths8r - ln_set_rate = 20.6523 + -0.671684 * tfactors.T913 - + 0.215296 * tfactors.T9 + -0.0251141 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.671684 * tfactors.T923i + + 0.215296 + (5.0/3.0) * -0.0251141 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.671684 * tfactors.T923i - + 0.215296 + (5.0/3.0) * -0.0251141 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_n_to_He4_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu60_to_He4_Co57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + n --> He4 + Co57 - // Cu60 + n --> He4 + Co57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.8419 + 2.72669 * tfactors.T913 + + -0.141713 * tfactors.T9 + 0.025172 * tfactors.T953; - // ths8r - ln_set_rate = 12.8419 + 2.72669 * tfactors.T913 - + -0.141713 * tfactors.T9 + 0.025172 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.72669 * tfactors.T923i + + -0.141713 + (5.0/3.0) * 0.025172 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.72669 * tfactors.T923i - + -0.141713 + (5.0/3.0) * 0.025172 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_p_to_n_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu60_to_n_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + p --> n + Zn60 - // Cu60 + p --> n + Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.8375 + -57.3109 * tfactors.T9i + -0.620889 * tfactors.T913 + + 0.360154 * tfactors.T9 + -0.0412341 * tfactors.T953; - // ths8r - ln_set_rate = 18.8375 + -57.3109 * tfactors.T9i + -0.620889 * tfactors.T913 - + 0.360154 * tfactors.T9 + -0.0412341 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 57.3109 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.620889 * tfactors.T923i + + 0.360154 + (5.0/3.0) * -0.0412341 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 57.3109 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.620889 * tfactors.T923i - + 0.360154 + (5.0/3.0) * -0.0412341 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_p_to_He4_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu60_to_He4_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + p --> He4 + Ni57 - // Cu60 + p --> He4 + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.7756 + -39.9846 * tfactors.T913i + 20.3348 * tfactors.T913 + + -4.47882 * tfactors.T9 + 0.442893 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 13.7756 + -39.9846 * tfactors.T913i + 20.3348 * tfactors.T913 - + -4.47882 * tfactors.T9 + 0.442893 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9846 * tfactors.T943i + (1.0/3.0) * 20.3348 * tfactors.T923i + + -4.47882 + (5.0/3.0) * 0.442893 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9846 * tfactors.T943i + (1.0/3.0) * 20.3348 * tfactors.T923i - + -4.47882 + (5.0/3.0) * 0.442893 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_He4_to_n_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu60_to_n_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + He4 --> n + Ga63 - // Cu60 + He4 --> n + Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.5144 + -86.3771 * tfactors.T9i + 4.02167 * tfactors.T913 + + -0.688499 * tfactors.T9 + 0.0864831 * tfactors.T953; - // ths8r - ln_set_rate = 11.5144 + -86.3771 * tfactors.T9i + 4.02167 * tfactors.T913 - + -0.688499 * tfactors.T9 + 0.0864831 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 86.3771 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.02167 * tfactors.T923i + + -0.688499 + (5.0/3.0) * 0.0864831 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 86.3771 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 4.02167 * tfactors.T923i - + -0.688499 + (5.0/3.0) * 0.0864831 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu60_He4_to_p_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu60_to_p_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu60 + He4 --> p + Zn63 - // Cu60 + He4 --> p + Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -39.0633 + -11.548 * tfactors.T9i + -40.9093 * tfactors.T913i + 67.8676 * tfactors.T913 + + -12.8153 * tfactors.T9 + 1.17292 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -39.0633 + -11.548 * tfactors.T9i + -40.9093 * tfactors.T913i + 67.8676 * tfactors.T913 - + -12.8153 * tfactors.T9 + 1.17292 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 11.548 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9093 * tfactors.T943i + (1.0/3.0) * 67.8676 * tfactors.T923i + + -12.8153 + (5.0/3.0) * 1.17292 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 11.548 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9093 * tfactors.T943i + (1.0/3.0) * 67.8676 * tfactors.T923i - + -12.8153 + (5.0/3.0) * 1.17292 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_n_to_p_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu61_to_p_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 + n --> p + Ni61 - // Cu61 + n --> p + Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.1763 + -1.69187 * tfactors.T913 + + 0.784543 * tfactors.T9 + -0.100904 * tfactors.T953; - // ths8r - ln_set_rate = 20.1763 + -1.69187 * tfactors.T913 - + 0.784543 * tfactors.T9 + -0.100904 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.69187 * tfactors.T923i + + 0.784543 + (5.0/3.0) * -0.100904 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.69187 * tfactors.T923i - + 0.784543 + (5.0/3.0) * -0.100904 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_n_to_He4_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu61_to_He4_Co58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 + n --> He4 + Co58 - // Cu61 + n --> He4 + Co58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 2.87474 + 1.07449 * tfactors.T913 + + 3.05815 * tfactors.T9 + -0.386686 * tfactors.T953; - // ths8r - ln_set_rate = 2.87474 + 1.07449 * tfactors.T913 - + 3.05815 * tfactors.T9 + -0.386686 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.07449 * tfactors.T923i + + 3.05815 + (5.0/3.0) * -0.386686 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.07449 * tfactors.T923i - + 3.05815 + (5.0/3.0) * -0.386686 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_p_to_n_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu61_to_n_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 + p --> n + Zn61 - // Cu61 + p --> n + Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.4412 + -74.5068 * tfactors.T9i + -0.657488 * tfactors.T913 + + 0.358985 * tfactors.T9 + -0.0432252 * tfactors.T953; - // ths8r - ln_set_rate = 20.4412 + -74.5068 * tfactors.T9i + -0.657488 * tfactors.T913 - + 0.358985 * tfactors.T9 + -0.0432252 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.5068 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.657488 * tfactors.T923i + + 0.358985 + (5.0/3.0) * -0.0432252 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.5068 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.657488 * tfactors.T923i - + 0.358985 + (5.0/3.0) * -0.0432252 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_p_to_He4_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu61_to_He4_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 + p --> He4 + Ni58 - // Cu61 + p --> He4 + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.3915 + -39.9882 * tfactors.T913i + 13.3129 * tfactors.T913 + + -2.90092 * tfactors.T9 + 0.277699 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 21.3915 + -39.9882 * tfactors.T913i + 13.3129 * tfactors.T913 - + -2.90092 * tfactors.T9 + 0.277699 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9882 * tfactors.T943i + (1.0/3.0) * 13.3129 * tfactors.T923i + + -2.90092 + (5.0/3.0) * 0.277699 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9882 * tfactors.T943i + (1.0/3.0) * 13.3129 * tfactors.T923i - + -2.90092 + (5.0/3.0) * 0.277699 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_He4_to_n_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu61_to_n_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 + He4 --> n + Ga64 - // Cu61 + He4 --> n + Ga64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.5232 + -102.07 * tfactors.T9i + 2.74537 * tfactors.T913 + + -0.458111 * tfactors.T9 + 0.0581457 * tfactors.T953; - // ths8r - ln_set_rate = 12.5232 + -102.07 * tfactors.T9i + 2.74537 * tfactors.T913 - + -0.458111 * tfactors.T9 + 0.0581457 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.07 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.74537 * tfactors.T923i + + -0.458111 + (5.0/3.0) * 0.0581457 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.07 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 2.74537 * tfactors.T923i - + -0.458111 + (5.0/3.0) * 0.0581457 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu61_He4_to_p_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu61_to_p_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu61 + He4 --> p + Zn64 - // Cu61 + He4 --> p + Zn64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -49.6329 + -9.79576 * tfactors.T9i + -40.9126 * tfactors.T913i + 78.2645 * tfactors.T913 + + -15.0794 * tfactors.T9 + 1.39304 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -49.6329 + -9.79576 * tfactors.T9i + -40.9126 * tfactors.T913i + 78.2645 * tfactors.T913 - + -15.0794 * tfactors.T9 + 1.39304 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 9.79576 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9126 * tfactors.T943i + (1.0/3.0) * 78.2645 * tfactors.T923i + + -15.0794 + (5.0/3.0) * 1.39304 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 9.79576 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9126 * tfactors.T943i + (1.0/3.0) * 78.2645 * tfactors.T923i - + -15.0794 + (5.0/3.0) * 1.39304 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_n_to_p_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu62_to_p_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 + n --> p + Ni62 - // Cu62 + n --> p + Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.1161 + -2.13932 * tfactors.T913 + + 0.412918 * tfactors.T9 + -0.0409549 * tfactors.T953; - // ths8r - ln_set_rate = 21.1161 + -2.13932 * tfactors.T913 - + 0.412918 * tfactors.T9 + -0.0409549 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.13932 * tfactors.T923i + + 0.412918 + (5.0/3.0) * -0.0409549 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.13932 * tfactors.T923i - + 0.412918 + (5.0/3.0) * -0.0409549 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_n_to_He4_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu62_to_He4_Co59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 + n --> He4 + Co59 - // Cu62 + n --> He4 + Co59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.4259 + 0.965159 * tfactors.T913 + + 0.563053 * tfactors.T9 + -0.0358157 * tfactors.T953; - // ths8r - ln_set_rate = 11.4259 + 0.965159 * tfactors.T913 - + 0.563053 * tfactors.T9 + -0.0358157 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.965159 * tfactors.T923i + + 0.563053 + (5.0/3.0) * -0.0358157 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.965159 * tfactors.T923i - + 0.563053 + (5.0/3.0) * -0.0358157 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_p_to_n_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu62_to_n_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 + p --> n + Zn62 - // Cu62 + p --> n + Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.6773 + -27.9523 * tfactors.T9i + -0.772736 * tfactors.T913 + + 1.08329 * tfactors.T9 + -0.144709 * tfactors.T953; - // ths8r - ln_set_rate = 16.6773 + -27.9523 * tfactors.T9i + -0.772736 * tfactors.T913 - + 1.08329 * tfactors.T9 + -0.144709 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.9523 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.772736 * tfactors.T923i + + 1.08329 + (5.0/3.0) * -0.144709 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.9523 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.772736 * tfactors.T923i - + 1.08329 + (5.0/3.0) * -0.144709 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_p_to_He4_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu62_to_He4_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 + p --> He4 + Ni59 - // Cu62 + p --> He4 + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.0541 + -39.9917 * tfactors.T913i + 15.2078 * tfactors.T913 + + -3.13691 * tfactors.T9 + 0.278116 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.0541 + -39.9917 * tfactors.T913i + 15.2078 * tfactors.T913 - + -3.13691 * tfactors.T9 + 0.278116 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9917 * tfactors.T943i + (1.0/3.0) * 15.2078 * tfactors.T923i + + -3.13691 + (5.0/3.0) * 0.278116 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9917 * tfactors.T943i + (1.0/3.0) * 15.2078 * tfactors.T923i - + -3.13691 + (5.0/3.0) * 0.278116 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu62_He4_to_p_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu62_to_p_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu62 + He4 --> p + Zn65 - // Cu62 + He4 --> p + Zn65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -7.79044 + -20.3112 * tfactors.T9i + -40.9159 * tfactors.T913i + 37.2348 * tfactors.T913 + + -6.13297 * tfactors.T9 + 0.499001 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -7.79044 + -20.3112 * tfactors.T9i + -40.9159 * tfactors.T913i + 37.2348 * tfactors.T913 - + -6.13297 * tfactors.T9 + 0.499001 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 20.3112 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9159 * tfactors.T943i + (1.0/3.0) * 37.2348 * tfactors.T923i + + -6.13297 + (5.0/3.0) * 0.499001 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 20.3112 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.9159 * tfactors.T943i + (1.0/3.0) * 37.2348 * tfactors.T923i - + -6.13297 + (5.0/3.0) * 0.499001 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_n_to_p_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu63_to_p_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 + n --> p + Ni63 - // Cu63 + n --> p + Ni63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -11.8382 + 21.0235 * tfactors.T913 + + -1.85553 * tfactors.T9 + 0.0587378 * tfactors.T953; - // ths8r - ln_set_rate = -11.8382 + 21.0235 * tfactors.T913 - + -1.85553 * tfactors.T9 + 0.0587378 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 21.0235 * tfactors.T923i + + -1.85553 + (5.0/3.0) * 0.0587378 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 21.0235 * tfactors.T923i - + -1.85553 + (5.0/3.0) * 0.0587378 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_p_to_n_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu63_to_n_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 + p --> n + Zn63 - // Cu63 + p --> n + Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.0355 + -48.1453 * tfactors.T9i + -2.10997 * tfactors.T913 + + 0.691727 * tfactors.T9 + -0.0763545 * tfactors.T953; - // ths8r - ln_set_rate = 21.0355 + -48.1453 * tfactors.T9i + -2.10997 * tfactors.T913 - + 0.691727 * tfactors.T9 + -0.0763545 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 48.1453 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.10997 * tfactors.T923i + + 0.691727 + (5.0/3.0) * -0.0763545 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 48.1453 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -2.10997 * tfactors.T923i - + 0.691727 + (5.0/3.0) * -0.0763545 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_p_to_He4_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu63_to_He4_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 + p --> He4 + Ni60 - // Cu63 + p --> He4 + Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 25.8494 + -39.995 * tfactors.T913i + 9.96871 * tfactors.T913 + + -2.08607 * tfactors.T9 + 0.166693 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 25.8494 + -39.995 * tfactors.T913i + 9.96871 * tfactors.T913 - + -2.08607 * tfactors.T9 + 0.166693 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.995 * tfactors.T943i + (1.0/3.0) * 9.96871 * tfactors.T923i + + -2.08607 + (5.0/3.0) * 0.166693 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.995 * tfactors.T943i + (1.0/3.0) * 9.96871 * tfactors.T923i - + -2.08607 + (5.0/3.0) * 0.166693 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu63_He4_to_p_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Cu63_to_p_Zn66_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu63 + He4 --> p + Zn66 - // Cu63 + He4 --> p + Zn66 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -13.8091 + -17.9192 * tfactors.T9i + -40.919 * tfactors.T913i + 40.0655 * tfactors.T913 + + -6.06828 * tfactors.T9 + 0.437776 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -13.8091 + -17.9192 * tfactors.T9i + -40.919 * tfactors.T913i + 40.0655 * tfactors.T913 - + -6.06828 * tfactors.T9 + 0.437776 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 17.9192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.919 * tfactors.T943i + (1.0/3.0) * 40.0655 * tfactors.T923i + + -6.06828 + (5.0/3.0) * 0.437776 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 17.9192 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -40.919 * tfactors.T943i + (1.0/3.0) * 40.0655 * tfactors.T923i - + -6.06828 + (5.0/3.0) * 0.437776 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu64_n_to_p_Ni64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Cu64_to_p_Ni64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu64 + n --> p + Ni64 - // Cu64 + n --> p + Ni64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 18.5823 + -2.37283 * tfactors.T913 + + 0.155682 * tfactors.T9 + 0.0314201 * tfactors.T953; - // ths8r - ln_set_rate = 18.5823 + -2.37283 * tfactors.T913 - + 0.155682 * tfactors.T9 + 0.0314201 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.37283 * tfactors.T923i + + 0.155682 + (5.0/3.0) * 0.0314201 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.37283 * tfactors.T923i - + 0.155682 + (5.0/3.0) * 0.0314201 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu64_p_to_n_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu64_to_n_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu64 + p --> n + Zn64 - // Cu64 + p --> n + Zn64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -44.155 + -2.35605 * tfactors.T9i + 50.9002 * tfactors.T913 + + -6.85035 * tfactors.T9 + 0.452984 * tfactors.T953; - // ths8r - ln_set_rate = -44.155 + -2.35605 * tfactors.T9i + 50.9002 * tfactors.T913 - + -6.85035 * tfactors.T9 + 0.452984 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 2.35605 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 50.9002 * tfactors.T923i + + -6.85035 + (5.0/3.0) * 0.452984 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 2.35605 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 50.9002 * tfactors.T923i - + -6.85035 + (5.0/3.0) * 0.452984 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu64_p_to_He4_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu64_to_He4_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu64 + p --> He4 + Ni61 - // Cu64 + p --> He4 + Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 26.7806 + -39.9983 * tfactors.T913i + 5.14164 * tfactors.T913 + + 0.0632313 * tfactors.T9 + -0.0939329 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 26.7806 + -39.9983 * tfactors.T913i + 5.14164 * tfactors.T913 - + 0.0632313 * tfactors.T9 + -0.0939329 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -39.9983 * tfactors.T943i + (1.0/3.0) * 5.14164 * tfactors.T923i + + 0.0632313 + (5.0/3.0) * -0.0939329 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -39.9983 * tfactors.T943i + (1.0/3.0) * 5.14164 * tfactors.T923i - + 0.0632313 + (5.0/3.0) * -0.0939329 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu65_p_to_n_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu65_to_n_Zn65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu65 + p --> n + Zn65 - // Cu65 + p --> n + Zn65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.5015 + -24.7688 * tfactors.T9i + -1.75991 * tfactors.T913 + + 0.616648 * tfactors.T9 + -0.0273633 * tfactors.T953; - // ths8r - ln_set_rate = 17.5015 + -24.7688 * tfactors.T9i + -1.75991 * tfactors.T913 - + 0.616648 * tfactors.T9 + -0.0273633 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 24.7688 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.75991 * tfactors.T923i + + 0.616648 + (5.0/3.0) * -0.0273633 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 24.7688 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.75991 * tfactors.T923i - + 0.616648 + (5.0/3.0) * -0.0273633 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Cu65_p_to_He4_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Cu65_to_He4_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Cu65 + p --> He4 + Ni62 - // Cu65 + p --> He4 + Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 28.6023 + -40.0015 * tfactors.T913i + 9.18742 * tfactors.T913 + + -2.93395 * tfactors.T9 + 0.309787 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 28.6023 + -40.0015 * tfactors.T913i + 9.18742 * tfactors.T913 - + -2.93395 * tfactors.T9 + 0.309787 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.0015 * tfactors.T943i + (1.0/3.0) * 9.18742 * tfactors.T923i + + -2.93395 + (5.0/3.0) * 0.309787 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.0015 * tfactors.T943i + (1.0/3.0) * 9.18742 * tfactors.T923i - + -2.93395 + (5.0/3.0) * 0.309787 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn59_n_to_p_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn59_to_p_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn59 + n --> p + Cu59 - // Zn59 + n --> p + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.3972 + -0.234419 * tfactors.T913 + + 0.226299 * tfactors.T9 + -0.0269152 * tfactors.T953; - // ths8r - ln_set_rate = 20.3972 + -0.234419 * tfactors.T913 - + 0.226299 * tfactors.T9 + -0.0269152 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.234419 * tfactors.T923i + + 0.226299 + (5.0/3.0) * -0.0269152 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.234419 * tfactors.T923i - + 0.226299 + (5.0/3.0) * -0.0269152 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn59_n_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn59_to_He4_Ni56_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn59 + n --> He4 + Ni56 - // Zn59 + n --> He4 + Ni56 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.0783 + 4.01795 * tfactors.T913 + + -1.00571 * tfactors.T9 + 0.129548 * tfactors.T953; - // ths8r - ln_set_rate = 13.0783 + 4.01795 * tfactors.T913 - + -1.00571 * tfactors.T9 + 0.129548 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.01795 * tfactors.T923i + + -1.00571 + (5.0/3.0) * 0.129548 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.01795 * tfactors.T923i - + -1.00571 + (5.0/3.0) * 0.129548 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn59_He4_to_p_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Zn59_to_p_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn59 + He4 --> p + Ga62 - // Zn59 + He4 --> p + Ga62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -105.635 + -1.44039 * tfactors.T9i + -41.8099 * tfactors.T913i + 139.289 * tfactors.T913 + + -29.8912 * tfactors.T9 + 2.95102 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -105.635 + -1.44039 * tfactors.T9i + -41.8099 * tfactors.T913i + 139.289 * tfactors.T913 - + -29.8912 * tfactors.T9 + 2.95102 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.44039 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -41.8099 * tfactors.T943i + (1.0/3.0) * 139.289 * tfactors.T923i + + -29.8912 + (5.0/3.0) * 2.95102 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.44039 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -41.8099 * tfactors.T943i + (1.0/3.0) * 139.289 * tfactors.T923i - + -29.8912 + (5.0/3.0) * 2.95102 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_n_to_p_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn60_to_p_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 + n --> p + Cu60 - // Zn60 + n --> p + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.4469 + -0.620889 * tfactors.T913 + + 0.360154 * tfactors.T9 + -0.0412341 * tfactors.T953; - // ths8r - ln_set_rate = 20.4469 + -0.620889 * tfactors.T913 - + 0.360154 * tfactors.T9 + -0.0412341 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.620889 * tfactors.T923i + + 0.360154 + (5.0/3.0) * -0.0412341 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.620889 * tfactors.T923i - + 0.360154 + (5.0/3.0) * -0.0412341 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_n_to_He4_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn60_to_He4_Ni57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 + n --> He4 + Ni57 - // Zn60 + n --> He4 + Ni57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 12.4241 + 5.43552 * tfactors.T913 + + -1.25169 * tfactors.T9 + 0.148383 * tfactors.T953; - // ths8r - ln_set_rate = 12.4241 + 5.43552 * tfactors.T913 - + -1.25169 * tfactors.T9 + 0.148383 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 5.43552 * tfactors.T923i + + -1.25169 + (5.0/3.0) * 0.148383 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 5.43552 * tfactors.T923i - + -1.25169 + (5.0/3.0) * 0.148383 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_p_to_He4_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn60_to_He4_Cu57_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 + p --> He4 + Cu57 - // Zn60 + p --> He4 + Cu57 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 68.037 + -23.3731 * tfactors.T9i + -98.8126 * tfactors.T913i + -0.580624 * tfactors.T913 + + -0.793165 * tfactors.T9 + 0.0435934 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 68.037 + -23.3731 * tfactors.T9i + -98.8126 * tfactors.T913i + -0.580624 * tfactors.T913 - + -0.793165 * tfactors.T9 + 0.0435934 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 23.3731 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.8126 * tfactors.T943i + (1.0/3.0) * -0.580624 * tfactors.T923i + + -0.793165 + (5.0/3.0) * 0.0435934 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 23.3731 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -98.8126 * tfactors.T943i + (1.0/3.0) * -0.580624 * tfactors.T923i - + -0.793165 + (5.0/3.0) * 0.0435934 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_He4_to_n_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Zn60_to_n_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 + He4 --> n + Ge63 - // Zn60 + He4 --> n + Ge63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.7238 + -149.52 * tfactors.T9i + 1.7273 * tfactors.T913 + + -0.26458 * tfactors.T9 + 0.0395 * tfactors.T953; - // ths8r - ln_set_rate = 14.7238 + -149.52 * tfactors.T9i + 1.7273 * tfactors.T913 - + -0.26458 * tfactors.T9 + 0.0395 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 149.52 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.7273 * tfactors.T923i + + -0.26458 + (5.0/3.0) * 0.0395 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 149.52 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 1.7273 * tfactors.T923i - + -0.26458 + (5.0/3.0) * 0.0395 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn60_He4_to_p_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Zn60_to_p_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn60 + He4 --> p + Ga63 - // Zn60 + He4 --> p + Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.0286 + -29.0661 * tfactors.T9i + -41.8134 * tfactors.T913i + 14.9697 * tfactors.T913 + + -4.35453 * tfactors.T9 + 0.544288 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 20.0286 + -29.0661 * tfactors.T9i + -41.8134 * tfactors.T913i + 14.9697 * tfactors.T913 - + -4.35453 * tfactors.T9 + 0.544288 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 29.0661 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -41.8134 * tfactors.T943i + (1.0/3.0) * 14.9697 * tfactors.T923i + + -4.35453 + (5.0/3.0) * 0.544288 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 29.0661 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -41.8134 * tfactors.T943i + (1.0/3.0) * 14.9697 * tfactors.T923i - + -4.35453 + (5.0/3.0) * 0.544288 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_n_to_p_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn61_to_p_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 + n --> p + Cu61 - // Zn61 + n --> p + Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.4412 + -0.657488 * tfactors.T913 + + 0.358985 * tfactors.T9 + -0.0432252 * tfactors.T953; - // ths8r - ln_set_rate = 20.4412 + -0.657488 * tfactors.T913 - + 0.358985 * tfactors.T9 + -0.0432252 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.657488 * tfactors.T923i + + 0.358985 + (5.0/3.0) * -0.0432252 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.657488 * tfactors.T923i - + 0.358985 + (5.0/3.0) * -0.0432252 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_n_to_He4_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn61_to_He4_Ni58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 + n --> He4 + Ni58 - // Zn61 + n --> He4 + Ni58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.9844 + 2.9413 * tfactors.T913 + + -0.542181 * tfactors.T9 + 0.0584262 * tfactors.T953; - // ths8r - ln_set_rate = 14.9844 + 2.9413 * tfactors.T913 - + -0.542181 * tfactors.T9 + 0.0584262 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.9413 * tfactors.T923i + + -0.542181 + (5.0/3.0) * 0.0584262 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.9413 * tfactors.T923i - + -0.542181 + (5.0/3.0) * 0.0584262 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_p_to_He4_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn61_to_He4_Cu58_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 + p --> He4 + Cu58 - // Zn61 + p --> He4 + Cu58 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -79.5047 + -40.9023 * tfactors.T913i + 107.263 * tfactors.T913 + + -20.9034 * tfactors.T9 + 1.9567 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -79.5047 + -40.9023 * tfactors.T913i + 107.263 * tfactors.T913 - + -20.9034 * tfactors.T9 + 1.9567 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.9023 * tfactors.T943i + (1.0/3.0) * 107.263 * tfactors.T923i + + -20.9034 + (5.0/3.0) * 1.9567 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.9023 * tfactors.T943i + (1.0/3.0) * 107.263 * tfactors.T923i - + -20.9034 + (5.0/3.0) * 1.9567 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_He4_to_n_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Zn61_to_n_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 + He4 --> n + Ge64 - // Zn61 + He4 --> n + Ge64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.60553 + -89.0782 * tfactors.T9i + 7.47259 * tfactors.T913 + + -1.92043 * tfactors.T9 + 0.239118 * tfactors.T953; - // ths8r - ln_set_rate = 8.60553 + -89.0782 * tfactors.T9i + 7.47259 * tfactors.T913 - + -1.92043 * tfactors.T9 + 0.239118 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 89.0782 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.47259 * tfactors.T923i + + -1.92043 + (5.0/3.0) * 0.239118 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 89.0782 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 7.47259 * tfactors.T923i - + -1.92043 + (5.0/3.0) * 0.239118 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn61_He4_to_p_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_Zn61_to_p_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn61 + He4 --> p + Ga64 - // Zn61 + He4 --> p + Ga64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 8.46743 + -27.5631 * tfactors.T9i + -41.8168 * tfactors.T913i + 24.3154 * tfactors.T913 + + -5.57278 * tfactors.T9 + 0.588234 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 8.46743 + -27.5631 * tfactors.T9i + -41.8168 * tfactors.T913i + 24.3154 * tfactors.T913 - + -5.57278 * tfactors.T9 + 0.588234 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 27.5631 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -41.8168 * tfactors.T943i + (1.0/3.0) * 24.3154 * tfactors.T923i + + -5.57278 + (5.0/3.0) * 0.588234 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 27.5631 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -41.8168 * tfactors.T943i + (1.0/3.0) * 24.3154 * tfactors.T923i - + -5.57278 + (5.0/3.0) * 0.588234 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_n_to_p_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn62_to_p_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 + n --> p + Cu62 - // Zn62 + n --> p + Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.7759 + -0.772736 * tfactors.T913 + + 1.08329 * tfactors.T9 + -0.144709 * tfactors.T953; - // ths8r - ln_set_rate = 17.7759 + -0.772736 * tfactors.T913 - + 1.08329 * tfactors.T9 + -0.144709 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.772736 * tfactors.T923i + + 1.08329 + (5.0/3.0) * -0.144709 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.772736 * tfactors.T923i - + 1.08329 + (5.0/3.0) * -0.144709 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_n_to_He4_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn62_to_He4_Ni59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 + n --> He4 + Ni59 - // Zn62 + n --> He4 + Ni59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.4037 + -0.824101 * tfactors.T913 + + 0.913843 * tfactors.T9 + -0.084157 * tfactors.T953; - // ths8r - ln_set_rate = 15.4037 + -0.824101 * tfactors.T913 - + 0.913843 * tfactors.T9 + -0.084157 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.824101 * tfactors.T923i + + 0.913843 + (5.0/3.0) * -0.084157 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.824101 * tfactors.T923i - + 0.913843 + (5.0/3.0) * -0.084157 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_p_to_n_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn62_to_n_Ga62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 + p --> n + Ga62 - // Zn62 + p --> n + Ga62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.0588 + -115.504 * tfactors.T9i + -1.58452 * tfactors.T913 + + 0.736569 * tfactors.T9 + -0.0951725 * tfactors.T953; - // ths8r - ln_set_rate = 21.0588 + -115.504 * tfactors.T9i + -1.58452 * tfactors.T913 - + 0.736569 * tfactors.T9 + -0.0951725 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 115.504 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.58452 * tfactors.T923i + + 0.736569 + (5.0/3.0) * -0.0951725 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 115.504 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.58452 * tfactors.T923i - + 0.736569 + (5.0/3.0) * -0.0951725 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn62_p_to_He4_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn62_to_He4_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn62 + p --> He4 + Cu59 - // Zn62 + p --> He4 + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -107.39 + -40.9058 * tfactors.T913i + 144.145 * tfactors.T913 + + -30.7303 * tfactors.T9 + 3.0118 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -107.39 + -40.9058 * tfactors.T913i + 144.145 * tfactors.T913 - + -30.7303 * tfactors.T9 + 3.0118 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.9058 * tfactors.T943i + (1.0/3.0) * 144.145 * tfactors.T923i + + -30.7303 + (5.0/3.0) * 3.0118 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.9058 * tfactors.T943i + (1.0/3.0) * 144.145 * tfactors.T923i - + -30.7303 + (5.0/3.0) * 3.0118 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_n_to_p_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn63_to_p_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 + n --> p + Cu63 - // Zn63 + n --> p + Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.0355 + -2.10997 * tfactors.T913 + + 0.691727 * tfactors.T9 + -0.0763545 * tfactors.T953; - // ths8r - ln_set_rate = 21.0355 + -2.10997 * tfactors.T913 - + 0.691727 * tfactors.T9 + -0.0763545 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -2.10997 * tfactors.T923i + + 0.691727 + (5.0/3.0) * -0.0763545 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -2.10997 * tfactors.T923i - + 0.691727 + (5.0/3.0) * -0.0763545 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_n_to_He4_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn63_to_He4_Ni60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 + n --> He4 + Ni60 - // Zn63 + n --> He4 + Ni60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.3426 + 1.29216 * tfactors.T913 + + -0.174127 * tfactors.T9 + 0.0226404 * tfactors.T953; - // ths8r - ln_set_rate = 16.3426 + 1.29216 * tfactors.T913 - + -0.174127 * tfactors.T9 + 0.0226404 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.29216 * tfactors.T923i + + -0.174127 + (5.0/3.0) * 0.0226404 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.29216 * tfactors.T923i - + -0.174127 + (5.0/3.0) * 0.0226404 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_p_to_n_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn63_to_n_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 + p --> n + Ga63 - // Zn63 + p --> n + Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.1422 + -74.8291 * tfactors.T9i + -0.334251 * tfactors.T913 + + 0.328281 * tfactors.T9 + -0.0442083 * tfactors.T953; - // ths8r - ln_set_rate = 20.1422 + -74.8291 * tfactors.T9i + -0.334251 * tfactors.T913 - + 0.328281 * tfactors.T9 + -0.0442083 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 74.8291 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.334251 * tfactors.T923i + + 0.328281 + (5.0/3.0) * -0.0442083 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 74.8291 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.334251 * tfactors.T923i - + 0.328281 + (5.0/3.0) * -0.0442083 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn63_p_to_He4_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn63_to_He4_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn63 + p --> He4 + Cu60 - // Zn63 + p --> He4 + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -37.527 + -40.9093 * tfactors.T913i + 67.8676 * tfactors.T913 + + -12.8153 * tfactors.T9 + 1.17292 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -37.527 + -40.9093 * tfactors.T913i + 67.8676 * tfactors.T913 - + -12.8153 * tfactors.T9 + 1.17292 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.9093 * tfactors.T943i + (1.0/3.0) * 67.8676 * tfactors.T923i + + -12.8153 + (5.0/3.0) * 1.17292 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.9093 * tfactors.T943i + (1.0/3.0) * 67.8676 * tfactors.T923i - + -12.8153 + (5.0/3.0) * 1.17292 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn64_n_to_p_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn64_to_p_Cu64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn64 + n --> p + Cu64 - // Zn64 + n --> p + Cu64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -43.0564 + 50.9002 * tfactors.T913 + + -6.85035 * tfactors.T9 + 0.452984 * tfactors.T953; - // ths8r - ln_set_rate = -43.0564 + 50.9002 * tfactors.T913 - + -6.85035 * tfactors.T9 + 0.452984 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 50.9002 * tfactors.T923i + + -6.85035 + (5.0/3.0) * 0.452984 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 50.9002 * tfactors.T923i - + -6.85035 + (5.0/3.0) * 0.452984 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn64_n_to_He4_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn64_to_He4_Ni61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn64 + n --> He4 + Ni61 - // Zn64 + n --> He4 + Ni61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 7.30798 + -0.988345 * tfactors.T913 + + 3.05973 * tfactors.T9 + -0.380848 * tfactors.T953; - // ths8r - ln_set_rate = 7.30798 + -0.988345 * tfactors.T913 - + 3.05973 * tfactors.T9 + -0.380848 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.988345 * tfactors.T923i + + 3.05973 + (5.0/3.0) * -0.380848 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.988345 * tfactors.T923i - + 3.05973 + (5.0/3.0) * -0.380848 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn64_p_to_n_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn64_to_n_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn64 + p --> n + Ga64 - // Zn64 + p --> n + Ga64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.0454 + -92.2741 * tfactors.T9i + -0.311485 * tfactors.T913 + + 0.306024 * tfactors.T9 + -0.0439383 * tfactors.T953; - // ths8r - ln_set_rate = 20.0454 + -92.2741 * tfactors.T9i + -0.311485 * tfactors.T913 - + 0.306024 * tfactors.T9 + -0.0439383 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 92.2741 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.311485 * tfactors.T923i + + 0.306024 + (5.0/3.0) * -0.0439383 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 92.2741 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -0.311485 * tfactors.T923i - + 0.306024 + (5.0/3.0) * -0.0439383 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn64_p_to_He4_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn64_to_He4_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn64 + p --> He4 + Cu61 - // Zn64 + p --> He4 + Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -46.9323 + -40.9126 * tfactors.T913i + 78.2645 * tfactors.T913 + + -15.0794 * tfactors.T9 + 1.39304 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -46.9323 + -40.9126 * tfactors.T913i + 78.2645 * tfactors.T913 - + -15.0794 * tfactors.T9 + 1.39304 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.9126 * tfactors.T943i + (1.0/3.0) * 78.2645 * tfactors.T923i + + -15.0794 + (5.0/3.0) * 1.39304 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.9126 * tfactors.T943i + (1.0/3.0) * 78.2645 * tfactors.T923i - + -15.0794 + (5.0/3.0) * 1.39304 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn65_n_to_p_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn65_to_p_Cu65_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn65 + n --> p + Cu65 - // Zn65 + n --> p + Cu65 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 17.096 + -1.75991 * tfactors.T913 + + 0.616648 * tfactors.T9 + -0.0273633 * tfactors.T953; - // ths8r - ln_set_rate = 17.096 + -1.75991 * tfactors.T913 - + 0.616648 * tfactors.T9 + -0.0273633 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.75991 * tfactors.T923i + + 0.616648 + (5.0/3.0) * -0.0273633 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.75991 * tfactors.T923i - + 0.616648 + (5.0/3.0) * -0.0273633 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn65_n_to_He4_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn65_to_He4_Ni62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn65 + n --> He4 + Ni62 - // Zn65 + n --> He4 + Ni62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 16.63 + -1.0424 * tfactors.T913 + + 0.355927 * tfactors.T9 + -0.0148374 * tfactors.T953; - // ths8r - ln_set_rate = 16.63 + -1.0424 * tfactors.T913 - + 0.355927 * tfactors.T9 + -0.0148374 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.0424 * tfactors.T923i + + 0.355927 + (5.0/3.0) * -0.0148374 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.0424 * tfactors.T923i - + 0.355927 + (5.0/3.0) * -0.0148374 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn65_p_to_He4_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn65_to_He4_Cu62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn65 + p --> He4 + Cu62 - // Zn65 + p --> He4 + Cu62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -7.16817 + -40.9159 * tfactors.T913i + 37.2348 * tfactors.T913 + + -6.13297 * tfactors.T9 + 0.499001 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -7.16817 + -40.9159 * tfactors.T913i + 37.2348 * tfactors.T913 - + -6.13297 * tfactors.T9 + 0.499001 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.9159 * tfactors.T943i + (1.0/3.0) * 37.2348 * tfactors.T923i + + -6.13297 + (5.0/3.0) * 0.499001 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.9159 * tfactors.T943i + (1.0/3.0) * 37.2348 * tfactors.T923i - + -6.13297 + (5.0/3.0) * 0.499001 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn66_n_to_He4_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Zn66_to_He4_Ni63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn66 + n --> He4 + Ni63 - // Zn66 + n --> He4 + Ni63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -28.2336 + 25.0757 * tfactors.T913 + + 0.0590561 * tfactors.T9 + -0.21357 * tfactors.T953; - // ths8r - ln_set_rate = -28.2336 + 25.0757 * tfactors.T913 - + 0.0590561 * tfactors.T9 + -0.21357 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 25.0757 * tfactors.T923i + + 0.0590561 + (5.0/3.0) * -0.21357 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 25.0757 * tfactors.T923i - + 0.0590561 + (5.0/3.0) * -0.21357 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Zn66_p_to_He4_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Zn66_to_He4_Cu63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Zn66 + p --> He4 + Cu63 - // Zn66 + p --> He4 + Cu63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -11.1063 + -40.919 * tfactors.T913i + 40.0655 * tfactors.T913 + + -6.06828 * tfactors.T9 + 0.437776 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -11.1063 + -40.919 * tfactors.T913i + 40.0655 * tfactors.T913 - + -6.06828 * tfactors.T9 + 0.437776 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -40.919 * tfactors.T943i + (1.0/3.0) * 40.0655 * tfactors.T923i + + -6.06828 + (5.0/3.0) * 0.437776 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -40.919 * tfactors.T943i + (1.0/3.0) * 40.0655 * tfactors.T923i - + -6.06828 + (5.0/3.0) * 0.437776 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga62_n_to_p_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ga62_to_p_Zn62_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga62 + n --> p + Zn62 - // Ga62 + n --> p + Zn62 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 21.0588 + -1.58452 * tfactors.T913 + + 0.736569 * tfactors.T9 + -0.0951725 * tfactors.T953; - // ths8r - ln_set_rate = 21.0588 + -1.58452 * tfactors.T913 - + 0.736569 * tfactors.T9 + -0.0951725 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.58452 * tfactors.T923i + + 0.736569 + (5.0/3.0) * -0.0951725 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.58452 * tfactors.T923i - + 0.736569 + (5.0/3.0) * -0.0951725 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga62_n_to_He4_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ga62_to_He4_Cu59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga62 + n --> He4 + Cu59 - // Ga62 + n --> He4 + Cu59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.3393 + 5.15052 * tfactors.T913 + + -1.31888 * tfactors.T9 + 0.177044 * tfactors.T953; - // ths8r - ln_set_rate = 13.3393 + 5.15052 * tfactors.T913 - + -1.31888 * tfactors.T9 + 0.177044 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 5.15052 * tfactors.T923i + + -1.31888 + (5.0/3.0) * 0.177044 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 5.15052 * tfactors.T923i - + -1.31888 + (5.0/3.0) * 0.177044 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga62_p_to_He4_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ga62_to_He4_Zn59_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga62 + p --> He4 + Zn59 - // Ga62 + p --> He4 + Zn59 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = -102.937 + -41.8099 * tfactors.T913i + 139.289 * tfactors.T913 + + -29.8912 * tfactors.T9 + 2.95102 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = -102.937 + -41.8099 * tfactors.T913i + 139.289 * tfactors.T913 - + -29.8912 * tfactors.T9 + 2.95102 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -41.8099 * tfactors.T943i + (1.0/3.0) * 139.289 * tfactors.T923i + + -29.8912 + (5.0/3.0) * 2.95102 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -41.8099 * tfactors.T943i + (1.0/3.0) * 139.289 * tfactors.T923i - + -29.8912 + (5.0/3.0) * 2.95102 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_n_to_p_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ga63_to_p_Zn63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 + n --> p + Zn63 - // Ga63 + n --> p + Zn63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.1422 + -0.334251 * tfactors.T913 + + 0.328281 * tfactors.T9 + -0.0442083 * tfactors.T953; - // ths8r - ln_set_rate = 20.1422 + -0.334251 * tfactors.T913 - + 0.328281 * tfactors.T9 + -0.0442083 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.334251 * tfactors.T923i + + 0.328281 + (5.0/3.0) * -0.0442083 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.334251 * tfactors.T923i - + 0.328281 + (5.0/3.0) * -0.0442083 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_n_to_He4_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ga63_to_He4_Cu60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 + n --> He4 + Cu60 - // Ga63 + n --> He4 + Cu60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 13.0507 + 4.02167 * tfactors.T913 + + -0.688499 * tfactors.T9 + 0.0864831 * tfactors.T953; - // ths8r - ln_set_rate = 13.0507 + 4.02167 * tfactors.T913 - + -0.688499 * tfactors.T9 + 0.0864831 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 4.02167 * tfactors.T923i + + -0.688499 + (5.0/3.0) * 0.0864831 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 4.02167 * tfactors.T923i - + -0.688499 + (5.0/3.0) * 0.0864831 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_p_to_n_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ga63_to_n_Ge63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 + p --> n + Ge63 - // Ga63 + p --> n + Ge63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.5443 + -120.452 * tfactors.T9i + 0.716405 * tfactors.T913 + + 0.00814169 * tfactors.T9 + -0.00430239 * tfactors.T953; - // ths8r - ln_set_rate = 19.5443 + -120.452 * tfactors.T9i + 0.716405 * tfactors.T913 - + 0.00814169 * tfactors.T9 + -0.00430239 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 120.452 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.716405 * tfactors.T923i + + 0.00814169 + (5.0/3.0) * -0.00430239 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 120.452 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * 0.716405 * tfactors.T923i - + 0.00814169 + (5.0/3.0) * -0.00430239 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga63_p_to_He4_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ga63_to_He4_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga63 + p --> He4 + Zn60 - // Ga63 + p --> He4 + Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.9554 + -41.8134 * tfactors.T913i + 14.9697 * tfactors.T913 + + -4.35453 * tfactors.T9 + 0.544288 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 19.9554 + -41.8134 * tfactors.T913i + 14.9697 * tfactors.T913 - + -4.35453 * tfactors.T9 + 0.544288 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -41.8134 * tfactors.T943i + (1.0/3.0) * 14.9697 * tfactors.T923i + + -4.35453 + (5.0/3.0) * 0.544288 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -41.8134 * tfactors.T943i + (1.0/3.0) * 14.9697 * tfactors.T923i - + -4.35453 + (5.0/3.0) * 0.544288 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga64_n_to_p_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ga64_to_p_Zn64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga64 + n --> p + Zn64 - // Ga64 + n --> p + Zn64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.0454 + -0.311485 * tfactors.T913 + + 0.306024 * tfactors.T9 + -0.0439383 * tfactors.T953; - // ths8r - ln_set_rate = 20.0454 + -0.311485 * tfactors.T913 - + 0.306024 * tfactors.T9 + -0.0439383 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -0.311485 * tfactors.T923i + + 0.306024 + (5.0/3.0) * -0.0439383 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -0.311485 * tfactors.T923i - + 0.306024 + (5.0/3.0) * -0.0439383 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga64_n_to_He4_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ga64_to_He4_Cu61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga64 + n --> He4 + Cu61 - // Ga64 + n --> He4 + Cu61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 15.2238 + 2.74537 * tfactors.T913 + + -0.458111 * tfactors.T9 + 0.0581457 * tfactors.T953; - // ths8r - ln_set_rate = 15.2238 + 2.74537 * tfactors.T913 - + -0.458111 * tfactors.T9 + 0.0581457 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 2.74537 * tfactors.T923i + + -0.458111 + (5.0/3.0) * 0.0581457 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 2.74537 * tfactors.T923i - + -0.458111 + (5.0/3.0) * 0.0581457 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga64_p_to_n_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ga64_to_n_Ge64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga64 + p --> n + Ge64 - // Ga64 + p --> n + Ge64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5679 + -61.5151 * tfactors.T9i + -1.04067 * tfactors.T913 + + 0.575006 * tfactors.T9 + -0.0714547 * tfactors.T953; - // ths8r - ln_set_rate = 20.5679 + -61.5151 * tfactors.T9i + -1.04067 * tfactors.T913 - + 0.575006 * tfactors.T9 + -0.0714547 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 61.5151 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.04067 * tfactors.T923i + + 0.575006 + (5.0/3.0) * -0.0714547 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 61.5151 * tfactors.T9i * tfactors.T9i + (1.0/3.0) * -1.04067 * tfactors.T923i - + 0.575006 + (5.0/3.0) * -0.0714547 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ga64_p_to_He4_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Ga64_to_He4_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ga64 + p --> He4 + Zn61 - // Ga64 + p --> He4 + Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.168 + -41.8168 * tfactors.T913i + 24.3154 * tfactors.T913 + + -5.57278 * tfactors.T9 + 0.588234 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // ths8r - ln_set_rate = 11.168 + -41.8168 * tfactors.T913i + 24.3154 * tfactors.T913 - + -5.57278 * tfactors.T9 + 0.588234 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -41.8168 * tfactors.T943i + (1.0/3.0) * 24.3154 * tfactors.T923i + + -5.57278 + (5.0/3.0) * 0.588234 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -41.8168 * tfactors.T943i + (1.0/3.0) * 24.3154 * tfactors.T923i - + -5.57278 + (5.0/3.0) * 0.588234 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge63_n_to_p_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ge63_to_p_Ga63_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge63 + n --> p + Ga63 - // Ge63 + n --> p + Ga63 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 19.5443 + 0.716405 * tfactors.T913 + + 0.00814169 * tfactors.T9 + -0.00430239 * tfactors.T953; - // ths8r - ln_set_rate = 19.5443 + 0.716405 * tfactors.T913 - + 0.00814169 * tfactors.T9 + -0.00430239 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 0.716405 * tfactors.T923i + + 0.00814169 + (5.0/3.0) * -0.00430239 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 0.716405 * tfactors.T923i - + 0.00814169 + (5.0/3.0) * -0.00430239 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge63_n_to_He4_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ge63_to_He4_Zn60_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge63 + n --> He4 + Zn60 - // Ge63 + n --> He4 + Zn60 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 14.6506 + 1.7273 * tfactors.T913 + + -0.26458 * tfactors.T9 + 0.0395 * tfactors.T953; - // ths8r - ln_set_rate = 14.6506 + 1.7273 * tfactors.T913 - + -0.26458 * tfactors.T9 + 0.0395 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 1.7273 * tfactors.T923i + + -0.26458 + (5.0/3.0) * 0.0395 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 1.7273 * tfactors.T923i - + -0.26458 + (5.0/3.0) * 0.0395 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge64_n_to_p_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ge64_to_p_Ga64_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge64 + n --> p + Ga64 - // Ge64 + n --> p + Ga64 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 20.5679 + -1.04067 * tfactors.T913 + + 0.575006 * tfactors.T9 + -0.0714547 * tfactors.T953; - // ths8r - ln_set_rate = 20.5679 + -1.04067 * tfactors.T913 - + 0.575006 * tfactors.T9 + -0.0714547 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * -1.04067 * tfactors.T923i + + 0.575006 + (5.0/3.0) * -0.0714547 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * -1.04067 * tfactors.T923i - + 0.575006 + (5.0/3.0) * -0.0714547 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Ge64_n_to_He4_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_Ge64_to_He4_Zn61_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Ge64 + n --> He4 + Zn61 - // Ge64 + n --> He4 + Zn61 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ths8r + ln_set_rate = 11.3061 + 7.47259 * tfactors.T913 + + -1.92043 * tfactors.T9 + 0.239118 * tfactors.T953; - // ths8r - ln_set_rate = 11.3061 + 7.47259 * tfactors.T913 - + -1.92043 * tfactors.T9 + 0.239118 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + (1.0/3.0) * 7.47259 * tfactors.T923i + + -1.92043 + (5.0/3.0) * 0.239118 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + (1.0/3.0) * 7.47259 * tfactors.T923i - + -1.92043 + (5.0/3.0) * 0.239118 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_p_to_n_p_p_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_d_to_n_p_p_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + p --> n + p + p - // d + p --> n + p + p + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 17.3271 + -25.82 * tfactors.T9i + -3.72 * tfactors.T913i + 0.946313 * tfactors.T913 + + 0.105406 * tfactors.T9 + -0.0149431 * tfactors.T953; - // cf88n - ln_set_rate = 17.3271 + -25.82 * tfactors.T9i + -3.72 * tfactors.T913i + 0.946313 * tfactors.T913 - + 0.105406 * tfactors.T9 + -0.0149431 * tfactors.T953; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 25.82 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.72 * tfactors.T943i + (1.0/3.0) * 0.946313 * tfactors.T923i + + 0.105406 + (5.0/3.0) * -0.0149431 * tfactors.T923; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 25.82 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -3.72 * tfactors.T943i + (1.0/3.0) * 0.946313 * tfactors.T923i - + 0.105406 + (5.0/3.0) * -0.0149431 * tfactors.T923; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He3_He3_to_p_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He3_He3_to_p_p_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He3 + He3 --> p + p + He4 - // He3 + He3 --> p + p + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 24.7788 + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 + + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 24.7788 + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 - + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i + + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i - + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_d_to_n_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_Li7_to_n_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + d --> n + He4 + He4 - // Li7 + d --> n + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 26.4 + -10.259 * tfactors.T913i + + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 26.4 + -10.259 * tfactors.T913i - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.259 * tfactors.T943i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.259 * tfactors.T943i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_d_to_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_Be7_to_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + d --> p + He4 + He4 - // Be7 + d --> p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 27.6987 + -12.428 * tfactors.T913i + + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 27.6987 + -12.428 * tfactors.T913i - + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.428 * tfactors.T943i + + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.428 * tfactors.T943i - + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be9_p_to_d_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Be9_to_d_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be9 + p --> d + He4 + He4 - // Be9 + p --> d + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 20.5607 + -5.8 * tfactors.T9i + + -0.75 * tfactors.lnT9; - // cf88r - ln_set_rate = 20.5607 + -5.8 * tfactors.T9i - + -0.75 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.8 * tfactors.T9i * tfactors.T9i + + -0.75 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.8 * tfactors.T9i * tfactors.T9i - + -0.75 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = 20.1768 + -3.046 * tfactors.T9i + + -1.0 * tfactors.lnT9; - // cf88r - ln_set_rate = 20.1768 + -3.046 * tfactors.T9i - + -1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.046 * tfactors.T9i * tfactors.T9i + + -1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.046 * tfactors.T9i * tfactors.T9i - + -1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 26.0751 + -10.359 * tfactors.T913i + 0.103955 * tfactors.T913 + + 4.4262 * tfactors.T9 + -5.95664 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // cf88n - ln_set_rate = 26.0751 + -10.359 * tfactors.T913i + 0.103955 * tfactors.T913 - + 4.4262 * tfactors.T9 + -5.95664 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -10.359 * tfactors.T943i + (1.0/3.0) * 0.103955 * tfactors.T923i + + 4.4262 + (5.0/3.0) * -5.95664 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -10.359 * tfactors.T943i + (1.0/3.0) * 0.103955 * tfactors.T923i - + 4.4262 + (5.0/3.0) * -5.95664 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B8_n_to_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_B8_to_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B8 + n --> p + He4 + He4 - // B8 + n --> p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = 19.812 + -1.13869e-12 * tfactors.T9i + 1.5368e-10 * tfactors.T913i + -5.36043e-10 * tfactors.T913 + + 5.80628e-11 * tfactors.T9 + -5.23778e-12 * tfactors.T953 + 1.77211e-10 * tfactors.lnT9; - // wagn - ln_set_rate = 19.812 + -1.13869e-12 * tfactors.T9i + 1.5368e-10 * tfactors.T913i + -5.36043e-10 * tfactors.T913 - + 5.80628e-11 * tfactors.T9 + -5.23778e-12 * tfactors.T953 + 1.77211e-10 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.13869e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.5368e-10 * tfactors.T943i + (1.0/3.0) * -5.36043e-10 * tfactors.T923i + + 5.80628e-11 + (5.0/3.0) * -5.23778e-12 * tfactors.T923 + 1.77211e-10 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.13869e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.5368e-10 * tfactors.T943i + (1.0/3.0) * -5.36043e-10 * tfactors.T923i - + 5.80628e-11 + (5.0/3.0) * -5.23778e-12 * tfactors.T923 + 1.77211e-10 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_B11_p_to_3He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_B11_to_He4_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // B11 + p --> 3 He4 - // B11 + p --> 3 He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrr + ln_set_rate = -14.9395 + -1.724 * tfactors.T9i + 8.49175 * tfactors.T913i + 27.3254 * tfactors.T913 + + -3.72071 * tfactors.T9 + 0.275516 * tfactors.T953 + -1.5 * tfactors.lnT9; - // nacrr - ln_set_rate = -14.9395 + -1.724 * tfactors.T9i + 8.49175 * tfactors.T913i + 27.3254 * tfactors.T913 - + -3.72071 * tfactors.T9 + 0.275516 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.724 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.49175 * tfactors.T943i + (1.0/3.0) * 27.3254 * tfactors.T923i + + -3.72071 + (5.0/3.0) * 0.275516 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.724 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.49175 * tfactors.T943i + (1.0/3.0) * 27.3254 * tfactors.T923i - + -3.72071 + (5.0/3.0) * 0.275516 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrn + ln_set_rate = 28.6442 + -12.097 * tfactors.T913i + -0.0496312 * tfactors.T913 + + 0.687736 * tfactors.T9 + -0.564229 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // nacrn - ln_set_rate = 28.6442 + -12.097 * tfactors.T913i + -0.0496312 * tfactors.T913 - + 0.687736 * tfactors.T9 + -0.564229 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -12.097 * tfactors.T943i + (1.0/3.0) * -0.0496312 * tfactors.T923i + + 0.687736 + (5.0/3.0) * -0.564229 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -12.097 * tfactors.T943i + (1.0/3.0) * -0.0496312 * tfactors.T923i - + 0.687736 + (5.0/3.0) * -0.564229 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Li7_He3_to_n_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He3_Li7_to_n_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Li7 + He3 --> n + p + He4 + He4 - // Li7 + He3 --> n + p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = 30.038 + -4.24733e-12 * tfactors.T9i + -17.989 * tfactors.T913i + -1.57523e-09 * tfactors.T913 + + 1.45934e-10 * tfactors.T9 + -1.15341e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // mafon - ln_set_rate = 30.038 + -4.24733e-12 * tfactors.T9i + -17.989 * tfactors.T913i + -1.57523e-09 * tfactors.T913 - + 1.45934e-10 * tfactors.T9 + -1.15341e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.24733e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -17.989 * tfactors.T943i + (1.0/3.0) * -1.57523e-09 * tfactors.T923i + + 1.45934e-10 + (5.0/3.0) * -1.15341e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.24733e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -17.989 * tfactors.T943i + (1.0/3.0) * -1.57523e-09 * tfactors.T923i - + 1.45934e-10 + (5.0/3.0) * -1.15341e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be7_He3_to_p_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He3_Be7_to_p_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be7 + He3 --> p + p + He4 + He4 - // Be7 + He3 --> p + p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = 31.7435 + -5.45213e-12 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 + + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; - // mafon - ln_set_rate = 31.7435 + -5.45213e-12 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 - + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 5.45213e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i + + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 5.45213e-12 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i - + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_Be9_p_to_n_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_Be9_to_n_p_He4_He4_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // Be9 + p --> n + p + He4 + He4 - // Be9 + p --> n + p + He4 + He4 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = 20.7431 + -26.725 * tfactors.T9i + 1.40505e-06 * tfactors.T913i + -1.47128e-06 * tfactors.T913 + + 6.89313e-08 * tfactors.T9 + -3.55179e-09 * tfactors.T953 + -1.5 * tfactors.lnT9; - // cf88r - ln_set_rate = 20.7431 + -26.725 * tfactors.T9i + 1.40505e-06 * tfactors.T913i + -1.47128e-06 * tfactors.T913 - + 6.89313e-08 * tfactors.T9 + -3.55179e-09 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 26.725 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.40505e-06 * tfactors.T943i + (1.0/3.0) * -1.47128e-06 * tfactors.T923i + + 6.89313e-08 + (5.0/3.0) * -3.55179e-09 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 26.725 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.40505e-06 * tfactors.T943i + (1.0/3.0) * -1.47128e-06 * tfactors.T923i - + 6.89313e-08 + (5.0/3.0) * -3.55179e-09 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = 14.6035 + -21.4742 * tfactors.T9i + -0.634849 * tfactors.T913i + 4.82033 * tfactors.T913 + + -0.257317 * tfactors.T9 + 0.0134206 * tfactors.T953 + -1.08885 * tfactors.lnT9; - // cf88n - ln_set_rate = 14.6035 + -21.4742 * tfactors.T9i + -0.634849 * tfactors.T913i + 4.82033 * tfactors.T913 - + -0.257317 * tfactors.T9 + 0.0134206 * tfactors.T953 + -1.08885 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 21.4742 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.634849 * tfactors.T943i + (1.0/3.0) * 4.82033 * tfactors.T923i + + -0.257317 + (5.0/3.0) * 0.0134206 * tfactors.T923 + -1.08885 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 21.4742 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.634849 * tfactors.T943i + (1.0/3.0) * 4.82033 * tfactors.T923i - + -0.257317 + (5.0/3.0) * 0.0134206 * tfactors.T923 + -1.08885 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_p_n_to_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_p_He4_to_Li6_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + p + n --> Li6 - // n + p + He4 --> Li6 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -12.2851 + -19.353 * tfactors.T9i + 1.44987 * tfactors.T913i + -1.42759 * tfactors.T913 + + 0.0454035 * tfactors.T9 + 0.00471161 * tfactors.T953 + -1.0 * tfactors.lnT9; - // cf88r - ln_set_rate = -12.2851 + -19.353 * tfactors.T9i + 1.44987 * tfactors.T913i + -1.42759 * tfactors.T913 - + 0.0454035 * tfactors.T9 + 0.00471161 * tfactors.T953 + -1.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 19.353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.44987 * tfactors.T943i + (1.0/3.0) * -1.42759 * tfactors.T923i + + 0.0454035 + (5.0/3.0) * 0.00471161 * tfactors.T923 + -1.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 19.353 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.44987 * tfactors.T943i + (1.0/3.0) * -1.42759 * tfactors.T923i - + 0.0454035 + (5.0/3.0) * 0.00471161 * tfactors.T923 + -1.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_n_to_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_He4_He4_to_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 + n --> Be9 - // n + He4 + He4 --> Be9 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // ac12r + ln_set_rate = -6.81178 + -1.01953 * tfactors.T9i + -1.56673 * tfactors.T913i + -5.43497 * tfactors.T913 + + 0.673807 * tfactors.T9 + -0.041014 * tfactors.T953 + -1.5 * tfactors.lnT9; - // ac12r - ln_set_rate = -6.81178 + -1.01953 * tfactors.T9i + -1.56673 * tfactors.T913i + -5.43497 * tfactors.T913 - + 0.673807 * tfactors.T9 + -0.041014 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.01953 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.56673 * tfactors.T943i + (1.0/3.0) * -5.43497 * tfactors.T923i + + 0.673807 + (5.0/3.0) * -0.041014 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.01953 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -1.56673 * tfactors.T943i + (1.0/3.0) * -5.43497 * tfactors.T923i - + 0.673807 + (5.0/3.0) * -0.041014 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // ac12n + ln_set_rate = -8.22898 + -13.3317 * tfactors.T913i + 13.2237 * tfactors.T913 + + -9.06339 * tfactors.T9 + -0.666667 * tfactors.lnT9; - // ac12n - ln_set_rate = -8.22898 + -13.3317 * tfactors.T913i + 13.2237 * tfactors.T913 - + -9.06339 * tfactors.T9 + -0.666667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -13.3317 * tfactors.T943i + (1.0/3.0) * 13.2237 * tfactors.T923i + + -9.06339 + -0.666667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -13.3317 * tfactors.T943i + (1.0/3.0) * 13.2237 * tfactors.T923i - + -9.06339 + -0.666667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_C12_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> C12 - // 3 He4 --> C12 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // fy05r + ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 + + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // fy05r - ln_set_rate = -11.7884 + -1.02446 * tfactors.T9i + -23.57 * tfactors.T913i + 20.4886 * tfactors.T913 - + -12.9882 * tfactors.T9 + -20.0 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i + + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 1.02446 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -23.57 * tfactors.T943i + (1.0/3.0) * 20.4886 * tfactors.T923i - + -12.9882 + (5.0/3.0) * -20.0 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05n + ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 + + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; - // fy05n - ln_set_rate = -0.971052 + -37.06 * tfactors.T913i + 29.3493 * tfactors.T913 - + -115.507 * tfactors.T9 + -10.0 * tfactors.T953 + -1.33333 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i + + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -37.06 * tfactors.T943i + (1.0/3.0) * 29.3493 * tfactors.T923i - + -115.507 + (5.0/3.0) * -10.0 * tfactors.T923 + -1.33333 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // fy05r + ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 + + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; - // fy05r - ln_set_rate = -24.3505 + -4.12656 * tfactors.T9i + -13.49 * tfactors.T913i + 21.4259 * tfactors.T913 - + -1.34769 * tfactors.T9 + 0.0879816 * tfactors.T953 + -13.1653 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i + + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 4.12656 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -13.49 * tfactors.T943i + (1.0/3.0) * 21.4259 * tfactors.T923i - + -1.34769 + (5.0/3.0) * 0.0879816 * tfactors.T923 + -13.1653 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_p_p_n_to_p_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_p_p_to_p_d_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // p + p + n --> p + d - // n + p + p --> p + d + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = -4.24034 + -3.72 * tfactors.T913i + 0.946313 * tfactors.T913 + + 0.105406 * tfactors.T9 + -0.0149431 * tfactors.T953 + -1.5 * tfactors.lnT9; - // cf88n - ln_set_rate = -4.24034 + -3.72 * tfactors.T913i + 0.946313 * tfactors.T913 - + 0.105406 * tfactors.T9 + -0.0149431 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = + -(1.0/3.0) * -3.72 * tfactors.T943i + (1.0/3.0) * 0.946313 * tfactors.T923i + + 0.105406 + (5.0/3.0) * -0.0149431 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = + -(1.0/3.0) * -3.72 * tfactors.T943i + (1.0/3.0) * 0.946313 * tfactors.T923i - + 0.105406 + (5.0/3.0) * -0.0149431 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_p_p_to_He3_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_p_He4_to_He3_He3_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + p + p --> He3 + He3 - // p + p + He4 --> He3 + He3 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 2.98257 + -149.222 * tfactors.T9i + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 + + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // nacrn - ln_set_rate = 2.98257 + -149.222 * tfactors.T9i + -12.277 * tfactors.T913i + -0.103699 * tfactors.T913 - + -0.0649967 * tfactors.T9 + 0.0168191 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 149.222 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i + + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 149.222 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.277 * tfactors.T943i + (1.0/3.0) * -0.103699 * tfactors.T923i - + -0.0649967 + (5.0/3.0) * 0.0168191 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_n_to_d_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_He4_He4_to_d_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 + n --> d + Li7 - // n + He4 + He4 --> d + Li7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 5.67199 + -175.472 * tfactors.T9i + -10.259 * tfactors.T913i + + -2.16667 * tfactors.lnT9; - // cf88n - ln_set_rate = 5.67199 + -175.472 * tfactors.T9i + -10.259 * tfactors.T913i - + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 175.472 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.259 * tfactors.T943i + + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 175.472 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.259 * tfactors.T943i - + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_p_to_n_B8_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_He4_He4_to_n_B8_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 + p --> n + B8 - // p + He4 + He4 --> n + B8 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // wagn + ln_set_rate = -1.93853 + -218.783 * tfactors.T9i + 1.5368e-10 * tfactors.T913i + -5.36043e-10 * tfactors.T913 + + 5.80628e-11 * tfactors.T9 + -5.23778e-12 * tfactors.T953 + -1.5 * tfactors.lnT9; - // wagn - ln_set_rate = -1.93853 + -218.783 * tfactors.T9i + 1.5368e-10 * tfactors.T913i + -5.36043e-10 * tfactors.T913 - + 5.80628e-11 * tfactors.T9 + -5.23778e-12 * tfactors.T953 + -1.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 218.783 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.5368e-10 * tfactors.T943i + (1.0/3.0) * -5.36043e-10 * tfactors.T923i + + 5.80628e-11 + (5.0/3.0) * -5.23778e-12 * tfactors.T923 + -1.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 218.783 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.5368e-10 * tfactors.T943i + (1.0/3.0) * -5.36043e-10 * tfactors.T923i - + 5.80628e-11 + (5.0/3.0) * -5.23778e-12 * tfactors.T923 + -1.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_p_to_d_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_He4_He4_to_d_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 + p --> d + Be7 - // p + He4 + He4 --> d + Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 6.97069 + -194.561 * tfactors.T9i + -12.428 * tfactors.T913i + + -2.16667 * tfactors.lnT9; - // cf88n - ln_set_rate = 6.97069 + -194.561 * tfactors.T9i + -12.428 * tfactors.T913i - + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 194.561 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.428 * tfactors.T943i + + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 194.561 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.428 * tfactors.T943i - + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_d_He4_He4_to_p_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_d_He4_He4_to_p_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // d + He4 + He4 --> p + Be9 - // d + He4 + He4 --> p + Be9 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88n + ln_set_rate = 2.83369 + -7.55453 * tfactors.T9i + -10.359 * tfactors.T913i + 0.103955 * tfactors.T913 + + 4.4262 * tfactors.T9 + -5.95664 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // cf88n - ln_set_rate = 2.83369 + -7.55453 * tfactors.T9i + -10.359 * tfactors.T913i + 0.103955 * tfactors.T913 - + 4.4262 * tfactors.T9 + -5.95664 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 7.55453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.359 * tfactors.T943i + (1.0/3.0) * 0.103955 * tfactors.T923i + + 4.4262 + (5.0/3.0) * -5.95664 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 7.55453 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -10.359 * tfactors.T943i + (1.0/3.0) * 0.103955 * tfactors.T923i - + 4.4262 + (5.0/3.0) * -5.95664 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = -2.68071 + -13.3545 * tfactors.T9i + + -2.25 * tfactors.lnT9; - // cf88r - ln_set_rate = -2.68071 + -13.3545 * tfactors.T9i - + -2.25 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 13.3545 * tfactors.T9i * tfactors.T9i + + -2.25 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 13.3545 * tfactors.T9i * tfactors.T9i - + -2.25 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88r + ln_set_rate = -3.06461 + -10.6005 * tfactors.T9i + + -2.5 * tfactors.lnT9; - // cf88r - ln_set_rate = -3.06461 + -10.6005 * tfactors.T9i - + -2.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 10.6005 * tfactors.T9i * tfactors.T9i + + -2.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 10.6005 * tfactors.T9i * tfactors.T9i - + -2.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_He4_to_p_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_He4_He4_He4_to_p_B11_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // 3 He4 --> p + B11 - // 3 He4 --> p + B11 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // nacrn + ln_set_rate = 6.8613 + -100.75 * tfactors.T9i + -12.097 * tfactors.T913i + -0.0496312 * tfactors.T913 + + 0.687736 * tfactors.T9 + -0.564229 * tfactors.T953 + -2.16667 * tfactors.lnT9; - // nacrn - ln_set_rate = 6.8613 + -100.75 * tfactors.T9i + -12.097 * tfactors.T913i + -0.0496312 * tfactors.T913 - + 0.687736 * tfactors.T9 + -0.564229 * tfactors.T953 + -2.16667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 100.75 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.097 * tfactors.T943i + (1.0/3.0) * -0.0496312 * tfactors.T923i + + 0.687736 + (5.0/3.0) * -0.564229 * tfactors.T923 + -2.16667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 100.75 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -12.097 * tfactors.T943i + (1.0/3.0) * -0.0496312 * tfactors.T923i - + 0.687736 + (5.0/3.0) * -0.564229 * tfactors.T923 + -2.16667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // nacrr + ln_set_rate = -36.7224 + -102.474 * tfactors.T9i + 8.49175 * tfactors.T913i + 27.3254 * tfactors.T913 + + -3.72071 * tfactors.T9 + 0.275516 * tfactors.T953 + -3.0 * tfactors.lnT9; - // nacrr - ln_set_rate = -36.7224 + -102.474 * tfactors.T9i + 8.49175 * tfactors.T913i + 27.3254 * tfactors.T913 - + -3.72071 * tfactors.T9 + 0.275516 * tfactors.T953 + -3.0 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 102.474 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.49175 * tfactors.T943i + (1.0/3.0) * 27.3254 * tfactors.T923i + + -3.72071 + (5.0/3.0) * 0.275516 * tfactors.T923 + -3.0 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 102.474 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 8.49175 * tfactors.T943i + (1.0/3.0) * 27.3254 * tfactors.T923i - + -3.72071 + (5.0/3.0) * 0.275516 * tfactors.T923 + -3.0 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_p_n_to_He3_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_p_He4_He4_to_He3_Li7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 + p + n --> He3 + Li7 - // n + p + He4 + He4 --> He3 + Li7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = -14.8862 + -111.725 * tfactors.T9i + -17.989 * tfactors.T913i + -1.57523e-09 * tfactors.T913 + + 1.45934e-10 * tfactors.T9 + -1.15341e-11 * tfactors.T953 + -3.66667 * tfactors.lnT9; - // mafon - ln_set_rate = -14.8862 + -111.725 * tfactors.T9i + -17.989 * tfactors.T913i + -1.57523e-09 * tfactors.T913 - + 1.45934e-10 * tfactors.T9 + -1.15341e-11 * tfactors.T953 + -3.66667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 111.725 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -17.989 * tfactors.T943i + (1.0/3.0) * -1.57523e-09 * tfactors.T923i + + 1.45934e-10 + (5.0/3.0) * -1.15341e-11 * tfactors.T923 + -3.66667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 111.725 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -17.989 * tfactors.T943i + (1.0/3.0) * -1.57523e-09 * tfactors.T923i - + 1.45934e-10 + (5.0/3.0) * -1.15341e-11 * tfactors.T923 + -3.66667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_p_n_to_p_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_n_p_He4_He4_to_p_Be9_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 + p + n --> p + Be9 - // n + p + He4 + He4 --> p + Be9 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // cf88r + ln_set_rate = -25.452 + -8.47112 * tfactors.T9i + 1.40505e-06 * tfactors.T913i + -1.47128e-06 * tfactors.T913 + + 6.89313e-08 * tfactors.T9 + -3.55179e-09 * tfactors.T953 + -4.5 * tfactors.lnT9; - // cf88r - ln_set_rate = -25.452 + -8.47112 * tfactors.T9i + 1.40505e-06 * tfactors.T913i + -1.47128e-06 * tfactors.T913 - + 6.89313e-08 * tfactors.T9 + -3.55179e-09 * tfactors.T953 + -4.5 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 8.47112 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.40505e-06 * tfactors.T943i + (1.0/3.0) * -1.47128e-06 * tfactors.T923i + + 6.89313e-08 + (5.0/3.0) * -3.55179e-09 * tfactors.T923 + -4.5 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 8.47112 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * 1.40505e-06 * tfactors.T943i + (1.0/3.0) * -1.47128e-06 * tfactors.T923i - + 6.89313e-08 + (5.0/3.0) * -3.55179e-09 * tfactors.T923 + -4.5 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; - } + // cf88n + ln_set_rate = -31.5916 + -3.22032 * tfactors.T9i + -0.634849 * tfactors.T913i + 4.82033 * tfactors.T913 + + -0.257317 * tfactors.T9 + 0.0134206 * tfactors.T953 + -4.08885 * tfactors.lnT9; - // cf88n - ln_set_rate = -31.5916 + -3.22032 * tfactors.T9i + -0.634849 * tfactors.T913i + 4.82033 * tfactors.T913 - + -0.257317 * tfactors.T9 + 0.0134206 * tfactors.T953 + -4.08885 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 3.22032 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.634849 * tfactors.T943i + (1.0/3.0) * 4.82033 * tfactors.T923i + + -0.257317 + (5.0/3.0) * 0.0134206 * tfactors.T923 + -4.08885 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 3.22032 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -0.634849 * tfactors.T943i + (1.0/3.0) * 4.82033 * tfactors.T923i - + -0.257317 + (5.0/3.0) * 0.0134206 * tfactors.T923 + -4.08885 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} + template + AMREX_GPU_DEVICE AMREX_INLINE + void rate_He4_He4_p_p_to_He3_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { -template -AMREX_GPU_DEVICE AMREX_INLINE -void rate_p_p_He4_He4_to_He3_Be7_reaclib(const tf_t& tfactors, const amrex::Real log_scor, const amrex::Real dlog_scor_dT, amrex::Real& rate, amrex::Real& drate_dT) { + // He4 + He4 + p + p --> He3 + Be7 - // p + p + He4 + He4 --> He3 + Be7 + rate = 0.0; + drate_dT = 0.0; - rate = 0.0; - drate_dT = 0.0; + amrex::Real ln_set_rate{0.0}; + amrex::Real dln_set_rate_dT9{0.0}; + amrex::Real set_rate{0.0}; - amrex::Real ln_set_rate{0.0}; - amrex::Real dln_set_rate_dT9{0.0}; - amrex::Real set_rate{0.0}; + // mafon + ln_set_rate = -13.1807 + -130.807 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 + + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -3.66667 * tfactors.lnT9; - // mafon - ln_set_rate = -13.1807 + -130.807 * tfactors.T9i + -21.793 * tfactors.T913i + -1.98126e-09 * tfactors.T913 - + 1.84204e-10 * tfactors.T9 + -1.46403e-11 * tfactors.T953 + -3.66667 * tfactors.lnT9; + ln_set_rate += log_scor; - ln_set_rate += log_scor; + if constexpr (do_T_derivatives) { + dln_set_rate_dT9 = 130.807 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i + + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -3.66667 * tfactors.T9i; - if constexpr (do_T_derivatives) { - dln_set_rate_dT9 = 130.807 * tfactors.T9i * tfactors.T9i + -(1.0/3.0) * -21.793 * tfactors.T943i + (1.0/3.0) * -1.98126e-09 * tfactors.T923i - + 1.84204e-10 + (5.0/3.0) * -1.46403e-11 * tfactors.T923 + -3.66667 * tfactors.T9i; + dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; + } - dln_set_rate_dT9 += dlog_scor_dT * 1.0e9_rt; - } + // avoid underflows by zeroing rates in [0.0, 1.e-100] + ln_set_rate = std::max(ln_set_rate, -230.0); + set_rate = std::exp(ln_set_rate); + rate += set_rate; + if constexpr (do_T_derivatives) { + drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; + } - // avoid underflows by zeroing rates in [0.0, 1.e-100] - ln_set_rate = std::max(ln_set_rate, -230.0); - set_rate = std::exp(ln_set_rate); - rate += set_rate; - if constexpr (do_T_derivatives) { - drate_dT += set_rate * dln_set_rate_dT9 * 1.0e-9; } -} - -template -AMREX_GPU_HOST_DEVICE AMREX_INLINE -void -fill_reaclib_rates([[maybe_unused]] const tf_t& tfactors, - [[maybe_unused]] T& rate_eval) -{ + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) + { - [[maybe_unused]] amrex::Real rate; - [[maybe_unused]] amrex::Real drate_dT; + [[maybe_unused]] amrex::Real rate; + [[maybe_unused]] amrex::Real drate_dT; - { - // Be7_to_Li7_reaclib + { + // Be7_to_Li7_electron_capture_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Be7_to_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Be7_to_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Be7_to_Li7_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Be7_to_Li7_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_to_Li7_electron_capture_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_to_Li7_electron_capture_reaclib) = drate_dT; + } } - } - { - // C14_to_N14_reaclib + { + // C14_to_N14_beta_neg_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C14_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C14_to_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C14_to_N14_beta_neg_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_to_N14_beta_neg_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C14_to_N14_beta_neg_reaclib) = drate_dT; + } } - } - { - // N13_to_C13_reaclib + { + // N13_to_C13_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_C13_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_C13_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_C13_beta_pos_reaclib) = drate_dT; + } } - } - { - // O14_to_N14_reaclib + { + // O14_to_N14_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_N14_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_N14_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_N14_beta_pos_reaclib) = drate_dT; + } } - } - { - // O15_to_N15_reaclib + { + // O15_to_N15_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_N15_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_N15_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_N15_beta_pos_reaclib) = drate_dT; + } } - } - { - // F17_to_O17_reaclib + { + // F17_to_O17_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_O17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_to_O17_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_to_O17_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_O17_beta_pos_reaclib) = drate_dT; + } } - } - { - // F18_to_O18_reaclib + { + // F18_to_O18_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F18_to_O18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_O18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_O18_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_to_O18_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_O18_beta_pos_reaclib) = drate_dT; + } } - } - { - // Ne18_to_F18_reaclib + { + // Ne18_to_F18_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne18_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_F18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_F18_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_to_F18_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_F18_beta_pos_reaclib) = drate_dT; + } } - } - { - // Ne19_to_F19_reaclib + { + // Ne19_to_F19_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne19_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_F19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_F19_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_to_F19_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_F19_beta_pos_reaclib) = drate_dT; + } } - } - { - // Zn59_to_Cu59_reaclib + { + // Zn59_to_Cu59_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn59_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn59_to_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn59_to_Cu59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn59_to_Cu59_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_to_Cu59_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn59_to_Cu59_beta_pos_reaclib) = drate_dT; + } } - } - { - // Ge63_to_Ga63_reaclib + { + // Ge63_to_Ga63_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ge63_to_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ge63_to_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ge63_to_Ga63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge63_to_Ga63_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge63_to_Ga63_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge63_to_Ga63_beta_pos_reaclib) = drate_dT; + } } - } - { - // d_to_n_p_reaclib + { + // d_to_n_p_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_d_to_n_p_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_to_n_p_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_to_n_p_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_d_to_n_p_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_to_n_p_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_to_n_p_reaclib) = drate_dT; + } } - } - { - // He3_to_p_d_reaclib + { + // He3_to_p_d_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_He3_to_p_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He3_to_p_d_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_to_p_d_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_He3_to_p_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_to_p_d_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_to_p_d_reaclib) = drate_dT; + } } - } - { - // He4_to_n_He3_reaclib + { + // He4_to_n_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_He4_to_n_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_to_n_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_to_n_He3_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_He4_to_n_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_to_n_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_to_n_He3_reaclib) = drate_dT; + } } - } - { - // He4_to_d_d_reaclib + { + // He4_to_d_d_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_He4_to_d_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_to_d_d_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_to_d_d_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_He4_to_d_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_to_d_d_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_to_d_d_reaclib) = drate_dT; + } } - } - { - // Li6_to_He4_d_reaclib + { + // Li6_to_He4_d_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Li6_to_He4_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Li6_to_He4_d_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Li6_to_He4_d_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Li6_to_He4_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_to_He4_d_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_to_He4_d_reaclib) = drate_dT; + } } - } - { - // Li7_to_n_Li6_reaclib + { + // Li7_to_n_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Li7_to_n_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Li7_to_n_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Li7_to_n_Li6_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Li7_to_n_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_to_n_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_to_n_Li6_reaclib) = drate_dT; + } } - } - { - // Be7_to_p_Li6_reaclib + { + // Be7_to_p_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Be7_to_p_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Be7_to_p_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Be7_to_p_Li6_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Be7_to_p_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_to_p_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_to_p_Li6_reaclib) = drate_dT; + } } - } - { - // Be7_to_He4_He3_reaclib + { + // Be7_to_He4_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Be7_to_He4_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Be7_to_He4_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Be7_to_He4_He3_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Be7_to_He4_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_to_He4_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_to_He4_He3_reaclib) = drate_dT; + } } - } - { - // B8_to_p_Be7_reaclib + { + // B8_to_p_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B8_to_p_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_p_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B8_to_p_Be7_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B8_to_p_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_p_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_to_p_Be7_reaclib) = drate_dT; + } } - } - { - // B8_to_He4_He4_reaclib + { + // B8_to_He4_He4_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B8_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B8_to_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B8_to_He4_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_to_He4_He4_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_to_He4_He4_beta_pos_reaclib) = drate_dT; + } } - } - { - // B10_to_p_Be9_reaclib + { + // B10_to_p_Be9_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B10_to_p_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B10_to_p_Be9_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B10_to_p_Be9_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B10_to_p_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B10_to_p_Be9_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B10_to_p_Be9_reaclib) = drate_dT; + } } - } - { - // B10_to_He4_Li6_reaclib + { + // B10_to_He4_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B10_to_He4_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B10_to_He4_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B10_to_He4_Li6_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B10_to_He4_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B10_to_He4_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B10_to_He4_Li6_reaclib) = drate_dT; + } } - } - { - // B11_to_n_B10_reaclib + { + // B11_to_n_B10_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B11_to_n_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B11_to_n_B10_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B11_to_n_B10_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B11_to_n_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B11_to_n_B10_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B11_to_n_B10_reaclib) = drate_dT; + } } - } - { - // B11_to_He4_Li7_reaclib + { + // B11_to_He4_Li7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_B11_to_He4_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_B11_to_He4_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_B11_to_He4_Li7_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B11_to_He4_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B11_to_He4_Li7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B11_to_He4_Li7_reaclib) = drate_dT; + } } - } - { - // C12_to_p_B11_reaclib + { + // C12_to_p_B11_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_p_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_to_p_B11_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_p_B11_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_p_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_to_p_B11_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_p_B11_reaclib) = drate_dT; + } } - } - { - // C13_to_n_C12_reaclib + { + // C13_to_n_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C13_to_n_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C13_to_n_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C13_to_n_C12_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C13_to_n_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_to_n_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_to_n_C12_reaclib) = drate_dT; + } } - } - { - // C14_to_n_C13_reaclib + { + // C14_to_n_C13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C14_to_n_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C14_to_n_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C14_to_n_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C14_to_n_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_to_n_C13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C14_to_n_C13_reaclib) = drate_dT; + } } - } - { - // N13_to_p_C12_reaclib + { + // N13_to_p_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N13_to_p_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N13_to_p_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N13_to_p_C12_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_to_p_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_to_p_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_to_p_C12_reaclib) = drate_dT; + } } - } - { - // N14_to_n_N13_reaclib + { + // N14_to_n_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N14_to_n_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N14_to_n_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N14_to_n_N13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_to_n_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_to_n_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_to_n_N13_reaclib) = drate_dT; + } } - } - { - // N14_to_p_C13_reaclib + { + // N14_to_p_C13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N14_to_p_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N14_to_p_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N14_to_p_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_to_p_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_to_p_C13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_to_p_C13_reaclib) = drate_dT; + } } - } - { - // N15_to_n_N14_reaclib + { + // N15_to_n_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N15_to_n_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N15_to_n_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N15_to_n_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N15_to_n_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_to_n_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_to_n_N14_reaclib) = drate_dT; + } } - } - { - // N15_to_p_C14_reaclib + { + // N15_to_p_C14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_N15_to_p_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_N15_to_p_C14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_N15_to_p_C14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N15_to_p_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_to_p_C14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_to_p_C14_reaclib) = drate_dT; + } } - } - { - // O14_to_p_N13_reaclib + { + // O14_to_p_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O14_to_p_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O14_to_p_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O14_to_p_N13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_to_p_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_to_p_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_to_p_N13_reaclib) = drate_dT; + } } - } - { - // O15_to_n_O14_reaclib + { + // O15_to_n_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_n_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_n_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_n_O14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_n_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_n_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_n_O14_reaclib) = drate_dT; + } } - } - { - // O15_to_p_N14_reaclib + { + // O15_to_p_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O15_to_p_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O15_to_p_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O15_to_p_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_to_p_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_to_p_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_to_p_N14_reaclib) = drate_dT; + } } - } - { - // O16_to_n_O15_reaclib + { + // O16_to_n_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_n_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_to_n_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_n_O15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_n_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_to_n_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_n_O15_reaclib) = drate_dT; + } } - } - { - // O16_to_p_N15_reaclib + { + // O16_to_p_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_p_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_to_p_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_p_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_p_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_to_p_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_p_N15_reaclib) = drate_dT; + } } - } - { - // O16_to_He4_C12_reaclib + { + // O16_to_He4_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O16_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_to_He4_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_to_He4_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_to_He4_C12_reaclib) = drate_dT; + } } - } - { - // O17_to_n_O16_reaclib + { + // O17_to_n_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O17_to_n_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O17_to_n_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O17_to_n_O16_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O17_to_n_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_to_n_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_to_n_O16_reaclib) = drate_dT; + } } - } - { - // O18_to_n_O17_reaclib + { + // O18_to_n_O17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O18_to_n_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O18_to_n_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O18_to_n_O17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O18_to_n_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_to_n_O17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_to_n_O17_reaclib) = drate_dT; + } } - } - { - // O18_to_He4_C14_reaclib + { + // O18_to_He4_C14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_O18_to_He4_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O18_to_He4_C14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O18_to_He4_C14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O18_to_He4_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_to_He4_C14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_to_He4_C14_reaclib) = drate_dT; + } } - } - { - // F17_to_p_O16_reaclib + { + // F17_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F17_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F17_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F17_to_p_O16_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_to_p_O16_reaclib) = drate_dT; + } } - } - { - // F18_to_n_F17_reaclib + { + // F18_to_n_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_n_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F18_to_n_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_n_F17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_n_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_to_n_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_n_F17_reaclib) = drate_dT; + } } - } - { - // F18_to_p_O17_reaclib + { + // F18_to_p_O17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_p_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F18_to_p_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_p_O17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_p_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_to_p_O17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_p_O17_reaclib) = drate_dT; + } } - } - { - // F18_to_He4_N14_reaclib + { + // F18_to_He4_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F18_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F18_to_He4_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_to_He4_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_to_He4_N14_reaclib) = drate_dT; + } } - } - { - // F19_to_n_F18_reaclib + { + // F19_to_n_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_n_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F19_to_n_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_n_F18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_n_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_to_n_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_n_F18_reaclib) = drate_dT; + } } - } - { - // F19_to_p_O18_reaclib + { + // F19_to_p_O18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_p_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F19_to_p_O18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_p_O18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_p_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_to_p_O18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_p_O18_reaclib) = drate_dT; + } } - } - { - // F19_to_He4_N15_reaclib + { + // F19_to_He4_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_F19_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_F19_to_He4_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F19_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_to_He4_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_to_He4_N15_reaclib) = drate_dT; + } } - } - { - // Ne18_to_p_F17_reaclib + { + // Ne18_to_p_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne18_to_p_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_to_p_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_p_F17_reaclib) = drate_dT; + } } - } - { - // Ne18_to_He4_O14_reaclib + { + // Ne18_to_He4_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne18_to_He4_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne18_to_He4_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_to_He4_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_to_He4_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_to_He4_O14_reaclib) = drate_dT; + } } - } - { - // Ne19_to_n_Ne18_reaclib + { + // Ne19_to_n_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_n_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne19_to_n_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_n_Ne18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_n_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_to_n_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_n_Ne18_reaclib) = drate_dT; + } } - } - { - // Ne19_to_p_F18_reaclib + { + // Ne19_to_p_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_p_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne19_to_p_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_p_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_to_p_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_p_F18_reaclib) = drate_dT; + } } - } - { - // Ne19_to_He4_O15_reaclib + { + // Ne19_to_He4_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne19_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne19_to_He4_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_to_He4_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_to_He4_O15_reaclib) = drate_dT; + } } - } - { - // Ne20_to_n_Ne19_reaclib + { + // Ne20_to_n_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_n_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne20_to_n_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_n_Ne19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_n_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_to_n_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_n_Ne19_reaclib) = drate_dT; + } } - } - { - // Ne20_to_p_F19_reaclib + { + // Ne20_to_p_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_p_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne20_to_p_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_p_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_to_p_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_p_F19_reaclib) = drate_dT; + } } - } - { - // Ne20_to_He4_O16_reaclib + { + // Ne20_to_He4_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne20_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne20_to_He4_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_to_He4_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_to_He4_O16_reaclib) = drate_dT; + } } - } - { - // Ne21_to_n_Ne20_reaclib + { + // Ne21_to_n_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne21_to_n_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne21_to_n_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne21_to_n_Ne20_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne21_to_n_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_to_n_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_to_n_Ne20_reaclib) = drate_dT; + } } - } - { - // Ne21_to_He4_O17_reaclib + { + // Ne21_to_He4_O17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne21_to_He4_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne21_to_He4_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne21_to_He4_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_to_He4_O17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_to_He4_O17_reaclib) = drate_dT; + } } - } - { - // Ne22_to_n_Ne21_reaclib + { + // Ne22_to_n_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne22_to_n_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne22_to_n_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne22_to_n_Ne21_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne22_to_n_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne22_to_n_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_to_n_Ne21_reaclib) = drate_dT; + } } - } - { - // Ne22_to_He4_O18_reaclib + { + // Ne22_to_He4_O18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ne22_to_He4_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ne22_to_He4_O18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ne22_to_He4_O18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne22_to_He4_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne22_to_He4_O18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_to_He4_O18_reaclib) = drate_dT; + } } - } - { - // Na21_to_p_Ne20_reaclib + { + // Na21_to_p_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na21_to_p_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Na21_to_p_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na21_to_p_Ne20_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na21_to_p_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na21_to_p_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_to_p_Ne20_reaclib) = drate_dT; + } } - } - { - // Na21_to_He4_F17_reaclib + { + // Na21_to_He4_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na21_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Na21_to_He4_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na21_to_He4_F17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na21_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na21_to_He4_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_to_He4_F17_reaclib) = drate_dT; + } } - } - { - // Na22_to_n_Na21_reaclib + { + // Na22_to_n_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na22_to_n_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Na22_to_n_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_n_Na21_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_to_n_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_to_n_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_n_Na21_reaclib) = drate_dT; + } } - } - { - // Na22_to_p_Ne21_reaclib + { + // Na22_to_p_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na22_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Na22_to_p_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_to_p_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_p_Ne21_reaclib) = drate_dT; + } } - } - { - // Na22_to_He4_F18_reaclib + { + // Na22_to_He4_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na22_to_He4_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Na22_to_He4_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_to_He4_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_to_He4_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_He4_F18_reaclib) = drate_dT; + } } - } - { - // Na23_to_n_Na22_reaclib + { + // Na23_to_n_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na23_to_n_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Na23_to_n_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_n_Na22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na23_to_n_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_to_n_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_n_Na22_reaclib) = drate_dT; + } } - } - { - // Na23_to_p_Ne22_reaclib + { + // Na23_to_p_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na23_to_p_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Na23_to_p_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_p_Ne22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na23_to_p_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_to_p_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_p_Ne22_reaclib) = drate_dT; + } } - } - { - // Na23_to_He4_F19_reaclib + { + // Na23_to_He4_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Na23_to_He4_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Na23_to_He4_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na23_to_He4_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_to_He4_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_He4_F19_reaclib) = drate_dT; + } } - } - { - // Mg23_to_p_Na22_reaclib + { + // Mg23_to_p_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg23_to_p_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg23_to_p_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg23_to_p_Na22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_to_p_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_to_p_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_to_p_Na22_reaclib) = drate_dT; + } } - } - { - // Mg23_to_He4_Ne19_reaclib + { + // Mg23_to_He4_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg23_to_He4_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg23_to_He4_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg23_to_He4_Ne19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_to_He4_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_to_He4_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_to_He4_Ne19_reaclib) = drate_dT; + } } - } - { - // Mg24_to_n_Mg23_reaclib + { + // Mg24_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg24_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_n_Mg23_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // Mg24_to_p_Na23_reaclib + { + // Mg24_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg24_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // Mg24_to_He4_Ne20_reaclib + { + // Mg24_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg24_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg24_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // Mg25_to_n_Mg24_reaclib + { + // Mg25_to_n_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg25_to_n_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg25_to_n_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg25_to_n_Mg24_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg25_to_n_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_to_n_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_to_n_Mg24_reaclib) = drate_dT; + } } - } - { - // Mg25_to_He4_Ne21_reaclib + { + // Mg25_to_He4_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg25_to_He4_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg25_to_He4_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg25_to_He4_Ne21_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg25_to_He4_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_to_He4_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_to_He4_Ne21_reaclib) = drate_dT; + } } - } - { - // Mg26_to_n_Mg25_reaclib + { + // Mg26_to_n_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg26_to_n_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg26_to_n_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg26_to_n_Mg25_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg26_to_n_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg26_to_n_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg26_to_n_Mg25_reaclib) = drate_dT; + } } - } - { - // Mg26_to_He4_Ne22_reaclib + { + // Mg26_to_He4_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mg26_to_He4_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mg26_to_He4_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mg26_to_He4_Ne22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg26_to_He4_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg26_to_He4_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg26_to_He4_Ne22_reaclib) = drate_dT; + } } - } - { - // Al25_to_p_Mg24_reaclib + { + // Al25_to_p_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al25_to_p_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Al25_to_p_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al25_to_p_Mg24_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al25_to_p_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al25_to_p_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al25_to_p_Mg24_reaclib) = drate_dT; + } } - } - { - // Al25_to_He4_Na21_reaclib + { + // Al25_to_He4_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al25_to_He4_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Al25_to_He4_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al25_to_He4_Na21_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al25_to_He4_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al25_to_He4_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al25_to_He4_Na21_reaclib) = drate_dT; + } } - } - { - // Al26_to_n_Al25_reaclib + { + // Al26_to_n_Al25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al26_to_n_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Al26_to_n_Al25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al26_to_n_Al25_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al26_to_n_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_to_n_Al25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_to_n_Al25_reaclib) = drate_dT; + } } - } - { - // Al26_to_p_Mg25_reaclib + { + // Al26_to_p_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al26_to_p_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Al26_to_p_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al26_to_p_Mg25_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al26_to_p_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_to_p_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_to_p_Mg25_reaclib) = drate_dT; + } } - } - { - // Al26_to_He4_Na22_reaclib + { + // Al26_to_He4_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al26_to_He4_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Al26_to_He4_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al26_to_He4_Na22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al26_to_He4_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_to_He4_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_to_He4_Na22_reaclib) = drate_dT; + } } - } - { - // Al27_to_n_Al26_reaclib + { + // Al27_to_n_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al27_to_n_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Al27_to_n_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al27_to_n_Al26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al27_to_n_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_to_n_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_to_n_Al26_reaclib) = drate_dT; + } } - } - { - // Al27_to_p_Mg26_reaclib + { + // Al27_to_p_Mg26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al27_to_p_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Al27_to_p_Mg26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al27_to_p_Mg26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al27_to_p_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_to_p_Mg26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_to_p_Mg26_reaclib) = drate_dT; + } } - } - { - // Al27_to_He4_Na23_reaclib + { + // Al27_to_He4_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Al27_to_He4_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Al27_to_He4_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Al27_to_He4_Na23_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al27_to_He4_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_to_He4_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_to_He4_Na23_reaclib) = drate_dT; + } } - } - { - // Si28_to_p_Al27_reaclib + { + // Si28_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Si28_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // Si28_to_He4_Mg24_reaclib + { + // Si28_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si28_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Si28_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // Si29_to_n_Si28_reaclib + { + // Si29_to_n_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si29_to_n_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Si29_to_n_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si29_to_n_Si28_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si29_to_n_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_to_n_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_to_n_Si28_reaclib) = drate_dT; + } } - } - { - // Si29_to_He4_Mg25_reaclib + { + // Si29_to_He4_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si29_to_He4_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Si29_to_He4_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si29_to_He4_Mg25_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si29_to_He4_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_to_He4_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_to_He4_Mg25_reaclib) = drate_dT; + } } - } - { - // Si30_to_n_Si29_reaclib + { + // Si30_to_n_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si30_to_n_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Si30_to_n_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si30_to_n_Si29_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si30_to_n_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_to_n_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_to_n_Si29_reaclib) = drate_dT; + } } - } - { - // Si30_to_He4_Mg26_reaclib + { + // Si30_to_He4_Mg26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si30_to_He4_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Si30_to_He4_Mg26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si30_to_He4_Mg26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si30_to_He4_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_to_He4_Mg26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_to_He4_Mg26_reaclib) = drate_dT; + } } - } - { - // Si31_to_n_Si30_reaclib + { + // Si31_to_n_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si31_to_n_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Si31_to_n_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si31_to_n_Si30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si31_to_n_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si31_to_n_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si31_to_n_Si30_reaclib) = drate_dT; + } } - } - { - // Si32_to_n_Si31_reaclib + { + // Si32_to_n_Si31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Si32_to_n_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Si32_to_n_Si31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Si32_to_n_Si31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si32_to_n_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si32_to_n_Si31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si32_to_n_Si31_reaclib) = drate_dT; + } } - } - { - // P29_to_p_Si28_reaclib + { + // P29_to_p_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P29_to_p_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P29_to_p_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P29_to_p_Si28_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P29_to_p_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P29_to_p_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P29_to_p_Si28_reaclib) = drate_dT; + } } - } - { - // P29_to_He4_Al25_reaclib + { + // P29_to_He4_Al25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P29_to_He4_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P29_to_He4_Al25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P29_to_He4_Al25_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P29_to_He4_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P29_to_He4_Al25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P29_to_He4_Al25_reaclib) = drate_dT; + } } - } - { - // P30_to_n_P29_reaclib + { + // P30_to_n_P29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P30_to_n_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P30_to_n_P29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P30_to_n_P29_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P30_to_n_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_to_n_P29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_to_n_P29_reaclib) = drate_dT; + } } - } - { - // P30_to_p_Si29_reaclib + { + // P30_to_p_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P30_to_p_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P30_to_p_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P30_to_p_Si29_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P30_to_p_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_to_p_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_to_p_Si29_reaclib) = drate_dT; + } } - } - { - // P30_to_He4_Al26_reaclib + { + // P30_to_He4_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P30_to_He4_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P30_to_He4_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P30_to_He4_Al26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P30_to_He4_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_to_He4_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_to_He4_Al26_reaclib) = drate_dT; + } } - } - { - // P31_to_n_P30_reaclib + { + // P31_to_n_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P31_to_n_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P31_to_n_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P31_to_n_P30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P31_to_n_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_to_n_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_to_n_P30_reaclib) = drate_dT; + } } - } - { - // P31_to_p_Si30_reaclib + { + // P31_to_p_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P31_to_p_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P31_to_p_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P31_to_p_Si30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P31_to_p_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_to_p_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_to_p_Si30_reaclib) = drate_dT; + } } - } - { - // P31_to_He4_Al27_reaclib + { + // P31_to_He4_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P31_to_He4_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P31_to_He4_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P31_to_He4_Al27_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P31_to_He4_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_to_He4_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_to_He4_Al27_reaclib) = drate_dT; + } } - } - { - // P32_to_n_P31_reaclib + { + // P32_to_n_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P32_to_n_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P32_to_n_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P32_to_n_P31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P32_to_n_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_to_n_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_to_n_P31_reaclib) = drate_dT; + } } - } - { - // P32_to_p_Si31_reaclib + { + // P32_to_p_Si31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P32_to_p_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P32_to_p_Si31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P32_to_p_Si31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P32_to_p_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_to_p_Si31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_to_p_Si31_reaclib) = drate_dT; + } } - } - { - // P33_to_n_P32_reaclib + { + // P33_to_n_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P33_to_n_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P33_to_n_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P33_to_n_P32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P33_to_n_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P33_to_n_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_to_n_P32_reaclib) = drate_dT; + } } - } - { - // P33_to_p_Si32_reaclib + { + // P33_to_p_Si32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_P33_to_p_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_P33_to_p_Si32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_P33_to_p_Si32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P33_to_p_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P33_to_p_Si32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_to_p_Si32_reaclib) = drate_dT; + } } - } - { - // S32_to_p_P31_reaclib + { + // S32_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S32_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_p_P31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_p_P31_reaclib) = drate_dT; + } } - } - { - // S32_to_He4_Si28_reaclib + { + // S32_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S32_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S32_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // S33_to_n_S32_reaclib + { + // S33_to_n_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S33_to_n_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S33_to_n_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S33_to_n_S32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S33_to_n_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_to_n_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_to_n_S32_reaclib) = drate_dT; + } } - } - { - // S33_to_p_P32_reaclib + { + // S33_to_p_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S33_to_p_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S33_to_p_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S33_to_p_P32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S33_to_p_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_to_p_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_to_p_P32_reaclib) = drate_dT; + } } - } - { - // S33_to_He4_Si29_reaclib + { + // S33_to_He4_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S33_to_He4_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S33_to_He4_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S33_to_He4_Si29_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S33_to_He4_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_to_He4_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_to_He4_Si29_reaclib) = drate_dT; + } } - } - { - // S34_to_n_S33_reaclib + { + // S34_to_n_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S34_to_n_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S34_to_n_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S34_to_n_S33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S34_to_n_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_to_n_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_to_n_S33_reaclib) = drate_dT; + } } - } - { - // S34_to_p_P33_reaclib + { + // S34_to_p_P33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S34_to_p_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S34_to_p_P33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S34_to_p_P33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S34_to_p_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_to_p_P33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_to_p_P33_reaclib) = drate_dT; + } } - } - { - // S34_to_He4_Si30_reaclib + { + // S34_to_He4_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S34_to_He4_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S34_to_He4_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S34_to_He4_Si30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S34_to_He4_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_to_He4_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_to_He4_Si30_reaclib) = drate_dT; + } } - } - { - // S35_to_n_S34_reaclib + { + // S35_to_n_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S35_to_n_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S35_to_n_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S35_to_n_S34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S35_to_n_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_to_n_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_to_n_S34_reaclib) = drate_dT; + } } - } - { - // S35_to_He4_Si31_reaclib + { + // S35_to_He4_Si31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S35_to_He4_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S35_to_He4_Si31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S35_to_He4_Si31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S35_to_He4_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_to_He4_Si31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_to_He4_Si31_reaclib) = drate_dT; + } } - } - { - // S36_to_n_S35_reaclib + { + // S36_to_n_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S36_to_n_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S36_to_n_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S36_to_n_S35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S36_to_n_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S36_to_n_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S36_to_n_S35_reaclib) = drate_dT; + } } - } - { - // S36_to_He4_Si32_reaclib + { + // S36_to_He4_Si32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_S36_to_He4_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_S36_to_He4_Si32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_S36_to_He4_Si32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S36_to_He4_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S36_to_He4_Si32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S36_to_He4_Si32_reaclib) = drate_dT; + } } - } - { - // Cl33_to_p_S32_reaclib + { + // Cl33_to_p_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl33_to_p_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl33_to_p_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl33_to_p_S32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl33_to_p_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl33_to_p_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl33_to_p_S32_reaclib) = drate_dT; + } } - } - { - // Cl33_to_He4_P29_reaclib + { + // Cl33_to_He4_P29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl33_to_He4_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl33_to_He4_P29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl33_to_He4_P29_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl33_to_He4_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl33_to_He4_P29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl33_to_He4_P29_reaclib) = drate_dT; + } } - } - { - // Cl34_to_n_Cl33_reaclib + { + // Cl34_to_n_Cl33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl34_to_n_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl34_to_n_Cl33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl34_to_n_Cl33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl34_to_n_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_to_n_Cl33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_to_n_Cl33_reaclib) = drate_dT; + } } - } - { - // Cl34_to_p_S33_reaclib + { + // Cl34_to_p_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl34_to_p_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl34_to_p_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl34_to_p_S33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl34_to_p_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_to_p_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_to_p_S33_reaclib) = drate_dT; + } } - } - { - // Cl34_to_He4_P30_reaclib + { + // Cl34_to_He4_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl34_to_He4_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl34_to_He4_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl34_to_He4_P30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl34_to_He4_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_to_He4_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_to_He4_P30_reaclib) = drate_dT; + } } - } - { - // Cl35_to_n_Cl34_reaclib + { + // Cl35_to_n_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl35_to_n_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl35_to_n_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl35_to_n_Cl34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl35_to_n_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_to_n_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_to_n_Cl34_reaclib) = drate_dT; + } } - } - { - // Cl35_to_p_S34_reaclib + { + // Cl35_to_p_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl35_to_p_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl35_to_p_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl35_to_p_S34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl35_to_p_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_to_p_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_to_p_S34_reaclib) = drate_dT; + } } - } - { - // Cl35_to_He4_P31_reaclib + { + // Cl35_to_He4_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl35_to_He4_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl35_to_He4_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl35_to_He4_P31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl35_to_He4_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_to_He4_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_to_He4_P31_reaclib) = drate_dT; + } } - } - { - // Cl36_to_n_Cl35_reaclib + { + // Cl36_to_n_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl36_to_n_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl36_to_n_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl36_to_n_Cl35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl36_to_n_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_to_n_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_to_n_Cl35_reaclib) = drate_dT; + } } - } - { - // Cl36_to_p_S35_reaclib + { + // Cl36_to_p_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl36_to_p_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl36_to_p_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl36_to_p_S35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl36_to_p_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_to_p_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_to_p_S35_reaclib) = drate_dT; + } } - } - { - // Cl36_to_He4_P32_reaclib + { + // Cl36_to_He4_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl36_to_He4_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl36_to_He4_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl36_to_He4_P32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl36_to_He4_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_to_He4_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_to_He4_P32_reaclib) = drate_dT; + } } - } - { - // Cl37_to_n_Cl36_reaclib + { + // Cl37_to_n_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl37_to_n_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl37_to_n_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl37_to_n_Cl36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl37_to_n_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_to_n_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_to_n_Cl36_reaclib) = drate_dT; + } } - } - { - // Cl37_to_p_S36_reaclib + { + // Cl37_to_p_S36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl37_to_p_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl37_to_p_S36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl37_to_p_S36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl37_to_p_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_to_p_S36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_to_p_S36_reaclib) = drate_dT; + } } - } - { - // Cl37_to_He4_P33_reaclib + { + // Cl37_to_He4_P33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cl37_to_He4_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cl37_to_He4_P33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cl37_to_He4_P33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl37_to_He4_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_to_He4_P33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_to_He4_P33_reaclib) = drate_dT; + } } - } - { - // Ar36_to_p_Cl35_reaclib + { + // Ar36_to_p_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_p_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_p_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_p_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_p_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_p_Cl35_reaclib) = drate_dT; + } } - } - { - // Ar36_to_He4_S32_reaclib + { + // Ar36_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar36_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar36_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // Ar37_to_n_Ar36_reaclib + { + // Ar37_to_n_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar37_to_n_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar37_to_n_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar37_to_n_Ar36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar37_to_n_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_to_n_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_to_n_Ar36_reaclib) = drate_dT; + } } - } - { - // Ar37_to_p_Cl36_reaclib + { + // Ar37_to_p_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar37_to_p_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar37_to_p_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar37_to_p_Cl36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar37_to_p_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_to_p_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_to_p_Cl36_reaclib) = drate_dT; + } } - } - { - // Ar37_to_He4_S33_reaclib + { + // Ar37_to_He4_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar37_to_He4_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar37_to_He4_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar37_to_He4_S33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar37_to_He4_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_to_He4_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_to_He4_S33_reaclib) = drate_dT; + } } - } - { - // Ar38_to_n_Ar37_reaclib + { + // Ar38_to_n_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar38_to_n_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar38_to_n_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar38_to_n_Ar37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar38_to_n_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_to_n_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_to_n_Ar37_reaclib) = drate_dT; + } } - } - { - // Ar38_to_p_Cl37_reaclib + { + // Ar38_to_p_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar38_to_p_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar38_to_p_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar38_to_p_Cl37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar38_to_p_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_to_p_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_to_p_Cl37_reaclib) = drate_dT; + } } - } - { - // Ar38_to_He4_S34_reaclib + { + // Ar38_to_He4_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar38_to_He4_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar38_to_He4_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar38_to_He4_S34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar38_to_He4_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_to_He4_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_to_He4_S34_reaclib) = drate_dT; + } } - } - { - // Ar39_to_n_Ar38_reaclib + { + // Ar39_to_n_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar39_to_n_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar39_to_n_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar39_to_n_Ar38_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar39_to_n_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_to_n_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_to_n_Ar38_reaclib) = drate_dT; + } } - } - { - // Ar39_to_He4_S35_reaclib + { + // Ar39_to_He4_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar39_to_He4_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar39_to_He4_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar39_to_He4_S35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar39_to_He4_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_to_He4_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_to_He4_S35_reaclib) = drate_dT; + } } - } - { - // Ar40_to_n_Ar39_reaclib + { + // Ar40_to_n_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar40_to_n_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar40_to_n_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar40_to_n_Ar39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar40_to_n_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar40_to_n_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar40_to_n_Ar39_reaclib) = drate_dT; + } } - } - { - // Ar40_to_He4_S36_reaclib + { + // Ar40_to_He4_S36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ar40_to_He4_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ar40_to_He4_S36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ar40_to_He4_S36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar40_to_He4_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar40_to_He4_S36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar40_to_He4_S36_reaclib) = drate_dT; + } } - } - { - // K37_to_p_Ar36_reaclib + { + // K37_to_p_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K37_to_p_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K37_to_p_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K37_to_p_Ar36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K37_to_p_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K37_to_p_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K37_to_p_Ar36_reaclib) = drate_dT; + } } - } - { - // K37_to_He4_Cl33_reaclib + { + // K37_to_He4_Cl33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K37_to_He4_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K37_to_He4_Cl33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K37_to_He4_Cl33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K37_to_He4_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K37_to_He4_Cl33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K37_to_He4_Cl33_reaclib) = drate_dT; + } } - } - { - // K38_to_n_K37_reaclib + { + // K38_to_n_K37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K38_to_n_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K38_to_n_K37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K38_to_n_K37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K38_to_n_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K38_to_n_K37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K38_to_n_K37_reaclib) = drate_dT; + } } - } - { - // K38_to_p_Ar37_reaclib + { + // K38_to_p_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K38_to_p_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K38_to_p_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K38_to_p_Ar37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K38_to_p_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K38_to_p_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K38_to_p_Ar37_reaclib) = drate_dT; + } } - } - { - // K38_to_He4_Cl34_reaclib + { + // K38_to_He4_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K38_to_He4_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K38_to_He4_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K38_to_He4_Cl34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K38_to_He4_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K38_to_He4_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K38_to_He4_Cl34_reaclib) = drate_dT; + } } - } - { - // K39_to_n_K38_reaclib + { + // K39_to_n_K38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K39_to_n_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K39_to_n_K38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K39_to_n_K38_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K39_to_n_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_to_n_K38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_to_n_K38_reaclib) = drate_dT; + } } - } - { - // K39_to_p_Ar38_reaclib + { + // K39_to_p_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K39_to_p_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K39_to_p_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K39_to_p_Ar38_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K39_to_p_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_to_p_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_to_p_Ar38_reaclib) = drate_dT; + } } - } - { - // K39_to_He4_Cl35_reaclib + { + // K39_to_He4_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K39_to_He4_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K39_to_He4_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K39_to_He4_Cl35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K39_to_He4_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_to_He4_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_to_He4_Cl35_reaclib) = drate_dT; + } } - } - { - // K40_to_n_K39_reaclib + { + // K40_to_n_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K40_to_n_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K40_to_n_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K40_to_n_K39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K40_to_n_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_to_n_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_to_n_K39_reaclib) = drate_dT; + } } - } - { - // K40_to_p_Ar39_reaclib + { + // K40_to_p_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K40_to_p_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K40_to_p_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K40_to_p_Ar39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K40_to_p_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_to_p_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_to_p_Ar39_reaclib) = drate_dT; + } } - } - { - // K40_to_He4_Cl36_reaclib + { + // K40_to_He4_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K40_to_He4_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K40_to_He4_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K40_to_He4_Cl36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K40_to_He4_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_to_He4_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_to_He4_Cl36_reaclib) = drate_dT; + } } - } - { - // K41_to_n_K40_reaclib + { + // K41_to_n_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K41_to_n_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K41_to_n_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K41_to_n_K40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K41_to_n_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_to_n_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_to_n_K40_reaclib) = drate_dT; + } } - } - { - // K41_to_p_Ar40_reaclib + { + // K41_to_p_Ar40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K41_to_p_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K41_to_p_Ar40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K41_to_p_Ar40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K41_to_p_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_to_p_Ar40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_to_p_Ar40_reaclib) = drate_dT; + } } - } - { - // K41_to_He4_Cl37_reaclib + { + // K41_to_He4_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_K41_to_He4_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_K41_to_He4_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_K41_to_He4_Cl37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K41_to_He4_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_to_He4_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_to_He4_Cl37_reaclib) = drate_dT; + } } - } - { - // Ca40_to_p_K39_reaclib + { + // Ca40_to_p_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_p_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_p_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_p_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_p_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_p_K39_reaclib) = drate_dT; + } } - } - { - // Ca40_to_He4_Ar36_reaclib + { + // Ca40_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca40_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca40_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // Ca41_to_n_Ca40_reaclib + { + // Ca41_to_n_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca41_to_n_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca41_to_n_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca41_to_n_Ca40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca41_to_n_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_to_n_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_to_n_Ca40_reaclib) = drate_dT; + } } - } - { - // Ca41_to_p_K40_reaclib + { + // Ca41_to_p_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca41_to_p_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca41_to_p_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca41_to_p_K40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca41_to_p_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_to_p_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_to_p_K40_reaclib) = drate_dT; + } } - } - { - // Ca41_to_He4_Ar37_reaclib + { + // Ca41_to_He4_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca41_to_He4_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca41_to_He4_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca41_to_He4_Ar37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca41_to_He4_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_to_He4_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_to_He4_Ar37_reaclib) = drate_dT; + } } - } - { - // Ca42_to_n_Ca41_reaclib + { + // Ca42_to_n_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca42_to_n_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca42_to_n_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca42_to_n_Ca41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca42_to_n_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_to_n_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_to_n_Ca41_reaclib) = drate_dT; + } } - } - { - // Ca42_to_p_K41_reaclib + { + // Ca42_to_p_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca42_to_p_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca42_to_p_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca42_to_p_K41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca42_to_p_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_to_p_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_to_p_K41_reaclib) = drate_dT; + } } - } - { - // Ca42_to_He4_Ar38_reaclib + { + // Ca42_to_He4_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca42_to_He4_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca42_to_He4_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca42_to_He4_Ar38_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca42_to_He4_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_to_He4_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_to_He4_Ar38_reaclib) = drate_dT; + } } - } - { - // Ca43_to_n_Ca42_reaclib + { + // Ca43_to_n_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca43_to_n_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca43_to_n_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca43_to_n_Ca42_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca43_to_n_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_to_n_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_to_n_Ca42_reaclib) = drate_dT; + } } - } - { - // Ca43_to_He4_Ar39_reaclib + { + // Ca43_to_He4_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca43_to_He4_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca43_to_He4_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca43_to_He4_Ar39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca43_to_He4_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_to_He4_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_to_He4_Ar39_reaclib) = drate_dT; + } } - } - { - // Ca44_to_n_Ca43_reaclib + { + // Ca44_to_n_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca44_to_n_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca44_to_n_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca44_to_n_Ca43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca44_to_n_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_to_n_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_to_n_Ca43_reaclib) = drate_dT; + } } - } - { - // Ca44_to_He4_Ar40_reaclib + { + // Ca44_to_He4_Ar40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca44_to_He4_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca44_to_He4_Ar40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca44_to_He4_Ar40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca44_to_He4_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_to_He4_Ar40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_to_He4_Ar40_reaclib) = drate_dT; + } } - } - { - // Ca45_to_n_Ca44_reaclib + { + // Ca45_to_n_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca45_to_n_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca45_to_n_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca45_to_n_Ca44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca45_to_n_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca45_to_n_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca45_to_n_Ca44_reaclib) = drate_dT; + } } - } - { - // Ca46_to_n_Ca45_reaclib + { + // Ca46_to_n_Ca45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca46_to_n_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca46_to_n_Ca45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca46_to_n_Ca45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca46_to_n_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca46_to_n_Ca45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca46_to_n_Ca45_reaclib) = drate_dT; + } } - } - { - // Ca47_to_n_Ca46_reaclib + { + // Ca47_to_n_Ca46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca47_to_n_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca47_to_n_Ca46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca47_to_n_Ca46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca47_to_n_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca47_to_n_Ca46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca47_to_n_Ca46_reaclib) = drate_dT; + } } - } - { - // Ca48_to_n_Ca47_reaclib + { + // Ca48_to_n_Ca47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ca48_to_n_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ca48_to_n_Ca47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ca48_to_n_Ca47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca48_to_n_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca48_to_n_Ca47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca48_to_n_Ca47_reaclib) = drate_dT; + } } - } - { - // Sc43_to_p_Ca42_reaclib + { + // Sc43_to_p_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc43_to_p_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc43_to_p_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc43_to_p_Ca42_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc43_to_p_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_to_p_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_to_p_Ca42_reaclib) = drate_dT; + } } - } - { - // Sc43_to_He4_K39_reaclib + { + // Sc43_to_He4_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc43_to_He4_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc43_to_He4_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc43_to_He4_K39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc43_to_He4_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_to_He4_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_to_He4_K39_reaclib) = drate_dT; + } } - } - { - // Sc44_to_n_Sc43_reaclib + { + // Sc44_to_n_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc44_to_n_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc44_to_n_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc44_to_n_Sc43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc44_to_n_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_to_n_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_to_n_Sc43_reaclib) = drate_dT; + } } - } - { - // Sc44_to_p_Ca43_reaclib + { + // Sc44_to_p_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc44_to_p_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc44_to_p_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc44_to_p_Ca43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc44_to_p_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_to_p_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_to_p_Ca43_reaclib) = drate_dT; + } } - } - { - // Sc44_to_He4_K40_reaclib + { + // Sc44_to_He4_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc44_to_He4_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc44_to_He4_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc44_to_He4_K40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc44_to_He4_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_to_He4_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_to_He4_K40_reaclib) = drate_dT; + } } - } - { - // Sc45_to_n_Sc44_reaclib + { + // Sc45_to_n_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc45_to_n_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc45_to_n_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc45_to_n_Sc44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc45_to_n_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_to_n_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_to_n_Sc44_reaclib) = drate_dT; + } } - } - { - // Sc45_to_p_Ca44_reaclib + { + // Sc45_to_p_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc45_to_p_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc45_to_p_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc45_to_p_Ca44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc45_to_p_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_to_p_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_to_p_Ca44_reaclib) = drate_dT; + } } - } - { - // Sc45_to_He4_K41_reaclib + { + // Sc45_to_He4_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc45_to_He4_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc45_to_He4_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc45_to_He4_K41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc45_to_He4_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_to_He4_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_to_He4_K41_reaclib) = drate_dT; + } } - } - { - // Sc46_to_n_Sc45_reaclib + { + // Sc46_to_n_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc46_to_n_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc46_to_n_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc46_to_n_Sc45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc46_to_n_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_to_n_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_to_n_Sc45_reaclib) = drate_dT; + } } - } - { - // Sc46_to_p_Ca45_reaclib + { + // Sc46_to_p_Ca45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc46_to_p_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc46_to_p_Ca45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc46_to_p_Ca45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc46_to_p_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_to_p_Ca45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_to_p_Ca45_reaclib) = drate_dT; + } } - } - { - // Sc47_to_n_Sc46_reaclib + { + // Sc47_to_n_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc47_to_n_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc47_to_n_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc47_to_n_Sc46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc47_to_n_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_to_n_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_to_n_Sc46_reaclib) = drate_dT; + } } - } - { - // Sc47_to_p_Ca46_reaclib + { + // Sc47_to_p_Ca46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc47_to_p_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc47_to_p_Ca46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc47_to_p_Ca46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc47_to_p_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_to_p_Ca46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_to_p_Ca46_reaclib) = drate_dT; + } } - } - { - // Sc48_to_n_Sc47_reaclib + { + // Sc48_to_n_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc48_to_n_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc48_to_n_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc48_to_n_Sc47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc48_to_n_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_to_n_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_to_n_Sc47_reaclib) = drate_dT; + } } - } - { - // Sc48_to_p_Ca47_reaclib + { + // Sc48_to_p_Ca47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc48_to_p_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc48_to_p_Ca47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc48_to_p_Ca47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc48_to_p_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_to_p_Ca47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_to_p_Ca47_reaclib) = drate_dT; + } } - } - { - // Sc49_to_n_Sc48_reaclib + { + // Sc49_to_n_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc49_to_n_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc49_to_n_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc49_to_n_Sc48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc49_to_n_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc49_to_n_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc49_to_n_Sc48_reaclib) = drate_dT; + } } - } - { - // Sc49_to_p_Ca48_reaclib + { + // Sc49_to_p_Ca48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Sc49_to_p_Ca48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Sc49_to_p_Ca48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Sc49_to_p_Ca48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc49_to_p_Ca48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc49_to_p_Ca48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc49_to_p_Ca48_reaclib) = drate_dT; + } } - } - { - // Ti44_to_p_Sc43_reaclib + { + // Ti44_to_p_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_p_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_p_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_p_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_p_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_p_Sc43_reaclib) = drate_dT; + } } - } - { - // Ti44_to_He4_Ca40_reaclib + { + // Ti44_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti44_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti44_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // Ti45_to_n_Ti44_reaclib + { + // Ti45_to_n_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti45_to_n_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti45_to_n_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti45_to_n_Ti44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti45_to_n_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_to_n_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_to_n_Ti44_reaclib) = drate_dT; + } } - } - { - // Ti45_to_p_Sc44_reaclib + { + // Ti45_to_p_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti45_to_p_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti45_to_p_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti45_to_p_Sc44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti45_to_p_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_to_p_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_to_p_Sc44_reaclib) = drate_dT; + } } - } - { - // Ti45_to_He4_Ca41_reaclib + { + // Ti45_to_He4_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti45_to_He4_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti45_to_He4_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti45_to_He4_Ca41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti45_to_He4_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_to_He4_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_to_He4_Ca41_reaclib) = drate_dT; + } } - } - { - // Ti46_to_n_Ti45_reaclib + { + // Ti46_to_n_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti46_to_n_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti46_to_n_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti46_to_n_Ti45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti46_to_n_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_to_n_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_to_n_Ti45_reaclib) = drate_dT; + } } - } - { - // Ti46_to_p_Sc45_reaclib + { + // Ti46_to_p_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti46_to_p_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti46_to_p_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti46_to_p_Sc45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti46_to_p_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_to_p_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_to_p_Sc45_reaclib) = drate_dT; + } } - } - { - // Ti46_to_He4_Ca42_reaclib + { + // Ti46_to_He4_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti46_to_He4_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti46_to_He4_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti46_to_He4_Ca42_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti46_to_He4_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_to_He4_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_to_He4_Ca42_reaclib) = drate_dT; + } } - } - { - // Ti47_to_n_Ti46_reaclib + { + // Ti47_to_n_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti47_to_n_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti47_to_n_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti47_to_n_Ti46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti47_to_n_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_to_n_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_to_n_Ti46_reaclib) = drate_dT; + } } - } - { - // Ti47_to_p_Sc46_reaclib + { + // Ti47_to_p_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti47_to_p_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti47_to_p_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti47_to_p_Sc46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti47_to_p_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_to_p_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_to_p_Sc46_reaclib) = drate_dT; + } } - } - { - // Ti47_to_He4_Ca43_reaclib + { + // Ti47_to_He4_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti47_to_He4_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti47_to_He4_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti47_to_He4_Ca43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti47_to_He4_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_to_He4_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_to_He4_Ca43_reaclib) = drate_dT; + } } - } - { - // Ti48_to_n_Ti47_reaclib + { + // Ti48_to_n_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti48_to_n_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti48_to_n_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti48_to_n_Ti47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti48_to_n_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_to_n_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_to_n_Ti47_reaclib) = drate_dT; + } } - } - { - // Ti48_to_p_Sc47_reaclib + { + // Ti48_to_p_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti48_to_p_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti48_to_p_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti48_to_p_Sc47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti48_to_p_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_to_p_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_to_p_Sc47_reaclib) = drate_dT; + } } - } - { - // Ti48_to_He4_Ca44_reaclib + { + // Ti48_to_He4_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti48_to_He4_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti48_to_He4_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti48_to_He4_Ca44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti48_to_He4_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_to_He4_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_to_He4_Ca44_reaclib) = drate_dT; + } } - } - { - // Ti49_to_n_Ti48_reaclib + { + // Ti49_to_n_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti49_to_n_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti49_to_n_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti49_to_n_Ti48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti49_to_n_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_to_n_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_to_n_Ti48_reaclib) = drate_dT; + } } - } - { - // Ti49_to_p_Sc48_reaclib + { + // Ti49_to_p_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti49_to_p_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti49_to_p_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti49_to_p_Sc48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti49_to_p_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_to_p_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_to_p_Sc48_reaclib) = drate_dT; + } } - } - { - // Ti49_to_He4_Ca45_reaclib + { + // Ti49_to_He4_Ca45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti49_to_He4_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti49_to_He4_Ca45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti49_to_He4_Ca45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti49_to_He4_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_to_He4_Ca45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_to_He4_Ca45_reaclib) = drate_dT; + } } - } - { - // Ti50_to_n_Ti49_reaclib + { + // Ti50_to_n_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti50_to_n_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti50_to_n_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti50_to_n_Ti49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti50_to_n_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_to_n_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_to_n_Ti49_reaclib) = drate_dT; + } } - } - { - // Ti50_to_p_Sc49_reaclib + { + // Ti50_to_p_Sc49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti50_to_p_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti50_to_p_Sc49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti50_to_p_Sc49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti50_to_p_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_to_p_Sc49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_to_p_Sc49_reaclib) = drate_dT; + } } - } - { - // Ti50_to_He4_Ca46_reaclib + { + // Ti50_to_He4_Ca46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti50_to_He4_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti50_to_He4_Ca46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti50_to_He4_Ca46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti50_to_He4_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_to_He4_Ca46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_to_He4_Ca46_reaclib) = drate_dT; + } } - } - { - // Ti51_to_n_Ti50_reaclib + { + // Ti51_to_n_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti51_to_n_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti51_to_n_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti51_to_n_Ti50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti51_to_n_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti51_to_n_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti51_to_n_Ti50_reaclib) = drate_dT; + } } - } - { - // Ti51_to_He4_Ca47_reaclib + { + // Ti51_to_He4_Ca47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ti51_to_He4_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ti51_to_He4_Ca47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ti51_to_He4_Ca47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti51_to_He4_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti51_to_He4_Ca47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti51_to_He4_Ca47_reaclib) = drate_dT; + } } - } - { - // V46_to_p_Ti45_reaclib + { + // V46_to_p_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V46_to_p_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V46_to_p_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V46_to_p_Ti45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V46_to_p_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V46_to_p_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V46_to_p_Ti45_reaclib) = drate_dT; + } } - } - { - // V47_to_n_V46_reaclib + { + // V47_to_n_V46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V47_to_n_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V47_to_n_V46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V47_to_n_V46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V47_to_n_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_to_n_V46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_to_n_V46_reaclib) = drate_dT; + } } - } - { - // V47_to_p_Ti46_reaclib + { + // V47_to_p_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V47_to_p_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V47_to_p_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V47_to_p_Ti46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V47_to_p_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_to_p_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_to_p_Ti46_reaclib) = drate_dT; + } } - } - { - // V47_to_He4_Sc43_reaclib + { + // V47_to_He4_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V47_to_He4_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V47_to_He4_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V47_to_He4_Sc43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V47_to_He4_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_to_He4_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_to_He4_Sc43_reaclib) = drate_dT; + } } - } - { - // V48_to_n_V47_reaclib + { + // V48_to_n_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V48_to_n_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V48_to_n_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V48_to_n_V47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V48_to_n_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_to_n_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_to_n_V47_reaclib) = drate_dT; + } } - } - { - // V48_to_p_Ti47_reaclib + { + // V48_to_p_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V48_to_p_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V48_to_p_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V48_to_p_Ti47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V48_to_p_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_to_p_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_to_p_Ti47_reaclib) = drate_dT; + } } - } - { - // V48_to_He4_Sc44_reaclib + { + // V48_to_He4_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V48_to_He4_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V48_to_He4_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V48_to_He4_Sc44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V48_to_He4_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_to_He4_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_to_He4_Sc44_reaclib) = drate_dT; + } } - } - { - // V49_to_n_V48_reaclib + { + // V49_to_n_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V49_to_n_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V49_to_n_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V49_to_n_V48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V49_to_n_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_to_n_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_to_n_V48_reaclib) = drate_dT; + } } - } - { - // V49_to_p_Ti48_reaclib + { + // V49_to_p_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V49_to_p_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V49_to_p_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V49_to_p_Ti48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V49_to_p_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_to_p_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_to_p_Ti48_reaclib) = drate_dT; + } } - } - { - // V49_to_He4_Sc45_reaclib + { + // V49_to_He4_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V49_to_He4_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V49_to_He4_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V49_to_He4_Sc45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V49_to_He4_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_to_He4_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_to_He4_Sc45_reaclib) = drate_dT; + } } - } - { - // V50_to_n_V49_reaclib + { + // V50_to_n_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V50_to_n_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V50_to_n_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V50_to_n_V49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V50_to_n_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_to_n_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_to_n_V49_reaclib) = drate_dT; + } } - } - { - // V50_to_p_Ti49_reaclib + { + // V50_to_p_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V50_to_p_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V50_to_p_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V50_to_p_Ti49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V50_to_p_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_to_p_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_to_p_Ti49_reaclib) = drate_dT; + } } - } - { - // V50_to_He4_Sc46_reaclib + { + // V50_to_He4_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V50_to_He4_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V50_to_He4_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V50_to_He4_Sc46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V50_to_He4_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_to_He4_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_to_He4_Sc46_reaclib) = drate_dT; + } } - } - { - // V51_to_n_V50_reaclib + { + // V51_to_n_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V51_to_n_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V51_to_n_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V51_to_n_V50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V51_to_n_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_to_n_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_to_n_V50_reaclib) = drate_dT; + } } - } - { - // V51_to_p_Ti50_reaclib + { + // V51_to_p_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V51_to_p_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V51_to_p_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V51_to_p_Ti50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V51_to_p_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_to_p_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_to_p_Ti50_reaclib) = drate_dT; + } } - } - { - // V51_to_He4_Sc47_reaclib + { + // V51_to_He4_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V51_to_He4_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V51_to_He4_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V51_to_He4_Sc47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V51_to_He4_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_to_He4_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_to_He4_Sc47_reaclib) = drate_dT; + } } - } - { - // V52_to_n_V51_reaclib + { + // V52_to_n_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V52_to_n_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V52_to_n_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V52_to_n_V51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V52_to_n_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V52_to_n_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_to_n_V51_reaclib) = drate_dT; + } } - } - { - // V52_to_p_Ti51_reaclib + { + // V52_to_p_Ti51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V52_to_p_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V52_to_p_Ti51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V52_to_p_Ti51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V52_to_p_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V52_to_p_Ti51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_to_p_Ti51_reaclib) = drate_dT; + } } - } - { - // V52_to_He4_Sc48_reaclib + { + // V52_to_He4_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_V52_to_He4_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_V52_to_He4_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_V52_to_He4_Sc48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V52_to_He4_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V52_to_He4_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_to_He4_Sc48_reaclib) = drate_dT; + } } - } - { - // Cr48_to_p_V47_reaclib + { + // Cr48_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_p_V47_reaclib) = drate_dT; + } } - } - { - // Cr48_to_He4_Ti44_reaclib + { + // Cr48_to_He4_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr48_to_He4_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr48_to_He4_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_to_He4_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_to_He4_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_He4_Ti44_reaclib) = drate_dT; + } } - } - { - // Cr49_to_n_Cr48_reaclib + { + // Cr49_to_n_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr49_to_n_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr49_to_n_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr49_to_n_Cr48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr49_to_n_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_to_n_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_to_n_Cr48_reaclib) = drate_dT; + } } - } - { - // Cr49_to_p_V48_reaclib + { + // Cr49_to_p_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr49_to_p_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr49_to_p_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr49_to_p_V48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr49_to_p_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_to_p_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_to_p_V48_reaclib) = drate_dT; + } } - } - { - // Cr49_to_He4_Ti45_reaclib + { + // Cr49_to_He4_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr49_to_He4_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr49_to_He4_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr49_to_He4_Ti45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr49_to_He4_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_to_He4_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_to_He4_Ti45_reaclib) = drate_dT; + } } - } - { - // Cr50_to_n_Cr49_reaclib + { + // Cr50_to_n_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr50_to_n_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr50_to_n_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr50_to_n_Cr49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr50_to_n_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_to_n_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_to_n_Cr49_reaclib) = drate_dT; + } } - } - { - // Cr50_to_p_V49_reaclib + { + // Cr50_to_p_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr50_to_p_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr50_to_p_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr50_to_p_V49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr50_to_p_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_to_p_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_to_p_V49_reaclib) = drate_dT; + } } - } - { - // Cr50_to_He4_Ti46_reaclib + { + // Cr50_to_He4_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr50_to_He4_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr50_to_He4_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr50_to_He4_Ti46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr50_to_He4_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_to_He4_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_to_He4_Ti46_reaclib) = drate_dT; + } } - } - { - // Cr51_to_n_Cr50_reaclib + { + // Cr51_to_n_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr51_to_n_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr51_to_n_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr51_to_n_Cr50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr51_to_n_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_to_n_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_to_n_Cr50_reaclib) = drate_dT; + } } - } - { - // Cr51_to_p_V50_reaclib + { + // Cr51_to_p_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr51_to_p_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr51_to_p_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr51_to_p_V50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr51_to_p_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_to_p_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_to_p_V50_reaclib) = drate_dT; + } } - } - { - // Cr51_to_He4_Ti47_reaclib + { + // Cr51_to_He4_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr51_to_He4_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr51_to_He4_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr51_to_He4_Ti47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr51_to_He4_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_to_He4_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_to_He4_Ti47_reaclib) = drate_dT; + } } - } - { - // Cr52_to_n_Cr51_reaclib + { + // Cr52_to_n_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr52_to_n_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr52_to_n_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr52_to_n_Cr51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr52_to_n_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_to_n_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_to_n_Cr51_reaclib) = drate_dT; + } } - } - { - // Cr52_to_p_V51_reaclib + { + // Cr52_to_p_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr52_to_p_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr52_to_p_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr52_to_p_V51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr52_to_p_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_to_p_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_to_p_V51_reaclib) = drate_dT; + } } - } - { - // Cr52_to_He4_Ti48_reaclib + { + // Cr52_to_He4_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr52_to_He4_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr52_to_He4_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr52_to_He4_Ti48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr52_to_He4_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_to_He4_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_to_He4_Ti48_reaclib) = drate_dT; + } } - } - { - // Cr53_to_n_Cr52_reaclib + { + // Cr53_to_n_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr53_to_n_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr53_to_n_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr53_to_n_Cr52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr53_to_n_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_to_n_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_to_n_Cr52_reaclib) = drate_dT; + } } - } - { - // Cr53_to_p_V52_reaclib + { + // Cr53_to_p_V52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr53_to_p_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr53_to_p_V52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr53_to_p_V52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr53_to_p_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_to_p_V52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_to_p_V52_reaclib) = drate_dT; + } } - } - { - // Cr53_to_He4_Ti49_reaclib + { + // Cr53_to_He4_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr53_to_He4_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr53_to_He4_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr53_to_He4_Ti49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr53_to_He4_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_to_He4_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_to_He4_Ti49_reaclib) = drate_dT; + } } - } - { - // Cr54_to_n_Cr53_reaclib + { + // Cr54_to_n_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr54_to_n_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr54_to_n_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr54_to_n_Cr53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr54_to_n_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr54_to_n_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_to_n_Cr53_reaclib) = drate_dT; + } } - } - { - // Cr54_to_He4_Ti50_reaclib + { + // Cr54_to_He4_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cr54_to_He4_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cr54_to_He4_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cr54_to_He4_Ti50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr54_to_He4_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr54_to_He4_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_to_He4_Ti50_reaclib) = drate_dT; + } } - } - { - // Mn50_to_p_Cr49_reaclib + { + // Mn50_to_p_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn50_to_p_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn50_to_p_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn50_to_p_Cr49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn50_to_p_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn50_to_p_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_to_p_Cr49_reaclib) = drate_dT; + } } - } - { - // Mn50_to_He4_V46_reaclib + { + // Mn50_to_He4_V46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn50_to_He4_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn50_to_He4_V46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn50_to_He4_V46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn50_to_He4_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn50_to_He4_V46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_to_He4_V46_reaclib) = drate_dT; + } } - } - { - // Mn51_to_n_Mn50_reaclib + { + // Mn51_to_n_Mn50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn51_to_n_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn51_to_n_Mn50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn51_to_n_Mn50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn51_to_n_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_to_n_Mn50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_to_n_Mn50_reaclib) = drate_dT; + } } - } - { - // Mn51_to_p_Cr50_reaclib + { + // Mn51_to_p_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn51_to_p_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn51_to_p_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn51_to_p_Cr50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn51_to_p_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_to_p_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_to_p_Cr50_reaclib) = drate_dT; + } } - } - { - // Mn51_to_He4_V47_reaclib + { + // Mn51_to_He4_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn51_to_He4_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn51_to_He4_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn51_to_He4_V47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn51_to_He4_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_to_He4_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_to_He4_V47_reaclib) = drate_dT; + } } - } - { - // Mn52_to_n_Mn51_reaclib + { + // Mn52_to_n_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn52_to_n_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn52_to_n_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn52_to_n_Mn51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn52_to_n_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_to_n_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_to_n_Mn51_reaclib) = drate_dT; + } } - } - { - // Mn52_to_p_Cr51_reaclib + { + // Mn52_to_p_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn52_to_p_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn52_to_p_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn52_to_p_Cr51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn52_to_p_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_to_p_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_to_p_Cr51_reaclib) = drate_dT; + } } - } - { - // Mn52_to_He4_V48_reaclib + { + // Mn52_to_He4_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn52_to_He4_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn52_to_He4_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn52_to_He4_V48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn52_to_He4_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_to_He4_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_to_He4_V48_reaclib) = drate_dT; + } } - } - { - // Mn53_to_n_Mn52_reaclib + { + // Mn53_to_n_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn53_to_n_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn53_to_n_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn53_to_n_Mn52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn53_to_n_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_to_n_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_to_n_Mn52_reaclib) = drate_dT; + } } - } - { - // Mn53_to_p_Cr52_reaclib + { + // Mn53_to_p_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn53_to_p_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn53_to_p_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn53_to_p_Cr52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn53_to_p_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_to_p_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_to_p_Cr52_reaclib) = drate_dT; + } } - } - { - // Mn53_to_He4_V49_reaclib + { + // Mn53_to_He4_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn53_to_He4_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn53_to_He4_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn53_to_He4_V49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn53_to_He4_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_to_He4_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_to_He4_V49_reaclib) = drate_dT; + } } - } - { - // Mn54_to_n_Mn53_reaclib + { + // Mn54_to_n_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn54_to_n_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn54_to_n_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn54_to_n_Mn53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn54_to_n_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_to_n_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_to_n_Mn53_reaclib) = drate_dT; + } } - } - { - // Mn54_to_p_Cr53_reaclib + { + // Mn54_to_p_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn54_to_p_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn54_to_p_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn54_to_p_Cr53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn54_to_p_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_to_p_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_to_p_Cr53_reaclib) = drate_dT; + } } - } - { - // Mn54_to_He4_V50_reaclib + { + // Mn54_to_He4_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn54_to_He4_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn54_to_He4_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn54_to_He4_V50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn54_to_He4_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_to_He4_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_to_He4_V50_reaclib) = drate_dT; + } } - } - { - // Mn55_to_n_Mn54_reaclib + { + // Mn55_to_n_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn55_to_n_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn55_to_n_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn55_to_n_Mn54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn55_to_n_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_to_n_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_to_n_Mn54_reaclib) = drate_dT; + } } - } - { - // Mn55_to_p_Cr54_reaclib + { + // Mn55_to_p_Cr54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn55_to_p_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn55_to_p_Cr54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn55_to_p_Cr54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn55_to_p_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_to_p_Cr54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_to_p_Cr54_reaclib) = drate_dT; + } } - } - { - // Mn55_to_He4_V51_reaclib + { + // Mn55_to_He4_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Mn55_to_He4_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Mn55_to_He4_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Mn55_to_He4_V51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn55_to_He4_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_to_He4_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_to_He4_V51_reaclib) = drate_dT; + } } - } - { - // Fe52_to_p_Mn51_reaclib + { + // Fe52_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // Fe52_to_He4_Cr48_reaclib + { + // Fe52_to_He4_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe52_to_He4_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe52_to_He4_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_to_He4_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_to_He4_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_He4_Cr48_reaclib) = drate_dT; + } } - } - { - // Fe53_to_n_Fe52_reaclib + { + // Fe53_to_n_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe53_to_n_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe53_to_n_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_to_n_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_to_n_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_n_Fe52_reaclib) = drate_dT; + } } - } - { - // Fe53_to_p_Mn52_reaclib + { + // Fe53_to_p_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe53_to_p_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe53_to_p_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_p_Mn52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_to_p_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_to_p_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_p_Mn52_reaclib) = drate_dT; + } } - } - { - // Fe53_to_He4_Cr49_reaclib + { + // Fe53_to_He4_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe53_to_He4_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe53_to_He4_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe53_to_He4_Cr49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_to_He4_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_to_He4_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_He4_Cr49_reaclib) = drate_dT; + } } - } - { - // Fe54_to_n_Fe53_reaclib + { + // Fe54_to_n_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe54_to_n_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_to_n_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_to_n_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_to_n_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_n_Fe53_reaclib) = drate_dT; + } } - } - { - // Fe54_to_p_Mn53_reaclib + { + // Fe54_to_p_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe54_to_p_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_to_p_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_p_Mn53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_to_p_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_to_p_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_p_Mn53_reaclib) = drate_dT; + } } - } - { - // Fe54_to_He4_Cr50_reaclib + { + // Fe54_to_He4_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe54_to_He4_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe54_to_He4_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe54_to_He4_Cr50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_to_He4_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_to_He4_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_He4_Cr50_reaclib) = drate_dT; + } } - } - { - // Fe55_to_n_Fe54_reaclib + { + // Fe55_to_n_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe55_to_n_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe55_to_n_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_to_n_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_to_n_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_n_Fe54_reaclib) = drate_dT; + } } - } - { - // Fe55_to_p_Mn54_reaclib + { + // Fe55_to_p_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe55_to_p_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe55_to_p_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_p_Mn54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_to_p_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_to_p_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_p_Mn54_reaclib) = drate_dT; + } } - } - { - // Fe55_to_He4_Cr51_reaclib + { + // Fe55_to_He4_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe55_to_He4_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe55_to_He4_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe55_to_He4_Cr51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_to_He4_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_to_He4_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_He4_Cr51_reaclib) = drate_dT; + } } - } - { - // Fe56_to_n_Fe55_reaclib + { + // Fe56_to_n_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe56_to_n_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe56_to_n_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_to_n_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_to_n_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_n_Fe55_reaclib) = drate_dT; + } } - } - { - // Fe56_to_p_Mn55_reaclib + { + // Fe56_to_p_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe56_to_p_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe56_to_p_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_p_Mn55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_to_p_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_to_p_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_p_Mn55_reaclib) = drate_dT; + } } - } - { - // Fe56_to_He4_Cr52_reaclib + { + // Fe56_to_He4_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe56_to_He4_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe56_to_He4_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe56_to_He4_Cr52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_to_He4_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_to_He4_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_He4_Cr52_reaclib) = drate_dT; + } } - } - { - // Fe57_to_n_Fe56_reaclib + { + // Fe57_to_n_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe57_to_n_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe57_to_n_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe57_to_n_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe57_to_n_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_to_n_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_to_n_Fe56_reaclib) = drate_dT; + } } - } - { - // Fe57_to_He4_Cr53_reaclib + { + // Fe57_to_He4_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe57_to_He4_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe57_to_He4_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe57_to_He4_Cr53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe57_to_He4_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_to_He4_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_to_He4_Cr53_reaclib) = drate_dT; + } } - } - { - // Fe58_to_n_Fe57_reaclib + { + // Fe58_to_n_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe58_to_n_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe58_to_n_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe58_to_n_Fe57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe58_to_n_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe58_to_n_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe58_to_n_Fe57_reaclib) = drate_dT; + } } - } - { - // Fe58_to_He4_Cr54_reaclib + { + // Fe58_to_He4_Cr54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Fe58_to_He4_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Fe58_to_He4_Cr54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Fe58_to_He4_Cr54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe58_to_He4_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe58_to_He4_Cr54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe58_to_He4_Cr54_reaclib) = drate_dT; + } } - } - { - // Co53_to_p_Fe52_reaclib + { + // Co53_to_p_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co53_to_p_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co53_to_p_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co53_to_p_Fe52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co53_to_p_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co53_to_p_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co53_to_p_Fe52_reaclib) = drate_dT; + } } - } - { - // Co54_to_n_Co53_reaclib + { + // Co54_to_n_Co53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co54_to_n_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co54_to_n_Co53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co54_to_n_Co53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co54_to_n_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_to_n_Co53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_to_n_Co53_reaclib) = drate_dT; + } } - } - { - // Co54_to_p_Fe53_reaclib + { + // Co54_to_p_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co54_to_p_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co54_to_p_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co54_to_p_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co54_to_p_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_to_p_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_to_p_Fe53_reaclib) = drate_dT; + } } - } - { - // Co54_to_He4_Mn50_reaclib + { + // Co54_to_He4_Mn50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co54_to_He4_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co54_to_He4_Mn50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co54_to_He4_Mn50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co54_to_He4_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_to_He4_Mn50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_to_He4_Mn50_reaclib) = drate_dT; + } } - } - { - // Co55_to_n_Co54_reaclib + { + // Co55_to_n_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_n_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co55_to_n_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_n_Co54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_n_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_to_n_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_n_Co54_reaclib) = drate_dT; + } } - } - { - // Co55_to_p_Fe54_reaclib + { + // Co55_to_p_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co55_to_p_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_to_p_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_p_Fe54_reaclib) = drate_dT; + } } - } - { - // Co55_to_He4_Mn51_reaclib + { + // Co55_to_He4_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co55_to_He4_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co55_to_He4_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_to_He4_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_to_He4_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_He4_Mn51_reaclib) = drate_dT; + } } - } - { - // Co56_to_n_Co55_reaclib + { + // Co56_to_n_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co56_to_n_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co56_to_n_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_to_n_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_to_n_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_n_Co55_reaclib) = drate_dT; + } } - } - { - // Co56_to_p_Fe55_reaclib + { + // Co56_to_p_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co56_to_p_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co56_to_p_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_p_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_to_p_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_to_p_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_p_Fe55_reaclib) = drate_dT; + } } - } - { - // Co56_to_He4_Mn52_reaclib + { + // Co56_to_He4_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co56_to_He4_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co56_to_He4_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co56_to_He4_Mn52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_to_He4_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_to_He4_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_He4_Mn52_reaclib) = drate_dT; + } } - } - { - // Co57_to_n_Co56_reaclib + { + // Co57_to_n_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_n_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co57_to_n_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_n_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_to_n_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_n_Co56_reaclib) = drate_dT; + } } - } - { - // Co57_to_p_Fe56_reaclib + { + // Co57_to_p_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co57_to_p_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_to_p_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_p_Fe56_reaclib) = drate_dT; + } } - } - { - // Co57_to_He4_Mn53_reaclib + { + // Co57_to_He4_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co57_to_He4_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co57_to_He4_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co57_to_He4_Mn53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_to_He4_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_to_He4_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_He4_Mn53_reaclib) = drate_dT; + } } - } - { - // Co58_to_n_Co57_reaclib + { + // Co58_to_n_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co58_to_n_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co58_to_n_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co58_to_n_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co58_to_n_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_to_n_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_to_n_Co57_reaclib) = drate_dT; + } } - } - { - // Co58_to_p_Fe57_reaclib + { + // Co58_to_p_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co58_to_p_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co58_to_p_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co58_to_p_Fe57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co58_to_p_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_to_p_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_to_p_Fe57_reaclib) = drate_dT; + } } - } - { - // Co58_to_He4_Mn54_reaclib + { + // Co58_to_He4_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co58_to_He4_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co58_to_He4_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co58_to_He4_Mn54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co58_to_He4_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_to_He4_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_to_He4_Mn54_reaclib) = drate_dT; + } } - } - { - // Co59_to_n_Co58_reaclib + { + // Co59_to_n_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co59_to_n_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co59_to_n_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co59_to_n_Co58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co59_to_n_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_to_n_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_to_n_Co58_reaclib) = drate_dT; + } } - } - { - // Co59_to_p_Fe58_reaclib + { + // Co59_to_p_Fe58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co59_to_p_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co59_to_p_Fe58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co59_to_p_Fe58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co59_to_p_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_to_p_Fe58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_to_p_Fe58_reaclib) = drate_dT; + } } - } - { - // Co59_to_He4_Mn55_reaclib + { + // Co59_to_He4_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Co59_to_He4_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Co59_to_He4_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Co59_to_He4_Mn55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co59_to_He4_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_to_He4_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_to_He4_Mn55_reaclib) = drate_dT; + } } - } - { - // Ni56_to_p_Co55_reaclib + { + // Ni56_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // Ni56_to_He4_Fe52_reaclib + { + // Ni56_to_He4_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni56_to_He4_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni56_to_He4_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_to_He4_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_to_He4_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_He4_Fe52_reaclib) = drate_dT; + } } - } - { - // Ni57_to_n_Ni56_reaclib + { + // Ni57_to_n_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_n_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni57_to_n_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_n_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_to_n_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_n_Ni56_reaclib) = drate_dT; + } } - } - { - // Ni57_to_p_Co56_reaclib + { + // Ni57_to_p_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni57_to_p_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_p_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_to_p_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_p_Co56_reaclib) = drate_dT; + } } - } - { - // Ni57_to_He4_Fe53_reaclib + { + // Ni57_to_He4_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni57_to_He4_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni57_to_He4_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni57_to_He4_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_to_He4_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_to_He4_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_He4_Fe53_reaclib) = drate_dT; + } } - } - { - // Ni58_to_n_Ni57_reaclib + { + // Ni58_to_n_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_n_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni58_to_n_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_n_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_to_n_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_n_Ni57_reaclib) = drate_dT; + } } - } - { - // Ni58_to_p_Co57_reaclib + { + // Ni58_to_p_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_p_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni58_to_p_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_p_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_to_p_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_p_Co57_reaclib) = drate_dT; + } } - } - { - // Ni58_to_He4_Fe54_reaclib + { + // Ni58_to_He4_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni58_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni58_to_He4_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_to_He4_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_He4_Fe54_reaclib) = drate_dT; + } } - } - { - // Ni59_to_n_Ni58_reaclib + { + // Ni59_to_n_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni59_to_n_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni59_to_n_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni59_to_n_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni59_to_n_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_to_n_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_to_n_Ni58_reaclib) = drate_dT; + } } - } - { - // Ni59_to_p_Co58_reaclib + { + // Ni59_to_p_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni59_to_p_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni59_to_p_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni59_to_p_Co58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni59_to_p_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_to_p_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_to_p_Co58_reaclib) = drate_dT; + } } - } - { - // Ni59_to_He4_Fe55_reaclib + { + // Ni59_to_He4_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni59_to_He4_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni59_to_He4_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni59_to_He4_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni59_to_He4_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_to_He4_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_to_He4_Fe55_reaclib) = drate_dT; + } } - } - { - // Ni60_to_n_Ni59_reaclib + { + // Ni60_to_n_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni60_to_n_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni60_to_n_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni60_to_n_Ni59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni60_to_n_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_to_n_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_to_n_Ni59_reaclib) = drate_dT; + } } - } - { - // Ni60_to_p_Co59_reaclib + { + // Ni60_to_p_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni60_to_p_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni60_to_p_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni60_to_p_Co59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni60_to_p_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_to_p_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_to_p_Co59_reaclib) = drate_dT; + } } - } - { - // Ni60_to_He4_Fe56_reaclib + { + // Ni60_to_He4_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni60_to_He4_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni60_to_He4_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni60_to_He4_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni60_to_He4_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_to_He4_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_to_He4_Fe56_reaclib) = drate_dT; + } } - } - { - // Ni61_to_n_Ni60_reaclib + { + // Ni61_to_n_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni61_to_n_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni61_to_n_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni61_to_n_Ni60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni61_to_n_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_to_n_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_to_n_Ni60_reaclib) = drate_dT; + } } - } - { - // Ni61_to_He4_Fe57_reaclib + { + // Ni61_to_He4_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni61_to_He4_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni61_to_He4_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni61_to_He4_Fe57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni61_to_He4_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_to_He4_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_to_He4_Fe57_reaclib) = drate_dT; + } } - } - { - // Ni62_to_n_Ni61_reaclib + { + // Ni62_to_n_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni62_to_n_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni62_to_n_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni62_to_n_Ni61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni62_to_n_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_to_n_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_to_n_Ni61_reaclib) = drate_dT; + } } - } - { - // Ni62_to_He4_Fe58_reaclib + { + // Ni62_to_He4_Fe58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni62_to_He4_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni62_to_He4_Fe58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni62_to_He4_Fe58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni62_to_He4_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_to_He4_Fe58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_to_He4_Fe58_reaclib) = drate_dT; + } } - } - { - // Ni63_to_n_Ni62_reaclib + { + // Ni63_to_n_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni63_to_n_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni63_to_n_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni63_to_n_Ni62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni63_to_n_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni63_to_n_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni63_to_n_Ni62_reaclib) = drate_dT; + } } - } - { - // Ni64_to_n_Ni63_reaclib + { + // Ni64_to_n_Ni63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ni64_to_n_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ni64_to_n_Ni63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ni64_to_n_Ni63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni64_to_n_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni64_to_n_Ni63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni64_to_n_Ni63_reaclib) = drate_dT; + } } - } - { - // Cu57_to_p_Ni56_reaclib + { + // Cu57_to_p_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu57_to_p_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu57_to_p_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu57_to_p_Ni56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu57_to_p_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu57_to_p_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu57_to_p_Ni56_reaclib) = drate_dT; + } } - } - { - // Cu57_to_He4_Co53_reaclib + { + // Cu57_to_He4_Co53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu57_to_He4_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu57_to_He4_Co53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu57_to_He4_Co53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu57_to_He4_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu57_to_He4_Co53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu57_to_He4_Co53_reaclib) = drate_dT; + } } - } - { - // Cu58_to_n_Cu57_reaclib + { + // Cu58_to_n_Cu57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu58_to_n_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu58_to_n_Cu57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu58_to_n_Cu57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu58_to_n_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_to_n_Cu57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_to_n_Cu57_reaclib) = drate_dT; + } } - } - { - // Cu58_to_p_Ni57_reaclib + { + // Cu58_to_p_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu58_to_p_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu58_to_p_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu58_to_p_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu58_to_p_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_to_p_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_to_p_Ni57_reaclib) = drate_dT; + } } - } - { - // Cu58_to_He4_Co54_reaclib + { + // Cu58_to_He4_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu58_to_He4_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu58_to_He4_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu58_to_He4_Co54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu58_to_He4_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_to_He4_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_to_He4_Co54_reaclib) = drate_dT; + } } - } - { - // Cu59_to_n_Cu58_reaclib + { + // Cu59_to_n_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_n_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu59_to_n_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_n_Cu58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_n_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_to_n_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_n_Cu58_reaclib) = drate_dT; + } } - } - { - // Cu59_to_p_Ni58_reaclib + { + // Cu59_to_p_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu59_to_p_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_p_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_to_p_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_p_Ni58_reaclib) = drate_dT; + } } - } - { - // Cu59_to_He4_Co55_reaclib + { + // Cu59_to_He4_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu59_to_He4_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu59_to_He4_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu59_to_He4_Co55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_to_He4_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_to_He4_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_He4_Co55_reaclib) = drate_dT; + } } - } - { - // Cu60_to_n_Cu59_reaclib + { + // Cu60_to_n_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu60_to_n_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu60_to_n_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu60_to_n_Cu59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu60_to_n_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_to_n_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_to_n_Cu59_reaclib) = drate_dT; + } } - } - { - // Cu60_to_p_Ni59_reaclib + { + // Cu60_to_p_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu60_to_p_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu60_to_p_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu60_to_p_Ni59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu60_to_p_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_to_p_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_to_p_Ni59_reaclib) = drate_dT; + } } - } - { - // Cu60_to_He4_Co56_reaclib + { + // Cu60_to_He4_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu60_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu60_to_He4_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu60_to_He4_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu60_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_to_He4_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_to_He4_Co56_reaclib) = drate_dT; + } } - } - { - // Cu61_to_n_Cu60_reaclib + { + // Cu61_to_n_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu61_to_n_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu61_to_n_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu61_to_n_Cu60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu61_to_n_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_to_n_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_to_n_Cu60_reaclib) = drate_dT; + } } - } - { - // Cu61_to_p_Ni60_reaclib + { + // Cu61_to_p_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu61_to_p_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu61_to_p_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu61_to_p_Ni60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu61_to_p_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_to_p_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_to_p_Ni60_reaclib) = drate_dT; + } } - } - { - // Cu61_to_He4_Co57_reaclib + { + // Cu61_to_He4_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu61_to_He4_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu61_to_He4_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu61_to_He4_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu61_to_He4_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_to_He4_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_to_He4_Co57_reaclib) = drate_dT; + } } - } - { - // Cu62_to_n_Cu61_reaclib + { + // Cu62_to_n_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu62_to_n_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu62_to_n_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu62_to_n_Cu61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu62_to_n_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_to_n_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_to_n_Cu61_reaclib) = drate_dT; + } } - } - { - // Cu62_to_p_Ni61_reaclib + { + // Cu62_to_p_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu62_to_p_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu62_to_p_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu62_to_p_Ni61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu62_to_p_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_to_p_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_to_p_Ni61_reaclib) = drate_dT; + } } - } - { - // Cu62_to_He4_Co58_reaclib + { + // Cu62_to_He4_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu62_to_He4_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu62_to_He4_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu62_to_He4_Co58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu62_to_He4_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_to_He4_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_to_He4_Co58_reaclib) = drate_dT; + } } - } - { - // Cu63_to_n_Cu62_reaclib + { + // Cu63_to_n_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu63_to_n_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu63_to_n_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu63_to_n_Cu62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu63_to_n_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_to_n_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_to_n_Cu62_reaclib) = drate_dT; + } } - } - { - // Cu63_to_p_Ni62_reaclib + { + // Cu63_to_p_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu63_to_p_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu63_to_p_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu63_to_p_Ni62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu63_to_p_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_to_p_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_to_p_Ni62_reaclib) = drate_dT; + } } - } - { - // Cu63_to_He4_Co59_reaclib + { + // Cu63_to_He4_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu63_to_He4_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu63_to_He4_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu63_to_He4_Co59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu63_to_He4_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_to_He4_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_to_He4_Co59_reaclib) = drate_dT; + } } - } - { - // Cu64_to_n_Cu63_reaclib + { + // Cu64_to_n_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu64_to_n_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu64_to_n_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu64_to_n_Cu63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu64_to_n_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu64_to_n_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_to_n_Cu63_reaclib) = drate_dT; + } } - } - { - // Cu64_to_p_Ni63_reaclib + { + // Cu64_to_p_Ni63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu64_to_p_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu64_to_p_Ni63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu64_to_p_Ni63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu64_to_p_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu64_to_p_Ni63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_to_p_Ni63_reaclib) = drate_dT; + } } - } - { - // Cu65_to_n_Cu64_reaclib + { + // Cu65_to_n_Cu64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu65_to_n_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu65_to_n_Cu64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu65_to_n_Cu64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu65_to_n_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu65_to_n_Cu64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu65_to_n_Cu64_reaclib) = drate_dT; + } } - } - { - // Cu65_to_p_Ni64_reaclib + { + // Cu65_to_p_Ni64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Cu65_to_p_Ni64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Cu65_to_p_Ni64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Cu65_to_p_Ni64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu65_to_p_Ni64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu65_to_p_Ni64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu65_to_p_Ni64_reaclib) = drate_dT; + } } - } - { - // Zn59_to_p_Cu58_reaclib + { + // Zn59_to_p_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn59_to_p_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn59_to_p_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn59_to_p_Cu58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn59_to_p_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_to_p_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn59_to_p_Cu58_reaclib) = drate_dT; + } } - } - { - // Zn59_to_p_Ni58_reaclib + { + // Zn59_to_p_Ni58_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn59_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn59_to_p_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn59_to_p_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn59_to_p_Ni58_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_to_p_Ni58_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn59_to_p_Ni58_beta_pos_reaclib) = drate_dT; + } } - } - { - // Zn60_to_n_Zn59_reaclib + { + // Zn60_to_n_Zn59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_n_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn60_to_n_Zn59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_n_Zn59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_n_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_to_n_Zn59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_n_Zn59_reaclib) = drate_dT; + } } - } - { - // Zn60_to_p_Cu59_reaclib + { + // Zn60_to_p_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_p_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn60_to_p_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_p_Cu59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_p_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_to_p_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_p_Cu59_reaclib) = drate_dT; + } } - } - { - // Zn60_to_He4_Ni56_reaclib + { + // Zn60_to_He4_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn60_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn60_to_He4_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn60_to_He4_Ni56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_to_He4_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_He4_Ni56_reaclib) = drate_dT; + } } - } - { - // Zn61_to_n_Zn60_reaclib + { + // Zn61_to_n_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn61_to_n_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn61_to_n_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn61_to_n_Zn60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn61_to_n_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_to_n_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_to_n_Zn60_reaclib) = drate_dT; + } } - } - { - // Zn61_to_p_Cu60_reaclib + { + // Zn61_to_p_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn61_to_p_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn61_to_p_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn61_to_p_Cu60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn61_to_p_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_to_p_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_to_p_Cu60_reaclib) = drate_dT; + } } - } - { - // Zn61_to_He4_Ni57_reaclib + { + // Zn61_to_He4_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn61_to_He4_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn61_to_He4_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn61_to_He4_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn61_to_He4_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_to_He4_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_to_He4_Ni57_reaclib) = drate_dT; + } } - } - { - // Zn62_to_n_Zn61_reaclib + { + // Zn62_to_n_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn62_to_n_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn62_to_n_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn62_to_n_Zn61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn62_to_n_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_to_n_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_to_n_Zn61_reaclib) = drate_dT; + } } - } - { - // Zn62_to_p_Cu61_reaclib + { + // Zn62_to_p_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn62_to_p_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn62_to_p_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn62_to_p_Cu61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn62_to_p_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_to_p_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_to_p_Cu61_reaclib) = drate_dT; + } } - } - { - // Zn62_to_He4_Ni58_reaclib + { + // Zn62_to_He4_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn62_to_He4_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn62_to_He4_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn62_to_He4_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn62_to_He4_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_to_He4_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_to_He4_Ni58_reaclib) = drate_dT; + } } - } - { - // Zn63_to_n_Zn62_reaclib + { + // Zn63_to_n_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn63_to_n_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn63_to_n_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn63_to_n_Zn62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn63_to_n_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_to_n_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_to_n_Zn62_reaclib) = drate_dT; + } } - } - { - // Zn63_to_p_Cu62_reaclib + { + // Zn63_to_p_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn63_to_p_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn63_to_p_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn63_to_p_Cu62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn63_to_p_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_to_p_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_to_p_Cu62_reaclib) = drate_dT; + } } - } - { - // Zn63_to_He4_Ni59_reaclib + { + // Zn63_to_He4_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn63_to_He4_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn63_to_He4_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn63_to_He4_Ni59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn63_to_He4_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_to_He4_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_to_He4_Ni59_reaclib) = drate_dT; + } } - } - { - // Zn64_to_n_Zn63_reaclib + { + // Zn64_to_n_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn64_to_n_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn64_to_n_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn64_to_n_Zn63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn64_to_n_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn64_to_n_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_to_n_Zn63_reaclib) = drate_dT; + } } - } - { - // Zn64_to_p_Cu63_reaclib + { + // Zn64_to_p_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn64_to_p_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn64_to_p_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn64_to_p_Cu63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn64_to_p_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn64_to_p_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_to_p_Cu63_reaclib) = drate_dT; + } } - } - { - // Zn64_to_He4_Ni60_reaclib + { + // Zn64_to_He4_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn64_to_He4_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn64_to_He4_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn64_to_He4_Ni60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn64_to_He4_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn64_to_He4_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_to_He4_Ni60_reaclib) = drate_dT; + } } - } - { - // Zn65_to_n_Zn64_reaclib + { + // Zn65_to_n_Zn64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn65_to_n_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn65_to_n_Zn64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn65_to_n_Zn64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn65_to_n_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn65_to_n_Zn64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn65_to_n_Zn64_reaclib) = drate_dT; + } } - } - { - // Zn65_to_p_Cu64_reaclib + { + // Zn65_to_p_Cu64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn65_to_p_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn65_to_p_Cu64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn65_to_p_Cu64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn65_to_p_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn65_to_p_Cu64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn65_to_p_Cu64_reaclib) = drate_dT; + } } - } - { - // Zn65_to_He4_Ni61_reaclib + { + // Zn65_to_He4_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn65_to_He4_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn65_to_He4_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn65_to_He4_Ni61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn65_to_He4_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn65_to_He4_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn65_to_He4_Ni61_reaclib) = drate_dT; + } } - } - { - // Zn66_to_n_Zn65_reaclib + { + // Zn66_to_n_Zn65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn66_to_n_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn66_to_n_Zn65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn66_to_n_Zn65_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn66_to_n_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn66_to_n_Zn65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn66_to_n_Zn65_reaclib) = drate_dT; + } } - } - { - // Zn66_to_p_Cu65_reaclib + { + // Zn66_to_p_Cu65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn66_to_p_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn66_to_p_Cu65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn66_to_p_Cu65_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn66_to_p_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn66_to_p_Cu65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn66_to_p_Cu65_reaclib) = drate_dT; + } } - } - { - // Zn66_to_He4_Ni62_reaclib + { + // Zn66_to_He4_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Zn66_to_He4_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Zn66_to_He4_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Zn66_to_He4_Ni62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn66_to_He4_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn66_to_He4_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn66_to_He4_Ni62_reaclib) = drate_dT; + } } - } - { - // Ga62_to_p_Zn61_reaclib + { + // Ga62_to_p_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ga62_to_p_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ga62_to_p_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga62_to_p_Zn61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga62_to_p_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga62_to_p_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga62_to_p_Zn61_reaclib) = drate_dT; + } } - } - { - // Ga62_to_He4_Cu58_reaclib + { + // Ga62_to_He4_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ga62_to_He4_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ga62_to_He4_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga62_to_He4_Cu58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga62_to_He4_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga62_to_He4_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga62_to_He4_Cu58_reaclib) = drate_dT; + } } - } - { - // Ga63_to_n_Ga62_reaclib + { + // Ga63_to_n_Ga62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ga63_to_n_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ga63_to_n_Ga62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga63_to_n_Ga62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga63_to_n_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_to_n_Ga62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_to_n_Ga62_reaclib) = drate_dT; + } } - } - { - // Ga63_to_p_Zn62_reaclib + { + // Ga63_to_p_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ga63_to_p_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ga63_to_p_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga63_to_p_Zn62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga63_to_p_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_to_p_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_to_p_Zn62_reaclib) = drate_dT; + } } - } - { - // Ga63_to_He4_Cu59_reaclib + { + // Ga63_to_He4_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ga63_to_He4_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ga63_to_He4_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga63_to_He4_Cu59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga63_to_He4_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_to_He4_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_to_He4_Cu59_reaclib) = drate_dT; + } } - } - { - // Ga64_to_n_Ga63_reaclib + { + // Ga64_to_n_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ga64_to_n_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ga64_to_n_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga64_to_n_Ga63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga64_to_n_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga64_to_n_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_to_n_Ga63_reaclib) = drate_dT; + } } - } - { - // Ga64_to_p_Zn63_reaclib + { + // Ga64_to_p_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ga64_to_p_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ga64_to_p_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga64_to_p_Zn63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga64_to_p_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga64_to_p_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_to_p_Zn63_reaclib) = drate_dT; + } } - } - { - // Ga64_to_He4_Cu60_reaclib + { + // Ga64_to_He4_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ga64_to_He4_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ga64_to_He4_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ga64_to_He4_Cu60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga64_to_He4_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga64_to_He4_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_to_He4_Cu60_reaclib) = drate_dT; + } } - } - { - // Ge63_to_p_Ga62_reaclib + { + // Ge63_to_p_Ga62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ge63_to_p_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ge63_to_p_Ga62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ge63_to_p_Ga62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge63_to_p_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge63_to_p_Ga62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge63_to_p_Ga62_reaclib) = drate_dT; + } } - } - { - // Ge63_to_He4_Zn59_reaclib + { + // Ge63_to_He4_Zn59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ge63_to_He4_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ge63_to_He4_Zn59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ge63_to_He4_Zn59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge63_to_He4_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge63_to_He4_Zn59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge63_to_He4_Zn59_reaclib) = drate_dT; + } } - } - { - // Ge64_to_n_Ge63_reaclib + { + // Ge64_to_n_Ge63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ge64_to_n_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ge64_to_n_Ge63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ge64_to_n_Ge63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge64_to_n_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge64_to_n_Ge63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge64_to_n_Ge63_reaclib) = drate_dT; + } } - } - { - // Ge64_to_p_Ga63_reaclib + { + // Ge64_to_p_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ge64_to_p_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ge64_to_p_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ge64_to_p_Ga63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge64_to_p_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge64_to_p_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge64_to_p_Ga63_reaclib) = drate_dT; + } } - } - { - // Ge64_to_He4_Zn60_reaclib + { + // Ge64_to_He4_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Ge64_to_He4_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Ge64_to_He4_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Ge64_to_He4_Zn60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge64_to_He4_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge64_to_He4_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge64_to_He4_Zn60_reaclib) = drate_dT; + } } - } - { - // Li6_to_n_p_He4_reaclib + { + // Li6_to_n_p_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Li6_to_n_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Li6_to_n_p_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Li6_to_n_p_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Li6_to_n_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_to_n_p_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_to_n_p_He4_reaclib) = drate_dT; + } } - } - { - // Be9_to_n_He4_He4_reaclib + { + // Be9_to_n_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_Be9_to_n_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_Be9_to_n_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_Be9_to_n_He4_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Be9_to_n_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be9_to_n_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be9_to_n_He4_He4_reaclib) = drate_dT; + } } - } - { - // C12_to_He4_He4_He4_reaclib + { + // C12_to_3He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_C12_to_He4_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_to_He4_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_to_He4_He4_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_to_3He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_to_3He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_to_3He4_reaclib) = drate_dT; + } } - } - { - // n_p_to_d_reaclib + { + // p_n_to_d_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_p_to_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_p_to_d_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_p_to_d_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_p_n_to_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_n_to_d_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_n_to_d_reaclib) = drate_dT; + } } - } - { - // p_p_to_d_reaclib_beta_pos + { + // p_p_to_d_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_p); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); - } + log_scor = rate_eval.log_screen(k_p_p); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); + } #endif - rate_p_p_to_d_reaclib_beta_pos(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_beta_pos) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_beta_pos) = drate_dT; + rate_p_p_to_d_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_to_d_beta_pos_reaclib) = drate_dT; + } } - } - { - // p_p_to_d_reaclib_electron_capture + { + // p_p_to_d_electron_capture_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_p); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); - } + log_scor = rate_eval.log_screen(k_p_p); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); + } #endif - rate_p_p_to_d_reaclib_electron_capture(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_to_d_reaclib_electron_capture) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_to_d_reaclib_electron_capture) = drate_dT; + rate_p_p_to_d_electron_capture_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_to_d_electron_capture_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_to_d_electron_capture_reaclib) = drate_dT; + } } - } - { - // p_d_to_He3_reaclib + { + // d_p_to_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_d); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_d); - } + log_scor = rate_eval.log_screen(k_p_d); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_d); + } #endif - rate_p_d_to_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_d_to_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_d_to_He3_reaclib) = drate_dT; + rate_d_p_to_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_p_to_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_p_to_He3_reaclib) = drate_dT; + } } - } - { - // d_d_to_He4_reaclib + { + // d_d_to_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_d); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_d); - } + log_scor = rate_eval.log_screen(k_d_d); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_d); + } #endif - rate_d_d_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_d_to_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_d_to_He4_reaclib) = drate_dT; + rate_d_d_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_d_to_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_d_to_He4_reaclib) = drate_dT; + } } - } - { - // He4_d_to_Li6_reaclib + { + // d_He4_to_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_He4); - } + log_scor = rate_eval.log_screen(k_d_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_He4); + } #endif - rate_He4_d_to_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_d_to_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_d_to_Li6_reaclib) = drate_dT; + rate_d_He4_to_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_He4_to_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_He4_to_Li6_reaclib) = drate_dT; + } } - } - { - // n_He3_to_He4_reaclib + { + // He3_n_to_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_He3_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_He3_to_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_He3_to_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_He3_n_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_n_to_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_n_to_He4_reaclib) = drate_dT; + } } - } - { - // p_He3_to_He4_reaclib + { + // He3_p_to_He4_beta_pos_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He3); - } + log_scor = rate_eval.log_screen(k_p_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He3); + } #endif - rate_p_He3_to_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He3_to_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_He3_to_He4_reaclib) = drate_dT; + rate_He3_p_to_He4_beta_pos_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_p_to_He4_beta_pos_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_p_to_He4_beta_pos_reaclib) = drate_dT; + } } - } - { - // He4_He3_to_Be7_reaclib + { + // He3_He4_to_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He4); - } + log_scor = rate_eval.log_screen(k_He3_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He4); + } #endif - rate_He4_He3_to_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He3_to_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He3_to_Be7_reaclib) = drate_dT; + rate_He3_He4_to_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_He4_to_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_He4_to_Be7_reaclib) = drate_dT; + } } - } - { - // n_Li6_to_Li7_reaclib + { + // Li6_n_to_Li7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Li6_to_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Li6_to_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Li6_to_Li7_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Li6_n_to_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_n_to_Li7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_n_to_Li7_reaclib) = drate_dT; + } } - } - { - // p_Li6_to_Be7_reaclib + { + // Li6_p_to_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Li6); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li6); - } + log_scor = rate_eval.log_screen(k_p_Li6); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li6); + } #endif - rate_p_Li6_to_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Li6_to_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Li6_to_Be7_reaclib) = drate_dT; + rate_Li6_p_to_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_p_to_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_p_to_Be7_reaclib) = drate_dT; + } } - } - { - // He4_Li6_to_B10_reaclib + { + // Li6_He4_to_B10_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Li6); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li6); - } + log_scor = rate_eval.log_screen(k_He4_Li6); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li6); + } #endif - rate_He4_Li6_to_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Li6_to_B10_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Li6_to_B10_reaclib) = drate_dT; + rate_Li6_He4_to_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_He4_to_B10_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_He4_to_B10_reaclib) = drate_dT; + } } - } - { - // He4_Li7_to_B11_reaclib + { + // Li7_He4_to_B11_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li7); - } + log_scor = rate_eval.log_screen(k_He4_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li7); + } #endif - rate_He4_Li7_to_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Li7_to_B11_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Li7_to_B11_reaclib) = drate_dT; + rate_Li7_He4_to_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_He4_to_B11_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_He4_to_B11_reaclib) = drate_dT; + } } - } - { - // p_Be7_to_B8_reaclib + { + // Be7_p_to_B8_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be7); - } + log_scor = rate_eval.log_screen(k_p_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be7); + } #endif - rate_p_Be7_to_B8_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Be7_to_B8_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Be7_to_B8_reaclib) = drate_dT; + rate_Be7_p_to_B8_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_p_to_B8_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_p_to_B8_reaclib) = drate_dT; + } } - } - { - // p_Be9_to_B10_reaclib + { + // Be9_p_to_B10_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Be9); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be9); - } + log_scor = rate_eval.log_screen(k_p_Be9); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be9); + } #endif - rate_p_Be9_to_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Be9_to_B10_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Be9_to_B10_reaclib) = drate_dT; + rate_Be9_p_to_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be9_p_to_B10_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be9_p_to_B10_reaclib) = drate_dT; + } } - } - { - // n_B10_to_B11_reaclib + { + // B10_n_to_B11_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_B10_to_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_B10_to_B11_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_B10_to_B11_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B10_n_to_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B10_n_to_B11_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B10_n_to_B11_reaclib) = drate_dT; + } } - } - { - // p_B11_to_C12_reaclib + { + // B11_p_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_B11); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B11); - } + log_scor = rate_eval.log_screen(k_p_B11); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B11); + } #endif - rate_p_B11_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_B11_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_B11_to_C12_reaclib) = drate_dT; + rate_B11_p_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B11_p_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B11_p_to_C12_reaclib) = drate_dT; + } } - } - { - // n_C12_to_C13_reaclib + { + // C12_n_to_C13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_C12_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_C12_to_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_C12_to_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_n_to_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_n_to_C13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_n_to_C13_reaclib) = drate_dT; + } } - } - { - // p_C12_to_N13_reaclib + { + // C12_p_to_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); - } + log_scor = rate_eval.log_screen(k_p_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C12); + } #endif - rate_p_C12_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C12_to_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C12_to_N13_reaclib) = drate_dT; + rate_C12_p_to_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_p_to_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_p_to_N13_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_O16_reaclib + { + // C12_He4_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_O16_reaclib) = drate_dT; + rate_C12_He4_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_O16_reaclib) = drate_dT; + } } - } - { - // n_C13_to_C14_reaclib + { + // C13_n_to_C14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_C13_to_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_C13_to_C14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_C13_to_C14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C13_n_to_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_n_to_C14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_n_to_C14_reaclib) = drate_dT; + } } - } - { - // p_C13_to_N14_reaclib + { + // C13_p_to_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); - } + log_scor = rate_eval.log_screen(k_p_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); + } #endif - rate_p_C13_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_N14_reaclib) = drate_dT; + rate_C13_p_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_p_to_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_p_to_N14_reaclib) = drate_dT; + } } - } - { - // p_C14_to_N15_reaclib + { + // C14_p_to_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C14); - } + log_scor = rate_eval.log_screen(k_p_C14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C14); + } #endif - rate_p_C14_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C14_to_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C14_to_N15_reaclib) = drate_dT; + rate_C14_p_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_p_to_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C14_p_to_N15_reaclib) = drate_dT; + } } - } - { - // He4_C14_to_O18_reaclib + { + // C14_He4_to_O18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C14); - } + log_scor = rate_eval.log_screen(k_He4_C14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C14); + } #endif - rate_He4_C14_to_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C14_to_O18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C14_to_O18_reaclib) = drate_dT; + rate_C14_He4_to_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_He4_to_O18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C14_He4_to_O18_reaclib) = drate_dT; + } } - } - { - // n_N13_to_N14_reaclib + { + // N13_n_to_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_N13_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_N13_to_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_N13_to_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_n_to_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_n_to_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_n_to_N14_reaclib) = drate_dT; + } } - } - { - // p_N13_to_O14_reaclib + { + // N13_p_to_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); - } + log_scor = rate_eval.log_screen(k_p_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N13); + } #endif - rate_p_N13_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N13_to_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N13_to_O14_reaclib) = drate_dT; + rate_N13_p_to_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_p_to_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_p_to_O14_reaclib) = drate_dT; + } } - } - { - // n_N14_to_N15_reaclib + { + // N14_n_to_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_N14_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_N14_to_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_N14_to_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_n_to_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_n_to_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_n_to_N15_reaclib) = drate_dT; + } } - } - { - // p_N14_to_O15_reaclib + { + // N14_p_to_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); - } + log_scor = rate_eval.log_screen(k_p_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); + } #endif - rate_p_N14_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N14_to_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N14_to_O15_reaclib) = drate_dT; + rate_N14_p_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_p_to_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_p_to_O15_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_F18_reaclib + { + // N14_He4_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_F18_reaclib) = drate_dT; + rate_N14_He4_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_F18_reaclib) = drate_dT; + } } - } - { - // p_N15_to_O16_reaclib + { + // N15_p_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_O16_reaclib) = drate_dT; + rate_N15_p_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_N15_to_F19_reaclib + { + // N15_He4_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N15_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_F19_reaclib) = drate_dT; + rate_N15_He4_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_He4_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_F19_reaclib) = drate_dT; + } } - } - { - // n_O14_to_O15_reaclib + { + // O14_n_to_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O14_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O14_to_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O14_to_O15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_n_to_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_n_to_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_n_to_O15_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_Ne18_reaclib + { + // O14_He4_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_Ne18_reaclib) = drate_dT; + rate_O14_He4_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_Ne18_reaclib) = drate_dT; + } } - } - { - // n_O15_to_O16_reaclib + { + // O15_n_to_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O15_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O15_to_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O15_to_O16_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_n_to_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_n_to_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_n_to_O16_reaclib) = drate_dT; + } } - } - { - // He4_O15_to_Ne19_reaclib + { + // O15_He4_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O15_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_Ne19_reaclib) = drate_dT; + rate_O15_He4_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_He4_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_Ne19_reaclib) = drate_dT; + } } - } - { - // n_O16_to_O17_reaclib + { + // O16_n_to_O17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O16_to_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O16_to_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O16_to_O17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_n_to_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_n_to_O17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_n_to_O17_reaclib) = drate_dT; + } } - } - { - // p_O16_to_F17_reaclib + { + // O16_p_to_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_F17_reaclib) = drate_dT; + rate_O16_p_to_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_F17_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_Ne20_reaclib + { + // O16_He4_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_Ne20_reaclib) = drate_dT; + rate_O16_He4_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_Ne20_reaclib) = drate_dT; + } } - } - { - // n_O17_to_O18_reaclib + { + // O17_n_to_O18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O17_to_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O17_to_O18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O17_to_O18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O17_n_to_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_n_to_O18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_n_to_O18_reaclib) = drate_dT; + } } - } - { - // p_O17_to_F18_reaclib + { + // O17_p_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_F18_reaclib) = drate_dT; + rate_O17_p_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_F18_reaclib) = drate_dT; + } } - } - { - // He4_O17_to_Ne21_reaclib + { + // O17_He4_to_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); - } + log_scor = rate_eval.log_screen(k_He4_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); + } #endif - rate_He4_O17_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O17_to_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O17_to_Ne21_reaclib) = drate_dT; + rate_O17_He4_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_He4_to_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_He4_to_Ne21_reaclib) = drate_dT; + } } - } - { - // p_O18_to_F19_reaclib + { + // O18_p_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_F19_reaclib) = drate_dT; + rate_O18_p_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_F19_reaclib) = drate_dT; + } } - } - { - // He4_O18_to_Ne22_reaclib + { + // O18_He4_to_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O18); - } + log_scor = rate_eval.log_screen(k_He4_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O18); + } #endif - rate_He4_O18_to_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O18_to_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O18_to_Ne22_reaclib) = drate_dT; + rate_O18_He4_to_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_He4_to_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_He4_to_Ne22_reaclib) = drate_dT; + } } - } - { - // n_F17_to_F18_reaclib + { + // F17_n_to_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_F17_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_F17_to_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_F17_to_F18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_n_to_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_n_to_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_n_to_F18_reaclib) = drate_dT; + } } - } - { - // p_F17_to_Ne18_reaclib + { + // F17_p_to_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F17_to_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_Ne18_reaclib) = drate_dT; + rate_F17_p_to_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_p_to_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_Ne18_reaclib) = drate_dT; + } } - } - { - // He4_F17_to_Na21_reaclib + { + // F17_He4_to_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); - } + log_scor = rate_eval.log_screen(k_He4_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); + } #endif - rate_He4_F17_to_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F17_to_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_Na21_reaclib) = drate_dT; + rate_F17_He4_to_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_He4_to_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_He4_to_Na21_reaclib) = drate_dT; + } } - } - { - // n_F18_to_F19_reaclib + { + // F18_n_to_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_F18_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_F18_to_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_F18_to_F19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_n_to_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_n_to_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_n_to_F19_reaclib) = drate_dT; + } } - } - { - // p_F18_to_Ne19_reaclib + { + // F18_p_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_Ne19_reaclib) = drate_dT; + rate_F18_p_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_Ne19_reaclib) = drate_dT; + } } - } - { - // He4_F18_to_Na22_reaclib + { + // F18_He4_to_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); - } + log_scor = rate_eval.log_screen(k_He4_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); + } #endif - rate_He4_F18_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F18_to_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F18_to_Na22_reaclib) = drate_dT; + rate_F18_He4_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_He4_to_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_He4_to_Na22_reaclib) = drate_dT; + } } - } - { - // p_F19_to_Ne20_reaclib + { + // F19_p_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_Ne20_reaclib) = drate_dT; + rate_F19_p_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_F19_to_Na23_reaclib + { + // F19_He4_to_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); - } + log_scor = rate_eval.log_screen(k_He4_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); + } #endif - rate_He4_F19_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F19_to_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F19_to_Na23_reaclib) = drate_dT; + rate_F19_He4_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_He4_to_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_He4_to_Na23_reaclib) = drate_dT; + } } - } - { - // n_Ne18_to_Ne19_reaclib + { + // Ne18_n_to_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne18_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne18_to_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne18_to_Ne19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_n_to_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_n_to_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_n_to_Ne19_reaclib) = drate_dT; + } } - } - { - // n_Ne19_to_Ne20_reaclib + { + // Ne19_n_to_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne19_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne19_to_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne19_to_Ne20_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_n_to_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_n_to_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_n_to_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Ne19_to_Mg23_reaclib + { + // Ne19_He4_to_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne19); - } + log_scor = rate_eval.log_screen(k_He4_Ne19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne19); + } #endif - rate_He4_Ne19_to_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne19_to_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne19_to_Mg23_reaclib) = drate_dT; + rate_Ne19_He4_to_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_He4_to_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_He4_to_Mg23_reaclib) = drate_dT; + } } - } - { - // n_Ne20_to_Ne21_reaclib + { + // Ne20_n_to_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne20_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne20_to_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne20_to_Ne21_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_n_to_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_n_to_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_n_to_Ne21_reaclib) = drate_dT; + } } - } - { - // p_Ne20_to_Na21_reaclib + { + // Ne20_p_to_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); - } + log_scor = rate_eval.log_screen(k_p_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); + } #endif - rate_p_Ne20_to_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne20_to_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne20_to_Na21_reaclib) = drate_dT; + rate_Ne20_p_to_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_p_to_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_p_to_Na21_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_Mg24_reaclib + { + // Ne20_He4_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_Mg24_reaclib) = drate_dT; + rate_Ne20_He4_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_Mg24_reaclib) = drate_dT; + } } - } - { - // n_Ne21_to_Ne22_reaclib + { + // Ne21_n_to_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne21_to_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne21_to_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne21_to_Ne22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne21_n_to_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_n_to_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_n_to_Ne22_reaclib) = drate_dT; + } } - } - { - // p_Ne21_to_Na22_reaclib + { + // Ne21_p_to_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); - } + log_scor = rate_eval.log_screen(k_p_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); + } #endif - rate_p_Ne21_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne21_to_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_Na22_reaclib) = drate_dT; + rate_Ne21_p_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_p_to_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_p_to_Na22_reaclib) = drate_dT; + } } - } - { - // He4_Ne21_to_Mg25_reaclib + { + // Ne21_He4_to_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne21); - } + log_scor = rate_eval.log_screen(k_He4_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne21); + } #endif - rate_He4_Ne21_to_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne21_to_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne21_to_Mg25_reaclib) = drate_dT; + rate_Ne21_He4_to_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_He4_to_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_He4_to_Mg25_reaclib) = drate_dT; + } } - } - { - // p_Ne22_to_Na23_reaclib + { + // Ne22_p_to_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); - } + log_scor = rate_eval.log_screen(k_p_Ne22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); + } #endif - rate_p_Ne22_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne22_to_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne22_to_Na23_reaclib) = drate_dT; + rate_Ne22_p_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne22_p_to_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_p_to_Na23_reaclib) = drate_dT; + } } - } - { - // He4_Ne22_to_Mg26_reaclib + { + // Ne22_He4_to_Mg26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne22); - } + log_scor = rate_eval.log_screen(k_He4_Ne22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne22); + } #endif - rate_He4_Ne22_to_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne22_to_Mg26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne22_to_Mg26_reaclib) = drate_dT; + rate_Ne22_He4_to_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne22_He4_to_Mg26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_He4_to_Mg26_reaclib) = drate_dT; + } } - } - { - // n_Na21_to_Na22_reaclib + { + // Na21_n_to_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Na21_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Na21_to_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Na21_to_Na22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na21_n_to_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na21_n_to_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_n_to_Na22_reaclib) = drate_dT; + } } - } - { - // He4_Na21_to_Al25_reaclib + { + // Na21_He4_to_Al25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na21); - } + log_scor = rate_eval.log_screen(k_He4_Na21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na21); + } #endif - rate_He4_Na21_to_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na21_to_Al25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na21_to_Al25_reaclib) = drate_dT; + rate_Na21_He4_to_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na21_He4_to_Al25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_He4_to_Al25_reaclib) = drate_dT; + } } - } - { - // n_Na22_to_Na23_reaclib + { + // Na22_n_to_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Na22_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Na22_to_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Na22_to_Na23_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_n_to_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_n_to_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_n_to_Na23_reaclib) = drate_dT; + } } - } - { - // p_Na22_to_Mg23_reaclib + { + // Na22_p_to_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na22); - } + log_scor = rate_eval.log_screen(k_p_Na22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na22); + } #endif - rate_p_Na22_to_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na22_to_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na22_to_Mg23_reaclib) = drate_dT; + rate_Na22_p_to_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_p_to_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_p_to_Mg23_reaclib) = drate_dT; + } } - } - { - // He4_Na22_to_Al26_reaclib + { + // Na22_He4_to_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); - } + log_scor = rate_eval.log_screen(k_He4_Na22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); + } #endif - rate_He4_Na22_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na22_to_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na22_to_Al26_reaclib) = drate_dT; + rate_Na22_He4_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_He4_to_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_He4_to_Al26_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_Mg24_reaclib + { + // Na23_p_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_Mg24_reaclib) = drate_dT; + rate_Na23_p_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_Mg24_reaclib) = drate_dT; + } } - } - { - // He4_Na23_to_Al27_reaclib + { + // Na23_He4_to_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na23); - } + log_scor = rate_eval.log_screen(k_He4_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na23); + } #endif - rate_He4_Na23_to_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na23_to_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na23_to_Al27_reaclib) = drate_dT; + rate_Na23_He4_to_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_He4_to_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_He4_to_Al27_reaclib) = drate_dT; + } } - } - { - // n_Mg23_to_Mg24_reaclib + { + // Mg23_n_to_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg23_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg23_to_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg23_to_Mg24_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_n_to_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_n_to_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_n_to_Mg24_reaclib) = drate_dT; + } } - } - { - // n_Mg24_to_Mg25_reaclib + { + // Mg24_n_to_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg24_to_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg24_to_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg24_to_Mg25_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_n_to_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_n_to_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_n_to_Mg25_reaclib) = drate_dT; + } } - } - { - // p_Mg24_to_Al25_reaclib + { + // Mg24_p_to_Al25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); - } + log_scor = rate_eval.log_screen(k_p_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); + } #endif - rate_p_Mg24_to_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg24_to_Al25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg24_to_Al25_reaclib) = drate_dT; + rate_Mg24_p_to_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_p_to_Al25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_p_to_Al25_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_Si28_reaclib + { + // Mg24_He4_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_Si28_reaclib) = drate_dT; + rate_Mg24_He4_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_Si28_reaclib) = drate_dT; + } } - } - { - // n_Mg25_to_Mg26_reaclib + { + // Mg25_n_to_Mg26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg25_to_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg25_to_Mg26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg25_to_Mg26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg25_n_to_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_n_to_Mg26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_n_to_Mg26_reaclib) = drate_dT; + } } - } - { - // p_Mg25_to_Al26_reaclib + { + // Mg25_p_to_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg25); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg25); - } + log_scor = rate_eval.log_screen(k_p_Mg25); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg25); + } #endif - rate_p_Mg25_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg25_to_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg25_to_Al26_reaclib) = drate_dT; + rate_Mg25_p_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_p_to_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_p_to_Al26_reaclib) = drate_dT; + } } - } - { - // He4_Mg25_to_Si29_reaclib + { + // Mg25_He4_to_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg25); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg25); - } + log_scor = rate_eval.log_screen(k_He4_Mg25); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg25); + } #endif - rate_He4_Mg25_to_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg25_to_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg25_to_Si29_reaclib) = drate_dT; + rate_Mg25_He4_to_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_He4_to_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_He4_to_Si29_reaclib) = drate_dT; + } } - } - { - // p_Mg26_to_Al27_reaclib + { + // Mg26_p_to_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg26); - } + log_scor = rate_eval.log_screen(k_p_Mg26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg26); + } #endif - rate_p_Mg26_to_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg26_to_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg26_to_Al27_reaclib) = drate_dT; + rate_Mg26_p_to_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg26_p_to_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg26_p_to_Al27_reaclib) = drate_dT; + } } - } - { - // He4_Mg26_to_Si30_reaclib + { + // Mg26_He4_to_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg26); - } + log_scor = rate_eval.log_screen(k_He4_Mg26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg26); + } #endif - rate_He4_Mg26_to_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg26_to_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg26_to_Si30_reaclib) = drate_dT; + rate_Mg26_He4_to_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg26_He4_to_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg26_He4_to_Si30_reaclib) = drate_dT; + } } - } - { - // n_Al25_to_Al26_reaclib + { + // Al25_n_to_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Al25_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Al25_to_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Al25_to_Al26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al25_n_to_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al25_n_to_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al25_n_to_Al26_reaclib) = drate_dT; + } } - } - { - // He4_Al25_to_P29_reaclib + { + // Al25_He4_to_P29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al25); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al25); - } + log_scor = rate_eval.log_screen(k_He4_Al25); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al25); + } #endif - rate_He4_Al25_to_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al25_to_P29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al25_to_P29_reaclib) = drate_dT; + rate_Al25_He4_to_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al25_He4_to_P29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al25_He4_to_P29_reaclib) = drate_dT; + } } - } - { - // n_Al26_to_Al27_reaclib + { + // Al26_n_to_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Al26_to_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Al26_to_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Al26_to_Al27_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al26_n_to_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_n_to_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_n_to_Al27_reaclib) = drate_dT; + } } - } - { - // He4_Al26_to_P30_reaclib + { + // Al26_He4_to_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al26); - } + log_scor = rate_eval.log_screen(k_He4_Al26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al26); + } #endif - rate_He4_Al26_to_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al26_to_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al26_to_P30_reaclib) = drate_dT; + rate_Al26_He4_to_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_He4_to_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_He4_to_P30_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_Si28_reaclib + { + // Al27_p_to_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_Si28_reaclib) = drate_dT; + rate_Al27_p_to_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_Si28_reaclib) = drate_dT; + } } - } - { - // He4_Al27_to_P31_reaclib + { + // Al27_He4_to_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); - } + log_scor = rate_eval.log_screen(k_He4_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); + } #endif - rate_He4_Al27_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al27_to_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al27_to_P31_reaclib) = drate_dT; + rate_Al27_He4_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_He4_to_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_He4_to_P31_reaclib) = drate_dT; + } } - } - { - // n_Si28_to_Si29_reaclib + { + // Si28_n_to_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Si28_to_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Si28_to_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Si28_to_Si29_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_n_to_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_n_to_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_n_to_Si29_reaclib) = drate_dT; + } } - } - { - // p_Si28_to_P29_reaclib + { + // Si28_p_to_P29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si28); - } + log_scor = rate_eval.log_screen(k_p_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si28); + } #endif - rate_p_Si28_to_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si28_to_P29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si28_to_P29_reaclib) = drate_dT; + rate_Si28_p_to_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_p_to_P29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_p_to_P29_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_S32_reaclib + { + // Si28_He4_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_S32_reaclib) = drate_dT; + rate_Si28_He4_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_S32_reaclib) = drate_dT; + } } - } - { - // n_Si29_to_Si30_reaclib + { + // Si29_n_to_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Si29_to_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Si29_to_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Si29_to_Si30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si29_n_to_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_n_to_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_n_to_Si30_reaclib) = drate_dT; + } } - } - { - // p_Si29_to_P30_reaclib + { + // Si29_p_to_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si29); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si29); - } + log_scor = rate_eval.log_screen(k_p_Si29); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si29); + } #endif - rate_p_Si29_to_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si29_to_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si29_to_P30_reaclib) = drate_dT; + rate_Si29_p_to_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_p_to_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_p_to_P30_reaclib) = drate_dT; + } } - } - { - // He4_Si29_to_S33_reaclib + { + // Si29_He4_to_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si29); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si29); - } + log_scor = rate_eval.log_screen(k_He4_Si29); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si29); + } #endif - rate_He4_Si29_to_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si29_to_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si29_to_S33_reaclib) = drate_dT; + rate_Si29_He4_to_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_He4_to_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_He4_to_S33_reaclib) = drate_dT; + } } - } - { - // n_Si30_to_Si31_reaclib + { + // Si30_n_to_Si31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Si30_to_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Si30_to_Si31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Si30_to_Si31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si30_n_to_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_n_to_Si31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_n_to_Si31_reaclib) = drate_dT; + } } - } - { - // p_Si30_to_P31_reaclib + { + // Si30_p_to_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si30); - } + log_scor = rate_eval.log_screen(k_p_Si30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si30); + } #endif - rate_p_Si30_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si30_to_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si30_to_P31_reaclib) = drate_dT; + rate_Si30_p_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_p_to_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_p_to_P31_reaclib) = drate_dT; + } } - } - { - // He4_Si30_to_S34_reaclib + { + // Si30_He4_to_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si30); - } + log_scor = rate_eval.log_screen(k_He4_Si30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si30); + } #endif - rate_He4_Si30_to_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si30_to_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si30_to_S34_reaclib) = drate_dT; + rate_Si30_He4_to_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_He4_to_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_He4_to_S34_reaclib) = drate_dT; + } } - } - { - // n_Si31_to_Si32_reaclib + { + // Si31_n_to_Si32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Si31_to_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Si31_to_Si32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Si31_to_Si32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si31_n_to_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si31_n_to_Si32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si31_n_to_Si32_reaclib) = drate_dT; + } } - } - { - // p_Si31_to_P32_reaclib + { + // Si31_p_to_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si31); - } + log_scor = rate_eval.log_screen(k_p_Si31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si31); + } #endif - rate_p_Si31_to_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si31_to_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si31_to_P32_reaclib) = drate_dT; + rate_Si31_p_to_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si31_p_to_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si31_p_to_P32_reaclib) = drate_dT; + } } - } - { - // He4_Si31_to_S35_reaclib + { + // Si31_He4_to_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si31); - } + log_scor = rate_eval.log_screen(k_He4_Si31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si31); + } #endif - rate_He4_Si31_to_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si31_to_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si31_to_S35_reaclib) = drate_dT; + rate_Si31_He4_to_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si31_He4_to_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si31_He4_to_S35_reaclib) = drate_dT; + } } - } - { - // p_Si32_to_P33_reaclib + { + // Si32_p_to_P33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si32); - } + log_scor = rate_eval.log_screen(k_p_Si32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si32); + } #endif - rate_p_Si32_to_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si32_to_P33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si32_to_P33_reaclib) = drate_dT; + rate_Si32_p_to_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si32_p_to_P33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si32_p_to_P33_reaclib) = drate_dT; + } } - } - { - // He4_Si32_to_S36_reaclib + { + // Si32_He4_to_S36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si32); - } + log_scor = rate_eval.log_screen(k_He4_Si32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si32); + } #endif - rate_He4_Si32_to_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si32_to_S36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si32_to_S36_reaclib) = drate_dT; + rate_Si32_He4_to_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si32_He4_to_S36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si32_He4_to_S36_reaclib) = drate_dT; + } } - } - { - // n_P29_to_P30_reaclib + { + // P29_n_to_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P29_to_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P29_to_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P29_to_P30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P29_n_to_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P29_n_to_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P29_n_to_P30_reaclib) = drate_dT; + } } - } - { - // He4_P29_to_Cl33_reaclib + { + // P29_He4_to_Cl33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P29); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P29); - } + log_scor = rate_eval.log_screen(k_He4_P29); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P29); + } #endif - rate_He4_P29_to_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P29_to_Cl33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P29_to_Cl33_reaclib) = drate_dT; + rate_P29_He4_to_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P29_He4_to_Cl33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P29_He4_to_Cl33_reaclib) = drate_dT; + } } - } - { - // n_P30_to_P31_reaclib + { + // P30_n_to_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P30_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P30_to_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P30_to_P31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P30_n_to_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_n_to_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_n_to_P31_reaclib) = drate_dT; + } } - } - { - // He4_P30_to_Cl34_reaclib + { + // P30_He4_to_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P30); - } + log_scor = rate_eval.log_screen(k_He4_P30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P30); + } #endif - rate_He4_P30_to_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P30_to_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P30_to_Cl34_reaclib) = drate_dT; + rate_P30_He4_to_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_He4_to_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_He4_to_Cl34_reaclib) = drate_dT; + } } - } - { - // n_P31_to_P32_reaclib + { + // P31_n_to_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P31_to_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P31_to_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P31_to_P32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P31_n_to_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_n_to_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_n_to_P32_reaclib) = drate_dT; + } } - } - { - // p_P31_to_S32_reaclib + { + // P31_p_to_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_S32_reaclib) = drate_dT; + rate_P31_p_to_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_S32_reaclib) = drate_dT; + } } - } - { - // He4_P31_to_Cl35_reaclib + { + // P31_He4_to_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P31); - } + log_scor = rate_eval.log_screen(k_He4_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P31); + } #endif - rate_He4_P31_to_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P31_to_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P31_to_Cl35_reaclib) = drate_dT; + rate_P31_He4_to_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_He4_to_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_He4_to_Cl35_reaclib) = drate_dT; + } } - } - { - // n_P32_to_P33_reaclib + { + // P32_n_to_P33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P32_to_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P32_to_P33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P32_to_P33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P32_n_to_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_n_to_P33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_n_to_P33_reaclib) = drate_dT; + } } - } - { - // p_P32_to_S33_reaclib + { + // P32_p_to_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P32); - } + log_scor = rate_eval.log_screen(k_p_P32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P32); + } #endif - rate_p_P32_to_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P32_to_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P32_to_S33_reaclib) = drate_dT; + rate_P32_p_to_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_p_to_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_p_to_S33_reaclib) = drate_dT; + } } - } - { - // He4_P32_to_Cl36_reaclib + { + // P32_He4_to_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P32); - } + log_scor = rate_eval.log_screen(k_He4_P32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P32); + } #endif - rate_He4_P32_to_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P32_to_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P32_to_Cl36_reaclib) = drate_dT; + rate_P32_He4_to_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_He4_to_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_He4_to_Cl36_reaclib) = drate_dT; + } } - } - { - // p_P33_to_S34_reaclib + { + // P33_p_to_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P33); - } + log_scor = rate_eval.log_screen(k_p_P33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P33); + } #endif - rate_p_P33_to_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P33_to_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P33_to_S34_reaclib) = drate_dT; + rate_P33_p_to_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P33_p_to_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_p_to_S34_reaclib) = drate_dT; + } } - } - { - // He4_P33_to_Cl37_reaclib + { + // P33_He4_to_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P33); - } + log_scor = rate_eval.log_screen(k_He4_P33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P33); + } #endif - rate_He4_P33_to_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P33_to_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P33_to_Cl37_reaclib) = drate_dT; + rate_P33_He4_to_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P33_He4_to_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_He4_to_Cl37_reaclib) = drate_dT; + } } - } - { - // n_S32_to_S33_reaclib + { + // S32_n_to_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S32_to_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S32_to_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S32_to_S33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_n_to_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_n_to_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_n_to_S33_reaclib) = drate_dT; + } } - } - { - // p_S32_to_Cl33_reaclib + { + // S32_p_to_Cl33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S32); - } + log_scor = rate_eval.log_screen(k_p_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S32); + } #endif - rate_p_S32_to_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S32_to_Cl33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S32_to_Cl33_reaclib) = drate_dT; + rate_S32_p_to_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_p_to_Cl33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_p_to_Cl33_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_Ar36_reaclib + { + // S32_He4_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_Ar36_reaclib) = drate_dT; + rate_S32_He4_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_Ar36_reaclib) = drate_dT; + } } - } - { - // n_S33_to_S34_reaclib + { + // S33_n_to_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S33_to_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S33_to_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S33_to_S34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S33_n_to_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_n_to_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_n_to_S34_reaclib) = drate_dT; + } } - } - { - // p_S33_to_Cl34_reaclib + { + // S33_p_to_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S33); - } + log_scor = rate_eval.log_screen(k_p_S33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S33); + } #endif - rate_p_S33_to_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S33_to_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S33_to_Cl34_reaclib) = drate_dT; + rate_S33_p_to_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_p_to_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_p_to_Cl34_reaclib) = drate_dT; + } } - } - { - // He4_S33_to_Ar37_reaclib + { + // S33_He4_to_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S33); - } + log_scor = rate_eval.log_screen(k_He4_S33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S33); + } #endif - rate_He4_S33_to_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S33_to_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S33_to_Ar37_reaclib) = drate_dT; + rate_S33_He4_to_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_He4_to_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_He4_to_Ar37_reaclib) = drate_dT; + } } - } - { - // n_S34_to_S35_reaclib + { + // S34_n_to_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S34_to_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S34_to_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S34_to_S35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S34_n_to_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_n_to_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_n_to_S35_reaclib) = drate_dT; + } } - } - { - // p_S34_to_Cl35_reaclib + { + // S34_p_to_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S34); - } + log_scor = rate_eval.log_screen(k_p_S34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S34); + } #endif - rate_p_S34_to_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S34_to_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S34_to_Cl35_reaclib) = drate_dT; + rate_S34_p_to_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_p_to_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_p_to_Cl35_reaclib) = drate_dT; + } } - } - { - // He4_S34_to_Ar38_reaclib + { + // S34_He4_to_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S34); - } + log_scor = rate_eval.log_screen(k_He4_S34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S34); + } #endif - rate_He4_S34_to_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S34_to_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S34_to_Ar38_reaclib) = drate_dT; + rate_S34_He4_to_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_He4_to_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_He4_to_Ar38_reaclib) = drate_dT; + } } - } - { - // n_S35_to_S36_reaclib + { + // S35_n_to_S36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S35_to_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S35_to_S36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S35_to_S36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S35_n_to_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_n_to_S36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_n_to_S36_reaclib) = drate_dT; + } } - } - { - // p_S35_to_Cl36_reaclib + { + // S35_p_to_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S35); - } + log_scor = rate_eval.log_screen(k_p_S35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S35); + } #endif - rate_p_S35_to_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S35_to_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S35_to_Cl36_reaclib) = drate_dT; + rate_S35_p_to_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_p_to_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_p_to_Cl36_reaclib) = drate_dT; + } } - } - { - // He4_S35_to_Ar39_reaclib + { + // S35_He4_to_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S35); - } + log_scor = rate_eval.log_screen(k_He4_S35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S35); + } #endif - rate_He4_S35_to_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S35_to_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S35_to_Ar39_reaclib) = drate_dT; + rate_S35_He4_to_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_He4_to_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_He4_to_Ar39_reaclib) = drate_dT; + } } - } - { - // p_S36_to_Cl37_reaclib + { + // S36_p_to_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S36); - } + log_scor = rate_eval.log_screen(k_p_S36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S36); + } #endif - rate_p_S36_to_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S36_to_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S36_to_Cl37_reaclib) = drate_dT; + rate_S36_p_to_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S36_p_to_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S36_p_to_Cl37_reaclib) = drate_dT; + } } - } - { - // He4_S36_to_Ar40_reaclib + { + // S36_He4_to_Ar40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S36); - } + log_scor = rate_eval.log_screen(k_He4_S36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S36); + } #endif - rate_He4_S36_to_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S36_to_Ar40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S36_to_Ar40_reaclib) = drate_dT; + rate_S36_He4_to_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S36_He4_to_Ar40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S36_He4_to_Ar40_reaclib) = drate_dT; + } } - } - { - // n_Cl33_to_Cl34_reaclib + { + // Cl33_n_to_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl33_to_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl33_to_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl33_to_Cl34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl33_n_to_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl33_n_to_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl33_n_to_Cl34_reaclib) = drate_dT; + } } - } - { - // He4_Cl33_to_K37_reaclib + { + // Cl33_He4_to_K37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl33); - } + log_scor = rate_eval.log_screen(k_He4_Cl33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl33); + } #endif - rate_He4_Cl33_to_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl33_to_K37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl33_to_K37_reaclib) = drate_dT; + rate_Cl33_He4_to_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl33_He4_to_K37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl33_He4_to_K37_reaclib) = drate_dT; + } } - } - { - // n_Cl34_to_Cl35_reaclib + { + // Cl34_n_to_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl34_to_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl34_to_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl34_to_Cl35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl34_n_to_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_n_to_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_n_to_Cl35_reaclib) = drate_dT; + } } - } - { - // He4_Cl34_to_K38_reaclib + { + // Cl34_He4_to_K38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl34); - } + log_scor = rate_eval.log_screen(k_He4_Cl34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl34); + } #endif - rate_He4_Cl34_to_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl34_to_K38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl34_to_K38_reaclib) = drate_dT; + rate_Cl34_He4_to_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_He4_to_K38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_He4_to_K38_reaclib) = drate_dT; + } } - } - { - // n_Cl35_to_Cl36_reaclib + { + // Cl35_n_to_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl35_to_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl35_to_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl35_to_Cl36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl35_n_to_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_n_to_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_n_to_Cl36_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_Ar36_reaclib + { + // Cl35_p_to_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_Ar36_reaclib) = drate_dT; + rate_Cl35_p_to_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_Cl35_to_K39_reaclib + { + // Cl35_He4_to_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl35); - } + log_scor = rate_eval.log_screen(k_He4_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl35); + } #endif - rate_He4_Cl35_to_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl35_to_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl35_to_K39_reaclib) = drate_dT; + rate_Cl35_He4_to_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_He4_to_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_He4_to_K39_reaclib) = drate_dT; + } } - } - { - // n_Cl36_to_Cl37_reaclib + { + // Cl36_n_to_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl36_to_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl36_to_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl36_to_Cl37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl36_n_to_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_n_to_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_n_to_Cl37_reaclib) = drate_dT; + } } - } - { - // p_Cl36_to_Ar37_reaclib + { + // Cl36_p_to_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl36); - } + log_scor = rate_eval.log_screen(k_p_Cl36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl36); + } #endif - rate_p_Cl36_to_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl36_to_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl36_to_Ar37_reaclib) = drate_dT; + rate_Cl36_p_to_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_p_to_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_p_to_Ar37_reaclib) = drate_dT; + } } - } - { - // He4_Cl36_to_K40_reaclib + { + // Cl36_He4_to_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl36); - } + log_scor = rate_eval.log_screen(k_He4_Cl36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl36); + } #endif - rate_He4_Cl36_to_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl36_to_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl36_to_K40_reaclib) = drate_dT; + rate_Cl36_He4_to_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_He4_to_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_He4_to_K40_reaclib) = drate_dT; + } } - } - { - // p_Cl37_to_Ar38_reaclib + { + // Cl37_p_to_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl37); - } + log_scor = rate_eval.log_screen(k_p_Cl37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl37); + } #endif - rate_p_Cl37_to_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl37_to_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl37_to_Ar38_reaclib) = drate_dT; + rate_Cl37_p_to_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_p_to_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_p_to_Ar38_reaclib) = drate_dT; + } } - } - { - // He4_Cl37_to_K41_reaclib + { + // Cl37_He4_to_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl37); - } + log_scor = rate_eval.log_screen(k_He4_Cl37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl37); + } #endif - rate_He4_Cl37_to_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl37_to_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl37_to_K41_reaclib) = drate_dT; + rate_Cl37_He4_to_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_He4_to_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_He4_to_K41_reaclib) = drate_dT; + } } - } - { - // n_Ar36_to_Ar37_reaclib + { + // Ar36_n_to_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar36_to_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar36_to_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar36_to_Ar37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_n_to_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_n_to_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_n_to_Ar37_reaclib) = drate_dT; + } } - } - { - // p_Ar36_to_K37_reaclib + { + // Ar36_p_to_K37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar36); - } + log_scor = rate_eval.log_screen(k_p_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar36); + } #endif - rate_p_Ar36_to_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar36_to_K37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar36_to_K37_reaclib) = drate_dT; + rate_Ar36_p_to_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_p_to_K37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_p_to_K37_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_Ca40_reaclib + { + // Ar36_He4_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_Ca40_reaclib) = drate_dT; + rate_Ar36_He4_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_Ca40_reaclib) = drate_dT; + } } - } - { - // n_Ar37_to_Ar38_reaclib + { + // Ar37_n_to_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar37_to_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar37_to_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar37_to_Ar38_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar37_n_to_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_n_to_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_n_to_Ar38_reaclib) = drate_dT; + } } - } - { - // p_Ar37_to_K38_reaclib + { + // Ar37_p_to_K38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar37); - } + log_scor = rate_eval.log_screen(k_p_Ar37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar37); + } #endif - rate_p_Ar37_to_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar37_to_K38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar37_to_K38_reaclib) = drate_dT; + rate_Ar37_p_to_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_p_to_K38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_p_to_K38_reaclib) = drate_dT; + } } - } - { - // He4_Ar37_to_Ca41_reaclib + { + // Ar37_He4_to_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar37); - } + log_scor = rate_eval.log_screen(k_He4_Ar37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar37); + } #endif - rate_He4_Ar37_to_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar37_to_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar37_to_Ca41_reaclib) = drate_dT; + rate_Ar37_He4_to_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_He4_to_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_He4_to_Ca41_reaclib) = drate_dT; + } } - } - { - // n_Ar38_to_Ar39_reaclib + { + // Ar38_n_to_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar38_to_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar38_to_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar38_to_Ar39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar38_n_to_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_n_to_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_n_to_Ar39_reaclib) = drate_dT; + } } - } - { - // p_Ar38_to_K39_reaclib + { + // Ar38_p_to_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar38); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar38); - } + log_scor = rate_eval.log_screen(k_p_Ar38); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar38); + } #endif - rate_p_Ar38_to_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar38_to_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar38_to_K39_reaclib) = drate_dT; + rate_Ar38_p_to_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_p_to_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_p_to_K39_reaclib) = drate_dT; + } } - } - { - // He4_Ar38_to_Ca42_reaclib + { + // Ar38_He4_to_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar38); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar38); - } + log_scor = rate_eval.log_screen(k_He4_Ar38); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar38); + } #endif - rate_He4_Ar38_to_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar38_to_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar38_to_Ca42_reaclib) = drate_dT; + rate_Ar38_He4_to_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_He4_to_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_He4_to_Ca42_reaclib) = drate_dT; + } } - } - { - // n_Ar39_to_Ar40_reaclib + { + // Ar39_n_to_Ar40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar39_to_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar39_to_Ar40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar39_to_Ar40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar39_n_to_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_n_to_Ar40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_n_to_Ar40_reaclib) = drate_dT; + } } - } - { - // p_Ar39_to_K40_reaclib + { + // Ar39_p_to_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar39); - } + log_scor = rate_eval.log_screen(k_p_Ar39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar39); + } #endif - rate_p_Ar39_to_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar39_to_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar39_to_K40_reaclib) = drate_dT; + rate_Ar39_p_to_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_p_to_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_p_to_K40_reaclib) = drate_dT; + } } - } - { - // He4_Ar39_to_Ca43_reaclib + { + // Ar39_He4_to_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar39); - } + log_scor = rate_eval.log_screen(k_He4_Ar39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar39); + } #endif - rate_He4_Ar39_to_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar39_to_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar39_to_Ca43_reaclib) = drate_dT; + rate_Ar39_He4_to_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_He4_to_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_He4_to_Ca43_reaclib) = drate_dT; + } } - } - { - // p_Ar40_to_K41_reaclib + { + // Ar40_p_to_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar40); - } + log_scor = rate_eval.log_screen(k_p_Ar40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar40); + } #endif - rate_p_Ar40_to_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar40_to_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar40_to_K41_reaclib) = drate_dT; + rate_Ar40_p_to_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar40_p_to_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar40_p_to_K41_reaclib) = drate_dT; + } } - } - { - // He4_Ar40_to_Ca44_reaclib + { + // Ar40_He4_to_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar40); - } + log_scor = rate_eval.log_screen(k_He4_Ar40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar40); + } #endif - rate_He4_Ar40_to_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar40_to_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar40_to_Ca44_reaclib) = drate_dT; + rate_Ar40_He4_to_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar40_He4_to_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar40_He4_to_Ca44_reaclib) = drate_dT; + } } - } - { - // n_K37_to_K38_reaclib + { + // K37_n_to_K38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K37_to_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K37_to_K38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K37_to_K38_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K37_n_to_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K37_n_to_K38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K37_n_to_K38_reaclib) = drate_dT; + } } - } - { - // n_K38_to_K39_reaclib + { + // K38_n_to_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K38_to_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K38_to_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K38_to_K39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K38_n_to_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K38_n_to_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K38_n_to_K39_reaclib) = drate_dT; + } } - } - { - // n_K39_to_K40_reaclib + { + // K39_n_to_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K39_to_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K39_to_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K39_to_K40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K39_n_to_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_n_to_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_n_to_K40_reaclib) = drate_dT; + } } - } - { - // p_K39_to_Ca40_reaclib + { + // K39_p_to_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_Ca40_reaclib) = drate_dT; + rate_K39_p_to_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_K39_to_Sc43_reaclib + { + // K39_He4_to_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K39); - } + log_scor = rate_eval.log_screen(k_He4_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K39); + } #endif - rate_He4_K39_to_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K39_to_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K39_to_Sc43_reaclib) = drate_dT; + rate_K39_He4_to_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_He4_to_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_He4_to_Sc43_reaclib) = drate_dT; + } } - } - { - // n_K40_to_K41_reaclib + { + // K40_n_to_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K40_to_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K40_to_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K40_to_K41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K40_n_to_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_n_to_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_n_to_K41_reaclib) = drate_dT; + } } - } - { - // p_K40_to_Ca41_reaclib + { + // K40_p_to_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K40); - } + log_scor = rate_eval.log_screen(k_p_K40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K40); + } #endif - rate_p_K40_to_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K40_to_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K40_to_Ca41_reaclib) = drate_dT; + rate_K40_p_to_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_p_to_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_p_to_Ca41_reaclib) = drate_dT; + } } - } - { - // He4_K40_to_Sc44_reaclib + { + // K40_He4_to_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K40); - } + log_scor = rate_eval.log_screen(k_He4_K40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K40); + } #endif - rate_He4_K40_to_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K40_to_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K40_to_Sc44_reaclib) = drate_dT; + rate_K40_He4_to_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_He4_to_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_He4_to_Sc44_reaclib) = drate_dT; + } } - } - { - // p_K41_to_Ca42_reaclib + { + // K41_p_to_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K41); - } + log_scor = rate_eval.log_screen(k_p_K41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K41); + } #endif - rate_p_K41_to_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K41_to_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K41_to_Ca42_reaclib) = drate_dT; + rate_K41_p_to_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_p_to_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_p_to_Ca42_reaclib) = drate_dT; + } } - } - { - // He4_K41_to_Sc45_reaclib + { + // K41_He4_to_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K41); - } + log_scor = rate_eval.log_screen(k_He4_K41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K41); + } #endif - rate_He4_K41_to_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K41_to_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K41_to_Sc45_reaclib) = drate_dT; + rate_K41_He4_to_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_He4_to_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_He4_to_Sc45_reaclib) = drate_dT; + } } - } - { - // n_Ca40_to_Ca41_reaclib + { + // Ca40_n_to_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca40_to_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca40_to_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca40_to_Ca41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_n_to_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_n_to_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_n_to_Ca41_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_Ti44_reaclib + { + // Ca40_He4_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_Ti44_reaclib) = drate_dT; + rate_Ca40_He4_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_Ti44_reaclib) = drate_dT; + } } - } - { - // n_Ca41_to_Ca42_reaclib + { + // Ca41_n_to_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca41_to_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca41_to_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca41_to_Ca42_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca41_n_to_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_n_to_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_n_to_Ca42_reaclib) = drate_dT; + } } - } - { - // He4_Ca41_to_Ti45_reaclib + { + // Ca41_He4_to_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca41); - } + log_scor = rate_eval.log_screen(k_He4_Ca41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca41); + } #endif - rate_He4_Ca41_to_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca41_to_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca41_to_Ti45_reaclib) = drate_dT; + rate_Ca41_He4_to_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_He4_to_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_He4_to_Ti45_reaclib) = drate_dT; + } } - } - { - // n_Ca42_to_Ca43_reaclib + { + // Ca42_n_to_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca42_to_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca42_to_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca42_to_Ca43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca42_n_to_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_n_to_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_n_to_Ca43_reaclib) = drate_dT; + } } - } - { - // p_Ca42_to_Sc43_reaclib + { + // Ca42_p_to_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca42); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca42); - } + log_scor = rate_eval.log_screen(k_p_Ca42); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca42); + } #endif - rate_p_Ca42_to_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca42_to_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca42_to_Sc43_reaclib) = drate_dT; + rate_Ca42_p_to_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_p_to_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_p_to_Sc43_reaclib) = drate_dT; + } } - } - { - // He4_Ca42_to_Ti46_reaclib + { + // Ca42_He4_to_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca42); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca42); - } + log_scor = rate_eval.log_screen(k_He4_Ca42); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca42); + } #endif - rate_He4_Ca42_to_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca42_to_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca42_to_Ti46_reaclib) = drate_dT; + rate_Ca42_He4_to_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_He4_to_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_He4_to_Ti46_reaclib) = drate_dT; + } } - } - { - // n_Ca43_to_Ca44_reaclib + { + // Ca43_n_to_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca43_to_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca43_to_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca43_to_Ca44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca43_n_to_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_n_to_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_n_to_Ca44_reaclib) = drate_dT; + } } - } - { - // p_Ca43_to_Sc44_reaclib + { + // Ca43_p_to_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca43); - } + log_scor = rate_eval.log_screen(k_p_Ca43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca43); + } #endif - rate_p_Ca43_to_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca43_to_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca43_to_Sc44_reaclib) = drate_dT; + rate_Ca43_p_to_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_p_to_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_p_to_Sc44_reaclib) = drate_dT; + } } - } - { - // He4_Ca43_to_Ti47_reaclib + { + // Ca43_He4_to_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca43); - } + log_scor = rate_eval.log_screen(k_He4_Ca43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca43); + } #endif - rate_He4_Ca43_to_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca43_to_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca43_to_Ti47_reaclib) = drate_dT; + rate_Ca43_He4_to_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_He4_to_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_He4_to_Ti47_reaclib) = drate_dT; + } } - } - { - // n_Ca44_to_Ca45_reaclib + { + // Ca44_n_to_Ca45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca44_to_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca44_to_Ca45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca44_to_Ca45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca44_n_to_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_n_to_Ca45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_n_to_Ca45_reaclib) = drate_dT; + } } - } - { - // p_Ca44_to_Sc45_reaclib + { + // Ca44_p_to_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca44); - } + log_scor = rate_eval.log_screen(k_p_Ca44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca44); + } #endif - rate_p_Ca44_to_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca44_to_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca44_to_Sc45_reaclib) = drate_dT; + rate_Ca44_p_to_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_p_to_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_p_to_Sc45_reaclib) = drate_dT; + } } - } - { - // He4_Ca44_to_Ti48_reaclib + { + // Ca44_He4_to_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca44); - } + log_scor = rate_eval.log_screen(k_He4_Ca44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca44); + } #endif - rate_He4_Ca44_to_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca44_to_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca44_to_Ti48_reaclib) = drate_dT; + rate_Ca44_He4_to_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_He4_to_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_He4_to_Ti48_reaclib) = drate_dT; + } } - } - { - // n_Ca45_to_Ca46_reaclib + { + // Ca45_n_to_Ca46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca45_to_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca45_to_Ca46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca45_to_Ca46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca45_n_to_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca45_n_to_Ca46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca45_n_to_Ca46_reaclib) = drate_dT; + } } - } - { - // p_Ca45_to_Sc46_reaclib + { + // Ca45_p_to_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca45); - } + log_scor = rate_eval.log_screen(k_p_Ca45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca45); + } #endif - rate_p_Ca45_to_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca45_to_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca45_to_Sc46_reaclib) = drate_dT; + rate_Ca45_p_to_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca45_p_to_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca45_p_to_Sc46_reaclib) = drate_dT; + } } - } - { - // He4_Ca45_to_Ti49_reaclib + { + // Ca45_He4_to_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca45); - } + log_scor = rate_eval.log_screen(k_He4_Ca45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca45); + } #endif - rate_He4_Ca45_to_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca45_to_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca45_to_Ti49_reaclib) = drate_dT; + rate_Ca45_He4_to_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca45_He4_to_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca45_He4_to_Ti49_reaclib) = drate_dT; + } } - } - { - // n_Ca46_to_Ca47_reaclib + { + // Ca46_n_to_Ca47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca46_to_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca46_to_Ca47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca46_to_Ca47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca46_n_to_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca46_n_to_Ca47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca46_n_to_Ca47_reaclib) = drate_dT; + } } - } - { - // p_Ca46_to_Sc47_reaclib + { + // Ca46_p_to_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca46); - } + log_scor = rate_eval.log_screen(k_p_Ca46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca46); + } #endif - rate_p_Ca46_to_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca46_to_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca46_to_Sc47_reaclib) = drate_dT; + rate_Ca46_p_to_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca46_p_to_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca46_p_to_Sc47_reaclib) = drate_dT; + } } - } - { - // He4_Ca46_to_Ti50_reaclib + { + // Ca46_He4_to_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca46); - } + log_scor = rate_eval.log_screen(k_He4_Ca46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca46); + } #endif - rate_He4_Ca46_to_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca46_to_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca46_to_Ti50_reaclib) = drate_dT; + rate_Ca46_He4_to_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca46_He4_to_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca46_He4_to_Ti50_reaclib) = drate_dT; + } } - } - { - // n_Ca47_to_Ca48_reaclib + { + // Ca47_n_to_Ca48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca47_to_Ca48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca47_to_Ca48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca47_to_Ca48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca47_n_to_Ca48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca47_n_to_Ca48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca47_n_to_Ca48_reaclib) = drate_dT; + } } - } - { - // p_Ca47_to_Sc48_reaclib + { + // Ca47_p_to_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca47); - } + log_scor = rate_eval.log_screen(k_p_Ca47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca47); + } #endif - rate_p_Ca47_to_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca47_to_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca47_to_Sc48_reaclib) = drate_dT; + rate_Ca47_p_to_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca47_p_to_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca47_p_to_Sc48_reaclib) = drate_dT; + } } - } - { - // He4_Ca47_to_Ti51_reaclib + { + // Ca47_He4_to_Ti51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca47); - } + log_scor = rate_eval.log_screen(k_He4_Ca47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca47); + } #endif - rate_He4_Ca47_to_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca47_to_Ti51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca47_to_Ti51_reaclib) = drate_dT; + rate_Ca47_He4_to_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca47_He4_to_Ti51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca47_He4_to_Ti51_reaclib) = drate_dT; + } } - } - { - // p_Ca48_to_Sc49_reaclib + { + // Ca48_p_to_Sc49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca48); - } + log_scor = rate_eval.log_screen(k_p_Ca48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca48); + } #endif - rate_p_Ca48_to_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca48_to_Sc49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca48_to_Sc49_reaclib) = drate_dT; + rate_Ca48_p_to_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca48_p_to_Sc49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca48_p_to_Sc49_reaclib) = drate_dT; + } } - } - { - // n_Sc43_to_Sc44_reaclib + { + // Sc43_n_to_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc43_to_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc43_to_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc43_to_Sc44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc43_n_to_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_n_to_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_n_to_Sc44_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_Ti44_reaclib + { + // Sc43_p_to_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_Ti44_reaclib) = drate_dT; + rate_Sc43_p_to_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Sc43_to_V47_reaclib + { + // Sc43_He4_to_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc43); - } + log_scor = rate_eval.log_screen(k_He4_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc43); + } #endif - rate_He4_Sc43_to_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc43_to_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc43_to_V47_reaclib) = drate_dT; + rate_Sc43_He4_to_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_He4_to_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_He4_to_V47_reaclib) = drate_dT; + } } - } - { - // n_Sc44_to_Sc45_reaclib + { + // Sc44_n_to_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc44_to_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc44_to_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc44_to_Sc45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc44_n_to_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_n_to_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_n_to_Sc45_reaclib) = drate_dT; + } } - } - { - // p_Sc44_to_Ti45_reaclib + { + // Sc44_p_to_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc44); - } + log_scor = rate_eval.log_screen(k_p_Sc44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc44); + } #endif - rate_p_Sc44_to_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc44_to_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc44_to_Ti45_reaclib) = drate_dT; + rate_Sc44_p_to_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_p_to_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_p_to_Ti45_reaclib) = drate_dT; + } } - } - { - // He4_Sc44_to_V48_reaclib + { + // Sc44_He4_to_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc44); - } + log_scor = rate_eval.log_screen(k_He4_Sc44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc44); + } #endif - rate_He4_Sc44_to_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc44_to_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc44_to_V48_reaclib) = drate_dT; + rate_Sc44_He4_to_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_He4_to_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_He4_to_V48_reaclib) = drate_dT; + } } - } - { - // n_Sc45_to_Sc46_reaclib + { + // Sc45_n_to_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc45_to_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc45_to_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc45_to_Sc46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc45_n_to_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_n_to_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_n_to_Sc46_reaclib) = drate_dT; + } } - } - { - // p_Sc45_to_Ti46_reaclib + { + // Sc45_p_to_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc45); - } + log_scor = rate_eval.log_screen(k_p_Sc45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc45); + } #endif - rate_p_Sc45_to_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc45_to_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc45_to_Ti46_reaclib) = drate_dT; + rate_Sc45_p_to_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_p_to_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_p_to_Ti46_reaclib) = drate_dT; + } } - } - { - // He4_Sc45_to_V49_reaclib + { + // Sc45_He4_to_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc45); - } + log_scor = rate_eval.log_screen(k_He4_Sc45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc45); + } #endif - rate_He4_Sc45_to_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc45_to_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc45_to_V49_reaclib) = drate_dT; + rate_Sc45_He4_to_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_He4_to_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_He4_to_V49_reaclib) = drate_dT; + } } - } - { - // n_Sc46_to_Sc47_reaclib + { + // Sc46_n_to_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc46_to_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc46_to_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc46_to_Sc47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc46_n_to_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_n_to_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_n_to_Sc47_reaclib) = drate_dT; + } } - } - { - // p_Sc46_to_Ti47_reaclib + { + // Sc46_p_to_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc46); - } + log_scor = rate_eval.log_screen(k_p_Sc46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc46); + } #endif - rate_p_Sc46_to_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc46_to_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc46_to_Ti47_reaclib) = drate_dT; + rate_Sc46_p_to_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_p_to_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_p_to_Ti47_reaclib) = drate_dT; + } } - } - { - // He4_Sc46_to_V50_reaclib + { + // Sc46_He4_to_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc46); - } + log_scor = rate_eval.log_screen(k_He4_Sc46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc46); + } #endif - rate_He4_Sc46_to_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc46_to_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc46_to_V50_reaclib) = drate_dT; + rate_Sc46_He4_to_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_He4_to_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_He4_to_V50_reaclib) = drate_dT; + } } - } - { - // n_Sc47_to_Sc48_reaclib + { + // Sc47_n_to_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc47_to_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc47_to_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc47_to_Sc48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc47_n_to_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_n_to_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_n_to_Sc48_reaclib) = drate_dT; + } } - } - { - // p_Sc47_to_Ti48_reaclib + { + // Sc47_p_to_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc47); - } + log_scor = rate_eval.log_screen(k_p_Sc47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc47); + } #endif - rate_p_Sc47_to_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc47_to_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc47_to_Ti48_reaclib) = drate_dT; + rate_Sc47_p_to_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_p_to_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_p_to_Ti48_reaclib) = drate_dT; + } } - } - { - // He4_Sc47_to_V51_reaclib + { + // Sc47_He4_to_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc47); - } + log_scor = rate_eval.log_screen(k_He4_Sc47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc47); + } #endif - rate_He4_Sc47_to_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc47_to_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc47_to_V51_reaclib) = drate_dT; + rate_Sc47_He4_to_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_He4_to_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_He4_to_V51_reaclib) = drate_dT; + } } - } - { - // n_Sc48_to_Sc49_reaclib + { + // Sc48_n_to_Sc49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc48_to_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc48_to_Sc49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc48_to_Sc49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc48_n_to_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_n_to_Sc49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_n_to_Sc49_reaclib) = drate_dT; + } } - } - { - // p_Sc48_to_Ti49_reaclib + { + // Sc48_p_to_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc48); - } + log_scor = rate_eval.log_screen(k_p_Sc48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc48); + } #endif - rate_p_Sc48_to_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc48_to_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc48_to_Ti49_reaclib) = drate_dT; + rate_Sc48_p_to_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_p_to_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_p_to_Ti49_reaclib) = drate_dT; + } } - } - { - // He4_Sc48_to_V52_reaclib + { + // Sc48_He4_to_V52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc48); - } + log_scor = rate_eval.log_screen(k_He4_Sc48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc48); + } #endif - rate_He4_Sc48_to_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc48_to_V52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc48_to_V52_reaclib) = drate_dT; + rate_Sc48_He4_to_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_He4_to_V52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_He4_to_V52_reaclib) = drate_dT; + } } - } - { - // p_Sc49_to_Ti50_reaclib + { + // Sc49_p_to_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc49); - } + log_scor = rate_eval.log_screen(k_p_Sc49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc49); + } #endif - rate_p_Sc49_to_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc49_to_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc49_to_Ti50_reaclib) = drate_dT; + rate_Sc49_p_to_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc49_p_to_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc49_p_to_Ti50_reaclib) = drate_dT; + } } - } - { - // n_Ti44_to_Ti45_reaclib + { + // Ti44_n_to_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti44_to_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti44_to_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti44_to_Ti45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_n_to_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_n_to_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_n_to_Ti45_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_Cr48_reaclib + { + // Ti44_He4_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_Cr48_reaclib) = drate_dT; + rate_Ti44_He4_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_Cr48_reaclib) = drate_dT; + } } - } - { - // n_Ti45_to_Ti46_reaclib + { + // Ti45_n_to_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti45_to_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti45_to_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti45_to_Ti46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti45_n_to_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_n_to_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_n_to_Ti46_reaclib) = drate_dT; + } } - } - { - // p_Ti45_to_V46_reaclib + { + // Ti45_p_to_V46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti45); - } + log_scor = rate_eval.log_screen(k_p_Ti45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti45); + } #endif - rate_p_Ti45_to_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti45_to_V46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti45_to_V46_reaclib) = drate_dT; + rate_Ti45_p_to_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_p_to_V46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_p_to_V46_reaclib) = drate_dT; + } } - } - { - // He4_Ti45_to_Cr49_reaclib + { + // Ti45_He4_to_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti45); - } + log_scor = rate_eval.log_screen(k_He4_Ti45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti45); + } #endif - rate_He4_Ti45_to_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti45_to_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti45_to_Cr49_reaclib) = drate_dT; + rate_Ti45_He4_to_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_He4_to_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_He4_to_Cr49_reaclib) = drate_dT; + } } - } - { - // n_Ti46_to_Ti47_reaclib + { + // Ti46_n_to_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti46_to_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti46_to_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti46_to_Ti47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti46_n_to_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_n_to_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_n_to_Ti47_reaclib) = drate_dT; + } } - } - { - // p_Ti46_to_V47_reaclib + { + // Ti46_p_to_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti46); - } + log_scor = rate_eval.log_screen(k_p_Ti46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti46); + } #endif - rate_p_Ti46_to_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti46_to_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti46_to_V47_reaclib) = drate_dT; + rate_Ti46_p_to_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_p_to_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_p_to_V47_reaclib) = drate_dT; + } } - } - { - // He4_Ti46_to_Cr50_reaclib + { + // Ti46_He4_to_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti46); - } + log_scor = rate_eval.log_screen(k_He4_Ti46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti46); + } #endif - rate_He4_Ti46_to_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti46_to_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti46_to_Cr50_reaclib) = drate_dT; + rate_Ti46_He4_to_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_He4_to_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_He4_to_Cr50_reaclib) = drate_dT; + } } - } - { - // n_Ti47_to_Ti48_reaclib + { + // Ti47_n_to_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti47_to_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti47_to_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti47_to_Ti48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti47_n_to_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_n_to_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_n_to_Ti48_reaclib) = drate_dT; + } } - } - { - // p_Ti47_to_V48_reaclib + { + // Ti47_p_to_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti47); - } + log_scor = rate_eval.log_screen(k_p_Ti47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti47); + } #endif - rate_p_Ti47_to_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti47_to_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti47_to_V48_reaclib) = drate_dT; + rate_Ti47_p_to_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_p_to_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_p_to_V48_reaclib) = drate_dT; + } } - } - { - // He4_Ti47_to_Cr51_reaclib + { + // Ti47_He4_to_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti47); - } + log_scor = rate_eval.log_screen(k_He4_Ti47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti47); + } #endif - rate_He4_Ti47_to_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti47_to_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti47_to_Cr51_reaclib) = drate_dT; + rate_Ti47_He4_to_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_He4_to_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_He4_to_Cr51_reaclib) = drate_dT; + } } - } - { - // n_Ti48_to_Ti49_reaclib + { + // Ti48_n_to_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti48_to_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti48_to_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti48_to_Ti49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti48_n_to_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_n_to_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_n_to_Ti49_reaclib) = drate_dT; + } } - } - { - // p_Ti48_to_V49_reaclib + { + // Ti48_p_to_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti48); - } + log_scor = rate_eval.log_screen(k_p_Ti48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti48); + } #endif - rate_p_Ti48_to_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti48_to_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti48_to_V49_reaclib) = drate_dT; + rate_Ti48_p_to_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_p_to_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_p_to_V49_reaclib) = drate_dT; + } } - } - { - // He4_Ti48_to_Cr52_reaclib + { + // Ti48_He4_to_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti48); - } + log_scor = rate_eval.log_screen(k_He4_Ti48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti48); + } #endif - rate_He4_Ti48_to_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti48_to_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti48_to_Cr52_reaclib) = drate_dT; + rate_Ti48_He4_to_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_He4_to_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_He4_to_Cr52_reaclib) = drate_dT; + } } - } - { - // n_Ti49_to_Ti50_reaclib + { + // Ti49_n_to_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti49_to_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti49_to_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti49_to_Ti50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti49_n_to_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_n_to_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_n_to_Ti50_reaclib) = drate_dT; + } } - } - { - // p_Ti49_to_V50_reaclib + { + // Ti49_p_to_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti49); - } + log_scor = rate_eval.log_screen(k_p_Ti49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti49); + } #endif - rate_p_Ti49_to_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti49_to_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti49_to_V50_reaclib) = drate_dT; + rate_Ti49_p_to_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_p_to_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_p_to_V50_reaclib) = drate_dT; + } } - } - { - // He4_Ti49_to_Cr53_reaclib + { + // Ti49_He4_to_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti49); - } + log_scor = rate_eval.log_screen(k_He4_Ti49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti49); + } #endif - rate_He4_Ti49_to_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti49_to_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti49_to_Cr53_reaclib) = drate_dT; + rate_Ti49_He4_to_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_He4_to_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_He4_to_Cr53_reaclib) = drate_dT; + } } - } - { - // n_Ti50_to_Ti51_reaclib + { + // Ti50_n_to_Ti51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti50_to_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti50_to_Ti51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti50_to_Ti51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti50_n_to_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_n_to_Ti51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_n_to_Ti51_reaclib) = drate_dT; + } } - } - { - // p_Ti50_to_V51_reaclib + { + // Ti50_p_to_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti50); - } + log_scor = rate_eval.log_screen(k_p_Ti50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti50); + } #endif - rate_p_Ti50_to_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti50_to_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti50_to_V51_reaclib) = drate_dT; + rate_Ti50_p_to_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_p_to_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_p_to_V51_reaclib) = drate_dT; + } } - } - { - // He4_Ti50_to_Cr54_reaclib + { + // Ti50_He4_to_Cr54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti50); - } + log_scor = rate_eval.log_screen(k_He4_Ti50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti50); + } #endif - rate_He4_Ti50_to_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti50_to_Cr54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti50_to_Cr54_reaclib) = drate_dT; + rate_Ti50_He4_to_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_He4_to_Cr54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_He4_to_Cr54_reaclib) = drate_dT; + } } - } - { - // p_Ti51_to_V52_reaclib + { + // Ti51_p_to_V52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti51); - } + log_scor = rate_eval.log_screen(k_p_Ti51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti51); + } #endif - rate_p_Ti51_to_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti51_to_V52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti51_to_V52_reaclib) = drate_dT; + rate_Ti51_p_to_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti51_p_to_V52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti51_p_to_V52_reaclib) = drate_dT; + } } - } - { - // n_V46_to_V47_reaclib + { + // V46_n_to_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V46_to_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V46_to_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V46_to_V47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V46_n_to_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V46_n_to_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V46_n_to_V47_reaclib) = drate_dT; + } } - } - { - // He4_V46_to_Mn50_reaclib + { + // V46_He4_to_Mn50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V46); - } + log_scor = rate_eval.log_screen(k_He4_V46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V46); + } #endif - rate_He4_V46_to_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V46_to_Mn50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V46_to_Mn50_reaclib) = drate_dT; + rate_V46_He4_to_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V46_He4_to_Mn50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V46_He4_to_Mn50_reaclib) = drate_dT; + } } - } - { - // n_V47_to_V48_reaclib + { + // V47_n_to_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V47_to_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V47_to_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V47_to_V48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V47_n_to_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_n_to_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_n_to_V48_reaclib) = drate_dT; + } } - } - { - // p_V47_to_Cr48_reaclib + { + // V47_p_to_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_Cr48_reaclib) = drate_dT; + rate_V47_p_to_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_Cr48_reaclib) = drate_dT; + } } - } - { - // He4_V47_to_Mn51_reaclib + { + // V47_He4_to_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V47); - } + log_scor = rate_eval.log_screen(k_He4_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V47); + } #endif - rate_He4_V47_to_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V47_to_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V47_to_Mn51_reaclib) = drate_dT; + rate_V47_He4_to_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_He4_to_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_He4_to_Mn51_reaclib) = drate_dT; + } } - } - { - // n_V48_to_V49_reaclib + { + // V48_n_to_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V48_to_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V48_to_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V48_to_V49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V48_n_to_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_n_to_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_n_to_V49_reaclib) = drate_dT; + } } - } - { - // p_V48_to_Cr49_reaclib + { + // V48_p_to_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V48); - } + log_scor = rate_eval.log_screen(k_p_V48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V48); + } #endif - rate_p_V48_to_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V48_to_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V48_to_Cr49_reaclib) = drate_dT; + rate_V48_p_to_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_p_to_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_p_to_Cr49_reaclib) = drate_dT; + } } - } - { - // He4_V48_to_Mn52_reaclib + { + // V48_He4_to_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V48); - } + log_scor = rate_eval.log_screen(k_He4_V48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V48); + } #endif - rate_He4_V48_to_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V48_to_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V48_to_Mn52_reaclib) = drate_dT; + rate_V48_He4_to_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_He4_to_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_He4_to_Mn52_reaclib) = drate_dT; + } } - } - { - // n_V49_to_V50_reaclib + { + // V49_n_to_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V49_to_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V49_to_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V49_to_V50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V49_n_to_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_n_to_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_n_to_V50_reaclib) = drate_dT; + } } - } - { - // p_V49_to_Cr50_reaclib + { + // V49_p_to_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V49); - } + log_scor = rate_eval.log_screen(k_p_V49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V49); + } #endif - rate_p_V49_to_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V49_to_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V49_to_Cr50_reaclib) = drate_dT; + rate_V49_p_to_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_p_to_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_p_to_Cr50_reaclib) = drate_dT; + } } - } - { - // He4_V49_to_Mn53_reaclib + { + // V49_He4_to_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V49); - } + log_scor = rate_eval.log_screen(k_He4_V49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V49); + } #endif - rate_He4_V49_to_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V49_to_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V49_to_Mn53_reaclib) = drate_dT; + rate_V49_He4_to_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_He4_to_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_He4_to_Mn53_reaclib) = drate_dT; + } } - } - { - // n_V50_to_V51_reaclib + { + // V50_n_to_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V50_to_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V50_to_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V50_to_V51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V50_n_to_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_n_to_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_n_to_V51_reaclib) = drate_dT; + } } - } - { - // p_V50_to_Cr51_reaclib + { + // V50_p_to_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V50); - } + log_scor = rate_eval.log_screen(k_p_V50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V50); + } #endif - rate_p_V50_to_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V50_to_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V50_to_Cr51_reaclib) = drate_dT; + rate_V50_p_to_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_p_to_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_p_to_Cr51_reaclib) = drate_dT; + } } - } - { - // He4_V50_to_Mn54_reaclib + { + // V50_He4_to_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V50); - } + log_scor = rate_eval.log_screen(k_He4_V50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V50); + } #endif - rate_He4_V50_to_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V50_to_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V50_to_Mn54_reaclib) = drate_dT; + rate_V50_He4_to_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_He4_to_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_He4_to_Mn54_reaclib) = drate_dT; + } } - } - { - // n_V51_to_V52_reaclib + { + // V51_n_to_V52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V51_to_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V51_to_V52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V51_to_V52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V51_n_to_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_n_to_V52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_n_to_V52_reaclib) = drate_dT; + } } - } - { - // p_V51_to_Cr52_reaclib + { + // V51_p_to_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V51); - } + log_scor = rate_eval.log_screen(k_p_V51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V51); + } #endif - rate_p_V51_to_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V51_to_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V51_to_Cr52_reaclib) = drate_dT; + rate_V51_p_to_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_p_to_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_p_to_Cr52_reaclib) = drate_dT; + } } - } - { - // He4_V51_to_Mn55_reaclib + { + // V51_He4_to_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V51); - } + log_scor = rate_eval.log_screen(k_He4_V51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V51); + } #endif - rate_He4_V51_to_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V51_to_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V51_to_Mn55_reaclib) = drate_dT; + rate_V51_He4_to_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_He4_to_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_He4_to_Mn55_reaclib) = drate_dT; + } } - } - { - // p_V52_to_Cr53_reaclib + { + // V52_p_to_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V52); - } + log_scor = rate_eval.log_screen(k_p_V52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V52); + } #endif - rate_p_V52_to_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V52_to_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V52_to_Cr53_reaclib) = drate_dT; + rate_V52_p_to_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V52_p_to_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_p_to_Cr53_reaclib) = drate_dT; + } } - } - { - // n_Cr48_to_Cr49_reaclib + { + // Cr48_n_to_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr48_to_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr48_to_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr48_to_Cr49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_n_to_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_n_to_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_n_to_Cr49_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_Fe52_reaclib + { + // Cr48_He4_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_Fe52_reaclib) = drate_dT; + rate_Cr48_He4_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_Fe52_reaclib) = drate_dT; + } } - } - { - // n_Cr49_to_Cr50_reaclib + { + // Cr49_n_to_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr49_to_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr49_to_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr49_to_Cr50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr49_n_to_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_n_to_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_n_to_Cr50_reaclib) = drate_dT; + } } - } - { - // p_Cr49_to_Mn50_reaclib + { + // Cr49_p_to_Mn50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr49); - } + log_scor = rate_eval.log_screen(k_p_Cr49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr49); + } #endif - rate_p_Cr49_to_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr49_to_Mn50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr49_to_Mn50_reaclib) = drate_dT; + rate_Cr49_p_to_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_p_to_Mn50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_p_to_Mn50_reaclib) = drate_dT; + } } - } - { - // He4_Cr49_to_Fe53_reaclib + { + // Cr49_He4_to_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr49); - } + log_scor = rate_eval.log_screen(k_He4_Cr49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr49); + } #endif - rate_He4_Cr49_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr49_to_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr49_to_Fe53_reaclib) = drate_dT; + rate_Cr49_He4_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_He4_to_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_He4_to_Fe53_reaclib) = drate_dT; + } } - } - { - // n_Cr50_to_Cr51_reaclib + { + // Cr50_n_to_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr50_to_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr50_to_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr50_to_Cr51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr50_n_to_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_n_to_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_n_to_Cr51_reaclib) = drate_dT; + } } - } - { - // p_Cr50_to_Mn51_reaclib + { + // Cr50_p_to_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr50); - } + log_scor = rate_eval.log_screen(k_p_Cr50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr50); + } #endif - rate_p_Cr50_to_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr50_to_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr50_to_Mn51_reaclib) = drate_dT; + rate_Cr50_p_to_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_p_to_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_p_to_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Cr50_to_Fe54_reaclib + { + // Cr50_He4_to_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr50); - } + log_scor = rate_eval.log_screen(k_He4_Cr50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr50); + } #endif - rate_He4_Cr50_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr50_to_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr50_to_Fe54_reaclib) = drate_dT; + rate_Cr50_He4_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_He4_to_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_He4_to_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Cr51_to_Cr52_reaclib + { + // Cr51_n_to_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr51_to_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr51_to_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr51_to_Cr52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr51_n_to_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_n_to_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_n_to_Cr52_reaclib) = drate_dT; + } } - } - { - // p_Cr51_to_Mn52_reaclib + { + // Cr51_p_to_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr51); - } + log_scor = rate_eval.log_screen(k_p_Cr51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr51); + } #endif - rate_p_Cr51_to_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr51_to_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr51_to_Mn52_reaclib) = drate_dT; + rate_Cr51_p_to_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_p_to_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_p_to_Mn52_reaclib) = drate_dT; + } } - } - { - // He4_Cr51_to_Fe55_reaclib + { + // Cr51_He4_to_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr51); - } + log_scor = rate_eval.log_screen(k_He4_Cr51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr51); + } #endif - rate_He4_Cr51_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr51_to_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr51_to_Fe55_reaclib) = drate_dT; + rate_Cr51_He4_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_He4_to_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_He4_to_Fe55_reaclib) = drate_dT; + } } - } - { - // n_Cr52_to_Cr53_reaclib + { + // Cr52_n_to_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr52_to_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr52_to_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr52_to_Cr53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr52_n_to_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_n_to_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_n_to_Cr53_reaclib) = drate_dT; + } } - } - { - // p_Cr52_to_Mn53_reaclib + { + // Cr52_p_to_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr52); - } + log_scor = rate_eval.log_screen(k_p_Cr52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr52); + } #endif - rate_p_Cr52_to_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr52_to_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr52_to_Mn53_reaclib) = drate_dT; + rate_Cr52_p_to_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_p_to_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_p_to_Mn53_reaclib) = drate_dT; + } } - } - { - // He4_Cr52_to_Fe56_reaclib + { + // Cr52_He4_to_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr52); - } + log_scor = rate_eval.log_screen(k_He4_Cr52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr52); + } #endif - rate_He4_Cr52_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr52_to_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr52_to_Fe56_reaclib) = drate_dT; + rate_Cr52_He4_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_He4_to_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_He4_to_Fe56_reaclib) = drate_dT; + } } - } - { - // n_Cr53_to_Cr54_reaclib + { + // Cr53_n_to_Cr54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr53_to_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr53_to_Cr54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr53_to_Cr54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr53_n_to_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_n_to_Cr54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_n_to_Cr54_reaclib) = drate_dT; + } } - } - { - // p_Cr53_to_Mn54_reaclib + { + // Cr53_p_to_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr53); - } + log_scor = rate_eval.log_screen(k_p_Cr53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr53); + } #endif - rate_p_Cr53_to_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr53_to_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr53_to_Mn54_reaclib) = drate_dT; + rate_Cr53_p_to_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_p_to_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_p_to_Mn54_reaclib) = drate_dT; + } } - } - { - // He4_Cr53_to_Fe57_reaclib + { + // Cr53_He4_to_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr53); - } + log_scor = rate_eval.log_screen(k_He4_Cr53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr53); + } #endif - rate_He4_Cr53_to_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr53_to_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr53_to_Fe57_reaclib) = drate_dT; + rate_Cr53_He4_to_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_He4_to_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_He4_to_Fe57_reaclib) = drate_dT; + } } - } - { - // p_Cr54_to_Mn55_reaclib + { + // Cr54_p_to_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr54); - } + log_scor = rate_eval.log_screen(k_p_Cr54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr54); + } #endif - rate_p_Cr54_to_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr54_to_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr54_to_Mn55_reaclib) = drate_dT; + rate_Cr54_p_to_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr54_p_to_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_p_to_Mn55_reaclib) = drate_dT; + } } - } - { - // He4_Cr54_to_Fe58_reaclib + { + // Cr54_He4_to_Fe58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr54); - } + log_scor = rate_eval.log_screen(k_He4_Cr54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr54); + } #endif - rate_He4_Cr54_to_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr54_to_Fe58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr54_to_Fe58_reaclib) = drate_dT; + rate_Cr54_He4_to_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr54_He4_to_Fe58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_He4_to_Fe58_reaclib) = drate_dT; + } } - } - { - // n_Mn50_to_Mn51_reaclib + { + // Mn50_n_to_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn50_to_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn50_to_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn50_to_Mn51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn50_n_to_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn50_n_to_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_n_to_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Mn50_to_Co54_reaclib + { + // Mn50_He4_to_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn50); - } + log_scor = rate_eval.log_screen(k_He4_Mn50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn50); + } #endif - rate_He4_Mn50_to_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn50_to_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn50_to_Co54_reaclib) = drate_dT; + rate_Mn50_He4_to_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn50_He4_to_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_He4_to_Co54_reaclib) = drate_dT; + } } - } - { - // n_Mn51_to_Mn52_reaclib + { + // Mn51_n_to_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn51_to_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn51_to_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn51_to_Mn52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn51_n_to_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_n_to_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_n_to_Mn52_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_Fe52_reaclib + { + // Mn51_p_to_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_Fe52_reaclib) = drate_dT; + rate_Mn51_p_to_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_Co55_reaclib + { + // Mn51_He4_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_Co55_reaclib) = drate_dT; + rate_Mn51_He4_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_Co55_reaclib) = drate_dT; + } } - } - { - // n_Mn52_to_Mn53_reaclib + { + // Mn52_n_to_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn52_to_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn52_to_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn52_to_Mn53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn52_n_to_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_n_to_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_n_to_Mn53_reaclib) = drate_dT; + } } - } - { - // p_Mn52_to_Fe53_reaclib + { + // Mn52_p_to_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn52); - } + log_scor = rate_eval.log_screen(k_p_Mn52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn52); + } #endif - rate_p_Mn52_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn52_to_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn52_to_Fe53_reaclib) = drate_dT; + rate_Mn52_p_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_p_to_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_p_to_Fe53_reaclib) = drate_dT; + } } - } - { - // He4_Mn52_to_Co56_reaclib + { + // Mn52_He4_to_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn52); - } + log_scor = rate_eval.log_screen(k_He4_Mn52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn52); + } #endif - rate_He4_Mn52_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn52_to_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn52_to_Co56_reaclib) = drate_dT; + rate_Mn52_He4_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_He4_to_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_He4_to_Co56_reaclib) = drate_dT; + } } - } - { - // n_Mn53_to_Mn54_reaclib + { + // Mn53_n_to_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn53_to_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn53_to_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn53_to_Mn54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn53_n_to_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_n_to_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_n_to_Mn54_reaclib) = drate_dT; + } } - } - { - // p_Mn53_to_Fe54_reaclib + { + // Mn53_p_to_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn53); - } + log_scor = rate_eval.log_screen(k_p_Mn53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn53); + } #endif - rate_p_Mn53_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn53_to_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn53_to_Fe54_reaclib) = drate_dT; + rate_Mn53_p_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_p_to_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_p_to_Fe54_reaclib) = drate_dT; + } } - } - { - // He4_Mn53_to_Co57_reaclib + { + // Mn53_He4_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn53); - } + log_scor = rate_eval.log_screen(k_He4_Mn53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn53); + } #endif - rate_He4_Mn53_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn53_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn53_to_Co57_reaclib) = drate_dT; + rate_Mn53_He4_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_He4_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_He4_to_Co57_reaclib) = drate_dT; + } } - } - { - // n_Mn54_to_Mn55_reaclib + { + // Mn54_n_to_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn54_to_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn54_to_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn54_to_Mn55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn54_n_to_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_n_to_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_n_to_Mn55_reaclib) = drate_dT; + } } - } - { - // p_Mn54_to_Fe55_reaclib + { + // Mn54_p_to_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn54); - } + log_scor = rate_eval.log_screen(k_p_Mn54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn54); + } #endif - rate_p_Mn54_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn54_to_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn54_to_Fe55_reaclib) = drate_dT; + rate_Mn54_p_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_p_to_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_p_to_Fe55_reaclib) = drate_dT; + } } - } - { - // He4_Mn54_to_Co58_reaclib + { + // Mn54_He4_to_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn54); - } + log_scor = rate_eval.log_screen(k_He4_Mn54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn54); + } #endif - rate_He4_Mn54_to_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn54_to_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn54_to_Co58_reaclib) = drate_dT; + rate_Mn54_He4_to_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_He4_to_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_He4_to_Co58_reaclib) = drate_dT; + } } - } - { - // p_Mn55_to_Fe56_reaclib + { + // Mn55_p_to_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); - } + log_scor = rate_eval.log_screen(k_p_Mn55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); + } #endif - rate_p_Mn55_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn55_to_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn55_to_Fe56_reaclib) = drate_dT; + rate_Mn55_p_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_p_to_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_p_to_Fe56_reaclib) = drate_dT; + } } - } - { - // He4_Mn55_to_Co59_reaclib + { + // Mn55_He4_to_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn55); - } + log_scor = rate_eval.log_screen(k_He4_Mn55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn55); + } #endif - rate_He4_Mn55_to_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn55_to_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn55_to_Co59_reaclib) = drate_dT; + rate_Mn55_He4_to_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_He4_to_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_He4_to_Co59_reaclib) = drate_dT; + } } - } - { - // n_Fe52_to_Fe53_reaclib + { + // Fe52_n_to_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe52_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe52_to_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe52_to_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_n_to_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_to_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_to_Fe53_reaclib) = drate_dT; + } } - } - { - // p_Fe52_to_Co53_reaclib + { + // Fe52_p_to_Co53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe52); - } + log_scor = rate_eval.log_screen(k_p_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe52); + } #endif - rate_p_Fe52_to_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe52_to_Co53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe52_to_Co53_reaclib) = drate_dT; + rate_Fe52_p_to_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_p_to_Co53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_p_to_Co53_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_Ni56_reaclib + { + // Fe52_He4_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_Ni56_reaclib) = drate_dT; + rate_Fe52_He4_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_Ni56_reaclib) = drate_dT; + } } - } - { - // n_Fe53_to_Fe54_reaclib + { + // Fe53_n_to_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe53_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe53_to_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe53_to_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_n_to_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_n_to_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_n_to_Fe54_reaclib) = drate_dT; + } } - } - { - // p_Fe53_to_Co54_reaclib + { + // Fe53_p_to_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe53); - } + log_scor = rate_eval.log_screen(k_p_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe53); + } #endif - rate_p_Fe53_to_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe53_to_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe53_to_Co54_reaclib) = drate_dT; + rate_Fe53_p_to_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_p_to_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_p_to_Co54_reaclib) = drate_dT; + } } - } - { - // He4_Fe53_to_Ni57_reaclib + { + // Fe53_He4_to_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); - } + log_scor = rate_eval.log_screen(k_He4_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); + } #endif - rate_He4_Fe53_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe53_to_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe53_to_Ni57_reaclib) = drate_dT; + rate_Fe53_He4_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_He4_to_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_He4_to_Ni57_reaclib) = drate_dT; + } } - } - { - // n_Fe54_to_Fe55_reaclib + { + // Fe54_n_to_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe54_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe54_to_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe54_to_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_n_to_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_to_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_to_Fe55_reaclib) = drate_dT; + } } - } - { - // p_Fe54_to_Co55_reaclib + { + // Fe54_p_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); - } + log_scor = rate_eval.log_screen(k_p_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); + } #endif - rate_p_Fe54_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe54_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_Co55_reaclib) = drate_dT; + rate_Fe54_p_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_p_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_to_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Fe54_to_Ni58_reaclib + { + // Fe54_He4_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe54_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_Ni58_reaclib) = drate_dT; + rate_Fe54_He4_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_He4_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_Ni58_reaclib) = drate_dT; + } } - } - { - // n_Fe55_to_Fe56_reaclib + { + // Fe55_n_to_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe55_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe55_to_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe55_to_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_n_to_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_n_to_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_n_to_Fe56_reaclib) = drate_dT; + } } - } - { - // p_Fe55_to_Co56_reaclib + { + // Fe55_p_to_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); - } + log_scor = rate_eval.log_screen(k_p_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); + } #endif - rate_p_Fe55_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe55_to_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe55_to_Co56_reaclib) = drate_dT; + rate_Fe55_p_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_p_to_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_p_to_Co56_reaclib) = drate_dT; + } } - } - { - // He4_Fe55_to_Ni59_reaclib + { + // Fe55_He4_to_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe55); - } + log_scor = rate_eval.log_screen(k_He4_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe55); + } #endif - rate_He4_Fe55_to_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe55_to_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe55_to_Ni59_reaclib) = drate_dT; + rate_Fe55_He4_to_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_He4_to_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_He4_to_Ni59_reaclib) = drate_dT; + } } - } - { - // n_Fe56_to_Fe57_reaclib + { + // Fe56_n_to_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe56_to_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe56_to_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe56_to_Fe57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_n_to_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_n_to_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_n_to_Fe57_reaclib) = drate_dT; + } } - } - { - // p_Fe56_to_Co57_reaclib + { + // Fe56_p_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); - } + log_scor = rate_eval.log_screen(k_p_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); + } #endif - rate_p_Fe56_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe56_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_Co57_reaclib) = drate_dT; + rate_Fe56_p_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_p_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_to_Co57_reaclib) = drate_dT; + } } - } - { - // He4_Fe56_to_Ni60_reaclib + { + // Fe56_He4_to_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe56); - } + log_scor = rate_eval.log_screen(k_He4_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe56); + } #endif - rate_He4_Fe56_to_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe56_to_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe56_to_Ni60_reaclib) = drate_dT; + rate_Fe56_He4_to_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_He4_to_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_He4_to_Ni60_reaclib) = drate_dT; + } } - } - { - // n_Fe57_to_Fe58_reaclib + { + // Fe57_n_to_Fe58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe57_to_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe57_to_Fe58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe57_to_Fe58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe57_n_to_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_n_to_Fe58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_n_to_Fe58_reaclib) = drate_dT; + } } - } - { - // p_Fe57_to_Co58_reaclib + { + // Fe57_p_to_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe57); - } + log_scor = rate_eval.log_screen(k_p_Fe57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe57); + } #endif - rate_p_Fe57_to_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe57_to_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe57_to_Co58_reaclib) = drate_dT; + rate_Fe57_p_to_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_p_to_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_p_to_Co58_reaclib) = drate_dT; + } } - } - { - // He4_Fe57_to_Ni61_reaclib + { + // Fe57_He4_to_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe57); - } + log_scor = rate_eval.log_screen(k_He4_Fe57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe57); + } #endif - rate_He4_Fe57_to_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe57_to_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe57_to_Ni61_reaclib) = drate_dT; + rate_Fe57_He4_to_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_He4_to_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_He4_to_Ni61_reaclib) = drate_dT; + } } - } - { - // p_Fe58_to_Co59_reaclib + { + // Fe58_p_to_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe58); - } + log_scor = rate_eval.log_screen(k_p_Fe58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe58); + } #endif - rate_p_Fe58_to_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe58_to_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe58_to_Co59_reaclib) = drate_dT; + rate_Fe58_p_to_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe58_p_to_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe58_p_to_Co59_reaclib) = drate_dT; + } } - } - { - // He4_Fe58_to_Ni62_reaclib + { + // Fe58_He4_to_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe58); - } + log_scor = rate_eval.log_screen(k_He4_Fe58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe58); + } #endif - rate_He4_Fe58_to_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe58_to_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe58_to_Ni62_reaclib) = drate_dT; + rate_Fe58_He4_to_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe58_He4_to_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe58_He4_to_Ni62_reaclib) = drate_dT; + } } - } - { - // n_Co53_to_Co54_reaclib + { + // Co53_n_to_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co53_to_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co53_to_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co53_to_Co54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co53_n_to_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co53_n_to_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co53_n_to_Co54_reaclib) = drate_dT; + } } - } - { - // He4_Co53_to_Cu57_reaclib + { + // Co53_He4_to_Cu57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co53); - } + log_scor = rate_eval.log_screen(k_He4_Co53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co53); + } #endif - rate_He4_Co53_to_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co53_to_Cu57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co53_to_Cu57_reaclib) = drate_dT; + rate_Co53_He4_to_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co53_He4_to_Cu57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co53_He4_to_Cu57_reaclib) = drate_dT; + } } - } - { - // n_Co54_to_Co55_reaclib + { + // Co54_n_to_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co54_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co54_to_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co54_to_Co55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co54_n_to_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_n_to_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_n_to_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Co54_to_Cu58_reaclib + { + // Co54_He4_to_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co54); - } + log_scor = rate_eval.log_screen(k_He4_Co54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co54); + } #endif - rate_He4_Co54_to_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co54_to_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co54_to_Cu58_reaclib) = drate_dT; + rate_Co54_He4_to_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_He4_to_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_He4_to_Cu58_reaclib) = drate_dT; + } } - } - { - // n_Co55_to_Co56_reaclib + { + // Co55_n_to_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co55_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co55_to_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co55_to_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_n_to_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_n_to_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_n_to_Co56_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_Ni56_reaclib + { + // Co55_p_to_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_Ni56_reaclib) = drate_dT; + rate_Co55_p_to_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_Co55_to_Cu59_reaclib + { + // Co55_He4_to_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); - } + log_scor = rate_eval.log_screen(k_He4_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); + } #endif - rate_He4_Co55_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_Cu59_reaclib) = drate_dT; + rate_Co55_He4_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_He4_to_Cu59_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_Co57_reaclib + { + // Co56_n_to_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_Co57_reaclib) = drate_dT; + } } - } - { - // p_Co56_to_Ni57_reaclib + { + // Co56_p_to_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); - } + log_scor = rate_eval.log_screen(k_p_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); + } #endif - rate_p_Co56_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co56_to_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co56_to_Ni57_reaclib) = drate_dT; + rate_Co56_p_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_p_to_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_to_Ni57_reaclib) = drate_dT; + } } - } - { - // He4_Co56_to_Cu60_reaclib + { + // Co56_He4_to_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); - } + log_scor = rate_eval.log_screen(k_He4_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); + } #endif - rate_He4_Co56_to_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co56_to_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co56_to_Cu60_reaclib) = drate_dT; + rate_Co56_He4_to_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_He4_to_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_He4_to_Cu60_reaclib) = drate_dT; + } } - } - { - // n_Co57_to_Co58_reaclib + { + // Co57_n_to_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co57_to_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co57_to_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co57_to_Co58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_n_to_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_n_to_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_n_to_Co58_reaclib) = drate_dT; + } } - } - { - // p_Co57_to_Ni58_reaclib + { + // Co57_p_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); - } + log_scor = rate_eval.log_screen(k_p_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); + } #endif - rate_p_Co57_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_Ni58_reaclib) = drate_dT; + rate_Co57_p_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_to_Ni58_reaclib) = drate_dT; + } } - } - { - // He4_Co57_to_Cu61_reaclib + { + // Co57_He4_to_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co57); - } + log_scor = rate_eval.log_screen(k_He4_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co57); + } #endif - rate_He4_Co57_to_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co57_to_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co57_to_Cu61_reaclib) = drate_dT; + rate_Co57_He4_to_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_He4_to_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_He4_to_Cu61_reaclib) = drate_dT; + } } - } - { - // n_Co58_to_Co59_reaclib + { + // Co58_n_to_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co58_to_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co58_to_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co58_to_Co59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co58_n_to_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_n_to_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_n_to_Co59_reaclib) = drate_dT; + } } - } - { - // p_Co58_to_Ni59_reaclib + { + // Co58_p_to_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co58); - } + log_scor = rate_eval.log_screen(k_p_Co58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co58); + } #endif - rate_p_Co58_to_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co58_to_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co58_to_Ni59_reaclib) = drate_dT; + rate_Co58_p_to_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_p_to_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_p_to_Ni59_reaclib) = drate_dT; + } } - } - { - // He4_Co58_to_Cu62_reaclib + { + // Co58_He4_to_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co58); - } + log_scor = rate_eval.log_screen(k_He4_Co58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co58); + } #endif - rate_He4_Co58_to_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co58_to_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co58_to_Cu62_reaclib) = drate_dT; + rate_Co58_He4_to_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_He4_to_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_He4_to_Cu62_reaclib) = drate_dT; + } } - } - { - // p_Co59_to_Ni60_reaclib + { + // Co59_p_to_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co59); - } + log_scor = rate_eval.log_screen(k_p_Co59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co59); + } #endif - rate_p_Co59_to_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co59_to_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co59_to_Ni60_reaclib) = drate_dT; + rate_Co59_p_to_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_p_to_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_p_to_Ni60_reaclib) = drate_dT; + } } - } - { - // He4_Co59_to_Cu63_reaclib + { + // Co59_He4_to_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co59); - } + log_scor = rate_eval.log_screen(k_He4_Co59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co59); + } #endif - rate_He4_Co59_to_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co59_to_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co59_to_Cu63_reaclib) = drate_dT; + rate_Co59_He4_to_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_He4_to_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_He4_to_Cu63_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_Ni57_reaclib + { + // Ni56_n_to_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_Ni57_reaclib) = drate_dT; + } } - } - { - // p_Ni56_to_Cu57_reaclib + { + // Ni56_p_to_Cu57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni56); - } + log_scor = rate_eval.log_screen(k_p_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni56); + } #endif - rate_p_Ni56_to_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni56_to_Cu57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni56_to_Cu57_reaclib) = drate_dT; + rate_Ni56_p_to_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_p_to_Cu57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_p_to_Cu57_reaclib) = drate_dT; + } } - } - { - // He4_Ni56_to_Zn60_reaclib + { + // Ni56_He4_to_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); - } + log_scor = rate_eval.log_screen(k_He4_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); + } #endif - rate_He4_Ni56_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni56_to_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_Zn60_reaclib) = drate_dT; + rate_Ni56_He4_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_He4_to_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_Zn60_reaclib) = drate_dT; + } } - } - { - // n_Ni57_to_Ni58_reaclib + { + // Ni57_n_to_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_n_to_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_n_to_Ni58_reaclib) = drate_dT; + } } - } - { - // p_Ni57_to_Cu58_reaclib + { + // Ni57_p_to_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni57); - } + log_scor = rate_eval.log_screen(k_p_Ni57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni57); + } #endif - rate_p_Ni57_to_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni57_to_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni57_to_Cu58_reaclib) = drate_dT; + rate_Ni57_p_to_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_p_to_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_p_to_Cu58_reaclib) = drate_dT; + } } - } - { - // He4_Ni57_to_Zn61_reaclib + { + // Ni57_He4_to_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni57); - } + log_scor = rate_eval.log_screen(k_He4_Ni57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni57); + } #endif - rate_He4_Ni57_to_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni57_to_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni57_to_Zn61_reaclib) = drate_dT; + rate_Ni57_He4_to_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_He4_to_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_He4_to_Zn61_reaclib) = drate_dT; + } } - } - { - // n_Ni58_to_Ni59_reaclib + { + // Ni58_n_to_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni58_to_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni58_to_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni58_to_Ni59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_n_to_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_n_to_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_n_to_Ni59_reaclib) = drate_dT; + } } - } - { - // p_Ni58_to_Cu59_reaclib + { + // Ni58_p_to_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); - } + log_scor = rate_eval.log_screen(k_p_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); + } #endif - rate_p_Ni58_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni58_to_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_Cu59_reaclib) = drate_dT; + rate_Ni58_p_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_p_to_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_to_Cu59_reaclib) = drate_dT; + } } - } - { - // He4_Ni58_to_Zn62_reaclib + { + // Ni58_He4_to_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni58); - } + log_scor = rate_eval.log_screen(k_He4_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni58); + } #endif - rate_He4_Ni58_to_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni58_to_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni58_to_Zn62_reaclib) = drate_dT; + rate_Ni58_He4_to_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_He4_to_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_He4_to_Zn62_reaclib) = drate_dT; + } } - } - { - // n_Ni59_to_Ni60_reaclib + { + // Ni59_n_to_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni59_to_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni59_to_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni59_to_Ni60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni59_n_to_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_n_to_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_n_to_Ni60_reaclib) = drate_dT; + } } - } - { - // p_Ni59_to_Cu60_reaclib + { + // Ni59_p_to_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni59); - } + log_scor = rate_eval.log_screen(k_p_Ni59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni59); + } #endif - rate_p_Ni59_to_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni59_to_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni59_to_Cu60_reaclib) = drate_dT; + rate_Ni59_p_to_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_p_to_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_p_to_Cu60_reaclib) = drate_dT; + } } - } - { - // He4_Ni59_to_Zn63_reaclib + { + // Ni59_He4_to_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni59); - } + log_scor = rate_eval.log_screen(k_He4_Ni59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni59); + } #endif - rate_He4_Ni59_to_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni59_to_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni59_to_Zn63_reaclib) = drate_dT; + rate_Ni59_He4_to_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_He4_to_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_He4_to_Zn63_reaclib) = drate_dT; + } } - } - { - // n_Ni60_to_Ni61_reaclib + { + // Ni60_n_to_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni60_to_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni60_to_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni60_to_Ni61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni60_n_to_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_n_to_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_n_to_Ni61_reaclib) = drate_dT; + } } - } - { - // p_Ni60_to_Cu61_reaclib + { + // Ni60_p_to_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni60); - } + log_scor = rate_eval.log_screen(k_p_Ni60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni60); + } #endif - rate_p_Ni60_to_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni60_to_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni60_to_Cu61_reaclib) = drate_dT; + rate_Ni60_p_to_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_p_to_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_p_to_Cu61_reaclib) = drate_dT; + } } - } - { - // He4_Ni60_to_Zn64_reaclib + { + // Ni60_He4_to_Zn64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni60); - } + log_scor = rate_eval.log_screen(k_He4_Ni60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni60); + } #endif - rate_He4_Ni60_to_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni60_to_Zn64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni60_to_Zn64_reaclib) = drate_dT; + rate_Ni60_He4_to_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_He4_to_Zn64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_He4_to_Zn64_reaclib) = drate_dT; + } } - } - { - // n_Ni61_to_Ni62_reaclib + { + // Ni61_n_to_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni61_to_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni61_to_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni61_to_Ni62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni61_n_to_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_n_to_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_n_to_Ni62_reaclib) = drate_dT; + } } - } - { - // p_Ni61_to_Cu62_reaclib + { + // Ni61_p_to_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni61); - } + log_scor = rate_eval.log_screen(k_p_Ni61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni61); + } #endif - rate_p_Ni61_to_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni61_to_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni61_to_Cu62_reaclib) = drate_dT; + rate_Ni61_p_to_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_p_to_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_p_to_Cu62_reaclib) = drate_dT; + } } - } - { - // He4_Ni61_to_Zn65_reaclib + { + // Ni61_He4_to_Zn65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni61); - } + log_scor = rate_eval.log_screen(k_He4_Ni61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni61); + } #endif - rate_He4_Ni61_to_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni61_to_Zn65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni61_to_Zn65_reaclib) = drate_dT; + rate_Ni61_He4_to_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_He4_to_Zn65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_He4_to_Zn65_reaclib) = drate_dT; + } } - } - { - // n_Ni62_to_Ni63_reaclib + { + // Ni62_n_to_Ni63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni62_to_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni62_to_Ni63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni62_to_Ni63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni62_n_to_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_n_to_Ni63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_n_to_Ni63_reaclib) = drate_dT; + } } - } - { - // p_Ni62_to_Cu63_reaclib + { + // Ni62_p_to_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni62); - } + log_scor = rate_eval.log_screen(k_p_Ni62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni62); + } #endif - rate_p_Ni62_to_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni62_to_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni62_to_Cu63_reaclib) = drate_dT; + rate_Ni62_p_to_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_p_to_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_p_to_Cu63_reaclib) = drate_dT; + } } - } - { - // He4_Ni62_to_Zn66_reaclib + { + // Ni62_He4_to_Zn66_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni62); - } + log_scor = rate_eval.log_screen(k_He4_Ni62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni62); + } #endif - rate_He4_Ni62_to_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni62_to_Zn66_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni62_to_Zn66_reaclib) = drate_dT; + rate_Ni62_He4_to_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_He4_to_Zn66_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_He4_to_Zn66_reaclib) = drate_dT; + } } - } - { - // n_Ni63_to_Ni64_reaclib + { + // Ni63_n_to_Ni64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni63_to_Ni64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni63_to_Ni64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni63_to_Ni64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni63_n_to_Ni64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni63_n_to_Ni64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni63_n_to_Ni64_reaclib) = drate_dT; + } } - } - { - // p_Ni63_to_Cu64_reaclib + { + // Ni63_p_to_Cu64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni63); - } + log_scor = rate_eval.log_screen(k_p_Ni63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni63); + } #endif - rate_p_Ni63_to_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni63_to_Cu64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni63_to_Cu64_reaclib) = drate_dT; + rate_Ni63_p_to_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni63_p_to_Cu64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni63_p_to_Cu64_reaclib) = drate_dT; + } } - } - { - // p_Ni64_to_Cu65_reaclib + { + // Ni64_p_to_Cu65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni64); - } + log_scor = rate_eval.log_screen(k_p_Ni64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni64); + } #endif - rate_p_Ni64_to_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni64_to_Cu65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni64_to_Cu65_reaclib) = drate_dT; + rate_Ni64_p_to_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni64_p_to_Cu65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni64_p_to_Cu65_reaclib) = drate_dT; + } } - } - { - // n_Cu57_to_Cu58_reaclib + { + // Cu57_n_to_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu57_to_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu57_to_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu57_to_Cu58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu57_n_to_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu57_n_to_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu57_n_to_Cu58_reaclib) = drate_dT; + } } - } - { - // n_Cu58_to_Cu59_reaclib + { + // Cu58_n_to_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu58_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu58_to_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu58_to_Cu59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu58_n_to_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_n_to_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_n_to_Cu59_reaclib) = drate_dT; + } } - } - { - // p_Cu58_to_Zn59_reaclib + { + // Cu58_p_to_Zn59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu58); - } + log_scor = rate_eval.log_screen(k_p_Cu58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu58); + } #endif - rate_p_Cu58_to_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu58_to_Zn59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu58_to_Zn59_reaclib) = drate_dT; + rate_Cu58_p_to_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_p_to_Zn59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_p_to_Zn59_reaclib) = drate_dT; + } } - } - { - // He4_Cu58_to_Ga62_reaclib + { + // Cu58_He4_to_Ga62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu58); - } + log_scor = rate_eval.log_screen(k_He4_Cu58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu58); + } #endif - rate_He4_Cu58_to_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu58_to_Ga62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu58_to_Ga62_reaclib) = drate_dT; + rate_Cu58_He4_to_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_He4_to_Ga62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_He4_to_Ga62_reaclib) = drate_dT; + } } - } - { - // n_Cu59_to_Cu60_reaclib + { + // Cu59_n_to_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu59_to_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu59_to_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu59_to_Cu60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_n_to_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_n_to_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_n_to_Cu60_reaclib) = drate_dT; + } } - } - { - // p_Cu59_to_Zn60_reaclib + { + // Cu59_p_to_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); - } + log_scor = rate_eval.log_screen(k_p_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); + } #endif - rate_p_Cu59_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_Zn60_reaclib) = drate_dT; + rate_Cu59_p_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_p_to_Zn60_reaclib) = drate_dT; + } } - } - { - // He4_Cu59_to_Ga63_reaclib + { + // Cu59_He4_to_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu59); - } + log_scor = rate_eval.log_screen(k_He4_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu59); + } #endif - rate_He4_Cu59_to_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu59_to_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu59_to_Ga63_reaclib) = drate_dT; + rate_Cu59_He4_to_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_He4_to_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_He4_to_Ga63_reaclib) = drate_dT; + } } - } - { - // n_Cu60_to_Cu61_reaclib + { + // Cu60_n_to_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu60_to_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu60_to_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu60_to_Cu61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu60_n_to_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_n_to_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_n_to_Cu61_reaclib) = drate_dT; + } } - } - { - // p_Cu60_to_Zn61_reaclib + { + // Cu60_p_to_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu60); - } + log_scor = rate_eval.log_screen(k_p_Cu60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu60); + } #endif - rate_p_Cu60_to_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu60_to_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu60_to_Zn61_reaclib) = drate_dT; + rate_Cu60_p_to_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_p_to_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_p_to_Zn61_reaclib) = drate_dT; + } } - } - { - // He4_Cu60_to_Ga64_reaclib + { + // Cu60_He4_to_Ga64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu60); - } + log_scor = rate_eval.log_screen(k_He4_Cu60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu60); + } #endif - rate_He4_Cu60_to_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu60_to_Ga64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu60_to_Ga64_reaclib) = drate_dT; + rate_Cu60_He4_to_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_He4_to_Ga64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_He4_to_Ga64_reaclib) = drate_dT; + } } - } - { - // n_Cu61_to_Cu62_reaclib + { + // Cu61_n_to_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu61_to_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu61_to_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu61_to_Cu62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu61_n_to_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_n_to_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_n_to_Cu62_reaclib) = drate_dT; + } } - } - { - // p_Cu61_to_Zn62_reaclib + { + // Cu61_p_to_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu61); - } + log_scor = rate_eval.log_screen(k_p_Cu61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu61); + } #endif - rate_p_Cu61_to_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu61_to_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu61_to_Zn62_reaclib) = drate_dT; + rate_Cu61_p_to_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_p_to_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_p_to_Zn62_reaclib) = drate_dT; + } } - } - { - // n_Cu62_to_Cu63_reaclib + { + // Cu62_n_to_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu62_to_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu62_to_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu62_to_Cu63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu62_n_to_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_n_to_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_n_to_Cu63_reaclib) = drate_dT; + } } - } - { - // p_Cu62_to_Zn63_reaclib + { + // Cu62_p_to_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu62); - } + log_scor = rate_eval.log_screen(k_p_Cu62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu62); + } #endif - rate_p_Cu62_to_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu62_to_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu62_to_Zn63_reaclib) = drate_dT; + rate_Cu62_p_to_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_p_to_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_p_to_Zn63_reaclib) = drate_dT; + } } - } - { - // n_Cu63_to_Cu64_reaclib + { + // Cu63_n_to_Cu64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu63_to_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu63_to_Cu64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu63_to_Cu64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu63_n_to_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_n_to_Cu64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_n_to_Cu64_reaclib) = drate_dT; + } } - } - { - // p_Cu63_to_Zn64_reaclib + { + // Cu63_p_to_Zn64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu63); - } + log_scor = rate_eval.log_screen(k_p_Cu63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu63); + } #endif - rate_p_Cu63_to_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu63_to_Zn64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu63_to_Zn64_reaclib) = drate_dT; + rate_Cu63_p_to_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_p_to_Zn64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_p_to_Zn64_reaclib) = drate_dT; + } } - } - { - // n_Cu64_to_Cu65_reaclib + { + // Cu64_n_to_Cu65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu64_to_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu64_to_Cu65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu64_to_Cu65_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu64_n_to_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu64_n_to_Cu65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_n_to_Cu65_reaclib) = drate_dT; + } } - } - { - // p_Cu64_to_Zn65_reaclib + { + // Cu64_p_to_Zn65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu64); - } + log_scor = rate_eval.log_screen(k_p_Cu64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu64); + } #endif - rate_p_Cu64_to_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu64_to_Zn65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu64_to_Zn65_reaclib) = drate_dT; + rate_Cu64_p_to_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu64_p_to_Zn65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_p_to_Zn65_reaclib) = drate_dT; + } } - } - { - // p_Cu65_to_Zn66_reaclib + { + // Cu65_p_to_Zn66_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu65); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu65); - } + log_scor = rate_eval.log_screen(k_p_Cu65); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu65); + } #endif - rate_p_Cu65_to_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu65_to_Zn66_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu65_to_Zn66_reaclib) = drate_dT; + rate_Cu65_p_to_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu65_p_to_Zn66_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu65_p_to_Zn66_reaclib) = drate_dT; + } } - } - { - // n_Zn59_to_Zn60_reaclib + { + // Zn59_n_to_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn59_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn59_to_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn59_to_Zn60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn59_n_to_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_n_to_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn59_n_to_Zn60_reaclib) = drate_dT; + } } - } - { - // He4_Zn59_to_Ge63_reaclib + { + // Zn59_He4_to_Ge63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Zn59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn59); - } + log_scor = rate_eval.log_screen(k_He4_Zn59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn59); + } #endif - rate_He4_Zn59_to_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Zn59_to_Ge63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Zn59_to_Ge63_reaclib) = drate_dT; + rate_Zn59_He4_to_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_He4_to_Ge63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn59_He4_to_Ge63_reaclib) = drate_dT; + } } - } - { - // n_Zn60_to_Zn61_reaclib + { + // Zn60_n_to_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn60_to_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn60_to_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn60_to_Zn61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_n_to_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_n_to_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_n_to_Zn61_reaclib) = drate_dT; + } } - } - { - // He4_Zn60_to_Ge64_reaclib + { + // Zn60_He4_to_Ge64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Zn60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn60); - } + log_scor = rate_eval.log_screen(k_He4_Zn60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn60); + } #endif - rate_He4_Zn60_to_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Zn60_to_Ge64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Zn60_to_Ge64_reaclib) = drate_dT; + rate_Zn60_He4_to_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_He4_to_Ge64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_He4_to_Ge64_reaclib) = drate_dT; + } } - } - { - // n_Zn61_to_Zn62_reaclib + { + // Zn61_n_to_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn61_to_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn61_to_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn61_to_Zn62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn61_n_to_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_n_to_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_n_to_Zn62_reaclib) = drate_dT; + } } - } - { - // p_Zn61_to_Ga62_reaclib + { + // Zn61_p_to_Ga62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn61); - } + log_scor = rate_eval.log_screen(k_p_Zn61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn61); + } #endif - rate_p_Zn61_to_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn61_to_Ga62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn61_to_Ga62_reaclib) = drate_dT; + rate_Zn61_p_to_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_p_to_Ga62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_p_to_Ga62_reaclib) = drate_dT; + } } - } - { - // n_Zn62_to_Zn63_reaclib + { + // Zn62_n_to_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn62_to_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn62_to_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn62_to_Zn63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn62_n_to_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_n_to_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_n_to_Zn63_reaclib) = drate_dT; + } } - } - { - // p_Zn62_to_Ga63_reaclib + { + // Zn62_p_to_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn62); - } + log_scor = rate_eval.log_screen(k_p_Zn62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn62); + } #endif - rate_p_Zn62_to_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn62_to_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn62_to_Ga63_reaclib) = drate_dT; + rate_Zn62_p_to_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_p_to_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_p_to_Ga63_reaclib) = drate_dT; + } } - } - { - // n_Zn63_to_Zn64_reaclib + { + // Zn63_n_to_Zn64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn63_to_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn63_to_Zn64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn63_to_Zn64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn63_n_to_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_n_to_Zn64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_n_to_Zn64_reaclib) = drate_dT; + } } - } - { - // p_Zn63_to_Ga64_reaclib + { + // Zn63_p_to_Ga64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn63); - } + log_scor = rate_eval.log_screen(k_p_Zn63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn63); + } #endif - rate_p_Zn63_to_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn63_to_Ga64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn63_to_Ga64_reaclib) = drate_dT; + rate_Zn63_p_to_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_p_to_Ga64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_p_to_Ga64_reaclib) = drate_dT; + } } - } - { - // n_Zn64_to_Zn65_reaclib + { + // Zn64_n_to_Zn65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn64_to_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn64_to_Zn65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn64_to_Zn65_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn64_n_to_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn64_n_to_Zn65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_n_to_Zn65_reaclib) = drate_dT; + } } - } - { - // n_Zn65_to_Zn66_reaclib + { + // Zn65_n_to_Zn66_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn65_to_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn65_to_Zn66_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn65_to_Zn66_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn65_n_to_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn65_n_to_Zn66_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn65_n_to_Zn66_reaclib) = drate_dT; + } } - } - { - // n_Ga62_to_Ga63_reaclib + { + // Ga62_n_to_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ga62_to_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ga62_to_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ga62_to_Ga63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga62_n_to_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga62_n_to_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga62_n_to_Ga63_reaclib) = drate_dT; + } } - } - { - // p_Ga62_to_Ge63_reaclib + { + // Ga62_p_to_Ge63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ga62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga62); - } + log_scor = rate_eval.log_screen(k_p_Ga62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga62); + } #endif - rate_p_Ga62_to_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ga62_to_Ge63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ga62_to_Ge63_reaclib) = drate_dT; + rate_Ga62_p_to_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga62_p_to_Ge63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga62_p_to_Ge63_reaclib) = drate_dT; + } } - } - { - // n_Ga63_to_Ga64_reaclib + { + // Ga63_n_to_Ga64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ga63_to_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ga63_to_Ga64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ga63_to_Ga64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga63_n_to_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_n_to_Ga64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_n_to_Ga64_reaclib) = drate_dT; + } } - } - { - // p_Ga63_to_Ge64_reaclib + { + // Ga63_p_to_Ge64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ga63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga63); - } + log_scor = rate_eval.log_screen(k_p_Ga63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga63); + } #endif - rate_p_Ga63_to_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ga63_to_Ge64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ga63_to_Ge64_reaclib) = drate_dT; + rate_Ga63_p_to_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_p_to_Ge64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_p_to_Ge64_reaclib) = drate_dT; + } } - } - { - // n_Ge63_to_Ge64_reaclib + { + // Ge63_n_to_Ge64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ge63_to_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ge63_to_Ge64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ge63_to_Ge64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge63_n_to_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge63_n_to_Ge64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge63_n_to_Ge64_reaclib) = drate_dT; + } } - } - { - // d_d_to_n_He3_reaclib + { + // d_d_to_n_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_d); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_d); - } + log_scor = rate_eval.log_screen(k_d_d); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_d); + } #endif - rate_d_d_to_n_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_d_to_n_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_d_to_n_He3_reaclib) = drate_dT; + rate_d_d_to_n_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_d_to_n_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_d_to_n_He3_reaclib) = drate_dT; + } } - } - { - // n_He3_to_d_d_reaclib + { + // He3_n_to_d_d_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_He3_to_d_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_He3_to_d_d_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_He3_to_d_d_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_He3_n_to_d_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_n_to_d_d_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_n_to_d_d_reaclib) = drate_dT; + } } - } - { - // d_He3_to_p_He4_reaclib + { + // He3_d_to_p_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_He3); - } + log_scor = rate_eval.log_screen(k_d_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_He3); + } #endif - rate_d_He3_to_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_He3_to_p_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_He3_to_p_He4_reaclib) = drate_dT; + rate_He3_d_to_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_d_to_p_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_d_to_p_He4_reaclib) = drate_dT; + } } - } - { - // He4_He3_to_p_Li6_reaclib + { + // He3_He4_to_p_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He4); - } + log_scor = rate_eval.log_screen(k_He3_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He4); + } #endif - rate_He4_He3_to_p_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He3_to_p_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He3_to_p_Li6_reaclib) = drate_dT; + rate_He3_He4_to_p_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_He4_to_p_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_He4_to_p_Li6_reaclib) = drate_dT; + } } - } - { - // p_He4_to_d_He3_reaclib + { + // He4_p_to_d_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He4); - } + log_scor = rate_eval.log_screen(k_p_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He4); + } #endif - rate_p_He4_to_d_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He4_to_d_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_He4_to_d_He3_reaclib) = drate_dT; + rate_He4_p_to_d_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_p_to_d_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_p_to_d_He3_reaclib) = drate_dT; + } } - } - { - // He4_He4_to_n_Be7_reaclib + { + // He4_He4_to_n_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4); - } + log_scor = rate_eval.log_screen(k_He4_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4); + } #endif - rate_He4_He4_to_n_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_to_n_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_to_n_Be7_reaclib) = drate_dT; + rate_He4_He4_to_n_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_to_n_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_to_n_Be7_reaclib) = drate_dT; + } } - } - { - // He4_He4_to_p_Li7_reaclib + { + // He4_He4_to_p_Li7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4); - } + log_scor = rate_eval.log_screen(k_He4_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4); + } #endif - rate_He4_He4_to_p_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_to_p_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_to_p_Li7_reaclib) = drate_dT; + rate_He4_He4_to_p_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_to_p_Li7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_to_p_Li7_reaclib) = drate_dT; + } } - } - { - // p_Li6_to_He4_He3_reaclib + { + // Li6_p_to_He4_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Li6); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li6); - } + log_scor = rate_eval.log_screen(k_p_Li6); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li6); + } #endif - rate_p_Li6_to_He4_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Li6_to_He4_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Li6_to_He4_He3_reaclib) = drate_dT; + rate_Li6_p_to_He4_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_p_to_He4_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_p_to_He4_He3_reaclib) = drate_dT; + } } - } - { - // d_Li6_to_n_Be7_reaclib + { + // Li6_d_to_n_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_Li6); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Li6); - } + log_scor = rate_eval.log_screen(k_d_Li6); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Li6); + } #endif - rate_d_Li6_to_n_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_Li6_to_n_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_Li6_to_n_Be7_reaclib) = drate_dT; + rate_Li6_d_to_n_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_d_to_n_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_d_to_n_Be7_reaclib) = drate_dT; + } } - } - { - // d_Li6_to_p_Li7_reaclib + { + // Li6_d_to_p_Li7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_Li6); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Li6); - } + log_scor = rate_eval.log_screen(k_d_Li6); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Li6); + } #endif - rate_d_Li6_to_p_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_Li6_to_p_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_Li6_to_p_Li7_reaclib) = drate_dT; + rate_Li6_d_to_p_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_d_to_p_Li7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_d_to_p_Li7_reaclib) = drate_dT; + } } - } - { - // He4_Li6_to_p_Be9_reaclib + { + // Li6_He4_to_p_Be9_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Li6); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li6); - } + log_scor = rate_eval.log_screen(k_He4_Li6); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li6); + } #endif - rate_He4_Li6_to_p_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Li6_to_p_Be9_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Li6_to_p_Be9_reaclib) = drate_dT; + rate_Li6_He4_to_p_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li6_He4_to_p_Be9_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li6_He4_to_p_Be9_reaclib) = drate_dT; + } } - } - { - // p_Li7_to_n_Be7_reaclib + { + // Li7_p_to_n_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li7); - } + log_scor = rate_eval.log_screen(k_p_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li7); + } #endif - rate_p_Li7_to_n_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Li7_to_n_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Li7_to_n_Be7_reaclib) = drate_dT; + rate_Li7_p_to_n_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_p_to_n_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_p_to_n_Be7_reaclib) = drate_dT; + } } - } - { - // p_Li7_to_d_Li6_reaclib + { + // Li7_p_to_d_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li7); - } + log_scor = rate_eval.log_screen(k_p_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li7); + } #endif - rate_p_Li7_to_d_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Li7_to_d_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Li7_to_d_Li6_reaclib) = drate_dT; + rate_Li7_p_to_d_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_p_to_d_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_p_to_d_Li6_reaclib) = drate_dT; + } } - } - { - // p_Li7_to_He4_He4_reaclib + { + // Li7_p_to_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li7); - } + log_scor = rate_eval.log_screen(k_p_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Li7); + } #endif - rate_p_Li7_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Li7_to_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Li7_to_He4_He4_reaclib) = drate_dT; + rate_Li7_p_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_p_to_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_p_to_He4_He4_reaclib) = drate_dT; + } } - } - { - // He4_Li7_to_n_B10_reaclib + { + // Li7_He4_to_n_B10_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li7); - } + log_scor = rate_eval.log_screen(k_He4_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Li7); + } #endif - rate_He4_Li7_to_n_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Li7_to_n_B10_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Li7_to_n_B10_reaclib) = drate_dT; + rate_Li7_He4_to_n_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_He4_to_n_B10_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_He4_to_n_B10_reaclib) = drate_dT; + } } - } - { - // n_Be7_to_p_Li7_reaclib + { + // Be7_n_to_p_Li7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Be7_to_p_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Be7_to_p_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Be7_to_p_Li7_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Be7_n_to_p_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_n_to_p_Li7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_n_to_p_Li7_reaclib) = drate_dT; + } } - } - { - // n_Be7_to_d_Li6_reaclib + { + // Be7_n_to_d_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Be7_to_d_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Be7_to_d_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Be7_to_d_Li6_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Be7_n_to_d_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_n_to_d_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_n_to_d_Li6_reaclib) = drate_dT; + } } - } - { - // n_Be7_to_He4_He4_reaclib + { + // Be7_n_to_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Be7_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Be7_to_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Be7_to_He4_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Be7_n_to_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_n_to_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_n_to_He4_He4_reaclib) = drate_dT; + } } - } - { - // He4_Be7_to_p_B10_reaclib + { + // Be7_He4_to_p_B10_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Be7); - } + log_scor = rate_eval.log_screen(k_He4_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Be7); + } #endif - rate_He4_Be7_to_p_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Be7_to_p_B10_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Be7_to_p_B10_reaclib) = drate_dT; + rate_Be7_He4_to_p_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_He4_to_p_B10_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_He4_to_p_B10_reaclib) = drate_dT; + } } - } - { - // p_Be9_to_He4_Li6_reaclib + { + // Be9_p_to_He4_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Be9); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be9); - } + log_scor = rate_eval.log_screen(k_p_Be9); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be9); + } #endif - rate_p_Be9_to_He4_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Be9_to_He4_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Be9_to_He4_Li6_reaclib) = drate_dT; + rate_Be9_p_to_He4_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be9_p_to_He4_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be9_p_to_He4_Li6_reaclib) = drate_dT; + } } - } - { - // He4_Be9_to_n_C12_reaclib + { + // Be9_He4_to_n_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Be9); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Be9); - } + log_scor = rate_eval.log_screen(k_He4_Be9); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Be9); + } #endif - rate_He4_Be9_to_n_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Be9_to_n_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Be9_to_n_C12_reaclib) = drate_dT; + rate_Be9_He4_to_n_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be9_He4_to_n_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be9_He4_to_n_C12_reaclib) = drate_dT; + } } - } - { - // n_B10_to_He4_Li7_reaclib + { + // B10_n_to_He4_Li7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_B10_to_He4_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_B10_to_He4_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_B10_to_He4_Li7_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B10_n_to_He4_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B10_n_to_He4_Li7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B10_n_to_He4_Li7_reaclib) = drate_dT; + } } - } - { - // p_B10_to_He4_Be7_reaclib + { + // B10_p_to_He4_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_B10); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B10); - } + log_scor = rate_eval.log_screen(k_p_B10); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B10); + } #endif - rate_p_B10_to_He4_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_B10_to_He4_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_B10_to_He4_Be7_reaclib) = drate_dT; + rate_B10_p_to_He4_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B10_p_to_He4_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B10_p_to_He4_Be7_reaclib) = drate_dT; + } } - } - { - // He4_B10_to_n_N13_reaclib + { + // B10_He4_to_n_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_B10); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_B10); - } + log_scor = rate_eval.log_screen(k_He4_B10); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_B10); + } #endif - rate_He4_B10_to_n_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_B10_to_n_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_B10_to_n_N13_reaclib) = drate_dT; + rate_B10_He4_to_n_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B10_He4_to_n_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B10_He4_to_n_N13_reaclib) = drate_dT; + } } - } - { - // He4_B10_to_p_C13_reaclib + { + // B10_He4_to_p_C13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_B10); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_B10); - } + log_scor = rate_eval.log_screen(k_He4_B10); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_B10); + } #endif - rate_He4_B10_to_p_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_B10_to_p_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_B10_to_p_C13_reaclib) = drate_dT; + rate_B10_He4_to_p_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B10_He4_to_p_C13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B10_He4_to_p_C13_reaclib) = drate_dT; + } } - } - { - // He4_B11_to_n_N14_reaclib + { + // B11_He4_to_n_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_B11); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_B11); - } + log_scor = rate_eval.log_screen(k_He4_B11); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_B11); + } #endif - rate_He4_B11_to_n_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_B11_to_n_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_B11_to_n_N14_reaclib) = drate_dT; + rate_B11_He4_to_n_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B11_He4_to_n_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B11_He4_to_n_N14_reaclib) = drate_dT; + } } - } - { - // He4_B11_to_p_C14_reaclib + { + // B11_He4_to_p_C14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_B11); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_B11); - } + log_scor = rate_eval.log_screen(k_He4_B11); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_B11); + } #endif - rate_He4_B11_to_p_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_B11_to_p_C14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_B11_to_p_C14_reaclib) = drate_dT; + rate_B11_He4_to_p_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B11_He4_to_p_C14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B11_He4_to_p_C14_reaclib) = drate_dT; + } } - } - { - // n_C12_to_He4_Be9_reaclib + { + // C12_n_to_He4_Be9_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_C12_to_He4_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_C12_to_He4_Be9_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_C12_to_He4_Be9_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_C12_n_to_He4_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_n_to_He4_Be9_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_n_to_He4_Be9_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_n_O15_reaclib + { + // C12_He4_to_n_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_n_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_n_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_n_O15_reaclib) = drate_dT; + rate_C12_He4_to_n_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_n_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_n_O15_reaclib) = drate_dT; + } } - } - { - // He4_C12_to_p_N15_reaclib + { + // C12_He4_to_p_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); - } + log_scor = rate_eval.log_screen(k_He4_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C12); + } #endif - rate_He4_C12_to_p_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C12_to_p_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C12_to_p_N15_reaclib) = drate_dT; + rate_C12_He4_to_p_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_He4_to_p_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_He4_to_p_N15_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_n_Mg23_reaclib + { + // C12_C12_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + rate_C12_C12_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_p_Na23_reaclib + { + // C12_C12_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + rate_C12_C12_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // C12_C12_to_He4_Ne20_reaclib + { + // C12_C12_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_C12); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); - } + log_scor = rate_eval.log_screen(k_C12_C12); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_C12); + } #endif - rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + rate_C12_C12_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C12_C12_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C12_C12_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_C13_to_n_N13_reaclib + { + // C13_p_to_n_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); - } + log_scor = rate_eval.log_screen(k_p_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); + } #endif - rate_p_C13_to_n_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_n_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_n_N13_reaclib) = drate_dT; + rate_C13_p_to_n_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_p_to_n_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_p_to_n_N13_reaclib) = drate_dT; + } } - } - { - // p_C13_to_He4_B10_reaclib + { + // C13_p_to_He4_B10_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); - } + log_scor = rate_eval.log_screen(k_p_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C13); + } #endif - rate_p_C13_to_He4_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C13_to_He4_B10_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C13_to_He4_B10_reaclib) = drate_dT; + rate_C13_p_to_He4_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_p_to_He4_B10_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_p_to_He4_B10_reaclib) = drate_dT; + } } - } - { - // d_C13_to_n_N14_reaclib + { + // C13_d_to_n_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_C13); - } + log_scor = rate_eval.log_screen(k_d_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_C13); + } #endif - rate_d_C13_to_n_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_C13_to_n_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_C13_to_n_N14_reaclib) = drate_dT; + rate_C13_d_to_n_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_d_to_n_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_d_to_n_N14_reaclib) = drate_dT; + } } - } - { - // He4_C13_to_n_O16_reaclib + { + // C13_He4_to_n_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C13); - } + log_scor = rate_eval.log_screen(k_He4_C13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C13); + } #endif - rate_He4_C13_to_n_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C13_to_n_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C13_to_n_O16_reaclib) = drate_dT; + rate_C13_He4_to_n_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C13_He4_to_n_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C13_He4_to_n_O16_reaclib) = drate_dT; + } } - } - { - // p_C14_to_n_N14_reaclib + { + // C14_p_to_n_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C14); - } + log_scor = rate_eval.log_screen(k_p_C14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C14); + } #endif - rate_p_C14_to_n_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C14_to_n_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C14_to_n_N14_reaclib) = drate_dT; + rate_C14_p_to_n_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_p_to_n_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C14_p_to_n_N14_reaclib) = drate_dT; + } } - } - { - // p_C14_to_He4_B11_reaclib + { + // C14_p_to_He4_B11_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_C14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C14); - } + log_scor = rate_eval.log_screen(k_p_C14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_C14); + } #endif - rate_p_C14_to_He4_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_C14_to_He4_B11_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_C14_to_He4_B11_reaclib) = drate_dT; + rate_C14_p_to_He4_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_p_to_He4_B11_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C14_p_to_He4_B11_reaclib) = drate_dT; + } } - } - { - // d_C14_to_n_N15_reaclib + { + // C14_d_to_n_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_C14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_C14); - } + log_scor = rate_eval.log_screen(k_d_C14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_C14); + } #endif - rate_d_C14_to_n_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_C14_to_n_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_C14_to_n_N15_reaclib) = drate_dT; + rate_C14_d_to_n_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_d_to_n_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C14_d_to_n_N15_reaclib) = drate_dT; + } } - } - { - // He4_C14_to_n_O17_reaclib + { + // C14_He4_to_n_O17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_C14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C14); - } + log_scor = rate_eval.log_screen(k_He4_C14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_C14); + } #endif - rate_He4_C14_to_n_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_C14_to_n_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_C14_to_n_O17_reaclib) = drate_dT; + rate_C14_He4_to_n_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_C14_He4_to_n_O17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_C14_He4_to_n_O17_reaclib) = drate_dT; + } } - } - { - // n_N13_to_p_C13_reaclib + { + // N13_n_to_p_C13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_N13_to_p_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_N13_to_p_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_N13_to_p_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_n_to_p_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_n_to_p_C13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_n_to_p_C13_reaclib) = drate_dT; + } } - } - { - // n_N13_to_He4_B10_reaclib + { + // N13_n_to_He4_B10_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_N13_to_He4_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_N13_to_He4_B10_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_N13_to_He4_B10_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N13_n_to_He4_B10_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_n_to_He4_B10_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_n_to_He4_B10_reaclib) = drate_dT; + } } - } - { - // He4_N13_to_p_O16_reaclib + { + // N13_He4_to_p_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N13); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); - } + log_scor = rate_eval.log_screen(k_He4_N13); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N13); + } #endif - rate_He4_N13_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N13_to_p_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N13_to_p_O16_reaclib) = drate_dT; + rate_N13_He4_to_p_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N13_He4_to_p_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N13_He4_to_p_O16_reaclib) = drate_dT; + } } - } - { - // n_N14_to_p_C14_reaclib + { + // N14_n_to_p_C14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_N14_to_p_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_N14_to_p_C14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_N14_to_p_C14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_n_to_p_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_n_to_p_C14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_n_to_p_C14_reaclib) = drate_dT; + } } - } - { - // n_N14_to_d_C13_reaclib + { + // N14_n_to_d_C13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_N14_to_d_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_N14_to_d_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_N14_to_d_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_n_to_d_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_n_to_d_C13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_n_to_d_C13_reaclib) = drate_dT; + } } - } - { - // n_N14_to_He4_B11_reaclib + { + // N14_n_to_He4_B11_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_N14_to_He4_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_N14_to_He4_B11_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_N14_to_He4_B11_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N14_n_to_He4_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_n_to_He4_B11_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_n_to_He4_B11_reaclib) = drate_dT; + } } - } - { - // p_N14_to_n_O14_reaclib + { + // N14_p_to_n_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); - } + log_scor = rate_eval.log_screen(k_p_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N14); + } #endif - rate_p_N14_to_n_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N14_to_n_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N14_to_n_O14_reaclib) = drate_dT; + rate_N14_p_to_n_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_p_to_n_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_p_to_n_O14_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_n_F17_reaclib + { + // N14_He4_to_n_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_n_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_n_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_n_F17_reaclib) = drate_dT; + rate_N14_He4_to_n_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_n_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_n_F17_reaclib) = drate_dT; + } } - } - { - // He4_N14_to_p_O17_reaclib + { + // N14_He4_to_p_O17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); - } + log_scor = rate_eval.log_screen(k_He4_N14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N14); + } #endif - rate_He4_N14_to_p_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N14_to_p_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N14_to_p_O17_reaclib) = drate_dT; + rate_N14_He4_to_p_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N14_He4_to_p_O17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N14_He4_to_p_O17_reaclib) = drate_dT; + } } - } - { - // n_N15_to_d_C14_reaclib + { + // N15_n_to_d_C14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_N15_to_d_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_N15_to_d_C14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_N15_to_d_C14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_N15_n_to_d_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_n_to_d_C14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_n_to_d_C14_reaclib) = drate_dT; + } } - } - { - // p_N15_to_n_O15_reaclib + { + // N15_p_to_n_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_n_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_n_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_n_O15_reaclib) = drate_dT; + rate_N15_p_to_n_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_n_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_n_O15_reaclib) = drate_dT; + } } - } - { - // p_N15_to_He4_C12_reaclib + { + // N15_p_to_He4_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); - } + log_scor = rate_eval.log_screen(k_p_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_N15); + } #endif - rate_p_N15_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_N15_to_He4_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_N15_to_He4_C12_reaclib) = drate_dT; + rate_N15_p_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_p_to_He4_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_p_to_He4_C12_reaclib) = drate_dT; + } } - } - { - // He4_N15_to_n_F18_reaclib + { + // N15_He4_to_n_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_n_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N15_to_n_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_n_F18_reaclib) = drate_dT; + rate_N15_He4_to_n_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_He4_to_n_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_n_F18_reaclib) = drate_dT; + } } - } - { - // He4_N15_to_p_O18_reaclib + { + // N15_He4_to_p_O18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_N15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); - } + log_scor = rate_eval.log_screen(k_He4_N15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_N15); + } #endif - rate_He4_N15_to_p_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_N15_to_p_O18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_N15_to_p_O18_reaclib) = drate_dT; + rate_N15_He4_to_p_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_N15_He4_to_p_O18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_N15_He4_to_p_O18_reaclib) = drate_dT; + } } - } - { - // n_O14_to_p_N14_reaclib + { + // O14_n_to_p_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O14_to_p_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O14_to_p_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O14_to_p_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O14_n_to_p_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_n_to_p_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_n_to_p_N14_reaclib) = drate_dT; + } } - } - { - // He4_O14_to_p_F17_reaclib + { + // O14_He4_to_p_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O14); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); - } + log_scor = rate_eval.log_screen(k_He4_O14); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O14); + } #endif - rate_He4_O14_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O14_to_p_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O14_to_p_F17_reaclib) = drate_dT; + rate_O14_He4_to_p_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O14_He4_to_p_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O14_He4_to_p_F17_reaclib) = drate_dT; + } } - } - { - // n_O15_to_p_N15_reaclib + { + // O15_n_to_p_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O15_to_p_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O15_to_p_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O15_to_p_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_n_to_p_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_n_to_p_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_n_to_p_N15_reaclib) = drate_dT; + } } - } - { - // n_O15_to_He4_C12_reaclib + { + // O15_n_to_He4_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O15_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O15_to_He4_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O15_to_He4_C12_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O15_n_to_He4_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_n_to_He4_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_n_to_He4_C12_reaclib) = drate_dT; + } } - } - { - // He4_O15_to_n_Ne18_reaclib + { + // O15_He4_to_n_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_n_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O15_to_n_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_n_Ne18_reaclib) = drate_dT; + rate_O15_He4_to_n_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_He4_to_n_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_n_Ne18_reaclib) = drate_dT; + } } - } - { - // He4_O15_to_p_F18_reaclib + { + // O15_He4_to_p_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O15); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); - } + log_scor = rate_eval.log_screen(k_He4_O15); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O15); + } #endif - rate_He4_O15_to_p_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O15_to_p_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O15_to_p_F18_reaclib) = drate_dT; + rate_O15_He4_to_p_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O15_He4_to_p_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O15_He4_to_p_F18_reaclib) = drate_dT; + } } - } - { - // n_O16_to_He4_C13_reaclib + { + // O16_n_to_He4_C13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O16_to_He4_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O16_to_He4_C13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O16_to_He4_C13_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O16_n_to_He4_C13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_n_to_He4_C13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_n_to_He4_C13_reaclib) = drate_dT; + } } - } - { - // p_O16_to_He4_N13_reaclib + { + // O16_p_to_He4_N13_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); - } + log_scor = rate_eval.log_screen(k_p_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O16); + } #endif - rate_p_O16_to_He4_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O16_to_He4_N13_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O16_to_He4_N13_reaclib) = drate_dT; + rate_O16_p_to_He4_N13_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_p_to_He4_N13_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_p_to_He4_N13_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_n_Ne19_reaclib + { + // O16_He4_to_n_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_n_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_n_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_n_Ne19_reaclib) = drate_dT; + rate_O16_He4_to_n_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_n_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_n_Ne19_reaclib) = drate_dT; + } } - } - { - // He4_O16_to_p_F19_reaclib + { + // O16_He4_to_p_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); - } + log_scor = rate_eval.log_screen(k_He4_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O16); + } #endif - rate_He4_O16_to_p_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O16_to_p_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O16_to_p_F19_reaclib) = drate_dT; + rate_O16_He4_to_p_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_He4_to_p_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_He4_to_p_F19_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_p_Al27_reaclib + { + // O16_C12_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_p_Al27_reaclib) = drate_dT; + rate_O16_C12_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // C12_O16_to_He4_Mg24_reaclib + { + // O16_C12_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); - } + log_scor = rate_eval.log_screen(k_C12_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_O16); + } #endif - rate_C12_O16_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_O16_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_O16_to_He4_Mg24_reaclib) = drate_dT; + rate_O16_C12_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_C12_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_C12_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_p_P31_reaclib + { + // O16_O16_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + rate_O16_O16_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_p_P31_reaclib) = drate_dT; + } } - } - { - // O16_O16_to_He4_Si28_reaclib + { + // O16_O16_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_O16_O16); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); - } + log_scor = rate_eval.log_screen(k_O16_O16); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_O16_O16); + } #endif - rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + rate_O16_O16_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O16_O16_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O16_O16_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // n_O17_to_He4_C14_reaclib + { + // O17_n_to_He4_C14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_O17_to_He4_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_O17_to_He4_C14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_O17_to_He4_C14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_O17_n_to_He4_C14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_n_to_He4_C14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_n_to_He4_C14_reaclib) = drate_dT; + } } - } - { - // p_O17_to_n_F17_reaclib + { + // O17_p_to_n_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_n_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_n_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_n_F17_reaclib) = drate_dT; + rate_O17_p_to_n_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_n_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_n_F17_reaclib) = drate_dT; + } } - } - { - // p_O17_to_He4_N14_reaclib + { + // O17_p_to_He4_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); - } + log_scor = rate_eval.log_screen(k_p_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O17); + } #endif - rate_p_O17_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O17_to_He4_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O17_to_He4_N14_reaclib) = drate_dT; + rate_O17_p_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_p_to_He4_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_p_to_He4_N14_reaclib) = drate_dT; + } } - } - { - // He4_O17_to_n_Ne20_reaclib + { + // O17_He4_to_n_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); - } + log_scor = rate_eval.log_screen(k_He4_O17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O17); + } #endif - rate_He4_O17_to_n_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O17_to_n_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O17_to_n_Ne20_reaclib) = drate_dT; + rate_O17_He4_to_n_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O17_He4_to_n_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O17_He4_to_n_Ne20_reaclib) = drate_dT; + } } - } - { - // p_O18_to_n_F18_reaclib + { + // O18_p_to_n_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_n_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_n_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_n_F18_reaclib) = drate_dT; + rate_O18_p_to_n_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_n_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_n_F18_reaclib) = drate_dT; + } } - } - { - // p_O18_to_He4_N15_reaclib + { + // O18_p_to_He4_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); - } + log_scor = rate_eval.log_screen(k_p_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_O18); + } #endif - rate_p_O18_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_O18_to_He4_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_O18_to_He4_N15_reaclib) = drate_dT; + rate_O18_p_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_p_to_He4_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_p_to_He4_N15_reaclib) = drate_dT; + } } - } - { - // He4_O18_to_n_Ne21_reaclib + { + // O18_He4_to_n_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_O18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O18); - } + log_scor = rate_eval.log_screen(k_He4_O18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_O18); + } #endif - rate_He4_O18_to_n_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_O18_to_n_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_O18_to_n_Ne21_reaclib) = drate_dT; + rate_O18_He4_to_n_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_O18_He4_to_n_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_O18_He4_to_n_Ne21_reaclib) = drate_dT; + } } - } - { - // n_F17_to_p_O17_reaclib + { + // F17_n_to_p_O17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_F17_to_p_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_F17_to_p_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_F17_to_p_O17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_n_to_p_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_n_to_p_O17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_n_to_p_O17_reaclib) = drate_dT; + } } - } - { - // n_F17_to_He4_N14_reaclib + { + // F17_n_to_He4_N14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_F17_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_F17_to_He4_N14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_F17_to_He4_N14_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F17_n_to_He4_N14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_n_to_He4_N14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_n_to_He4_N14_reaclib) = drate_dT; + } } - } - { - // p_F17_to_He4_O14_reaclib + { + // F17_p_to_He4_O14_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); - } + log_scor = rate_eval.log_screen(k_p_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F17); + } #endif - rate_p_F17_to_He4_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F17_to_He4_O14_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F17_to_He4_O14_reaclib) = drate_dT; + rate_F17_p_to_He4_O14_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_p_to_He4_O14_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_p_to_He4_O14_reaclib) = drate_dT; + } } - } - { - // He4_F17_to_p_Ne20_reaclib + { + // F17_He4_to_p_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F17); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); - } + log_scor = rate_eval.log_screen(k_He4_F17); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F17); + } #endif - rate_He4_F17_to_p_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F17_to_p_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F17_to_p_Ne20_reaclib) = drate_dT; + rate_F17_He4_to_p_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F17_He4_to_p_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F17_He4_to_p_Ne20_reaclib) = drate_dT; + } } - } - { - // n_F18_to_p_O18_reaclib + { + // F18_n_to_p_O18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_F18_to_p_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_F18_to_p_O18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_F18_to_p_O18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_n_to_p_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_n_to_p_O18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_n_to_p_O18_reaclib) = drate_dT; + } } - } - { - // n_F18_to_He4_N15_reaclib + { + // F18_n_to_He4_N15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_F18_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_F18_to_He4_N15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_F18_to_He4_N15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_F18_n_to_He4_N15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_n_to_He4_N15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_n_to_He4_N15_reaclib) = drate_dT; + } } - } - { - // p_F18_to_n_Ne18_reaclib + { + // F18_p_to_n_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_n_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_n_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_n_Ne18_reaclib) = drate_dT; + rate_F18_p_to_n_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_n_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_n_Ne18_reaclib) = drate_dT; + } } - } - { - // p_F18_to_He4_O15_reaclib + { + // F18_p_to_He4_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); - } + log_scor = rate_eval.log_screen(k_p_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F18); + } #endif - rate_p_F18_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F18_to_He4_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F18_to_He4_O15_reaclib) = drate_dT; + rate_F18_p_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_p_to_He4_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_p_to_He4_O15_reaclib) = drate_dT; + } } - } - { - // He4_F18_to_n_Na21_reaclib + { + // F18_He4_to_n_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); - } + log_scor = rate_eval.log_screen(k_He4_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); + } #endif - rate_He4_F18_to_n_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F18_to_n_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F18_to_n_Na21_reaclib) = drate_dT; + rate_F18_He4_to_n_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_He4_to_n_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_He4_to_n_Na21_reaclib) = drate_dT; + } } - } - { - // He4_F18_to_p_Ne21_reaclib + { + // F18_He4_to_p_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); - } + log_scor = rate_eval.log_screen(k_He4_F18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F18); + } #endif - rate_He4_F18_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F18_to_p_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F18_to_p_Ne21_reaclib) = drate_dT; + rate_F18_He4_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F18_He4_to_p_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F18_He4_to_p_Ne21_reaclib) = drate_dT; + } } - } - { - // p_F19_to_n_Ne19_reaclib + { + // F19_p_to_n_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_n_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_n_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_n_Ne19_reaclib) = drate_dT; + rate_F19_p_to_n_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_n_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_n_Ne19_reaclib) = drate_dT; + } } - } - { - // p_F19_to_He4_O16_reaclib + { + // F19_p_to_He4_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); - } + log_scor = rate_eval.log_screen(k_p_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_F19); + } #endif - rate_p_F19_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_F19_to_He4_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_F19_to_He4_O16_reaclib) = drate_dT; + rate_F19_p_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_p_to_He4_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_p_to_He4_O16_reaclib) = drate_dT; + } } - } - { - // He4_F19_to_n_Na22_reaclib + { + // F19_He4_to_n_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); - } + log_scor = rate_eval.log_screen(k_He4_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); + } #endif - rate_He4_F19_to_n_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F19_to_n_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F19_to_n_Na22_reaclib) = drate_dT; + rate_F19_He4_to_n_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_He4_to_n_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_He4_to_n_Na22_reaclib) = drate_dT; + } } - } - { - // He4_F19_to_p_Ne22_reaclib + { + // F19_He4_to_p_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_F19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); - } + log_scor = rate_eval.log_screen(k_He4_F19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_F19); + } #endif - rate_He4_F19_to_p_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_F19_to_p_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_F19_to_p_Ne22_reaclib) = drate_dT; + rate_F19_He4_to_p_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_F19_He4_to_p_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_F19_He4_to_p_Ne22_reaclib) = drate_dT; + } } - } - { - // n_Ne18_to_p_F18_reaclib + { + // Ne18_n_to_p_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne18_to_p_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne18_to_p_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne18_to_p_F18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_n_to_p_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_n_to_p_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_n_to_p_F18_reaclib) = drate_dT; + } } - } - { - // n_Ne18_to_He4_O15_reaclib + { + // Ne18_n_to_He4_O15_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne18_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne18_to_He4_O15_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne18_to_He4_O15_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne18_n_to_He4_O15_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_n_to_He4_O15_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_n_to_He4_O15_reaclib) = drate_dT; + } } - } - { - // He4_Ne18_to_p_Na21_reaclib + { + // Ne18_He4_to_p_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne18); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne18); - } + log_scor = rate_eval.log_screen(k_He4_Ne18); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne18); + } #endif - rate_He4_Ne18_to_p_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne18_to_p_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne18_to_p_Na21_reaclib) = drate_dT; + rate_Ne18_He4_to_p_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne18_He4_to_p_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne18_He4_to_p_Na21_reaclib) = drate_dT; + } } - } - { - // n_Ne19_to_p_F19_reaclib + { + // Ne19_n_to_p_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne19_to_p_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne19_to_p_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne19_to_p_F19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_n_to_p_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_n_to_p_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_n_to_p_F19_reaclib) = drate_dT; + } } - } - { - // n_Ne19_to_He4_O16_reaclib + { + // Ne19_n_to_He4_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne19_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne19_to_He4_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne19_to_He4_O16_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne19_n_to_He4_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_n_to_He4_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_n_to_He4_O16_reaclib) = drate_dT; + } } - } - { - // He4_Ne19_to_p_Na22_reaclib + { + // Ne19_He4_to_p_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne19); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne19); - } + log_scor = rate_eval.log_screen(k_He4_Ne19); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne19); + } #endif - rate_He4_Ne19_to_p_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne19_to_p_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne19_to_p_Na22_reaclib) = drate_dT; + rate_Ne19_He4_to_p_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne19_He4_to_p_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne19_He4_to_p_Na22_reaclib) = drate_dT; + } } - } - { - // n_Ne20_to_He4_O17_reaclib + { + // Ne20_n_to_He4_O17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne20_to_He4_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne20_to_He4_O17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne20_to_He4_O17_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne20_n_to_He4_O17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_n_to_He4_O17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_n_to_He4_O17_reaclib) = drate_dT; + } } - } - { - // p_Ne20_to_He4_F17_reaclib + { + // Ne20_p_to_He4_F17_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); - } + log_scor = rate_eval.log_screen(k_p_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne20); + } #endif - rate_p_Ne20_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne20_to_He4_F17_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne20_to_He4_F17_reaclib) = drate_dT; + rate_Ne20_p_to_He4_F17_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_p_to_He4_F17_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_p_to_He4_F17_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_n_Mg23_reaclib + { + // Ne20_He4_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_n_Mg23_reaclib) = drate_dT; + rate_Ne20_He4_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_p_Na23_reaclib + { + // Ne20_He4_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_p_Na23_reaclib) = drate_dT; + rate_Ne20_He4_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // He4_Ne20_to_C12_C12_reaclib + { + // Ne20_He4_to_C12_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); - } + log_scor = rate_eval.log_screen(k_He4_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne20); + } #endif - rate_He4_Ne20_to_C12_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne20_to_C12_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne20_to_C12_C12_reaclib) = drate_dT; + rate_Ne20_He4_to_C12_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_He4_to_C12_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_He4_to_C12_C12_reaclib) = drate_dT; + } } - } - { - // C12_Ne20_to_p_P31_reaclib + { + // Ne20_C12_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_Ne20); - } + log_scor = rate_eval.log_screen(k_C12_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_Ne20); + } #endif - rate_C12_Ne20_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_Ne20_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_Ne20_to_p_P31_reaclib) = drate_dT; + rate_Ne20_C12_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_C12_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_C12_to_p_P31_reaclib) = drate_dT; + } } - } - { - // C12_Ne20_to_He4_Si28_reaclib + { + // Ne20_C12_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_C12_Ne20); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_Ne20); - } + log_scor = rate_eval.log_screen(k_C12_Ne20); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_C12_Ne20); + } #endif - rate_C12_Ne20_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_C12_Ne20_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_C12_Ne20_to_He4_Si28_reaclib) = drate_dT; + rate_Ne20_C12_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne20_C12_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne20_C12_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // n_Ne21_to_He4_O18_reaclib + { + // Ne21_n_to_He4_O18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ne21_to_He4_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ne21_to_He4_O18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ne21_to_He4_O18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ne21_n_to_He4_O18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_n_to_He4_O18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_n_to_He4_O18_reaclib) = drate_dT; + } } - } - { - // p_Ne21_to_n_Na21_reaclib + { + // Ne21_p_to_n_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); - } + log_scor = rate_eval.log_screen(k_p_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); + } #endif - rate_p_Ne21_to_n_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne21_to_n_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_n_Na21_reaclib) = drate_dT; + rate_Ne21_p_to_n_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_p_to_n_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_p_to_n_Na21_reaclib) = drate_dT; + } } - } - { - // p_Ne21_to_He4_F18_reaclib + { + // Ne21_p_to_He4_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); - } + log_scor = rate_eval.log_screen(k_p_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne21); + } #endif - rate_p_Ne21_to_He4_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne21_to_He4_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne21_to_He4_F18_reaclib) = drate_dT; + rate_Ne21_p_to_He4_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_p_to_He4_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_p_to_He4_F18_reaclib) = drate_dT; + } } - } - { - // He4_Ne21_to_n_Mg24_reaclib + { + // Ne21_He4_to_n_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne21); - } + log_scor = rate_eval.log_screen(k_He4_Ne21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne21); + } #endif - rate_He4_Ne21_to_n_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne21_to_n_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne21_to_n_Mg24_reaclib) = drate_dT; + rate_Ne21_He4_to_n_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne21_He4_to_n_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_He4_to_n_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Ne22_to_n_Na22_reaclib + { + // Ne22_p_to_n_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); - } + log_scor = rate_eval.log_screen(k_p_Ne22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); + } #endif - rate_p_Ne22_to_n_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne22_to_n_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne22_to_n_Na22_reaclib) = drate_dT; + rate_Ne22_p_to_n_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne22_p_to_n_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_p_to_n_Na22_reaclib) = drate_dT; + } } - } - { - // p_Ne22_to_He4_F19_reaclib + { + // Ne22_p_to_He4_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ne22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); - } + log_scor = rate_eval.log_screen(k_p_Ne22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ne22); + } #endif - rate_p_Ne22_to_He4_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ne22_to_He4_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ne22_to_He4_F19_reaclib) = drate_dT; + rate_Ne22_p_to_He4_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne22_p_to_He4_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_p_to_He4_F19_reaclib) = drate_dT; + } } - } - { - // He4_Ne22_to_n_Mg25_reaclib + { + // Ne22_He4_to_n_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ne22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne22); - } + log_scor = rate_eval.log_screen(k_He4_Ne22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ne22); + } #endif - rate_He4_Ne22_to_n_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ne22_to_n_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ne22_to_n_Mg25_reaclib) = drate_dT; + rate_Ne22_He4_to_n_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ne22_He4_to_n_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_He4_to_n_Mg25_reaclib) = drate_dT; + } } - } - { - // n_Na21_to_p_Ne21_reaclib + { + // Na21_n_to_p_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Na21_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Na21_to_p_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Na21_to_p_Ne21_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na21_n_to_p_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na21_n_to_p_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_n_to_p_Ne21_reaclib) = drate_dT; + } } - } - { - // n_Na21_to_He4_F18_reaclib + { + // Na21_n_to_He4_F18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Na21_to_He4_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Na21_to_He4_F18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Na21_to_He4_F18_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na21_n_to_He4_F18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na21_n_to_He4_F18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_n_to_He4_F18_reaclib) = drate_dT; + } } - } - { - // p_Na21_to_He4_Ne18_reaclib + { + // Na21_p_to_He4_Ne18_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na21); - } + log_scor = rate_eval.log_screen(k_p_Na21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na21); + } #endif - rate_p_Na21_to_He4_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na21_to_He4_Ne18_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na21_to_He4_Ne18_reaclib) = drate_dT; + rate_Na21_p_to_He4_Ne18_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na21_p_to_He4_Ne18_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_p_to_He4_Ne18_reaclib) = drate_dT; + } } - } - { - // He4_Na21_to_p_Mg24_reaclib + { + // Na21_He4_to_p_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na21); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na21); - } + log_scor = rate_eval.log_screen(k_He4_Na21); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na21); + } #endif - rate_He4_Na21_to_p_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na21_to_p_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na21_to_p_Mg24_reaclib) = drate_dT; + rate_Na21_He4_to_p_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na21_He4_to_p_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_He4_to_p_Mg24_reaclib) = drate_dT; + } } - } - { - // n_Na22_to_p_Ne22_reaclib + { + // Na22_n_to_p_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Na22_to_p_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Na22_to_p_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Na22_to_p_Ne22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_n_to_p_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_n_to_p_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_n_to_p_Ne22_reaclib) = drate_dT; + } } - } - { - // n_Na22_to_He4_F19_reaclib + { + // Na22_n_to_He4_F19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Na22_to_He4_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Na22_to_He4_F19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Na22_to_He4_F19_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Na22_n_to_He4_F19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_n_to_He4_F19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_n_to_He4_F19_reaclib) = drate_dT; + } } - } - { - // p_Na22_to_He4_Ne19_reaclib + { + // Na22_p_to_He4_Ne19_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na22); - } + log_scor = rate_eval.log_screen(k_p_Na22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na22); + } #endif - rate_p_Na22_to_He4_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na22_to_He4_Ne19_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na22_to_He4_Ne19_reaclib) = drate_dT; + rate_Na22_p_to_He4_Ne19_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_p_to_He4_Ne19_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_p_to_He4_Ne19_reaclib) = drate_dT; + } } - } - { - // He4_Na22_to_n_Al25_reaclib + { + // Na22_He4_to_n_Al25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); - } + log_scor = rate_eval.log_screen(k_He4_Na22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); + } #endif - rate_He4_Na22_to_n_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na22_to_n_Al25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na22_to_n_Al25_reaclib) = drate_dT; + rate_Na22_He4_to_n_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_He4_to_n_Al25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_He4_to_n_Al25_reaclib) = drate_dT; + } } - } - { - // He4_Na22_to_p_Mg25_reaclib + { + // Na22_He4_to_p_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na22); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); - } + log_scor = rate_eval.log_screen(k_He4_Na22); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na22); + } #endif - rate_He4_Na22_to_p_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na22_to_p_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na22_to_p_Mg25_reaclib) = drate_dT; + rate_Na22_He4_to_p_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na22_He4_to_p_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_He4_to_p_Mg25_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_n_Mg23_reaclib + { + // Na23_p_to_n_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_n_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_n_Mg23_reaclib) = drate_dT; + rate_Na23_p_to_n_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_n_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_n_Mg23_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_He4_Ne20_reaclib + { + // Na23_p_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_He4_Ne20_reaclib) = drate_dT; + rate_Na23_p_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // p_Na23_to_C12_C12_reaclib + { + // Na23_p_to_C12_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); - } + log_scor = rate_eval.log_screen(k_p_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Na23); + } #endif - rate_p_Na23_to_C12_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Na23_to_C12_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Na23_to_C12_C12_reaclib) = drate_dT; + rate_Na23_p_to_C12_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_p_to_C12_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_p_to_C12_C12_reaclib) = drate_dT; + } } - } - { - // He4_Na23_to_n_Al26_reaclib + { + // Na23_He4_to_n_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na23); - } + log_scor = rate_eval.log_screen(k_He4_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na23); + } #endif - rate_He4_Na23_to_n_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na23_to_n_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na23_to_n_Al26_reaclib) = drate_dT; + rate_Na23_He4_to_n_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_He4_to_n_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_He4_to_n_Al26_reaclib) = drate_dT; + } } - } - { - // He4_Na23_to_p_Mg26_reaclib + { + // Na23_He4_to_p_Mg26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Na23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na23); - } + log_scor = rate_eval.log_screen(k_He4_Na23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Na23); + } #endif - rate_He4_Na23_to_p_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Na23_to_p_Mg26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Na23_to_p_Mg26_reaclib) = drate_dT; + rate_Na23_He4_to_p_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Na23_He4_to_p_Mg26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_He4_to_p_Mg26_reaclib) = drate_dT; + } } - } - { - // n_Mg23_to_p_Na23_reaclib + { + // Mg23_n_to_p_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg23_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg23_to_p_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg23_to_p_Na23_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_n_to_p_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_n_to_p_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_n_to_p_Na23_reaclib) = drate_dT; + } } - } - { - // n_Mg23_to_He4_Ne20_reaclib + { + // Mg23_n_to_He4_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg23_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg23_to_He4_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg23_to_He4_Ne20_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_n_to_He4_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_n_to_He4_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_n_to_He4_Ne20_reaclib) = drate_dT; + } } - } - { - // n_Mg23_to_C12_C12_reaclib + { + // Mg23_n_to_C12_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg23_to_C12_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg23_to_C12_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg23_to_C12_C12_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg23_n_to_C12_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_n_to_C12_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_n_to_C12_C12_reaclib) = drate_dT; + } } - } - { - // He4_Mg23_to_p_Al26_reaclib + { + // Mg23_He4_to_p_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg23); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg23); - } + log_scor = rate_eval.log_screen(k_He4_Mg23); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg23); + } #endif - rate_He4_Mg23_to_p_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg23_to_p_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg23_to_p_Al26_reaclib) = drate_dT; + rate_Mg23_He4_to_p_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg23_He4_to_p_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_He4_to_p_Al26_reaclib) = drate_dT; + } } - } - { - // n_Mg24_to_He4_Ne21_reaclib + { + // Mg24_n_to_He4_Ne21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg24_to_He4_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg24_to_He4_Ne21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg24_to_He4_Ne21_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg24_n_to_He4_Ne21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_n_to_He4_Ne21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_n_to_He4_Ne21_reaclib) = drate_dT; + } } - } - { - // p_Mg24_to_He4_Na21_reaclib + { + // Mg24_p_to_He4_Na21_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); - } + log_scor = rate_eval.log_screen(k_p_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg24); + } #endif - rate_p_Mg24_to_He4_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg24_to_He4_Na21_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg24_to_He4_Na21_reaclib) = drate_dT; + rate_Mg24_p_to_He4_Na21_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_p_to_He4_Na21_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_p_to_He4_Na21_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_p_Al27_reaclib + { + // Mg24_He4_to_p_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_p_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_p_Al27_reaclib) = drate_dT; + rate_Mg24_He4_to_p_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_p_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_p_Al27_reaclib) = drate_dT; + } } - } - { - // He4_Mg24_to_C12_O16_reaclib + { + // Mg24_He4_to_C12_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg24); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); - } + log_scor = rate_eval.log_screen(k_He4_Mg24); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg24); + } #endif - rate_He4_Mg24_to_C12_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg24_to_C12_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg24_to_C12_O16_reaclib) = drate_dT; + rate_Mg24_He4_to_C12_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg24_He4_to_C12_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg24_He4_to_C12_O16_reaclib) = drate_dT; + } } - } - { - // n_Mg25_to_He4_Ne22_reaclib + { + // Mg25_n_to_He4_Ne22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mg25_to_He4_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mg25_to_He4_Ne22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mg25_to_He4_Ne22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mg25_n_to_He4_Ne22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_n_to_He4_Ne22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_n_to_He4_Ne22_reaclib) = drate_dT; + } } - } - { - // p_Mg25_to_n_Al25_reaclib + { + // Mg25_p_to_n_Al25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg25); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg25); - } + log_scor = rate_eval.log_screen(k_p_Mg25); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg25); + } #endif - rate_p_Mg25_to_n_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg25_to_n_Al25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg25_to_n_Al25_reaclib) = drate_dT; + rate_Mg25_p_to_n_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_p_to_n_Al25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_p_to_n_Al25_reaclib) = drate_dT; + } } - } - { - // p_Mg25_to_He4_Na22_reaclib + { + // Mg25_p_to_He4_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg25); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg25); - } + log_scor = rate_eval.log_screen(k_p_Mg25); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg25); + } #endif - rate_p_Mg25_to_He4_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg25_to_He4_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg25_to_He4_Na22_reaclib) = drate_dT; + rate_Mg25_p_to_He4_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_p_to_He4_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_p_to_He4_Na22_reaclib) = drate_dT; + } } - } - { - // He4_Mg25_to_n_Si28_reaclib + { + // Mg25_He4_to_n_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg25); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg25); - } + log_scor = rate_eval.log_screen(k_He4_Mg25); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg25); + } #endif - rate_He4_Mg25_to_n_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg25_to_n_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg25_to_n_Si28_reaclib) = drate_dT; + rate_Mg25_He4_to_n_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg25_He4_to_n_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_He4_to_n_Si28_reaclib) = drate_dT; + } } - } - { - // p_Mg26_to_n_Al26_reaclib + { + // Mg26_p_to_n_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg26); - } + log_scor = rate_eval.log_screen(k_p_Mg26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg26); + } #endif - rate_p_Mg26_to_n_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg26_to_n_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg26_to_n_Al26_reaclib) = drate_dT; + rate_Mg26_p_to_n_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg26_p_to_n_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg26_p_to_n_Al26_reaclib) = drate_dT; + } } - } - { - // p_Mg26_to_He4_Na23_reaclib + { + // Mg26_p_to_He4_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mg26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg26); - } + log_scor = rate_eval.log_screen(k_p_Mg26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mg26); + } #endif - rate_p_Mg26_to_He4_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mg26_to_He4_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mg26_to_He4_Na23_reaclib) = drate_dT; + rate_Mg26_p_to_He4_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg26_p_to_He4_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg26_p_to_He4_Na23_reaclib) = drate_dT; + } } - } - { - // He4_Mg26_to_n_Si29_reaclib + { + // Mg26_He4_to_n_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mg26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg26); - } + log_scor = rate_eval.log_screen(k_He4_Mg26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mg26); + } #endif - rate_He4_Mg26_to_n_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mg26_to_n_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mg26_to_n_Si29_reaclib) = drate_dT; + rate_Mg26_He4_to_n_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mg26_He4_to_n_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg26_He4_to_n_Si29_reaclib) = drate_dT; + } } - } - { - // n_Al25_to_p_Mg25_reaclib + { + // Al25_n_to_p_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Al25_to_p_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Al25_to_p_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Al25_to_p_Mg25_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al25_n_to_p_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al25_n_to_p_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al25_n_to_p_Mg25_reaclib) = drate_dT; + } } - } - { - // n_Al25_to_He4_Na22_reaclib + { + // Al25_n_to_He4_Na22_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Al25_to_He4_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Al25_to_He4_Na22_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Al25_to_He4_Na22_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al25_n_to_He4_Na22_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al25_n_to_He4_Na22_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al25_n_to_He4_Na22_reaclib) = drate_dT; + } } - } - { - // He4_Al25_to_p_Si28_reaclib + { + // Al25_He4_to_p_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al25); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al25); - } + log_scor = rate_eval.log_screen(k_He4_Al25); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al25); + } #endif - rate_He4_Al25_to_p_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al25_to_p_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al25_to_p_Si28_reaclib) = drate_dT; + rate_Al25_He4_to_p_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al25_He4_to_p_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al25_He4_to_p_Si28_reaclib) = drate_dT; + } } - } - { - // n_Al26_to_p_Mg26_reaclib + { + // Al26_n_to_p_Mg26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Al26_to_p_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Al26_to_p_Mg26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Al26_to_p_Mg26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al26_n_to_p_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_n_to_p_Mg26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_n_to_p_Mg26_reaclib) = drate_dT; + } } - } - { - // n_Al26_to_He4_Na23_reaclib + { + // Al26_n_to_He4_Na23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Al26_to_He4_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Al26_to_He4_Na23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Al26_to_He4_Na23_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Al26_n_to_He4_Na23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_n_to_He4_Na23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_n_to_He4_Na23_reaclib) = drate_dT; + } } - } - { - // p_Al26_to_He4_Mg23_reaclib + { + // Al26_p_to_He4_Mg23_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al26); - } + log_scor = rate_eval.log_screen(k_p_Al26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al26); + } #endif - rate_p_Al26_to_He4_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al26_to_He4_Mg23_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al26_to_He4_Mg23_reaclib) = drate_dT; + rate_Al26_p_to_He4_Mg23_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_p_to_He4_Mg23_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_p_to_He4_Mg23_reaclib) = drate_dT; + } } - } - { - // He4_Al26_to_n_P29_reaclib + { + // Al26_He4_to_n_P29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al26); - } + log_scor = rate_eval.log_screen(k_He4_Al26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al26); + } #endif - rate_He4_Al26_to_n_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al26_to_n_P29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al26_to_n_P29_reaclib) = drate_dT; + rate_Al26_He4_to_n_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_He4_to_n_P29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_He4_to_n_P29_reaclib) = drate_dT; + } } - } - { - // He4_Al26_to_p_Si29_reaclib + { + // Al26_He4_to_p_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al26); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al26); - } + log_scor = rate_eval.log_screen(k_He4_Al26); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al26); + } #endif - rate_He4_Al26_to_p_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al26_to_p_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al26_to_p_Si29_reaclib) = drate_dT; + rate_Al26_He4_to_p_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al26_He4_to_p_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_He4_to_p_Si29_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_He4_Mg24_reaclib + { + // Al27_p_to_He4_Mg24_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_He4_Mg24_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_He4_Mg24_reaclib) = drate_dT; + rate_Al27_p_to_He4_Mg24_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_He4_Mg24_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_He4_Mg24_reaclib) = drate_dT; + } } - } - { - // p_Al27_to_C12_O16_reaclib + { + // Al27_p_to_C12_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); - } + log_scor = rate_eval.log_screen(k_p_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Al27); + } #endif - rate_p_Al27_to_C12_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Al27_to_C12_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Al27_to_C12_O16_reaclib) = drate_dT; + rate_Al27_p_to_C12_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_p_to_C12_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_p_to_C12_O16_reaclib) = drate_dT; + } } - } - { - // He4_Al27_to_n_P30_reaclib + { + // Al27_He4_to_n_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); - } + log_scor = rate_eval.log_screen(k_He4_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); + } #endif - rate_He4_Al27_to_n_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al27_to_n_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al27_to_n_P30_reaclib) = drate_dT; + rate_Al27_He4_to_n_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_He4_to_n_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_He4_to_n_P30_reaclib) = drate_dT; + } } - } - { - // He4_Al27_to_p_Si30_reaclib + { + // Al27_He4_to_p_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Al27); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); - } + log_scor = rate_eval.log_screen(k_He4_Al27); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Al27); + } #endif - rate_He4_Al27_to_p_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Al27_to_p_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Al27_to_p_Si30_reaclib) = drate_dT; + rate_Al27_He4_to_p_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Al27_He4_to_p_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al27_He4_to_p_Si30_reaclib) = drate_dT; + } } - } - { - // n_Si28_to_He4_Mg25_reaclib + { + // Si28_n_to_He4_Mg25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Si28_to_He4_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Si28_to_He4_Mg25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Si28_to_He4_Mg25_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si28_n_to_He4_Mg25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_n_to_He4_Mg25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_n_to_He4_Mg25_reaclib) = drate_dT; + } } - } - { - // p_Si28_to_He4_Al25_reaclib + { + // Si28_p_to_He4_Al25_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si28); - } + log_scor = rate_eval.log_screen(k_p_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si28); + } #endif - rate_p_Si28_to_He4_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si28_to_He4_Al25_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si28_to_He4_Al25_reaclib) = drate_dT; + rate_Si28_p_to_He4_Al25_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_p_to_He4_Al25_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_p_to_He4_Al25_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_p_P31_reaclib + { + // Si28_He4_to_p_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_p_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_p_P31_reaclib) = drate_dT; + rate_Si28_He4_to_p_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_p_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_p_P31_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_C12_Ne20_reaclib + { + // Si28_He4_to_C12_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_C12_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_C12_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_C12_Ne20_reaclib) = drate_dT; + rate_Si28_He4_to_C12_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_C12_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_C12_Ne20_reaclib) = drate_dT; + } } - } - { - // He4_Si28_to_O16_O16_reaclib + { + // Si28_He4_to_O16_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si28); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); - } + log_scor = rate_eval.log_screen(k_He4_Si28); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si28); + } #endif - rate_He4_Si28_to_O16_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si28_to_O16_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si28_to_O16_O16_reaclib) = drate_dT; + rate_Si28_He4_to_O16_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si28_He4_to_O16_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si28_He4_to_O16_O16_reaclib) = drate_dT; + } } - } - { - // n_Si29_to_He4_Mg26_reaclib + { + // Si29_n_to_He4_Mg26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Si29_to_He4_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Si29_to_He4_Mg26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Si29_to_He4_Mg26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Si29_n_to_He4_Mg26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_n_to_He4_Mg26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_n_to_He4_Mg26_reaclib) = drate_dT; + } } - } - { - // p_Si29_to_n_P29_reaclib + { + // Si29_p_to_n_P29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si29); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si29); - } + log_scor = rate_eval.log_screen(k_p_Si29); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si29); + } #endif - rate_p_Si29_to_n_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si29_to_n_P29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si29_to_n_P29_reaclib) = drate_dT; + rate_Si29_p_to_n_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_p_to_n_P29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_p_to_n_P29_reaclib) = drate_dT; + } } - } - { - // p_Si29_to_He4_Al26_reaclib + { + // Si29_p_to_He4_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si29); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si29); - } + log_scor = rate_eval.log_screen(k_p_Si29); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si29); + } #endif - rate_p_Si29_to_He4_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si29_to_He4_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si29_to_He4_Al26_reaclib) = drate_dT; + rate_Si29_p_to_He4_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_p_to_He4_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_p_to_He4_Al26_reaclib) = drate_dT; + } } - } - { - // He4_Si29_to_n_S32_reaclib + { + // Si29_He4_to_n_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si29); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si29); - } + log_scor = rate_eval.log_screen(k_He4_Si29); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si29); + } #endif - rate_He4_Si29_to_n_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si29_to_n_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si29_to_n_S32_reaclib) = drate_dT; + rate_Si29_He4_to_n_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_He4_to_n_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_He4_to_n_S32_reaclib) = drate_dT; + } } - } - { - // He4_Si29_to_p_P32_reaclib + { + // Si29_He4_to_p_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si29); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si29); - } + log_scor = rate_eval.log_screen(k_He4_Si29); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si29); + } #endif - rate_He4_Si29_to_p_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si29_to_p_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si29_to_p_P32_reaclib) = drate_dT; + rate_Si29_He4_to_p_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si29_He4_to_p_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_He4_to_p_P32_reaclib) = drate_dT; + } } - } - { - // p_Si30_to_n_P30_reaclib + { + // Si30_p_to_n_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si30); - } + log_scor = rate_eval.log_screen(k_p_Si30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si30); + } #endif - rate_p_Si30_to_n_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si30_to_n_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si30_to_n_P30_reaclib) = drate_dT; + rate_Si30_p_to_n_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_p_to_n_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_p_to_n_P30_reaclib) = drate_dT; + } } - } - { - // p_Si30_to_He4_Al27_reaclib + { + // Si30_p_to_He4_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si30); - } + log_scor = rate_eval.log_screen(k_p_Si30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si30); + } #endif - rate_p_Si30_to_He4_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si30_to_He4_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si30_to_He4_Al27_reaclib) = drate_dT; + rate_Si30_p_to_He4_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_p_to_He4_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_p_to_He4_Al27_reaclib) = drate_dT; + } } - } - { - // He4_Si30_to_n_S33_reaclib + { + // Si30_He4_to_n_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si30); - } + log_scor = rate_eval.log_screen(k_He4_Si30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si30); + } #endif - rate_He4_Si30_to_n_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si30_to_n_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si30_to_n_S33_reaclib) = drate_dT; + rate_Si30_He4_to_n_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_He4_to_n_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_He4_to_n_S33_reaclib) = drate_dT; + } } - } - { - // He4_Si30_to_p_P33_reaclib + { + // Si30_He4_to_p_P33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si30); - } + log_scor = rate_eval.log_screen(k_He4_Si30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si30); + } #endif - rate_He4_Si30_to_p_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si30_to_p_P33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si30_to_p_P33_reaclib) = drate_dT; + rate_Si30_He4_to_p_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si30_He4_to_p_P33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_He4_to_p_P33_reaclib) = drate_dT; + } } - } - { - // p_Si31_to_n_P31_reaclib + { + // Si31_p_to_n_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si31); - } + log_scor = rate_eval.log_screen(k_p_Si31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si31); + } #endif - rate_p_Si31_to_n_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si31_to_n_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si31_to_n_P31_reaclib) = drate_dT; + rate_Si31_p_to_n_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si31_p_to_n_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si31_p_to_n_P31_reaclib) = drate_dT; + } } - } - { - // He4_Si31_to_n_S34_reaclib + { + // Si31_He4_to_n_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si31); - } + log_scor = rate_eval.log_screen(k_He4_Si31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si31); + } #endif - rate_He4_Si31_to_n_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si31_to_n_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si31_to_n_S34_reaclib) = drate_dT; + rate_Si31_He4_to_n_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si31_He4_to_n_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si31_He4_to_n_S34_reaclib) = drate_dT; + } } - } - { - // p_Si32_to_n_P32_reaclib + { + // Si32_p_to_n_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Si32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si32); - } + log_scor = rate_eval.log_screen(k_p_Si32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Si32); + } #endif - rate_p_Si32_to_n_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Si32_to_n_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Si32_to_n_P32_reaclib) = drate_dT; + rate_Si32_p_to_n_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si32_p_to_n_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si32_p_to_n_P32_reaclib) = drate_dT; + } } - } - { - // He4_Si32_to_n_S35_reaclib + { + // Si32_He4_to_n_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Si32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si32); - } + log_scor = rate_eval.log_screen(k_He4_Si32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Si32); + } #endif - rate_He4_Si32_to_n_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Si32_to_n_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Si32_to_n_S35_reaclib) = drate_dT; + rate_Si32_He4_to_n_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Si32_He4_to_n_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si32_He4_to_n_S35_reaclib) = drate_dT; + } } - } - { - // n_P29_to_p_Si29_reaclib + { + // P29_n_to_p_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P29_to_p_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P29_to_p_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P29_to_p_Si29_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P29_n_to_p_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P29_n_to_p_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P29_n_to_p_Si29_reaclib) = drate_dT; + } } - } - { - // n_P29_to_He4_Al26_reaclib + { + // P29_n_to_He4_Al26_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P29_to_He4_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P29_to_He4_Al26_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P29_to_He4_Al26_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P29_n_to_He4_Al26_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P29_n_to_He4_Al26_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P29_n_to_He4_Al26_reaclib) = drate_dT; + } } - } - { - // He4_P29_to_p_S32_reaclib + { + // P29_He4_to_p_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P29); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P29); - } + log_scor = rate_eval.log_screen(k_He4_P29); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P29); + } #endif - rate_He4_P29_to_p_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P29_to_p_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P29_to_p_S32_reaclib) = drate_dT; + rate_P29_He4_to_p_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P29_He4_to_p_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P29_He4_to_p_S32_reaclib) = drate_dT; + } } - } - { - // n_P30_to_p_Si30_reaclib + { + // P30_n_to_p_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P30_to_p_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P30_to_p_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P30_to_p_Si30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P30_n_to_p_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_n_to_p_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_n_to_p_Si30_reaclib) = drate_dT; + } } - } - { - // n_P30_to_He4_Al27_reaclib + { + // P30_n_to_He4_Al27_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P30_to_He4_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P30_to_He4_Al27_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P30_to_He4_Al27_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P30_n_to_He4_Al27_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_n_to_He4_Al27_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_n_to_He4_Al27_reaclib) = drate_dT; + } } - } - { - // He4_P30_to_n_Cl33_reaclib + { + // P30_He4_to_n_Cl33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P30); - } + log_scor = rate_eval.log_screen(k_He4_P30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P30); + } #endif - rate_He4_P30_to_n_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P30_to_n_Cl33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P30_to_n_Cl33_reaclib) = drate_dT; + rate_P30_He4_to_n_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_He4_to_n_Cl33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_He4_to_n_Cl33_reaclib) = drate_dT; + } } - } - { - // He4_P30_to_p_S33_reaclib + { + // P30_He4_to_p_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P30); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P30); - } + log_scor = rate_eval.log_screen(k_He4_P30); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P30); + } #endif - rate_He4_P30_to_p_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P30_to_p_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P30_to_p_S33_reaclib) = drate_dT; + rate_P30_He4_to_p_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P30_He4_to_p_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_He4_to_p_S33_reaclib) = drate_dT; + } } - } - { - // n_P31_to_p_Si31_reaclib + { + // P31_n_to_p_Si31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P31_to_p_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P31_to_p_Si31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P31_to_p_Si31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P31_n_to_p_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_n_to_p_Si31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_n_to_p_Si31_reaclib) = drate_dT; + } } - } - { - // p_P31_to_He4_Si28_reaclib + { + // P31_p_to_He4_Si28_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_He4_Si28_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_He4_Si28_reaclib) = drate_dT; + rate_P31_p_to_He4_Si28_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_He4_Si28_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_He4_Si28_reaclib) = drate_dT; + } } - } - { - // p_P31_to_C12_Ne20_reaclib + { + // P31_p_to_C12_Ne20_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_C12_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_C12_Ne20_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_C12_Ne20_reaclib) = drate_dT; + rate_P31_p_to_C12_Ne20_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_C12_Ne20_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_C12_Ne20_reaclib) = drate_dT; + } } - } - { - // p_P31_to_O16_O16_reaclib + { + // P31_p_to_O16_O16_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); - } + log_scor = rate_eval.log_screen(k_p_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P31); + } #endif - rate_p_P31_to_O16_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P31_to_O16_O16_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P31_to_O16_O16_reaclib) = drate_dT; + rate_P31_p_to_O16_O16_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_p_to_O16_O16_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_p_to_O16_O16_reaclib) = drate_dT; + } } - } - { - // He4_P31_to_n_Cl34_reaclib + { + // P31_He4_to_n_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P31); - } + log_scor = rate_eval.log_screen(k_He4_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P31); + } #endif - rate_He4_P31_to_n_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P31_to_n_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P31_to_n_Cl34_reaclib) = drate_dT; + rate_P31_He4_to_n_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_He4_to_n_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_He4_to_n_Cl34_reaclib) = drate_dT; + } } - } - { - // He4_P31_to_p_S34_reaclib + { + // P31_He4_to_p_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P31); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P31); - } + log_scor = rate_eval.log_screen(k_He4_P31); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P31); + } #endif - rate_He4_P31_to_p_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P31_to_p_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P31_to_p_S34_reaclib) = drate_dT; + rate_P31_He4_to_p_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P31_He4_to_p_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_He4_to_p_S34_reaclib) = drate_dT; + } } - } - { - // n_P32_to_p_Si32_reaclib + { + // P32_n_to_p_Si32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_P32_to_p_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_P32_to_p_Si32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_P32_to_p_Si32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_P32_n_to_p_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_n_to_p_Si32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_n_to_p_Si32_reaclib) = drate_dT; + } } - } - { - // p_P32_to_n_S32_reaclib + { + // P32_p_to_n_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P32); - } + log_scor = rate_eval.log_screen(k_p_P32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P32); + } #endif - rate_p_P32_to_n_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P32_to_n_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P32_to_n_S32_reaclib) = drate_dT; + rate_P32_p_to_n_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_p_to_n_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_p_to_n_S32_reaclib) = drate_dT; + } } - } - { - // p_P32_to_He4_Si29_reaclib + { + // P32_p_to_He4_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P32); - } + log_scor = rate_eval.log_screen(k_p_P32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P32); + } #endif - rate_p_P32_to_He4_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P32_to_He4_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P32_to_He4_Si29_reaclib) = drate_dT; + rate_P32_p_to_He4_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_p_to_He4_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_p_to_He4_Si29_reaclib) = drate_dT; + } } - } - { - // He4_P32_to_n_Cl35_reaclib + { + // P32_He4_to_n_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P32); - } + log_scor = rate_eval.log_screen(k_He4_P32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P32); + } #endif - rate_He4_P32_to_n_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P32_to_n_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P32_to_n_Cl35_reaclib) = drate_dT; + rate_P32_He4_to_n_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_He4_to_n_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_He4_to_n_Cl35_reaclib) = drate_dT; + } } - } - { - // He4_P32_to_p_S35_reaclib + { + // P32_He4_to_p_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P32); - } + log_scor = rate_eval.log_screen(k_He4_P32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P32); + } #endif - rate_He4_P32_to_p_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P32_to_p_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P32_to_p_S35_reaclib) = drate_dT; + rate_P32_He4_to_p_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P32_He4_to_p_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_He4_to_p_S35_reaclib) = drate_dT; + } } - } - { - // p_P33_to_n_S33_reaclib + { + // P33_p_to_n_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P33); - } + log_scor = rate_eval.log_screen(k_p_P33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P33); + } #endif - rate_p_P33_to_n_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P33_to_n_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P33_to_n_S33_reaclib) = drate_dT; + rate_P33_p_to_n_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P33_p_to_n_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_p_to_n_S33_reaclib) = drate_dT; + } } - } - { - // p_P33_to_He4_Si30_reaclib + { + // P33_p_to_He4_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_P33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P33); - } + log_scor = rate_eval.log_screen(k_p_P33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_P33); + } #endif - rate_p_P33_to_He4_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_P33_to_He4_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_P33_to_He4_Si30_reaclib) = drate_dT; + rate_P33_p_to_He4_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P33_p_to_He4_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_p_to_He4_Si30_reaclib) = drate_dT; + } } - } - { - // He4_P33_to_n_Cl36_reaclib + { + // P33_He4_to_n_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P33); - } + log_scor = rate_eval.log_screen(k_He4_P33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P33); + } #endif - rate_He4_P33_to_n_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P33_to_n_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P33_to_n_Cl36_reaclib) = drate_dT; + rate_P33_He4_to_n_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P33_He4_to_n_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_He4_to_n_Cl36_reaclib) = drate_dT; + } } - } - { - // He4_P33_to_p_S36_reaclib + { + // P33_He4_to_p_S36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_P33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P33); - } + log_scor = rate_eval.log_screen(k_He4_P33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_P33); + } #endif - rate_He4_P33_to_p_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_P33_to_p_S36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_P33_to_p_S36_reaclib) = drate_dT; + rate_P33_He4_to_p_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_P33_He4_to_p_S36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_He4_to_p_S36_reaclib) = drate_dT; + } } - } - { - // n_S32_to_p_P32_reaclib + { + // S32_n_to_p_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S32_to_p_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S32_to_p_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S32_to_p_P32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_n_to_p_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_n_to_p_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_n_to_p_P32_reaclib) = drate_dT; + } } - } - { - // n_S32_to_He4_Si29_reaclib + { + // S32_n_to_He4_Si29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S32_to_He4_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S32_to_He4_Si29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S32_to_He4_Si29_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S32_n_to_He4_Si29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_n_to_He4_Si29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_n_to_He4_Si29_reaclib) = drate_dT; + } } - } - { - // p_S32_to_He4_P29_reaclib + { + // S32_p_to_He4_P29_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S32); - } + log_scor = rate_eval.log_screen(k_p_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S32); + } #endif - rate_p_S32_to_He4_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S32_to_He4_P29_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S32_to_He4_P29_reaclib) = drate_dT; + rate_S32_p_to_He4_P29_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_p_to_He4_P29_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_p_to_He4_P29_reaclib) = drate_dT; + } } - } - { - // He4_S32_to_p_Cl35_reaclib + { + // S32_He4_to_p_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S32); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); - } + log_scor = rate_eval.log_screen(k_He4_S32); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S32); + } #endif - rate_He4_S32_to_p_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S32_to_p_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S32_to_p_Cl35_reaclib) = drate_dT; + rate_S32_He4_to_p_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S32_He4_to_p_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_He4_to_p_Cl35_reaclib) = drate_dT; + } } - } - { - // n_S33_to_p_P33_reaclib + { + // S33_n_to_p_P33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S33_to_p_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S33_to_p_P33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S33_to_p_P33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S33_n_to_p_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_n_to_p_P33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_n_to_p_P33_reaclib) = drate_dT; + } } - } - { - // n_S33_to_He4_Si30_reaclib + { + // S33_n_to_He4_Si30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S33_to_He4_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S33_to_He4_Si30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S33_to_He4_Si30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S33_n_to_He4_Si30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_n_to_He4_Si30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_n_to_He4_Si30_reaclib) = drate_dT; + } } - } - { - // p_S33_to_n_Cl33_reaclib + { + // S33_p_to_n_Cl33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S33); - } + log_scor = rate_eval.log_screen(k_p_S33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S33); + } #endif - rate_p_S33_to_n_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S33_to_n_Cl33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S33_to_n_Cl33_reaclib) = drate_dT; + rate_S33_p_to_n_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_p_to_n_Cl33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_p_to_n_Cl33_reaclib) = drate_dT; + } } - } - { - // p_S33_to_He4_P30_reaclib + { + // S33_p_to_He4_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S33); - } + log_scor = rate_eval.log_screen(k_p_S33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S33); + } #endif - rate_p_S33_to_He4_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S33_to_He4_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S33_to_He4_P30_reaclib) = drate_dT; + rate_S33_p_to_He4_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_p_to_He4_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_p_to_He4_P30_reaclib) = drate_dT; + } } - } - { - // He4_S33_to_n_Ar36_reaclib + { + // S33_He4_to_n_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S33); - } + log_scor = rate_eval.log_screen(k_He4_S33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S33); + } #endif - rate_He4_S33_to_n_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S33_to_n_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S33_to_n_Ar36_reaclib) = drate_dT; + rate_S33_He4_to_n_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_He4_to_n_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_He4_to_n_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_S33_to_p_Cl36_reaclib + { + // S33_He4_to_p_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S33); - } + log_scor = rate_eval.log_screen(k_He4_S33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S33); + } #endif - rate_He4_S33_to_p_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S33_to_p_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S33_to_p_Cl36_reaclib) = drate_dT; + rate_S33_He4_to_p_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S33_He4_to_p_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_He4_to_p_Cl36_reaclib) = drate_dT; + } } - } - { - // n_S34_to_He4_Si31_reaclib + { + // S34_n_to_He4_Si31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S34_to_He4_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S34_to_He4_Si31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S34_to_He4_Si31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S34_n_to_He4_Si31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_n_to_He4_Si31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_n_to_He4_Si31_reaclib) = drate_dT; + } } - } - { - // p_S34_to_n_Cl34_reaclib + { + // S34_p_to_n_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S34); - } + log_scor = rate_eval.log_screen(k_p_S34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S34); + } #endif - rate_p_S34_to_n_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S34_to_n_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S34_to_n_Cl34_reaclib) = drate_dT; + rate_S34_p_to_n_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_p_to_n_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_p_to_n_Cl34_reaclib) = drate_dT; + } } - } - { - // p_S34_to_He4_P31_reaclib + { + // S34_p_to_He4_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S34); - } + log_scor = rate_eval.log_screen(k_p_S34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S34); + } #endif - rate_p_S34_to_He4_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S34_to_He4_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S34_to_He4_P31_reaclib) = drate_dT; + rate_S34_p_to_He4_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_p_to_He4_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_p_to_He4_P31_reaclib) = drate_dT; + } } - } - { - // He4_S34_to_n_Ar37_reaclib + { + // S34_He4_to_n_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S34); - } + log_scor = rate_eval.log_screen(k_He4_S34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S34); + } #endif - rate_He4_S34_to_n_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S34_to_n_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S34_to_n_Ar37_reaclib) = drate_dT; + rate_S34_He4_to_n_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_He4_to_n_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_He4_to_n_Ar37_reaclib) = drate_dT; + } } - } - { - // He4_S34_to_p_Cl37_reaclib + { + // S34_He4_to_p_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S34); - } + log_scor = rate_eval.log_screen(k_He4_S34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S34); + } #endif - rate_He4_S34_to_p_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S34_to_p_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S34_to_p_Cl37_reaclib) = drate_dT; + rate_S34_He4_to_p_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S34_He4_to_p_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_He4_to_p_Cl37_reaclib) = drate_dT; + } } - } - { - // n_S35_to_He4_Si32_reaclib + { + // S35_n_to_He4_Si32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_S35_to_He4_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_S35_to_He4_Si32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_S35_to_He4_Si32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_S35_n_to_He4_Si32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_n_to_He4_Si32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_n_to_He4_Si32_reaclib) = drate_dT; + } } - } - { - // p_S35_to_n_Cl35_reaclib + { + // S35_p_to_n_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S35); - } + log_scor = rate_eval.log_screen(k_p_S35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S35); + } #endif - rate_p_S35_to_n_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S35_to_n_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S35_to_n_Cl35_reaclib) = drate_dT; + rate_S35_p_to_n_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_p_to_n_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_p_to_n_Cl35_reaclib) = drate_dT; + } } - } - { - // p_S35_to_He4_P32_reaclib + { + // S35_p_to_He4_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S35); - } + log_scor = rate_eval.log_screen(k_p_S35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S35); + } #endif - rate_p_S35_to_He4_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S35_to_He4_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S35_to_He4_P32_reaclib) = drate_dT; + rate_S35_p_to_He4_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_p_to_He4_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_p_to_He4_P32_reaclib) = drate_dT; + } } - } - { - // He4_S35_to_n_Ar38_reaclib + { + // S35_He4_to_n_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S35); - } + log_scor = rate_eval.log_screen(k_He4_S35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S35); + } #endif - rate_He4_S35_to_n_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S35_to_n_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S35_to_n_Ar38_reaclib) = drate_dT; + rate_S35_He4_to_n_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S35_He4_to_n_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_He4_to_n_Ar38_reaclib) = drate_dT; + } } - } - { - // p_S36_to_n_Cl36_reaclib + { + // S36_p_to_n_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S36); - } + log_scor = rate_eval.log_screen(k_p_S36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S36); + } #endif - rate_p_S36_to_n_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S36_to_n_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S36_to_n_Cl36_reaclib) = drate_dT; + rate_S36_p_to_n_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S36_p_to_n_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S36_p_to_n_Cl36_reaclib) = drate_dT; + } } - } - { - // p_S36_to_He4_P33_reaclib + { + // S36_p_to_He4_P33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_S36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S36); - } + log_scor = rate_eval.log_screen(k_p_S36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_S36); + } #endif - rate_p_S36_to_He4_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_S36_to_He4_P33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_S36_to_He4_P33_reaclib) = drate_dT; + rate_S36_p_to_He4_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S36_p_to_He4_P33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S36_p_to_He4_P33_reaclib) = drate_dT; + } } - } - { - // He4_S36_to_n_Ar39_reaclib + { + // S36_He4_to_n_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_S36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S36); - } + log_scor = rate_eval.log_screen(k_He4_S36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_S36); + } #endif - rate_He4_S36_to_n_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_S36_to_n_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_S36_to_n_Ar39_reaclib) = drate_dT; + rate_S36_He4_to_n_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_S36_He4_to_n_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S36_He4_to_n_Ar39_reaclib) = drate_dT; + } } - } - { - // n_Cl33_to_p_S33_reaclib + { + // Cl33_n_to_p_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl33_to_p_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl33_to_p_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl33_to_p_S33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl33_n_to_p_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl33_n_to_p_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl33_n_to_p_S33_reaclib) = drate_dT; + } } - } - { - // n_Cl33_to_He4_P30_reaclib + { + // Cl33_n_to_He4_P30_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl33_to_He4_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl33_to_He4_P30_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl33_to_He4_P30_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl33_n_to_He4_P30_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl33_n_to_He4_P30_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl33_n_to_He4_P30_reaclib) = drate_dT; + } } - } - { - // He4_Cl33_to_p_Ar36_reaclib + { + // Cl33_He4_to_p_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl33); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl33); - } + log_scor = rate_eval.log_screen(k_He4_Cl33); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl33); + } #endif - rate_He4_Cl33_to_p_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl33_to_p_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl33_to_p_Ar36_reaclib) = drate_dT; + rate_Cl33_He4_to_p_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl33_He4_to_p_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl33_He4_to_p_Ar36_reaclib) = drate_dT; + } } - } - { - // n_Cl34_to_p_S34_reaclib + { + // Cl34_n_to_p_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl34_to_p_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl34_to_p_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl34_to_p_S34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl34_n_to_p_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_n_to_p_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_n_to_p_S34_reaclib) = drate_dT; + } } - } - { - // n_Cl34_to_He4_P31_reaclib + { + // Cl34_n_to_He4_P31_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl34_to_He4_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl34_to_He4_P31_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl34_to_He4_P31_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl34_n_to_He4_P31_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_n_to_He4_P31_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_n_to_He4_P31_reaclib) = drate_dT; + } } - } - { - // He4_Cl34_to_n_K37_reaclib + { + // Cl34_He4_to_n_K37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl34); - } + log_scor = rate_eval.log_screen(k_He4_Cl34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl34); + } #endif - rate_He4_Cl34_to_n_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl34_to_n_K37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl34_to_n_K37_reaclib) = drate_dT; + rate_Cl34_He4_to_n_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_He4_to_n_K37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_He4_to_n_K37_reaclib) = drate_dT; + } } - } - { - // He4_Cl34_to_p_Ar37_reaclib + { + // Cl34_He4_to_p_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl34); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl34); - } + log_scor = rate_eval.log_screen(k_He4_Cl34); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl34); + } #endif - rate_He4_Cl34_to_p_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl34_to_p_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl34_to_p_Ar37_reaclib) = drate_dT; + rate_Cl34_He4_to_p_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl34_He4_to_p_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_He4_to_p_Ar37_reaclib) = drate_dT; + } } - } - { - // n_Cl35_to_p_S35_reaclib + { + // Cl35_n_to_p_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl35_to_p_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl35_to_p_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl35_to_p_S35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl35_n_to_p_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_n_to_p_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_n_to_p_S35_reaclib) = drate_dT; + } } - } - { - // n_Cl35_to_He4_P32_reaclib + { + // Cl35_n_to_He4_P32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl35_to_He4_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl35_to_He4_P32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl35_to_He4_P32_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl35_n_to_He4_P32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_n_to_He4_P32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_n_to_He4_P32_reaclib) = drate_dT; + } } - } - { - // p_Cl35_to_He4_S32_reaclib + { + // Cl35_p_to_He4_S32_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); - } + log_scor = rate_eval.log_screen(k_p_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl35); + } #endif - rate_p_Cl35_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl35_to_He4_S32_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl35_to_He4_S32_reaclib) = drate_dT; + rate_Cl35_p_to_He4_S32_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_p_to_He4_S32_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_p_to_He4_S32_reaclib) = drate_dT; + } } - } - { - // He4_Cl35_to_n_K38_reaclib + { + // Cl35_He4_to_n_K38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl35); - } + log_scor = rate_eval.log_screen(k_He4_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl35); + } #endif - rate_He4_Cl35_to_n_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl35_to_n_K38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl35_to_n_K38_reaclib) = drate_dT; + rate_Cl35_He4_to_n_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_He4_to_n_K38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_He4_to_n_K38_reaclib) = drate_dT; + } } - } - { - // He4_Cl35_to_p_Ar38_reaclib + { + // Cl35_He4_to_p_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl35); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl35); - } + log_scor = rate_eval.log_screen(k_He4_Cl35); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl35); + } #endif - rate_He4_Cl35_to_p_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl35_to_p_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl35_to_p_Ar38_reaclib) = drate_dT; + rate_Cl35_He4_to_p_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl35_He4_to_p_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_He4_to_p_Ar38_reaclib) = drate_dT; + } } - } - { - // n_Cl36_to_p_S36_reaclib + { + // Cl36_n_to_p_S36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl36_to_p_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl36_to_p_S36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl36_to_p_S36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl36_n_to_p_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_n_to_p_S36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_n_to_p_S36_reaclib) = drate_dT; + } } - } - { - // n_Cl36_to_He4_P33_reaclib + { + // Cl36_n_to_He4_P33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cl36_to_He4_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cl36_to_He4_P33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cl36_to_He4_P33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cl36_n_to_He4_P33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_n_to_He4_P33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_n_to_He4_P33_reaclib) = drate_dT; + } } - } - { - // p_Cl36_to_n_Ar36_reaclib + { + // Cl36_p_to_n_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl36); - } + log_scor = rate_eval.log_screen(k_p_Cl36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl36); + } #endif - rate_p_Cl36_to_n_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl36_to_n_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl36_to_n_Ar36_reaclib) = drate_dT; + rate_Cl36_p_to_n_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_p_to_n_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_p_to_n_Ar36_reaclib) = drate_dT; + } } - } - { - // p_Cl36_to_He4_S33_reaclib + { + // Cl36_p_to_He4_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl36); - } + log_scor = rate_eval.log_screen(k_p_Cl36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl36); + } #endif - rate_p_Cl36_to_He4_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl36_to_He4_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl36_to_He4_S33_reaclib) = drate_dT; + rate_Cl36_p_to_He4_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_p_to_He4_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_p_to_He4_S33_reaclib) = drate_dT; + } } - } - { - // He4_Cl36_to_n_K39_reaclib + { + // Cl36_He4_to_n_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl36); - } + log_scor = rate_eval.log_screen(k_He4_Cl36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl36); + } #endif - rate_He4_Cl36_to_n_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl36_to_n_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl36_to_n_K39_reaclib) = drate_dT; + rate_Cl36_He4_to_n_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_He4_to_n_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_He4_to_n_K39_reaclib) = drate_dT; + } } - } - { - // He4_Cl36_to_p_Ar39_reaclib + { + // Cl36_He4_to_p_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl36); - } + log_scor = rate_eval.log_screen(k_He4_Cl36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl36); + } #endif - rate_He4_Cl36_to_p_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl36_to_p_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl36_to_p_Ar39_reaclib) = drate_dT; + rate_Cl36_He4_to_p_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl36_He4_to_p_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_He4_to_p_Ar39_reaclib) = drate_dT; + } } - } - { - // p_Cl37_to_n_Ar37_reaclib + { + // Cl37_p_to_n_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl37); - } + log_scor = rate_eval.log_screen(k_p_Cl37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl37); + } #endif - rate_p_Cl37_to_n_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl37_to_n_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl37_to_n_Ar37_reaclib) = drate_dT; + rate_Cl37_p_to_n_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_p_to_n_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_p_to_n_Ar37_reaclib) = drate_dT; + } } - } - { - // p_Cl37_to_He4_S34_reaclib + { + // Cl37_p_to_He4_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cl37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl37); - } + log_scor = rate_eval.log_screen(k_p_Cl37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cl37); + } #endif - rate_p_Cl37_to_He4_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cl37_to_He4_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cl37_to_He4_S34_reaclib) = drate_dT; + rate_Cl37_p_to_He4_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_p_to_He4_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_p_to_He4_S34_reaclib) = drate_dT; + } } - } - { - // He4_Cl37_to_n_K40_reaclib + { + // Cl37_He4_to_n_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl37); - } + log_scor = rate_eval.log_screen(k_He4_Cl37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl37); + } #endif - rate_He4_Cl37_to_n_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl37_to_n_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl37_to_n_K40_reaclib) = drate_dT; + rate_Cl37_He4_to_n_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_He4_to_n_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_He4_to_n_K40_reaclib) = drate_dT; + } } - } - { - // He4_Cl37_to_p_Ar40_reaclib + { + // Cl37_He4_to_p_Ar40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cl37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl37); - } + log_scor = rate_eval.log_screen(k_He4_Cl37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cl37); + } #endif - rate_He4_Cl37_to_p_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cl37_to_p_Ar40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cl37_to_p_Ar40_reaclib) = drate_dT; + rate_Cl37_He4_to_p_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cl37_He4_to_p_Ar40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_He4_to_p_Ar40_reaclib) = drate_dT; + } } - } - { - // n_Ar36_to_p_Cl36_reaclib + { + // Ar36_n_to_p_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar36_to_p_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar36_to_p_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar36_to_p_Cl36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_n_to_p_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_n_to_p_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_n_to_p_Cl36_reaclib) = drate_dT; + } } - } - { - // n_Ar36_to_He4_S33_reaclib + { + // Ar36_n_to_He4_S33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar36_to_He4_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar36_to_He4_S33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar36_to_He4_S33_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar36_n_to_He4_S33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_n_to_He4_S33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_n_to_He4_S33_reaclib) = drate_dT; + } } - } - { - // p_Ar36_to_He4_Cl33_reaclib + { + // Ar36_p_to_He4_Cl33_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar36); - } + log_scor = rate_eval.log_screen(k_p_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar36); + } #endif - rate_p_Ar36_to_He4_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar36_to_He4_Cl33_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar36_to_He4_Cl33_reaclib) = drate_dT; + rate_Ar36_p_to_He4_Cl33_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_p_to_He4_Cl33_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_p_to_He4_Cl33_reaclib) = drate_dT; + } } - } - { - // He4_Ar36_to_p_K39_reaclib + { + // Ar36_He4_to_p_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar36); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); - } + log_scor = rate_eval.log_screen(k_He4_Ar36); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar36); + } #endif - rate_He4_Ar36_to_p_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar36_to_p_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar36_to_p_K39_reaclib) = drate_dT; + rate_Ar36_He4_to_p_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar36_He4_to_p_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_He4_to_p_K39_reaclib) = drate_dT; + } } - } - { - // n_Ar37_to_p_Cl37_reaclib + { + // Ar37_n_to_p_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar37_to_p_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar37_to_p_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar37_to_p_Cl37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar37_n_to_p_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_n_to_p_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_n_to_p_Cl37_reaclib) = drate_dT; + } } - } - { - // n_Ar37_to_He4_S34_reaclib + { + // Ar37_n_to_He4_S34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar37_to_He4_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar37_to_He4_S34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar37_to_He4_S34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar37_n_to_He4_S34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_n_to_He4_S34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_n_to_He4_S34_reaclib) = drate_dT; + } } - } - { - // p_Ar37_to_n_K37_reaclib + { + // Ar37_p_to_n_K37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar37); - } + log_scor = rate_eval.log_screen(k_p_Ar37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar37); + } #endif - rate_p_Ar37_to_n_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar37_to_n_K37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar37_to_n_K37_reaclib) = drate_dT; + rate_Ar37_p_to_n_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_p_to_n_K37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_p_to_n_K37_reaclib) = drate_dT; + } } - } - { - // p_Ar37_to_He4_Cl34_reaclib + { + // Ar37_p_to_He4_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar37); - } + log_scor = rate_eval.log_screen(k_p_Ar37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar37); + } #endif - rate_p_Ar37_to_He4_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar37_to_He4_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar37_to_He4_Cl34_reaclib) = drate_dT; + rate_Ar37_p_to_He4_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_p_to_He4_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_p_to_He4_Cl34_reaclib) = drate_dT; + } } - } - { - // He4_Ar37_to_n_Ca40_reaclib + { + // Ar37_He4_to_n_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar37); - } + log_scor = rate_eval.log_screen(k_He4_Ar37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar37); + } #endif - rate_He4_Ar37_to_n_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar37_to_n_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar37_to_n_Ca40_reaclib) = drate_dT; + rate_Ar37_He4_to_n_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_He4_to_n_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_He4_to_n_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Ar37_to_p_K40_reaclib + { + // Ar37_He4_to_p_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar37); - } + log_scor = rate_eval.log_screen(k_He4_Ar37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar37); + } #endif - rate_He4_Ar37_to_p_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar37_to_p_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar37_to_p_K40_reaclib) = drate_dT; + rate_Ar37_He4_to_p_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar37_He4_to_p_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_He4_to_p_K40_reaclib) = drate_dT; + } } - } - { - // n_Ar38_to_He4_S35_reaclib + { + // Ar38_n_to_He4_S35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar38_to_He4_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar38_to_He4_S35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar38_to_He4_S35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar38_n_to_He4_S35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_n_to_He4_S35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_n_to_He4_S35_reaclib) = drate_dT; + } } - } - { - // p_Ar38_to_n_K38_reaclib + { + // Ar38_p_to_n_K38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar38); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar38); - } + log_scor = rate_eval.log_screen(k_p_Ar38); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar38); + } #endif - rate_p_Ar38_to_n_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar38_to_n_K38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar38_to_n_K38_reaclib) = drate_dT; + rate_Ar38_p_to_n_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_p_to_n_K38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_p_to_n_K38_reaclib) = drate_dT; + } } - } - { - // p_Ar38_to_He4_Cl35_reaclib + { + // Ar38_p_to_He4_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar38); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar38); - } + log_scor = rate_eval.log_screen(k_p_Ar38); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar38); + } #endif - rate_p_Ar38_to_He4_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar38_to_He4_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar38_to_He4_Cl35_reaclib) = drate_dT; + rate_Ar38_p_to_He4_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_p_to_He4_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_p_to_He4_Cl35_reaclib) = drate_dT; + } } - } - { - // He4_Ar38_to_n_Ca41_reaclib + { + // Ar38_He4_to_n_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar38); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar38); - } + log_scor = rate_eval.log_screen(k_He4_Ar38); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar38); + } #endif - rate_He4_Ar38_to_n_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar38_to_n_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar38_to_n_Ca41_reaclib) = drate_dT; + rate_Ar38_He4_to_n_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_He4_to_n_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_He4_to_n_Ca41_reaclib) = drate_dT; + } } - } - { - // He4_Ar38_to_p_K41_reaclib + { + // Ar38_He4_to_p_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar38); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar38); - } + log_scor = rate_eval.log_screen(k_He4_Ar38); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar38); + } #endif - rate_He4_Ar38_to_p_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar38_to_p_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar38_to_p_K41_reaclib) = drate_dT; + rate_Ar38_He4_to_p_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar38_He4_to_p_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_He4_to_p_K41_reaclib) = drate_dT; + } } - } - { - // n_Ar39_to_He4_S36_reaclib + { + // Ar39_n_to_He4_S36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ar39_to_He4_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ar39_to_He4_S36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ar39_to_He4_S36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ar39_n_to_He4_S36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_n_to_He4_S36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_n_to_He4_S36_reaclib) = drate_dT; + } } - } - { - // p_Ar39_to_n_K39_reaclib + { + // Ar39_p_to_n_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar39); - } + log_scor = rate_eval.log_screen(k_p_Ar39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar39); + } #endif - rate_p_Ar39_to_n_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar39_to_n_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar39_to_n_K39_reaclib) = drate_dT; + rate_Ar39_p_to_n_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_p_to_n_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_p_to_n_K39_reaclib) = drate_dT; + } } - } - { - // p_Ar39_to_He4_Cl36_reaclib + { + // Ar39_p_to_He4_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar39); - } + log_scor = rate_eval.log_screen(k_p_Ar39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar39); + } #endif - rate_p_Ar39_to_He4_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar39_to_He4_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar39_to_He4_Cl36_reaclib) = drate_dT; + rate_Ar39_p_to_He4_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_p_to_He4_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_p_to_He4_Cl36_reaclib) = drate_dT; + } } - } - { - // He4_Ar39_to_n_Ca42_reaclib + { + // Ar39_He4_to_n_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar39); - } + log_scor = rate_eval.log_screen(k_He4_Ar39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar39); + } #endif - rate_He4_Ar39_to_n_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar39_to_n_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar39_to_n_Ca42_reaclib) = drate_dT; + rate_Ar39_He4_to_n_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar39_He4_to_n_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_He4_to_n_Ca42_reaclib) = drate_dT; + } } - } - { - // p_Ar40_to_n_K40_reaclib + { + // Ar40_p_to_n_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar40); - } + log_scor = rate_eval.log_screen(k_p_Ar40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar40); + } #endif - rate_p_Ar40_to_n_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar40_to_n_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar40_to_n_K40_reaclib) = drate_dT; + rate_Ar40_p_to_n_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar40_p_to_n_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar40_p_to_n_K40_reaclib) = drate_dT; + } } - } - { - // p_Ar40_to_He4_Cl37_reaclib + { + // Ar40_p_to_He4_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ar40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar40); - } + log_scor = rate_eval.log_screen(k_p_Ar40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ar40); + } #endif - rate_p_Ar40_to_He4_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ar40_to_He4_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ar40_to_He4_Cl37_reaclib) = drate_dT; + rate_Ar40_p_to_He4_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar40_p_to_He4_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar40_p_to_He4_Cl37_reaclib) = drate_dT; + } } - } - { - // He4_Ar40_to_n_Ca43_reaclib + { + // Ar40_He4_to_n_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ar40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar40); - } + log_scor = rate_eval.log_screen(k_He4_Ar40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ar40); + } #endif - rate_He4_Ar40_to_n_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ar40_to_n_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ar40_to_n_Ca43_reaclib) = drate_dT; + rate_Ar40_He4_to_n_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ar40_He4_to_n_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar40_He4_to_n_Ca43_reaclib) = drate_dT; + } } - } - { - // n_K37_to_p_Ar37_reaclib + { + // K37_n_to_p_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K37_to_p_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K37_to_p_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K37_to_p_Ar37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K37_n_to_p_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K37_n_to_p_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K37_n_to_p_Ar37_reaclib) = drate_dT; + } } - } - { - // n_K37_to_He4_Cl34_reaclib + { + // K37_n_to_He4_Cl34_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K37_to_He4_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K37_to_He4_Cl34_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K37_to_He4_Cl34_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K37_n_to_He4_Cl34_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K37_n_to_He4_Cl34_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K37_n_to_He4_Cl34_reaclib) = drate_dT; + } } - } - { - // He4_K37_to_p_Ca40_reaclib + { + // K37_He4_to_p_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K37); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K37); - } + log_scor = rate_eval.log_screen(k_He4_K37); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K37); + } #endif - rate_He4_K37_to_p_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K37_to_p_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K37_to_p_Ca40_reaclib) = drate_dT; + rate_K37_He4_to_p_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K37_He4_to_p_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K37_He4_to_p_Ca40_reaclib) = drate_dT; + } } - } - { - // n_K38_to_p_Ar38_reaclib + { + // K38_n_to_p_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K38_to_p_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K38_to_p_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K38_to_p_Ar38_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K38_n_to_p_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K38_n_to_p_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K38_n_to_p_Ar38_reaclib) = drate_dT; + } } - } - { - // n_K38_to_He4_Cl35_reaclib + { + // K38_n_to_He4_Cl35_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K38_to_He4_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K38_to_He4_Cl35_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K38_to_He4_Cl35_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K38_n_to_He4_Cl35_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K38_n_to_He4_Cl35_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K38_n_to_He4_Cl35_reaclib) = drate_dT; + } } - } - { - // He4_K38_to_p_Ca41_reaclib + { + // K38_He4_to_p_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K38); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K38); - } + log_scor = rate_eval.log_screen(k_He4_K38); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K38); + } #endif - rate_He4_K38_to_p_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K38_to_p_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K38_to_p_Ca41_reaclib) = drate_dT; + rate_K38_He4_to_p_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K38_He4_to_p_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K38_He4_to_p_Ca41_reaclib) = drate_dT; + } } - } - { - // n_K39_to_p_Ar39_reaclib + { + // K39_n_to_p_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K39_to_p_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K39_to_p_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K39_to_p_Ar39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K39_n_to_p_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_n_to_p_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_n_to_p_Ar39_reaclib) = drate_dT; + } } - } - { - // n_K39_to_He4_Cl36_reaclib + { + // K39_n_to_He4_Cl36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K39_to_He4_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K39_to_He4_Cl36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K39_to_He4_Cl36_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K39_n_to_He4_Cl36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_n_to_He4_Cl36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_n_to_He4_Cl36_reaclib) = drate_dT; + } } - } - { - // p_K39_to_He4_Ar36_reaclib + { + // K39_p_to_He4_Ar36_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); - } + log_scor = rate_eval.log_screen(k_p_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K39); + } #endif - rate_p_K39_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K39_to_He4_Ar36_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K39_to_He4_Ar36_reaclib) = drate_dT; + rate_K39_p_to_He4_Ar36_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_p_to_He4_Ar36_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_p_to_He4_Ar36_reaclib) = drate_dT; + } } - } - { - // He4_K39_to_p_Ca42_reaclib + { + // K39_He4_to_p_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K39); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K39); - } + log_scor = rate_eval.log_screen(k_He4_K39); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K39); + } #endif - rate_He4_K39_to_p_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K39_to_p_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K39_to_p_Ca42_reaclib) = drate_dT; + rate_K39_He4_to_p_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K39_He4_to_p_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_He4_to_p_Ca42_reaclib) = drate_dT; + } } - } - { - // n_K40_to_p_Ar40_reaclib + { + // K40_n_to_p_Ar40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K40_to_p_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K40_to_p_Ar40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K40_to_p_Ar40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K40_n_to_p_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_n_to_p_Ar40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_n_to_p_Ar40_reaclib) = drate_dT; + } } - } - { - // n_K40_to_He4_Cl37_reaclib + { + // K40_n_to_He4_Cl37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_K40_to_He4_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_K40_to_He4_Cl37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_K40_to_He4_Cl37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_K40_n_to_He4_Cl37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_n_to_He4_Cl37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_n_to_He4_Cl37_reaclib) = drate_dT; + } } - } - { - // p_K40_to_n_Ca40_reaclib + { + // K40_p_to_n_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K40); - } + log_scor = rate_eval.log_screen(k_p_K40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K40); + } #endif - rate_p_K40_to_n_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K40_to_n_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K40_to_n_Ca40_reaclib) = drate_dT; + rate_K40_p_to_n_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_p_to_n_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_p_to_n_Ca40_reaclib) = drate_dT; + } } - } - { - // p_K40_to_He4_Ar37_reaclib + { + // K40_p_to_He4_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K40); - } + log_scor = rate_eval.log_screen(k_p_K40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K40); + } #endif - rate_p_K40_to_He4_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K40_to_He4_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K40_to_He4_Ar37_reaclib) = drate_dT; + rate_K40_p_to_He4_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_p_to_He4_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_p_to_He4_Ar37_reaclib) = drate_dT; + } } - } - { - // He4_K40_to_n_Sc43_reaclib + { + // K40_He4_to_n_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K40); - } + log_scor = rate_eval.log_screen(k_He4_K40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K40); + } #endif - rate_He4_K40_to_n_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K40_to_n_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K40_to_n_Sc43_reaclib) = drate_dT; + rate_K40_He4_to_n_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_He4_to_n_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_He4_to_n_Sc43_reaclib) = drate_dT; + } } - } - { - // He4_K40_to_p_Ca43_reaclib + { + // K40_He4_to_p_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K40); - } + log_scor = rate_eval.log_screen(k_He4_K40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K40); + } #endif - rate_He4_K40_to_p_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K40_to_p_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K40_to_p_Ca43_reaclib) = drate_dT; + rate_K40_He4_to_p_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K40_He4_to_p_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_He4_to_p_Ca43_reaclib) = drate_dT; + } } - } - { - // p_K41_to_n_Ca41_reaclib + { + // K41_p_to_n_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K41); - } + log_scor = rate_eval.log_screen(k_p_K41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K41); + } #endif - rate_p_K41_to_n_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K41_to_n_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K41_to_n_Ca41_reaclib) = drate_dT; + rate_K41_p_to_n_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_p_to_n_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_p_to_n_Ca41_reaclib) = drate_dT; + } } - } - { - // p_K41_to_He4_Ar38_reaclib + { + // K41_p_to_He4_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_K41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K41); - } + log_scor = rate_eval.log_screen(k_p_K41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_K41); + } #endif - rate_p_K41_to_He4_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_K41_to_He4_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_K41_to_He4_Ar38_reaclib) = drate_dT; + rate_K41_p_to_He4_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_p_to_He4_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_p_to_He4_Ar38_reaclib) = drate_dT; + } } - } - { - // He4_K41_to_n_Sc44_reaclib + { + // K41_He4_to_n_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K41); - } + log_scor = rate_eval.log_screen(k_He4_K41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K41); + } #endif - rate_He4_K41_to_n_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K41_to_n_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K41_to_n_Sc44_reaclib) = drate_dT; + rate_K41_He4_to_n_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_He4_to_n_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_He4_to_n_Sc44_reaclib) = drate_dT; + } } - } - { - // He4_K41_to_p_Ca44_reaclib + { + // K41_He4_to_p_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_K41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K41); - } + log_scor = rate_eval.log_screen(k_He4_K41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_K41); + } #endif - rate_He4_K41_to_p_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_K41_to_p_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_K41_to_p_Ca44_reaclib) = drate_dT; + rate_K41_He4_to_p_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_K41_He4_to_p_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_He4_to_p_Ca44_reaclib) = drate_dT; + } } - } - { - // n_Ca40_to_p_K40_reaclib + { + // Ca40_n_to_p_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca40_to_p_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca40_to_p_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca40_to_p_K40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_n_to_p_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_n_to_p_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_n_to_p_K40_reaclib) = drate_dT; + } } - } - { - // n_Ca40_to_He4_Ar37_reaclib + { + // Ca40_n_to_He4_Ar37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca40_to_He4_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca40_to_He4_Ar37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca40_to_He4_Ar37_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca40_n_to_He4_Ar37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_n_to_He4_Ar37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_n_to_He4_Ar37_reaclib) = drate_dT; + } } - } - { - // p_Ca40_to_He4_K37_reaclib + { + // Ca40_p_to_He4_K37_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca40); - } + log_scor = rate_eval.log_screen(k_p_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca40); + } #endif - rate_p_Ca40_to_He4_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca40_to_He4_K37_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca40_to_He4_K37_reaclib) = drate_dT; + rate_Ca40_p_to_He4_K37_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_p_to_He4_K37_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_p_to_He4_K37_reaclib) = drate_dT; + } } - } - { - // He4_Ca40_to_p_Sc43_reaclib + { + // Ca40_He4_to_p_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca40); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); - } + log_scor = rate_eval.log_screen(k_He4_Ca40); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca40); + } #endif - rate_He4_Ca40_to_p_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca40_to_p_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca40_to_p_Sc43_reaclib) = drate_dT; + rate_Ca40_He4_to_p_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca40_He4_to_p_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_He4_to_p_Sc43_reaclib) = drate_dT; + } } - } - { - // n_Ca41_to_p_K41_reaclib + { + // Ca41_n_to_p_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca41_to_p_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca41_to_p_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca41_to_p_K41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca41_n_to_p_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_n_to_p_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_n_to_p_K41_reaclib) = drate_dT; + } } - } - { - // n_Ca41_to_He4_Ar38_reaclib + { + // Ca41_n_to_He4_Ar38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca41_to_He4_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca41_to_He4_Ar38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca41_to_He4_Ar38_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca41_n_to_He4_Ar38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_n_to_He4_Ar38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_n_to_He4_Ar38_reaclib) = drate_dT; + } } - } - { - // p_Ca41_to_He4_K38_reaclib + { + // Ca41_p_to_He4_K38_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca41); - } + log_scor = rate_eval.log_screen(k_p_Ca41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca41); + } #endif - rate_p_Ca41_to_He4_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca41_to_He4_K38_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca41_to_He4_K38_reaclib) = drate_dT; + rate_Ca41_p_to_He4_K38_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_p_to_He4_K38_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_p_to_He4_K38_reaclib) = drate_dT; + } } - } - { - // He4_Ca41_to_n_Ti44_reaclib + { + // Ca41_He4_to_n_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca41); - } + log_scor = rate_eval.log_screen(k_He4_Ca41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca41); + } #endif - rate_He4_Ca41_to_n_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca41_to_n_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca41_to_n_Ti44_reaclib) = drate_dT; + rate_Ca41_He4_to_n_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_He4_to_n_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_He4_to_n_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_Ca41_to_p_Sc44_reaclib + { + // Ca41_He4_to_p_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca41); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca41); - } + log_scor = rate_eval.log_screen(k_He4_Ca41); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca41); + } #endif - rate_He4_Ca41_to_p_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca41_to_p_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca41_to_p_Sc44_reaclib) = drate_dT; + rate_Ca41_He4_to_p_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca41_He4_to_p_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_He4_to_p_Sc44_reaclib) = drate_dT; + } } - } - { - // n_Ca42_to_He4_Ar39_reaclib + { + // Ca42_n_to_He4_Ar39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca42_to_He4_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca42_to_He4_Ar39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca42_to_He4_Ar39_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca42_n_to_He4_Ar39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_n_to_He4_Ar39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_n_to_He4_Ar39_reaclib) = drate_dT; + } } - } - { - // p_Ca42_to_He4_K39_reaclib + { + // Ca42_p_to_He4_K39_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca42); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca42); - } + log_scor = rate_eval.log_screen(k_p_Ca42); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca42); + } #endif - rate_p_Ca42_to_He4_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca42_to_He4_K39_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca42_to_He4_K39_reaclib) = drate_dT; + rate_Ca42_p_to_He4_K39_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_p_to_He4_K39_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_p_to_He4_K39_reaclib) = drate_dT; + } } - } - { - // He4_Ca42_to_n_Ti45_reaclib + { + // Ca42_He4_to_n_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca42); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca42); - } + log_scor = rate_eval.log_screen(k_He4_Ca42); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca42); + } #endif - rate_He4_Ca42_to_n_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca42_to_n_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca42_to_n_Ti45_reaclib) = drate_dT; + rate_Ca42_He4_to_n_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_He4_to_n_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_He4_to_n_Ti45_reaclib) = drate_dT; + } } - } - { - // He4_Ca42_to_p_Sc45_reaclib + { + // Ca42_He4_to_p_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca42); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca42); - } + log_scor = rate_eval.log_screen(k_He4_Ca42); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca42); + } #endif - rate_He4_Ca42_to_p_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca42_to_p_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca42_to_p_Sc45_reaclib) = drate_dT; + rate_Ca42_He4_to_p_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca42_He4_to_p_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca42_He4_to_p_Sc45_reaclib) = drate_dT; + } } - } - { - // n_Ca43_to_He4_Ar40_reaclib + { + // Ca43_n_to_He4_Ar40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ca43_to_He4_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ca43_to_He4_Ar40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ca43_to_He4_Ar40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ca43_n_to_He4_Ar40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_n_to_He4_Ar40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_n_to_He4_Ar40_reaclib) = drate_dT; + } } - } - { - // p_Ca43_to_n_Sc43_reaclib + { + // Ca43_p_to_n_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca43); - } + log_scor = rate_eval.log_screen(k_p_Ca43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca43); + } #endif - rate_p_Ca43_to_n_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca43_to_n_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca43_to_n_Sc43_reaclib) = drate_dT; + rate_Ca43_p_to_n_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_p_to_n_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_p_to_n_Sc43_reaclib) = drate_dT; + } } - } - { - // p_Ca43_to_He4_K40_reaclib + { + // Ca43_p_to_He4_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca43); - } + log_scor = rate_eval.log_screen(k_p_Ca43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca43); + } #endif - rate_p_Ca43_to_He4_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca43_to_He4_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca43_to_He4_K40_reaclib) = drate_dT; + rate_Ca43_p_to_He4_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_p_to_He4_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_p_to_He4_K40_reaclib) = drate_dT; + } } - } - { - // He4_Ca43_to_n_Ti46_reaclib + { + // Ca43_He4_to_n_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca43); - } + log_scor = rate_eval.log_screen(k_He4_Ca43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca43); + } #endif - rate_He4_Ca43_to_n_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca43_to_n_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca43_to_n_Ti46_reaclib) = drate_dT; + rate_Ca43_He4_to_n_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_He4_to_n_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_He4_to_n_Ti46_reaclib) = drate_dT; + } } - } - { - // He4_Ca43_to_p_Sc46_reaclib + { + // Ca43_He4_to_p_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca43); - } + log_scor = rate_eval.log_screen(k_He4_Ca43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca43); + } #endif - rate_He4_Ca43_to_p_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca43_to_p_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca43_to_p_Sc46_reaclib) = drate_dT; + rate_Ca43_He4_to_p_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca43_He4_to_p_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_He4_to_p_Sc46_reaclib) = drate_dT; + } } - } - { - // p_Ca44_to_n_Sc44_reaclib + { + // Ca44_p_to_n_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca44); - } + log_scor = rate_eval.log_screen(k_p_Ca44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca44); + } #endif - rate_p_Ca44_to_n_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca44_to_n_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca44_to_n_Sc44_reaclib) = drate_dT; + rate_Ca44_p_to_n_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_p_to_n_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_p_to_n_Sc44_reaclib) = drate_dT; + } } - } - { - // p_Ca44_to_He4_K41_reaclib + { + // Ca44_p_to_He4_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca44); - } + log_scor = rate_eval.log_screen(k_p_Ca44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca44); + } #endif - rate_p_Ca44_to_He4_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca44_to_He4_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca44_to_He4_K41_reaclib) = drate_dT; + rate_Ca44_p_to_He4_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_p_to_He4_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_p_to_He4_K41_reaclib) = drate_dT; + } } - } - { - // He4_Ca44_to_n_Ti47_reaclib + { + // Ca44_He4_to_n_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca44); - } + log_scor = rate_eval.log_screen(k_He4_Ca44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca44); + } #endif - rate_He4_Ca44_to_n_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca44_to_n_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca44_to_n_Ti47_reaclib) = drate_dT; + rate_Ca44_He4_to_n_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_He4_to_n_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_He4_to_n_Ti47_reaclib) = drate_dT; + } } - } - { - // He4_Ca44_to_p_Sc47_reaclib + { + // Ca44_He4_to_p_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca44); - } + log_scor = rate_eval.log_screen(k_He4_Ca44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca44); + } #endif - rate_He4_Ca44_to_p_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca44_to_p_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca44_to_p_Sc47_reaclib) = drate_dT; + rate_Ca44_He4_to_p_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca44_He4_to_p_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_He4_to_p_Sc47_reaclib) = drate_dT; + } } - } - { - // p_Ca45_to_n_Sc45_reaclib + { + // Ca45_p_to_n_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca45); - } + log_scor = rate_eval.log_screen(k_p_Ca45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca45); + } #endif - rate_p_Ca45_to_n_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca45_to_n_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca45_to_n_Sc45_reaclib) = drate_dT; + rate_Ca45_p_to_n_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca45_p_to_n_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca45_p_to_n_Sc45_reaclib) = drate_dT; + } } - } - { - // He4_Ca45_to_n_Ti48_reaclib + { + // Ca45_He4_to_n_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca45); - } + log_scor = rate_eval.log_screen(k_He4_Ca45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca45); + } #endif - rate_He4_Ca45_to_n_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca45_to_n_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca45_to_n_Ti48_reaclib) = drate_dT; + rate_Ca45_He4_to_n_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca45_He4_to_n_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca45_He4_to_n_Ti48_reaclib) = drate_dT; + } } - } - { - // He4_Ca45_to_p_Sc48_reaclib + { + // Ca45_He4_to_p_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca45); - } + log_scor = rate_eval.log_screen(k_He4_Ca45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca45); + } #endif - rate_He4_Ca45_to_p_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca45_to_p_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca45_to_p_Sc48_reaclib) = drate_dT; + rate_Ca45_He4_to_p_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca45_He4_to_p_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca45_He4_to_p_Sc48_reaclib) = drate_dT; + } } - } - { - // p_Ca46_to_n_Sc46_reaclib + { + // Ca46_p_to_n_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca46); - } + log_scor = rate_eval.log_screen(k_p_Ca46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca46); + } #endif - rate_p_Ca46_to_n_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca46_to_n_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca46_to_n_Sc46_reaclib) = drate_dT; + rate_Ca46_p_to_n_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca46_p_to_n_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca46_p_to_n_Sc46_reaclib) = drate_dT; + } } - } - { - // He4_Ca46_to_n_Ti49_reaclib + { + // Ca46_He4_to_n_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca46); - } + log_scor = rate_eval.log_screen(k_He4_Ca46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca46); + } #endif - rate_He4_Ca46_to_n_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca46_to_n_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca46_to_n_Ti49_reaclib) = drate_dT; + rate_Ca46_He4_to_n_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca46_He4_to_n_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca46_He4_to_n_Ti49_reaclib) = drate_dT; + } } - } - { - // He4_Ca46_to_p_Sc49_reaclib + { + // Ca46_He4_to_p_Sc49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca46); - } + log_scor = rate_eval.log_screen(k_He4_Ca46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca46); + } #endif - rate_He4_Ca46_to_p_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca46_to_p_Sc49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca46_to_p_Sc49_reaclib) = drate_dT; + rate_Ca46_He4_to_p_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca46_He4_to_p_Sc49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca46_He4_to_p_Sc49_reaclib) = drate_dT; + } } - } - { - // p_Ca47_to_n_Sc47_reaclib + { + // Ca47_p_to_n_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca47); - } + log_scor = rate_eval.log_screen(k_p_Ca47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca47); + } #endif - rate_p_Ca47_to_n_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca47_to_n_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca47_to_n_Sc47_reaclib) = drate_dT; + rate_Ca47_p_to_n_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca47_p_to_n_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca47_p_to_n_Sc47_reaclib) = drate_dT; + } } - } - { - // He4_Ca47_to_n_Ti50_reaclib + { + // Ca47_He4_to_n_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca47); - } + log_scor = rate_eval.log_screen(k_He4_Ca47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca47); + } #endif - rate_He4_Ca47_to_n_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca47_to_n_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca47_to_n_Ti50_reaclib) = drate_dT; + rate_Ca47_He4_to_n_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca47_He4_to_n_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca47_He4_to_n_Ti50_reaclib) = drate_dT; + } } - } - { - // p_Ca48_to_n_Sc48_reaclib + { + // Ca48_p_to_n_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ca48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca48); - } + log_scor = rate_eval.log_screen(k_p_Ca48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ca48); + } #endif - rate_p_Ca48_to_n_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ca48_to_n_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ca48_to_n_Sc48_reaclib) = drate_dT; + rate_Ca48_p_to_n_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca48_p_to_n_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca48_p_to_n_Sc48_reaclib) = drate_dT; + } } - } - { - // He4_Ca48_to_n_Ti51_reaclib + { + // Ca48_He4_to_n_Ti51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ca48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca48); - } + log_scor = rate_eval.log_screen(k_He4_Ca48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ca48); + } #endif - rate_He4_Ca48_to_n_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ca48_to_n_Ti51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ca48_to_n_Ti51_reaclib) = drate_dT; + rate_Ca48_He4_to_n_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ca48_He4_to_n_Ti51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca48_He4_to_n_Ti51_reaclib) = drate_dT; + } } - } - { - // n_Sc43_to_p_Ca43_reaclib + { + // Sc43_n_to_p_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc43_to_p_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc43_to_p_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc43_to_p_Ca43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc43_n_to_p_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_n_to_p_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_n_to_p_Ca43_reaclib) = drate_dT; + } } - } - { - // n_Sc43_to_He4_K40_reaclib + { + // Sc43_n_to_He4_K40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc43_to_He4_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc43_to_He4_K40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc43_to_He4_K40_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc43_n_to_He4_K40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_n_to_He4_K40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_n_to_He4_K40_reaclib) = drate_dT; + } } - } - { - // p_Sc43_to_He4_Ca40_reaclib + { + // Sc43_p_to_He4_Ca40_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); - } + log_scor = rate_eval.log_screen(k_p_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc43); + } #endif - rate_p_Sc43_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc43_to_He4_Ca40_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc43_to_He4_Ca40_reaclib) = drate_dT; + rate_Sc43_p_to_He4_Ca40_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_p_to_He4_Ca40_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_p_to_He4_Ca40_reaclib) = drate_dT; + } } - } - { - // He4_Sc43_to_n_V46_reaclib + { + // Sc43_He4_to_n_V46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc43); - } + log_scor = rate_eval.log_screen(k_He4_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc43); + } #endif - rate_He4_Sc43_to_n_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc43_to_n_V46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc43_to_n_V46_reaclib) = drate_dT; + rate_Sc43_He4_to_n_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_He4_to_n_V46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_He4_to_n_V46_reaclib) = drate_dT; + } } - } - { - // He4_Sc43_to_p_Ti46_reaclib + { + // Sc43_He4_to_p_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc43); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc43); - } + log_scor = rate_eval.log_screen(k_He4_Sc43); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc43); + } #endif - rate_He4_Sc43_to_p_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc43_to_p_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc43_to_p_Ti46_reaclib) = drate_dT; + rate_Sc43_He4_to_p_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc43_He4_to_p_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_He4_to_p_Ti46_reaclib) = drate_dT; + } } - } - { - // n_Sc44_to_p_Ca44_reaclib + { + // Sc44_n_to_p_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc44_to_p_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc44_to_p_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc44_to_p_Ca44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc44_n_to_p_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_n_to_p_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_n_to_p_Ca44_reaclib) = drate_dT; + } } - } - { - // n_Sc44_to_He4_K41_reaclib + { + // Sc44_n_to_He4_K41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc44_to_He4_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc44_to_He4_K41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc44_to_He4_K41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc44_n_to_He4_K41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_n_to_He4_K41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_n_to_He4_K41_reaclib) = drate_dT; + } } - } - { - // p_Sc44_to_n_Ti44_reaclib + { + // Sc44_p_to_n_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc44); - } + log_scor = rate_eval.log_screen(k_p_Sc44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc44); + } #endif - rate_p_Sc44_to_n_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc44_to_n_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc44_to_n_Ti44_reaclib) = drate_dT; + rate_Sc44_p_to_n_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_p_to_n_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_p_to_n_Ti44_reaclib) = drate_dT; + } } - } - { - // p_Sc44_to_He4_Ca41_reaclib + { + // Sc44_p_to_He4_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc44); - } + log_scor = rate_eval.log_screen(k_p_Sc44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc44); + } #endif - rate_p_Sc44_to_He4_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc44_to_He4_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc44_to_He4_Ca41_reaclib) = drate_dT; + rate_Sc44_p_to_He4_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_p_to_He4_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_p_to_He4_Ca41_reaclib) = drate_dT; + } } - } - { - // He4_Sc44_to_n_V47_reaclib + { + // Sc44_He4_to_n_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc44); - } + log_scor = rate_eval.log_screen(k_He4_Sc44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc44); + } #endif - rate_He4_Sc44_to_n_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc44_to_n_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc44_to_n_V47_reaclib) = drate_dT; + rate_Sc44_He4_to_n_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_He4_to_n_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_He4_to_n_V47_reaclib) = drate_dT; + } } - } - { - // He4_Sc44_to_p_Ti47_reaclib + { + // Sc44_He4_to_p_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc44); - } + log_scor = rate_eval.log_screen(k_He4_Sc44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc44); + } #endif - rate_He4_Sc44_to_p_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc44_to_p_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc44_to_p_Ti47_reaclib) = drate_dT; + rate_Sc44_He4_to_p_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc44_He4_to_p_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_He4_to_p_Ti47_reaclib) = drate_dT; + } } - } - { - // n_Sc45_to_p_Ca45_reaclib + { + // Sc45_n_to_p_Ca45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc45_to_p_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc45_to_p_Ca45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc45_to_p_Ca45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc45_n_to_p_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_n_to_p_Ca45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_n_to_p_Ca45_reaclib) = drate_dT; + } } - } - { - // p_Sc45_to_n_Ti45_reaclib + { + // Sc45_p_to_n_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc45); - } + log_scor = rate_eval.log_screen(k_p_Sc45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc45); + } #endif - rate_p_Sc45_to_n_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc45_to_n_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc45_to_n_Ti45_reaclib) = drate_dT; + rate_Sc45_p_to_n_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_p_to_n_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_p_to_n_Ti45_reaclib) = drate_dT; + } } - } - { - // p_Sc45_to_He4_Ca42_reaclib + { + // Sc45_p_to_He4_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc45); - } + log_scor = rate_eval.log_screen(k_p_Sc45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc45); + } #endif - rate_p_Sc45_to_He4_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc45_to_He4_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc45_to_He4_Ca42_reaclib) = drate_dT; + rate_Sc45_p_to_He4_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_p_to_He4_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_p_to_He4_Ca42_reaclib) = drate_dT; + } } - } - { - // He4_Sc45_to_n_V48_reaclib + { + // Sc45_He4_to_n_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc45); - } + log_scor = rate_eval.log_screen(k_He4_Sc45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc45); + } #endif - rate_He4_Sc45_to_n_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc45_to_n_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc45_to_n_V48_reaclib) = drate_dT; + rate_Sc45_He4_to_n_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_He4_to_n_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_He4_to_n_V48_reaclib) = drate_dT; + } } - } - { - // He4_Sc45_to_p_Ti48_reaclib + { + // Sc45_He4_to_p_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc45); - } + log_scor = rate_eval.log_screen(k_He4_Sc45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc45); + } #endif - rate_He4_Sc45_to_p_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc45_to_p_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc45_to_p_Ti48_reaclib) = drate_dT; + rate_Sc45_He4_to_p_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc45_He4_to_p_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_He4_to_p_Ti48_reaclib) = drate_dT; + } } - } - { - // n_Sc46_to_p_Ca46_reaclib + { + // Sc46_n_to_p_Ca46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc46_to_p_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc46_to_p_Ca46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc46_to_p_Ca46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc46_n_to_p_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_n_to_p_Ca46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_n_to_p_Ca46_reaclib) = drate_dT; + } } - } - { - // p_Sc46_to_n_Ti46_reaclib + { + // Sc46_p_to_n_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc46); - } + log_scor = rate_eval.log_screen(k_p_Sc46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc46); + } #endif - rate_p_Sc46_to_n_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc46_to_n_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc46_to_n_Ti46_reaclib) = drate_dT; + rate_Sc46_p_to_n_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_p_to_n_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_p_to_n_Ti46_reaclib) = drate_dT; + } } - } - { - // p_Sc46_to_He4_Ca43_reaclib + { + // Sc46_p_to_He4_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc46); - } + log_scor = rate_eval.log_screen(k_p_Sc46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc46); + } #endif - rate_p_Sc46_to_He4_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc46_to_He4_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc46_to_He4_Ca43_reaclib) = drate_dT; + rate_Sc46_p_to_He4_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_p_to_He4_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_p_to_He4_Ca43_reaclib) = drate_dT; + } } - } - { - // He4_Sc46_to_n_V49_reaclib + { + // Sc46_He4_to_n_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc46); - } + log_scor = rate_eval.log_screen(k_He4_Sc46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc46); + } #endif - rate_He4_Sc46_to_n_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc46_to_n_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc46_to_n_V49_reaclib) = drate_dT; + rate_Sc46_He4_to_n_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_He4_to_n_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_He4_to_n_V49_reaclib) = drate_dT; + } } - } - { - // He4_Sc46_to_p_Ti49_reaclib + { + // Sc46_He4_to_p_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc46); - } + log_scor = rate_eval.log_screen(k_He4_Sc46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc46); + } #endif - rate_He4_Sc46_to_p_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc46_to_p_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc46_to_p_Ti49_reaclib) = drate_dT; + rate_Sc46_He4_to_p_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc46_He4_to_p_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_He4_to_p_Ti49_reaclib) = drate_dT; + } } - } - { - // n_Sc47_to_p_Ca47_reaclib + { + // Sc47_n_to_p_Ca47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc47_to_p_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc47_to_p_Ca47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc47_to_p_Ca47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc47_n_to_p_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_n_to_p_Ca47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_n_to_p_Ca47_reaclib) = drate_dT; + } } - } - { - // p_Sc47_to_n_Ti47_reaclib + { + // Sc47_p_to_n_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc47); - } + log_scor = rate_eval.log_screen(k_p_Sc47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc47); + } #endif - rate_p_Sc47_to_n_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc47_to_n_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc47_to_n_Ti47_reaclib) = drate_dT; + rate_Sc47_p_to_n_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_p_to_n_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_p_to_n_Ti47_reaclib) = drate_dT; + } } - } - { - // p_Sc47_to_He4_Ca44_reaclib + { + // Sc47_p_to_He4_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc47); - } + log_scor = rate_eval.log_screen(k_p_Sc47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc47); + } #endif - rate_p_Sc47_to_He4_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc47_to_He4_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc47_to_He4_Ca44_reaclib) = drate_dT; + rate_Sc47_p_to_He4_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_p_to_He4_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_p_to_He4_Ca44_reaclib) = drate_dT; + } } - } - { - // He4_Sc47_to_n_V50_reaclib + { + // Sc47_He4_to_n_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc47); - } + log_scor = rate_eval.log_screen(k_He4_Sc47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc47); + } #endif - rate_He4_Sc47_to_n_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc47_to_n_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc47_to_n_V50_reaclib) = drate_dT; + rate_Sc47_He4_to_n_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_He4_to_n_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_He4_to_n_V50_reaclib) = drate_dT; + } } - } - { - // He4_Sc47_to_p_Ti50_reaclib + { + // Sc47_He4_to_p_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc47); - } + log_scor = rate_eval.log_screen(k_He4_Sc47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc47); + } #endif - rate_He4_Sc47_to_p_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc47_to_p_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc47_to_p_Ti50_reaclib) = drate_dT; + rate_Sc47_He4_to_p_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc47_He4_to_p_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_He4_to_p_Ti50_reaclib) = drate_dT; + } } - } - { - // n_Sc48_to_p_Ca48_reaclib + { + // Sc48_n_to_p_Ca48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Sc48_to_p_Ca48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Sc48_to_p_Ca48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Sc48_to_p_Ca48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Sc48_n_to_p_Ca48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_n_to_p_Ca48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_n_to_p_Ca48_reaclib) = drate_dT; + } } - } - { - // p_Sc48_to_n_Ti48_reaclib + { + // Sc48_p_to_n_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc48); - } + log_scor = rate_eval.log_screen(k_p_Sc48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc48); + } #endif - rate_p_Sc48_to_n_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc48_to_n_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc48_to_n_Ti48_reaclib) = drate_dT; + rate_Sc48_p_to_n_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_p_to_n_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_p_to_n_Ti48_reaclib) = drate_dT; + } } - } - { - // p_Sc48_to_He4_Ca45_reaclib + { + // Sc48_p_to_He4_Ca45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc48); - } + log_scor = rate_eval.log_screen(k_p_Sc48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc48); + } #endif - rate_p_Sc48_to_He4_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc48_to_He4_Ca45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc48_to_He4_Ca45_reaclib) = drate_dT; + rate_Sc48_p_to_He4_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_p_to_He4_Ca45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_p_to_He4_Ca45_reaclib) = drate_dT; + } } - } - { - // He4_Sc48_to_n_V51_reaclib + { + // Sc48_He4_to_n_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc48); - } + log_scor = rate_eval.log_screen(k_He4_Sc48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc48); + } #endif - rate_He4_Sc48_to_n_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc48_to_n_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc48_to_n_V51_reaclib) = drate_dT; + rate_Sc48_He4_to_n_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_He4_to_n_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_He4_to_n_V51_reaclib) = drate_dT; + } } - } - { - // He4_Sc48_to_p_Ti51_reaclib + { + // Sc48_He4_to_p_Ti51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc48); - } + log_scor = rate_eval.log_screen(k_He4_Sc48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc48); + } #endif - rate_He4_Sc48_to_p_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc48_to_p_Ti51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc48_to_p_Ti51_reaclib) = drate_dT; + rate_Sc48_He4_to_p_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc48_He4_to_p_Ti51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_He4_to_p_Ti51_reaclib) = drate_dT; + } } - } - { - // p_Sc49_to_n_Ti49_reaclib + { + // Sc49_p_to_n_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc49); - } + log_scor = rate_eval.log_screen(k_p_Sc49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc49); + } #endif - rate_p_Sc49_to_n_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc49_to_n_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc49_to_n_Ti49_reaclib) = drate_dT; + rate_Sc49_p_to_n_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc49_p_to_n_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc49_p_to_n_Ti49_reaclib) = drate_dT; + } } - } - { - // p_Sc49_to_He4_Ca46_reaclib + { + // Sc49_p_to_He4_Ca46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Sc49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc49); - } + log_scor = rate_eval.log_screen(k_p_Sc49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Sc49); + } #endif - rate_p_Sc49_to_He4_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Sc49_to_He4_Ca46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Sc49_to_He4_Ca46_reaclib) = drate_dT; + rate_Sc49_p_to_He4_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc49_p_to_He4_Ca46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc49_p_to_He4_Ca46_reaclib) = drate_dT; + } } - } - { - // He4_Sc49_to_n_V52_reaclib + { + // Sc49_He4_to_n_V52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Sc49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc49); - } + log_scor = rate_eval.log_screen(k_He4_Sc49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Sc49); + } #endif - rate_He4_Sc49_to_n_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Sc49_to_n_V52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Sc49_to_n_V52_reaclib) = drate_dT; + rate_Sc49_He4_to_n_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Sc49_He4_to_n_V52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc49_He4_to_n_V52_reaclib) = drate_dT; + } } - } - { - // n_Ti44_to_p_Sc44_reaclib + { + // Ti44_n_to_p_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti44_to_p_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti44_to_p_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti44_to_p_Sc44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_n_to_p_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_n_to_p_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_n_to_p_Sc44_reaclib) = drate_dT; + } } - } - { - // n_Ti44_to_He4_Ca41_reaclib + { + // Ti44_n_to_He4_Ca41_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti44_to_He4_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti44_to_He4_Ca41_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti44_to_He4_Ca41_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti44_n_to_He4_Ca41_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_n_to_He4_Ca41_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_n_to_He4_Ca41_reaclib) = drate_dT; + } } - } - { - // He4_Ti44_to_p_V47_reaclib + { + // Ti44_He4_to_p_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti44); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); - } + log_scor = rate_eval.log_screen(k_He4_Ti44); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti44); + } #endif - rate_He4_Ti44_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti44_to_p_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti44_to_p_V47_reaclib) = drate_dT; + rate_Ti44_He4_to_p_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti44_He4_to_p_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_He4_to_p_V47_reaclib) = drate_dT; + } } - } - { - // n_Ti45_to_p_Sc45_reaclib + { + // Ti45_n_to_p_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti45_to_p_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti45_to_p_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti45_to_p_Sc45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti45_n_to_p_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_n_to_p_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_n_to_p_Sc45_reaclib) = drate_dT; + } } - } - { - // n_Ti45_to_He4_Ca42_reaclib + { + // Ti45_n_to_He4_Ca42_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti45_to_He4_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti45_to_He4_Ca42_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti45_to_He4_Ca42_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti45_n_to_He4_Ca42_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_n_to_He4_Ca42_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_n_to_He4_Ca42_reaclib) = drate_dT; + } } - } - { - // He4_Ti45_to_n_Cr48_reaclib + { + // Ti45_He4_to_n_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti45); - } + log_scor = rate_eval.log_screen(k_He4_Ti45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti45); + } #endif - rate_He4_Ti45_to_n_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti45_to_n_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti45_to_n_Cr48_reaclib) = drate_dT; + rate_Ti45_He4_to_n_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_He4_to_n_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_He4_to_n_Cr48_reaclib) = drate_dT; + } } - } - { - // He4_Ti45_to_p_V48_reaclib + { + // Ti45_He4_to_p_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti45); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti45); - } + log_scor = rate_eval.log_screen(k_He4_Ti45); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti45); + } #endif - rate_He4_Ti45_to_p_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti45_to_p_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti45_to_p_V48_reaclib) = drate_dT; + rate_Ti45_He4_to_p_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti45_He4_to_p_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_He4_to_p_V48_reaclib) = drate_dT; + } } - } - { - // n_Ti46_to_p_Sc46_reaclib + { + // Ti46_n_to_p_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti46_to_p_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti46_to_p_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti46_to_p_Sc46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti46_n_to_p_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_n_to_p_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_n_to_p_Sc46_reaclib) = drate_dT; + } } - } - { - // n_Ti46_to_He4_Ca43_reaclib + { + // Ti46_n_to_He4_Ca43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti46_to_He4_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti46_to_He4_Ca43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti46_to_He4_Ca43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti46_n_to_He4_Ca43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_n_to_He4_Ca43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_n_to_He4_Ca43_reaclib) = drate_dT; + } } - } - { - // p_Ti46_to_n_V46_reaclib + { + // Ti46_p_to_n_V46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti46); - } + log_scor = rate_eval.log_screen(k_p_Ti46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti46); + } #endif - rate_p_Ti46_to_n_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti46_to_n_V46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti46_to_n_V46_reaclib) = drate_dT; + rate_Ti46_p_to_n_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_p_to_n_V46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_p_to_n_V46_reaclib) = drate_dT; + } } - } - { - // p_Ti46_to_He4_Sc43_reaclib + { + // Ti46_p_to_He4_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti46); - } + log_scor = rate_eval.log_screen(k_p_Ti46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti46); + } #endif - rate_p_Ti46_to_He4_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti46_to_He4_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti46_to_He4_Sc43_reaclib) = drate_dT; + rate_Ti46_p_to_He4_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_p_to_He4_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_p_to_He4_Sc43_reaclib) = drate_dT; + } } - } - { - // He4_Ti46_to_n_Cr49_reaclib + { + // Ti46_He4_to_n_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti46); - } + log_scor = rate_eval.log_screen(k_He4_Ti46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti46); + } #endif - rate_He4_Ti46_to_n_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti46_to_n_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti46_to_n_Cr49_reaclib) = drate_dT; + rate_Ti46_He4_to_n_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_He4_to_n_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_He4_to_n_Cr49_reaclib) = drate_dT; + } } - } - { - // He4_Ti46_to_p_V49_reaclib + { + // Ti46_He4_to_p_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti46); - } + log_scor = rate_eval.log_screen(k_He4_Ti46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti46); + } #endif - rate_He4_Ti46_to_p_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti46_to_p_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti46_to_p_V49_reaclib) = drate_dT; + rate_Ti46_He4_to_p_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti46_He4_to_p_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_He4_to_p_V49_reaclib) = drate_dT; + } } - } - { - // n_Ti47_to_p_Sc47_reaclib + { + // Ti47_n_to_p_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti47_to_p_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti47_to_p_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti47_to_p_Sc47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti47_n_to_p_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_n_to_p_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_n_to_p_Sc47_reaclib) = drate_dT; + } } - } - { - // n_Ti47_to_He4_Ca44_reaclib + { + // Ti47_n_to_He4_Ca44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti47_to_He4_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti47_to_He4_Ca44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti47_to_He4_Ca44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti47_n_to_He4_Ca44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_n_to_He4_Ca44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_n_to_He4_Ca44_reaclib) = drate_dT; + } } - } - { - // p_Ti47_to_n_V47_reaclib + { + // Ti47_p_to_n_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti47); - } + log_scor = rate_eval.log_screen(k_p_Ti47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti47); + } #endif - rate_p_Ti47_to_n_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti47_to_n_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti47_to_n_V47_reaclib) = drate_dT; + rate_Ti47_p_to_n_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_p_to_n_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_p_to_n_V47_reaclib) = drate_dT; + } } - } - { - // p_Ti47_to_He4_Sc44_reaclib + { + // Ti47_p_to_He4_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti47); - } + log_scor = rate_eval.log_screen(k_p_Ti47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti47); + } #endif - rate_p_Ti47_to_He4_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti47_to_He4_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti47_to_He4_Sc44_reaclib) = drate_dT; + rate_Ti47_p_to_He4_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_p_to_He4_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_p_to_He4_Sc44_reaclib) = drate_dT; + } } - } - { - // He4_Ti47_to_n_Cr50_reaclib + { + // Ti47_He4_to_n_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti47); - } + log_scor = rate_eval.log_screen(k_He4_Ti47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti47); + } #endif - rate_He4_Ti47_to_n_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti47_to_n_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti47_to_n_Cr50_reaclib) = drate_dT; + rate_Ti47_He4_to_n_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_He4_to_n_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_He4_to_n_Cr50_reaclib) = drate_dT; + } } - } - { - // He4_Ti47_to_p_V50_reaclib + { + // Ti47_He4_to_p_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti47); - } + log_scor = rate_eval.log_screen(k_He4_Ti47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti47); + } #endif - rate_He4_Ti47_to_p_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti47_to_p_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti47_to_p_V50_reaclib) = drate_dT; + rate_Ti47_He4_to_p_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti47_He4_to_p_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_He4_to_p_V50_reaclib) = drate_dT; + } } - } - { - // n_Ti48_to_p_Sc48_reaclib + { + // Ti48_n_to_p_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti48_to_p_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti48_to_p_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti48_to_p_Sc48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti48_n_to_p_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_n_to_p_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_n_to_p_Sc48_reaclib) = drate_dT; + } } - } - { - // n_Ti48_to_He4_Ca45_reaclib + { + // Ti48_n_to_He4_Ca45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti48_to_He4_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti48_to_He4_Ca45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti48_to_He4_Ca45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti48_n_to_He4_Ca45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_n_to_He4_Ca45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_n_to_He4_Ca45_reaclib) = drate_dT; + } } - } - { - // p_Ti48_to_n_V48_reaclib + { + // Ti48_p_to_n_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti48); - } + log_scor = rate_eval.log_screen(k_p_Ti48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti48); + } #endif - rate_p_Ti48_to_n_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti48_to_n_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti48_to_n_V48_reaclib) = drate_dT; + rate_Ti48_p_to_n_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_p_to_n_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_p_to_n_V48_reaclib) = drate_dT; + } } - } - { - // p_Ti48_to_He4_Sc45_reaclib + { + // Ti48_p_to_He4_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti48); - } + log_scor = rate_eval.log_screen(k_p_Ti48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti48); + } #endif - rate_p_Ti48_to_He4_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti48_to_He4_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti48_to_He4_Sc45_reaclib) = drate_dT; + rate_Ti48_p_to_He4_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_p_to_He4_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_p_to_He4_Sc45_reaclib) = drate_dT; + } } - } - { - // He4_Ti48_to_n_Cr51_reaclib + { + // Ti48_He4_to_n_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti48); - } + log_scor = rate_eval.log_screen(k_He4_Ti48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti48); + } #endif - rate_He4_Ti48_to_n_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti48_to_n_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti48_to_n_Cr51_reaclib) = drate_dT; + rate_Ti48_He4_to_n_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_He4_to_n_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_He4_to_n_Cr51_reaclib) = drate_dT; + } } - } - { - // He4_Ti48_to_p_V51_reaclib + { + // Ti48_He4_to_p_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti48); - } + log_scor = rate_eval.log_screen(k_He4_Ti48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti48); + } #endif - rate_He4_Ti48_to_p_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti48_to_p_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti48_to_p_V51_reaclib) = drate_dT; + rate_Ti48_He4_to_p_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti48_He4_to_p_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_He4_to_p_V51_reaclib) = drate_dT; + } } - } - { - // n_Ti49_to_p_Sc49_reaclib + { + // Ti49_n_to_p_Sc49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti49_to_p_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti49_to_p_Sc49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti49_to_p_Sc49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti49_n_to_p_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_n_to_p_Sc49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_n_to_p_Sc49_reaclib) = drate_dT; + } } - } - { - // n_Ti49_to_He4_Ca46_reaclib + { + // Ti49_n_to_He4_Ca46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti49_to_He4_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti49_to_He4_Ca46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti49_to_He4_Ca46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti49_n_to_He4_Ca46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_n_to_He4_Ca46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_n_to_He4_Ca46_reaclib) = drate_dT; + } } - } - { - // p_Ti49_to_n_V49_reaclib + { + // Ti49_p_to_n_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti49); - } + log_scor = rate_eval.log_screen(k_p_Ti49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti49); + } #endif - rate_p_Ti49_to_n_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti49_to_n_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti49_to_n_V49_reaclib) = drate_dT; + rate_Ti49_p_to_n_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_p_to_n_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_p_to_n_V49_reaclib) = drate_dT; + } } - } - { - // p_Ti49_to_He4_Sc46_reaclib + { + // Ti49_p_to_He4_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti49); - } + log_scor = rate_eval.log_screen(k_p_Ti49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti49); + } #endif - rate_p_Ti49_to_He4_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti49_to_He4_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti49_to_He4_Sc46_reaclib) = drate_dT; + rate_Ti49_p_to_He4_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_p_to_He4_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_p_to_He4_Sc46_reaclib) = drate_dT; + } } - } - { - // He4_Ti49_to_n_Cr52_reaclib + { + // Ti49_He4_to_n_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti49); - } + log_scor = rate_eval.log_screen(k_He4_Ti49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti49); + } #endif - rate_He4_Ti49_to_n_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti49_to_n_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti49_to_n_Cr52_reaclib) = drate_dT; + rate_Ti49_He4_to_n_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_He4_to_n_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_He4_to_n_Cr52_reaclib) = drate_dT; + } } - } - { - // He4_Ti49_to_p_V52_reaclib + { + // Ti49_He4_to_p_V52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti49); - } + log_scor = rate_eval.log_screen(k_He4_Ti49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti49); + } #endif - rate_He4_Ti49_to_p_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti49_to_p_V52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti49_to_p_V52_reaclib) = drate_dT; + rate_Ti49_He4_to_p_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti49_He4_to_p_V52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_He4_to_p_V52_reaclib) = drate_dT; + } } - } - { - // n_Ti50_to_He4_Ca47_reaclib + { + // Ti50_n_to_He4_Ca47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti50_to_He4_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti50_to_He4_Ca47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti50_to_He4_Ca47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti50_n_to_He4_Ca47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_n_to_He4_Ca47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_n_to_He4_Ca47_reaclib) = drate_dT; + } } - } - { - // p_Ti50_to_n_V50_reaclib + { + // Ti50_p_to_n_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti50); - } + log_scor = rate_eval.log_screen(k_p_Ti50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti50); + } #endif - rate_p_Ti50_to_n_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti50_to_n_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti50_to_n_V50_reaclib) = drate_dT; + rate_Ti50_p_to_n_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_p_to_n_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_p_to_n_V50_reaclib) = drate_dT; + } } - } - { - // p_Ti50_to_He4_Sc47_reaclib + { + // Ti50_p_to_He4_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti50); - } + log_scor = rate_eval.log_screen(k_p_Ti50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti50); + } #endif - rate_p_Ti50_to_He4_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti50_to_He4_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti50_to_He4_Sc47_reaclib) = drate_dT; + rate_Ti50_p_to_He4_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_p_to_He4_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_p_to_He4_Sc47_reaclib) = drate_dT; + } } - } - { - // He4_Ti50_to_n_Cr53_reaclib + { + // Ti50_He4_to_n_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti50); - } + log_scor = rate_eval.log_screen(k_He4_Ti50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti50); + } #endif - rate_He4_Ti50_to_n_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti50_to_n_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti50_to_n_Cr53_reaclib) = drate_dT; + rate_Ti50_He4_to_n_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti50_He4_to_n_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_He4_to_n_Cr53_reaclib) = drate_dT; + } } - } - { - // n_Ti51_to_He4_Ca48_reaclib + { + // Ti51_n_to_He4_Ca48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ti51_to_He4_Ca48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ti51_to_He4_Ca48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ti51_to_He4_Ca48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ti51_n_to_He4_Ca48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti51_n_to_He4_Ca48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti51_n_to_He4_Ca48_reaclib) = drate_dT; + } } - } - { - // p_Ti51_to_n_V51_reaclib + { + // Ti51_p_to_n_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti51); - } + log_scor = rate_eval.log_screen(k_p_Ti51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti51); + } #endif - rate_p_Ti51_to_n_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti51_to_n_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti51_to_n_V51_reaclib) = drate_dT; + rate_Ti51_p_to_n_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti51_p_to_n_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti51_p_to_n_V51_reaclib) = drate_dT; + } } - } - { - // p_Ti51_to_He4_Sc48_reaclib + { + // Ti51_p_to_He4_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ti51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti51); - } + log_scor = rate_eval.log_screen(k_p_Ti51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ti51); + } #endif - rate_p_Ti51_to_He4_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ti51_to_He4_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ti51_to_He4_Sc48_reaclib) = drate_dT; + rate_Ti51_p_to_He4_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti51_p_to_He4_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti51_p_to_He4_Sc48_reaclib) = drate_dT; + } } - } - { - // He4_Ti51_to_n_Cr54_reaclib + { + // Ti51_He4_to_n_Cr54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ti51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti51); - } + log_scor = rate_eval.log_screen(k_He4_Ti51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ti51); + } #endif - rate_He4_Ti51_to_n_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ti51_to_n_Cr54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ti51_to_n_Cr54_reaclib) = drate_dT; + rate_Ti51_He4_to_n_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ti51_He4_to_n_Cr54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti51_He4_to_n_Cr54_reaclib) = drate_dT; + } } - } - { - // n_V46_to_p_Ti46_reaclib + { + // V46_n_to_p_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V46_to_p_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V46_to_p_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V46_to_p_Ti46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V46_n_to_p_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V46_n_to_p_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V46_n_to_p_Ti46_reaclib) = drate_dT; + } } - } - { - // n_V46_to_He4_Sc43_reaclib + { + // V46_n_to_He4_Sc43_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V46_to_He4_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V46_to_He4_Sc43_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V46_to_He4_Sc43_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V46_n_to_He4_Sc43_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V46_n_to_He4_Sc43_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V46_n_to_He4_Sc43_reaclib) = drate_dT; + } } - } - { - // He4_V46_to_p_Cr49_reaclib + { + // V46_He4_to_p_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V46); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V46); - } + log_scor = rate_eval.log_screen(k_He4_V46); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V46); + } #endif - rate_He4_V46_to_p_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V46_to_p_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V46_to_p_Cr49_reaclib) = drate_dT; + rate_V46_He4_to_p_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V46_He4_to_p_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V46_He4_to_p_Cr49_reaclib) = drate_dT; + } } - } - { - // n_V47_to_p_Ti47_reaclib + { + // V47_n_to_p_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V47_to_p_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V47_to_p_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V47_to_p_Ti47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V47_n_to_p_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_n_to_p_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_n_to_p_Ti47_reaclib) = drate_dT; + } } - } - { - // n_V47_to_He4_Sc44_reaclib + { + // V47_n_to_He4_Sc44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V47_to_He4_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V47_to_He4_Sc44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V47_to_He4_Sc44_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V47_n_to_He4_Sc44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_n_to_He4_Sc44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_n_to_He4_Sc44_reaclib) = drate_dT; + } } - } - { - // p_V47_to_He4_Ti44_reaclib + { + // V47_p_to_He4_Ti44_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); - } + log_scor = rate_eval.log_screen(k_p_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V47); + } #endif - rate_p_V47_to_He4_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V47_to_He4_Ti44_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V47_to_He4_Ti44_reaclib) = drate_dT; + rate_V47_p_to_He4_Ti44_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_p_to_He4_Ti44_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_p_to_He4_Ti44_reaclib) = drate_dT; + } } - } - { - // He4_V47_to_n_Mn50_reaclib + { + // V47_He4_to_n_Mn50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V47); - } + log_scor = rate_eval.log_screen(k_He4_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V47); + } #endif - rate_He4_V47_to_n_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V47_to_n_Mn50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V47_to_n_Mn50_reaclib) = drate_dT; + rate_V47_He4_to_n_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_He4_to_n_Mn50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_He4_to_n_Mn50_reaclib) = drate_dT; + } } - } - { - // He4_V47_to_p_Cr50_reaclib + { + // V47_He4_to_p_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V47); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V47); - } + log_scor = rate_eval.log_screen(k_He4_V47); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V47); + } #endif - rate_He4_V47_to_p_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V47_to_p_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V47_to_p_Cr50_reaclib) = drate_dT; + rate_V47_He4_to_p_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V47_He4_to_p_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_He4_to_p_Cr50_reaclib) = drate_dT; + } } - } - { - // n_V48_to_p_Ti48_reaclib + { + // V48_n_to_p_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V48_to_p_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V48_to_p_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V48_to_p_Ti48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V48_n_to_p_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_n_to_p_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_n_to_p_Ti48_reaclib) = drate_dT; + } } - } - { - // n_V48_to_He4_Sc45_reaclib + { + // V48_n_to_He4_Sc45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V48_to_He4_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V48_to_He4_Sc45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V48_to_He4_Sc45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V48_n_to_He4_Sc45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_n_to_He4_Sc45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_n_to_He4_Sc45_reaclib) = drate_dT; + } } - } - { - // p_V48_to_n_Cr48_reaclib + { + // V48_p_to_n_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V48); - } + log_scor = rate_eval.log_screen(k_p_V48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V48); + } #endif - rate_p_V48_to_n_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V48_to_n_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V48_to_n_Cr48_reaclib) = drate_dT; + rate_V48_p_to_n_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_p_to_n_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_p_to_n_Cr48_reaclib) = drate_dT; + } } - } - { - // p_V48_to_He4_Ti45_reaclib + { + // V48_p_to_He4_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V48); - } + log_scor = rate_eval.log_screen(k_p_V48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V48); + } #endif - rate_p_V48_to_He4_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V48_to_He4_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V48_to_He4_Ti45_reaclib) = drate_dT; + rate_V48_p_to_He4_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_p_to_He4_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_p_to_He4_Ti45_reaclib) = drate_dT; + } } - } - { - // He4_V48_to_n_Mn51_reaclib + { + // V48_He4_to_n_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V48); - } + log_scor = rate_eval.log_screen(k_He4_V48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V48); + } #endif - rate_He4_V48_to_n_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V48_to_n_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V48_to_n_Mn51_reaclib) = drate_dT; + rate_V48_He4_to_n_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_He4_to_n_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_He4_to_n_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_V48_to_p_Cr51_reaclib + { + // V48_He4_to_p_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V48); - } + log_scor = rate_eval.log_screen(k_He4_V48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V48); + } #endif - rate_He4_V48_to_p_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V48_to_p_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V48_to_p_Cr51_reaclib) = drate_dT; + rate_V48_He4_to_p_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V48_He4_to_p_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_He4_to_p_Cr51_reaclib) = drate_dT; + } } - } - { - // n_V49_to_p_Ti49_reaclib + { + // V49_n_to_p_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V49_to_p_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V49_to_p_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V49_to_p_Ti49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V49_n_to_p_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_n_to_p_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_n_to_p_Ti49_reaclib) = drate_dT; + } } - } - { - // n_V49_to_He4_Sc46_reaclib + { + // V49_n_to_He4_Sc46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V49_to_He4_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V49_to_He4_Sc46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V49_to_He4_Sc46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V49_n_to_He4_Sc46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_n_to_He4_Sc46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_n_to_He4_Sc46_reaclib) = drate_dT; + } } - } - { - // p_V49_to_n_Cr49_reaclib + { + // V49_p_to_n_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V49); - } + log_scor = rate_eval.log_screen(k_p_V49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V49); + } #endif - rate_p_V49_to_n_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V49_to_n_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V49_to_n_Cr49_reaclib) = drate_dT; + rate_V49_p_to_n_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_p_to_n_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_p_to_n_Cr49_reaclib) = drate_dT; + } } - } - { - // p_V49_to_He4_Ti46_reaclib + { + // V49_p_to_He4_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V49); - } + log_scor = rate_eval.log_screen(k_p_V49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V49); + } #endif - rate_p_V49_to_He4_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V49_to_He4_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V49_to_He4_Ti46_reaclib) = drate_dT; + rate_V49_p_to_He4_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_p_to_He4_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_p_to_He4_Ti46_reaclib) = drate_dT; + } } - } - { - // He4_V49_to_n_Mn52_reaclib + { + // V49_He4_to_n_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V49); - } + log_scor = rate_eval.log_screen(k_He4_V49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V49); + } #endif - rate_He4_V49_to_n_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V49_to_n_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V49_to_n_Mn52_reaclib) = drate_dT; + rate_V49_He4_to_n_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_He4_to_n_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_He4_to_n_Mn52_reaclib) = drate_dT; + } } - } - { - // He4_V49_to_p_Cr52_reaclib + { + // V49_He4_to_p_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V49); - } + log_scor = rate_eval.log_screen(k_He4_V49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V49); + } #endif - rate_He4_V49_to_p_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V49_to_p_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V49_to_p_Cr52_reaclib) = drate_dT; + rate_V49_He4_to_p_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V49_He4_to_p_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_He4_to_p_Cr52_reaclib) = drate_dT; + } } - } - { - // n_V50_to_p_Ti50_reaclib + { + // V50_n_to_p_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V50_to_p_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V50_to_p_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V50_to_p_Ti50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V50_n_to_p_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_n_to_p_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_n_to_p_Ti50_reaclib) = drate_dT; + } } - } - { - // n_V50_to_He4_Sc47_reaclib + { + // V50_n_to_He4_Sc47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V50_to_He4_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V50_to_He4_Sc47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V50_to_He4_Sc47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V50_n_to_He4_Sc47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_n_to_He4_Sc47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_n_to_He4_Sc47_reaclib) = drate_dT; + } } - } - { - // p_V50_to_n_Cr50_reaclib + { + // V50_p_to_n_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V50); - } + log_scor = rate_eval.log_screen(k_p_V50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V50); + } #endif - rate_p_V50_to_n_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V50_to_n_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V50_to_n_Cr50_reaclib) = drate_dT; + rate_V50_p_to_n_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_p_to_n_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_p_to_n_Cr50_reaclib) = drate_dT; + } } - } - { - // p_V50_to_He4_Ti47_reaclib + { + // V50_p_to_He4_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V50); - } + log_scor = rate_eval.log_screen(k_p_V50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V50); + } #endif - rate_p_V50_to_He4_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V50_to_He4_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V50_to_He4_Ti47_reaclib) = drate_dT; + rate_V50_p_to_He4_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_p_to_He4_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_p_to_He4_Ti47_reaclib) = drate_dT; + } } - } - { - // He4_V50_to_n_Mn53_reaclib + { + // V50_He4_to_n_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V50); - } + log_scor = rate_eval.log_screen(k_He4_V50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V50); + } #endif - rate_He4_V50_to_n_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V50_to_n_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V50_to_n_Mn53_reaclib) = drate_dT; + rate_V50_He4_to_n_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_He4_to_n_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_He4_to_n_Mn53_reaclib) = drate_dT; + } } - } - { - // He4_V50_to_p_Cr53_reaclib + { + // V50_He4_to_p_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V50); - } + log_scor = rate_eval.log_screen(k_He4_V50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V50); + } #endif - rate_He4_V50_to_p_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V50_to_p_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V50_to_p_Cr53_reaclib) = drate_dT; + rate_V50_He4_to_p_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V50_He4_to_p_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_He4_to_p_Cr53_reaclib) = drate_dT; + } } - } - { - // n_V51_to_p_Ti51_reaclib + { + // V51_n_to_p_Ti51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V51_to_p_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V51_to_p_Ti51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V51_to_p_Ti51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V51_n_to_p_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_n_to_p_Ti51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_n_to_p_Ti51_reaclib) = drate_dT; + } } - } - { - // n_V51_to_He4_Sc48_reaclib + { + // V51_n_to_He4_Sc48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V51_to_He4_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V51_to_He4_Sc48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V51_to_He4_Sc48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V51_n_to_He4_Sc48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_n_to_He4_Sc48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_n_to_He4_Sc48_reaclib) = drate_dT; + } } - } - { - // p_V51_to_n_Cr51_reaclib + { + // V51_p_to_n_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V51); - } + log_scor = rate_eval.log_screen(k_p_V51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V51); + } #endif - rate_p_V51_to_n_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V51_to_n_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V51_to_n_Cr51_reaclib) = drate_dT; + rate_V51_p_to_n_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_p_to_n_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_p_to_n_Cr51_reaclib) = drate_dT; + } } - } - { - // p_V51_to_He4_Ti48_reaclib + { + // V51_p_to_He4_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V51); - } + log_scor = rate_eval.log_screen(k_p_V51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V51); + } #endif - rate_p_V51_to_He4_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V51_to_He4_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V51_to_He4_Ti48_reaclib) = drate_dT; + rate_V51_p_to_He4_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_p_to_He4_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_p_to_He4_Ti48_reaclib) = drate_dT; + } } - } - { - // He4_V51_to_n_Mn54_reaclib + { + // V51_He4_to_n_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V51); - } + log_scor = rate_eval.log_screen(k_He4_V51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V51); + } #endif - rate_He4_V51_to_n_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V51_to_n_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V51_to_n_Mn54_reaclib) = drate_dT; + rate_V51_He4_to_n_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_He4_to_n_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_He4_to_n_Mn54_reaclib) = drate_dT; + } } - } - { - // He4_V51_to_p_Cr54_reaclib + { + // V51_He4_to_p_Cr54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V51); - } + log_scor = rate_eval.log_screen(k_He4_V51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V51); + } #endif - rate_He4_V51_to_p_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V51_to_p_Cr54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V51_to_p_Cr54_reaclib) = drate_dT; + rate_V51_He4_to_p_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V51_He4_to_p_Cr54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_He4_to_p_Cr54_reaclib) = drate_dT; + } } - } - { - // n_V52_to_He4_Sc49_reaclib + { + // V52_n_to_He4_Sc49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_V52_to_He4_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_V52_to_He4_Sc49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_V52_to_He4_Sc49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_V52_n_to_He4_Sc49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V52_n_to_He4_Sc49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_n_to_He4_Sc49_reaclib) = drate_dT; + } } - } - { - // p_V52_to_n_Cr52_reaclib + { + // V52_p_to_n_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V52); - } + log_scor = rate_eval.log_screen(k_p_V52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V52); + } #endif - rate_p_V52_to_n_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V52_to_n_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V52_to_n_Cr52_reaclib) = drate_dT; + rate_V52_p_to_n_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V52_p_to_n_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_p_to_n_Cr52_reaclib) = drate_dT; + } } - } - { - // p_V52_to_He4_Ti49_reaclib + { + // V52_p_to_He4_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_V52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V52); - } + log_scor = rate_eval.log_screen(k_p_V52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_V52); + } #endif - rate_p_V52_to_He4_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_V52_to_He4_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_V52_to_He4_Ti49_reaclib) = drate_dT; + rate_V52_p_to_He4_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V52_p_to_He4_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_p_to_He4_Ti49_reaclib) = drate_dT; + } } - } - { - // He4_V52_to_n_Mn55_reaclib + { + // V52_He4_to_n_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_V52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V52); - } + log_scor = rate_eval.log_screen(k_He4_V52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_V52); + } #endif - rate_He4_V52_to_n_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_V52_to_n_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_V52_to_n_Mn55_reaclib) = drate_dT; + rate_V52_He4_to_n_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_V52_He4_to_n_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_He4_to_n_Mn55_reaclib) = drate_dT; + } } - } - { - // n_Cr48_to_p_V48_reaclib + { + // Cr48_n_to_p_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr48_to_p_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr48_to_p_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr48_to_p_V48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_n_to_p_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_n_to_p_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_n_to_p_V48_reaclib) = drate_dT; + } } - } - { - // n_Cr48_to_He4_Ti45_reaclib + { + // Cr48_n_to_He4_Ti45_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr48_to_He4_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr48_to_He4_Ti45_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr48_to_He4_Ti45_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr48_n_to_He4_Ti45_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_n_to_He4_Ti45_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_n_to_He4_Ti45_reaclib) = drate_dT; + } } - } - { - // He4_Cr48_to_p_Mn51_reaclib + { + // Cr48_He4_to_p_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr48); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); - } + log_scor = rate_eval.log_screen(k_He4_Cr48); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr48); + } #endif - rate_He4_Cr48_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr48_to_p_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr48_to_p_Mn51_reaclib) = drate_dT; + rate_Cr48_He4_to_p_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr48_He4_to_p_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_He4_to_p_Mn51_reaclib) = drate_dT; + } } - } - { - // n_Cr49_to_p_V49_reaclib + { + // Cr49_n_to_p_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr49_to_p_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr49_to_p_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr49_to_p_V49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr49_n_to_p_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_n_to_p_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_n_to_p_V49_reaclib) = drate_dT; + } } - } - { - // n_Cr49_to_He4_Ti46_reaclib + { + // Cr49_n_to_He4_Ti46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr49_to_He4_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr49_to_He4_Ti46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr49_to_He4_Ti46_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr49_n_to_He4_Ti46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_n_to_He4_Ti46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_n_to_He4_Ti46_reaclib) = drate_dT; + } } - } - { - // p_Cr49_to_He4_V46_reaclib + { + // Cr49_p_to_He4_V46_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr49); - } + log_scor = rate_eval.log_screen(k_p_Cr49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr49); + } #endif - rate_p_Cr49_to_He4_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr49_to_He4_V46_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr49_to_He4_V46_reaclib) = drate_dT; + rate_Cr49_p_to_He4_V46_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_p_to_He4_V46_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_p_to_He4_V46_reaclib) = drate_dT; + } } - } - { - // He4_Cr49_to_n_Fe52_reaclib + { + // Cr49_He4_to_n_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr49); - } + log_scor = rate_eval.log_screen(k_He4_Cr49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr49); + } #endif - rate_He4_Cr49_to_n_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr49_to_n_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr49_to_n_Fe52_reaclib) = drate_dT; + rate_Cr49_He4_to_n_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_He4_to_n_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_He4_to_n_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Cr49_to_p_Mn52_reaclib + { + // Cr49_He4_to_p_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr49); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr49); - } + log_scor = rate_eval.log_screen(k_He4_Cr49); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr49); + } #endif - rate_He4_Cr49_to_p_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr49_to_p_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr49_to_p_Mn52_reaclib) = drate_dT; + rate_Cr49_He4_to_p_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr49_He4_to_p_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_He4_to_p_Mn52_reaclib) = drate_dT; + } } - } - { - // n_Cr50_to_p_V50_reaclib + { + // Cr50_n_to_p_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr50_to_p_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr50_to_p_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr50_to_p_V50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr50_n_to_p_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_n_to_p_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_n_to_p_V50_reaclib) = drate_dT; + } } - } - { - // n_Cr50_to_He4_Ti47_reaclib + { + // Cr50_n_to_He4_Ti47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr50_to_He4_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr50_to_He4_Ti47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr50_to_He4_Ti47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr50_n_to_He4_Ti47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_n_to_He4_Ti47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_n_to_He4_Ti47_reaclib) = drate_dT; + } } - } - { - // p_Cr50_to_n_Mn50_reaclib + { + // Cr50_p_to_n_Mn50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr50); - } + log_scor = rate_eval.log_screen(k_p_Cr50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr50); + } #endif - rate_p_Cr50_to_n_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr50_to_n_Mn50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr50_to_n_Mn50_reaclib) = drate_dT; + rate_Cr50_p_to_n_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_p_to_n_Mn50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_p_to_n_Mn50_reaclib) = drate_dT; + } } - } - { - // p_Cr50_to_He4_V47_reaclib + { + // Cr50_p_to_He4_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr50); - } + log_scor = rate_eval.log_screen(k_p_Cr50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr50); + } #endif - rate_p_Cr50_to_He4_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr50_to_He4_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr50_to_He4_V47_reaclib) = drate_dT; + rate_Cr50_p_to_He4_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_p_to_He4_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_p_to_He4_V47_reaclib) = drate_dT; + } } - } - { - // He4_Cr50_to_n_Fe53_reaclib + { + // Cr50_He4_to_n_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr50); - } + log_scor = rate_eval.log_screen(k_He4_Cr50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr50); + } #endif - rate_He4_Cr50_to_n_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr50_to_n_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr50_to_n_Fe53_reaclib) = drate_dT; + rate_Cr50_He4_to_n_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_He4_to_n_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_He4_to_n_Fe53_reaclib) = drate_dT; + } } - } - { - // He4_Cr50_to_p_Mn53_reaclib + { + // Cr50_He4_to_p_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr50); - } + log_scor = rate_eval.log_screen(k_He4_Cr50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr50); + } #endif - rate_He4_Cr50_to_p_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr50_to_p_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr50_to_p_Mn53_reaclib) = drate_dT; + rate_Cr50_He4_to_p_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr50_He4_to_p_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_He4_to_p_Mn53_reaclib) = drate_dT; + } } - } - { - // n_Cr51_to_p_V51_reaclib + { + // Cr51_n_to_p_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr51_to_p_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr51_to_p_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr51_to_p_V51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr51_n_to_p_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_n_to_p_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_n_to_p_V51_reaclib) = drate_dT; + } } - } - { - // n_Cr51_to_He4_Ti48_reaclib + { + // Cr51_n_to_He4_Ti48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr51_to_He4_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr51_to_He4_Ti48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr51_to_He4_Ti48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr51_n_to_He4_Ti48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_n_to_He4_Ti48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_n_to_He4_Ti48_reaclib) = drate_dT; + } } - } - { - // p_Cr51_to_n_Mn51_reaclib + { + // Cr51_p_to_n_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr51); - } + log_scor = rate_eval.log_screen(k_p_Cr51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr51); + } #endif - rate_p_Cr51_to_n_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr51_to_n_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr51_to_n_Mn51_reaclib) = drate_dT; + rate_Cr51_p_to_n_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_p_to_n_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_p_to_n_Mn51_reaclib) = drate_dT; + } } - } - { - // p_Cr51_to_He4_V48_reaclib + { + // Cr51_p_to_He4_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr51); - } + log_scor = rate_eval.log_screen(k_p_Cr51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr51); + } #endif - rate_p_Cr51_to_He4_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr51_to_He4_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr51_to_He4_V48_reaclib) = drate_dT; + rate_Cr51_p_to_He4_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_p_to_He4_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_p_to_He4_V48_reaclib) = drate_dT; + } } - } - { - // He4_Cr51_to_n_Fe54_reaclib + { + // Cr51_He4_to_n_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr51); - } + log_scor = rate_eval.log_screen(k_He4_Cr51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr51); + } #endif - rate_He4_Cr51_to_n_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr51_to_n_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr51_to_n_Fe54_reaclib) = drate_dT; + rate_Cr51_He4_to_n_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_He4_to_n_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_He4_to_n_Fe54_reaclib) = drate_dT; + } } - } - { - // He4_Cr51_to_p_Mn54_reaclib + { + // Cr51_He4_to_p_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr51); - } + log_scor = rate_eval.log_screen(k_He4_Cr51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr51); + } #endif - rate_He4_Cr51_to_p_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr51_to_p_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr51_to_p_Mn54_reaclib) = drate_dT; + rate_Cr51_He4_to_p_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr51_He4_to_p_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_He4_to_p_Mn54_reaclib) = drate_dT; + } } - } - { - // n_Cr52_to_p_V52_reaclib + { + // Cr52_n_to_p_V52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr52_to_p_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr52_to_p_V52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr52_to_p_V52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr52_n_to_p_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_n_to_p_V52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_n_to_p_V52_reaclib) = drate_dT; + } } - } - { - // n_Cr52_to_He4_Ti49_reaclib + { + // Cr52_n_to_He4_Ti49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr52_to_He4_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr52_to_He4_Ti49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr52_to_He4_Ti49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr52_n_to_He4_Ti49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_n_to_He4_Ti49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_n_to_He4_Ti49_reaclib) = drate_dT; + } } - } - { - // p_Cr52_to_n_Mn52_reaclib + { + // Cr52_p_to_n_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr52); - } + log_scor = rate_eval.log_screen(k_p_Cr52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr52); + } #endif - rate_p_Cr52_to_n_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr52_to_n_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr52_to_n_Mn52_reaclib) = drate_dT; + rate_Cr52_p_to_n_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_p_to_n_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_p_to_n_Mn52_reaclib) = drate_dT; + } } - } - { - // p_Cr52_to_He4_V49_reaclib + { + // Cr52_p_to_He4_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr52); - } + log_scor = rate_eval.log_screen(k_p_Cr52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr52); + } #endif - rate_p_Cr52_to_He4_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr52_to_He4_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr52_to_He4_V49_reaclib) = drate_dT; + rate_Cr52_p_to_He4_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_p_to_He4_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_p_to_He4_V49_reaclib) = drate_dT; + } } - } - { - // He4_Cr52_to_n_Fe55_reaclib + { + // Cr52_He4_to_n_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr52); - } + log_scor = rate_eval.log_screen(k_He4_Cr52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr52); + } #endif - rate_He4_Cr52_to_n_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr52_to_n_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr52_to_n_Fe55_reaclib) = drate_dT; + rate_Cr52_He4_to_n_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_He4_to_n_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_He4_to_n_Fe55_reaclib) = drate_dT; + } } - } - { - // He4_Cr52_to_p_Mn55_reaclib + { + // Cr52_He4_to_p_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr52); - } + log_scor = rate_eval.log_screen(k_He4_Cr52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr52); + } #endif - rate_He4_Cr52_to_p_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr52_to_p_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr52_to_p_Mn55_reaclib) = drate_dT; + rate_Cr52_He4_to_p_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr52_He4_to_p_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_He4_to_p_Mn55_reaclib) = drate_dT; + } } - } - { - // n_Cr53_to_He4_Ti50_reaclib + { + // Cr53_n_to_He4_Ti50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr53_to_He4_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr53_to_He4_Ti50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr53_to_He4_Ti50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr53_n_to_He4_Ti50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_n_to_He4_Ti50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_n_to_He4_Ti50_reaclib) = drate_dT; + } } - } - { - // p_Cr53_to_n_Mn53_reaclib + { + // Cr53_p_to_n_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr53); - } + log_scor = rate_eval.log_screen(k_p_Cr53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr53); + } #endif - rate_p_Cr53_to_n_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr53_to_n_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr53_to_n_Mn53_reaclib) = drate_dT; + rate_Cr53_p_to_n_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_p_to_n_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_p_to_n_Mn53_reaclib) = drate_dT; + } } - } - { - // p_Cr53_to_He4_V50_reaclib + { + // Cr53_p_to_He4_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr53); - } + log_scor = rate_eval.log_screen(k_p_Cr53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr53); + } #endif - rate_p_Cr53_to_He4_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr53_to_He4_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr53_to_He4_V50_reaclib) = drate_dT; + rate_Cr53_p_to_He4_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_p_to_He4_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_p_to_He4_V50_reaclib) = drate_dT; + } } - } - { - // He4_Cr53_to_n_Fe56_reaclib + { + // Cr53_He4_to_n_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr53); - } + log_scor = rate_eval.log_screen(k_He4_Cr53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr53); + } #endif - rate_He4_Cr53_to_n_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr53_to_n_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr53_to_n_Fe56_reaclib) = drate_dT; + rate_Cr53_He4_to_n_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr53_He4_to_n_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_He4_to_n_Fe56_reaclib) = drate_dT; + } } - } - { - // n_Cr54_to_He4_Ti51_reaclib + { + // Cr54_n_to_He4_Ti51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cr54_to_He4_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cr54_to_He4_Ti51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cr54_to_He4_Ti51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cr54_n_to_He4_Ti51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr54_n_to_He4_Ti51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_n_to_He4_Ti51_reaclib) = drate_dT; + } } - } - { - // p_Cr54_to_n_Mn54_reaclib + { + // Cr54_p_to_n_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr54); - } + log_scor = rate_eval.log_screen(k_p_Cr54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr54); + } #endif - rate_p_Cr54_to_n_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr54_to_n_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr54_to_n_Mn54_reaclib) = drate_dT; + rate_Cr54_p_to_n_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr54_p_to_n_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_p_to_n_Mn54_reaclib) = drate_dT; + } } - } - { - // p_Cr54_to_He4_V51_reaclib + { + // Cr54_p_to_He4_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cr54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr54); - } + log_scor = rate_eval.log_screen(k_p_Cr54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cr54); + } #endif - rate_p_Cr54_to_He4_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cr54_to_He4_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cr54_to_He4_V51_reaclib) = drate_dT; + rate_Cr54_p_to_He4_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr54_p_to_He4_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_p_to_He4_V51_reaclib) = drate_dT; + } } - } - { - // He4_Cr54_to_n_Fe57_reaclib + { + // Cr54_He4_to_n_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cr54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr54); - } + log_scor = rate_eval.log_screen(k_He4_Cr54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cr54); + } #endif - rate_He4_Cr54_to_n_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cr54_to_n_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cr54_to_n_Fe57_reaclib) = drate_dT; + rate_Cr54_He4_to_n_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cr54_He4_to_n_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_He4_to_n_Fe57_reaclib) = drate_dT; + } } - } - { - // n_Mn50_to_p_Cr50_reaclib + { + // Mn50_n_to_p_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn50_to_p_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn50_to_p_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn50_to_p_Cr50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn50_n_to_p_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn50_n_to_p_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_n_to_p_Cr50_reaclib) = drate_dT; + } } - } - { - // n_Mn50_to_He4_V47_reaclib + { + // Mn50_n_to_He4_V47_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn50_to_He4_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn50_to_He4_V47_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn50_to_He4_V47_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn50_n_to_He4_V47_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn50_n_to_He4_V47_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_n_to_He4_V47_reaclib) = drate_dT; + } } - } - { - // He4_Mn50_to_n_Co53_reaclib + { + // Mn50_He4_to_n_Co53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn50); - } + log_scor = rate_eval.log_screen(k_He4_Mn50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn50); + } #endif - rate_He4_Mn50_to_n_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn50_to_n_Co53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn50_to_n_Co53_reaclib) = drate_dT; + rate_Mn50_He4_to_n_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn50_He4_to_n_Co53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_He4_to_n_Co53_reaclib) = drate_dT; + } } - } - { - // He4_Mn50_to_p_Fe53_reaclib + { + // Mn50_He4_to_p_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn50); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn50); - } + log_scor = rate_eval.log_screen(k_He4_Mn50); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn50); + } #endif - rate_He4_Mn50_to_p_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn50_to_p_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn50_to_p_Fe53_reaclib) = drate_dT; + rate_Mn50_He4_to_p_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn50_He4_to_p_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_He4_to_p_Fe53_reaclib) = drate_dT; + } } - } - { - // n_Mn51_to_p_Cr51_reaclib + { + // Mn51_n_to_p_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn51_to_p_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn51_to_p_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn51_to_p_Cr51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn51_n_to_p_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_n_to_p_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_n_to_p_Cr51_reaclib) = drate_dT; + } } - } - { - // n_Mn51_to_He4_V48_reaclib + { + // Mn51_n_to_He4_V48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn51_to_He4_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn51_to_He4_V48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn51_to_He4_V48_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn51_n_to_He4_V48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_n_to_He4_V48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_n_to_He4_V48_reaclib) = drate_dT; + } } - } - { - // p_Mn51_to_He4_Cr48_reaclib + { + // Mn51_p_to_He4_Cr48_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); - } + log_scor = rate_eval.log_screen(k_p_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn51); + } #endif - rate_p_Mn51_to_He4_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn51_to_He4_Cr48_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn51_to_He4_Cr48_reaclib) = drate_dT; + rate_Mn51_p_to_He4_Cr48_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_p_to_He4_Cr48_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_p_to_He4_Cr48_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_n_Co54_reaclib + { + // Mn51_He4_to_n_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_n_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_n_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_n_Co54_reaclib) = drate_dT; + rate_Mn51_He4_to_n_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_n_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_n_Co54_reaclib) = drate_dT; + } } - } - { - // He4_Mn51_to_p_Fe54_reaclib + { + // Mn51_He4_to_p_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn51); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); - } + log_scor = rate_eval.log_screen(k_He4_Mn51); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn51); + } #endif - rate_He4_Mn51_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn51_to_p_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn51_to_p_Fe54_reaclib) = drate_dT; + rate_Mn51_He4_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn51_He4_to_p_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_He4_to_p_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Mn52_to_p_Cr52_reaclib + { + // Mn52_n_to_p_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn52_to_p_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn52_to_p_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn52_to_p_Cr52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn52_n_to_p_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_n_to_p_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_n_to_p_Cr52_reaclib) = drate_dT; + } } - } - { - // n_Mn52_to_He4_V49_reaclib + { + // Mn52_n_to_He4_V49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn52_to_He4_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn52_to_He4_V49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn52_to_He4_V49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn52_n_to_He4_V49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_n_to_He4_V49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_n_to_He4_V49_reaclib) = drate_dT; + } } - } - { - // p_Mn52_to_n_Fe52_reaclib + { + // Mn52_p_to_n_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn52); - } + log_scor = rate_eval.log_screen(k_p_Mn52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn52); + } #endif - rate_p_Mn52_to_n_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn52_to_n_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn52_to_n_Fe52_reaclib) = drate_dT; + rate_Mn52_p_to_n_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_p_to_n_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_p_to_n_Fe52_reaclib) = drate_dT; + } } - } - { - // p_Mn52_to_He4_Cr49_reaclib + { + // Mn52_p_to_He4_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn52); - } + log_scor = rate_eval.log_screen(k_p_Mn52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn52); + } #endif - rate_p_Mn52_to_He4_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn52_to_He4_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn52_to_He4_Cr49_reaclib) = drate_dT; + rate_Mn52_p_to_He4_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_p_to_He4_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_p_to_He4_Cr49_reaclib) = drate_dT; + } } - } - { - // He4_Mn52_to_n_Co55_reaclib + { + // Mn52_He4_to_n_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn52); - } + log_scor = rate_eval.log_screen(k_He4_Mn52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn52); + } #endif - rate_He4_Mn52_to_n_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn52_to_n_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn52_to_n_Co55_reaclib) = drate_dT; + rate_Mn52_He4_to_n_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_He4_to_n_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_He4_to_n_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Mn52_to_p_Fe55_reaclib + { + // Mn52_He4_to_p_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn52); - } + log_scor = rate_eval.log_screen(k_He4_Mn52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn52); + } #endif - rate_He4_Mn52_to_p_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn52_to_p_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn52_to_p_Fe55_reaclib) = drate_dT; + rate_Mn52_He4_to_p_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn52_He4_to_p_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_He4_to_p_Fe55_reaclib) = drate_dT; + } } - } - { - // n_Mn53_to_p_Cr53_reaclib + { + // Mn53_n_to_p_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn53_to_p_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn53_to_p_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn53_to_p_Cr53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn53_n_to_p_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_n_to_p_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_n_to_p_Cr53_reaclib) = drate_dT; + } } - } - { - // n_Mn53_to_He4_V50_reaclib + { + // Mn53_n_to_He4_V50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn53_to_He4_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn53_to_He4_V50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn53_to_He4_V50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn53_n_to_He4_V50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_n_to_He4_V50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_n_to_He4_V50_reaclib) = drate_dT; + } } - } - { - // p_Mn53_to_n_Fe53_reaclib + { + // Mn53_p_to_n_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn53); - } + log_scor = rate_eval.log_screen(k_p_Mn53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn53); + } #endif - rate_p_Mn53_to_n_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn53_to_n_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn53_to_n_Fe53_reaclib) = drate_dT; + rate_Mn53_p_to_n_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_p_to_n_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_p_to_n_Fe53_reaclib) = drate_dT; + } } - } - { - // p_Mn53_to_He4_Cr50_reaclib + { + // Mn53_p_to_He4_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn53); - } + log_scor = rate_eval.log_screen(k_p_Mn53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn53); + } #endif - rate_p_Mn53_to_He4_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn53_to_He4_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn53_to_He4_Cr50_reaclib) = drate_dT; + rate_Mn53_p_to_He4_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_p_to_He4_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_p_to_He4_Cr50_reaclib) = drate_dT; + } } - } - { - // He4_Mn53_to_n_Co56_reaclib + { + // Mn53_He4_to_n_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn53); - } + log_scor = rate_eval.log_screen(k_He4_Mn53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn53); + } #endif - rate_He4_Mn53_to_n_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn53_to_n_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn53_to_n_Co56_reaclib) = drate_dT; + rate_Mn53_He4_to_n_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_He4_to_n_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_He4_to_n_Co56_reaclib) = drate_dT; + } } - } - { - // He4_Mn53_to_p_Fe56_reaclib + { + // Mn53_He4_to_p_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn53); - } + log_scor = rate_eval.log_screen(k_He4_Mn53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn53); + } #endif - rate_He4_Mn53_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn53_to_p_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn53_to_p_Fe56_reaclib) = drate_dT; + rate_Mn53_He4_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn53_He4_to_p_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_He4_to_p_Fe56_reaclib) = drate_dT; + } } - } - { - // n_Mn54_to_p_Cr54_reaclib + { + // Mn54_n_to_p_Cr54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn54_to_p_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn54_to_p_Cr54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn54_to_p_Cr54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn54_n_to_p_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_n_to_p_Cr54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_n_to_p_Cr54_reaclib) = drate_dT; + } } - } - { - // n_Mn54_to_He4_V51_reaclib + { + // Mn54_n_to_He4_V51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn54_to_He4_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn54_to_He4_V51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn54_to_He4_V51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn54_n_to_He4_V51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_n_to_He4_V51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_n_to_He4_V51_reaclib) = drate_dT; + } } - } - { - // p_Mn54_to_n_Fe54_reaclib + { + // Mn54_p_to_n_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn54); - } + log_scor = rate_eval.log_screen(k_p_Mn54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn54); + } #endif - rate_p_Mn54_to_n_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn54_to_n_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn54_to_n_Fe54_reaclib) = drate_dT; + rate_Mn54_p_to_n_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_p_to_n_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_p_to_n_Fe54_reaclib) = drate_dT; + } } - } - { - // p_Mn54_to_He4_Cr51_reaclib + { + // Mn54_p_to_He4_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn54); - } + log_scor = rate_eval.log_screen(k_p_Mn54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn54); + } #endif - rate_p_Mn54_to_He4_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn54_to_He4_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn54_to_He4_Cr51_reaclib) = drate_dT; + rate_Mn54_p_to_He4_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_p_to_He4_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_p_to_He4_Cr51_reaclib) = drate_dT; + } } - } - { - // He4_Mn54_to_n_Co57_reaclib + { + // Mn54_He4_to_n_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn54); - } + log_scor = rate_eval.log_screen(k_He4_Mn54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn54); + } #endif - rate_He4_Mn54_to_n_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn54_to_n_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn54_to_n_Co57_reaclib) = drate_dT; + rate_Mn54_He4_to_n_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_He4_to_n_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_He4_to_n_Co57_reaclib) = drate_dT; + } } - } - { - // He4_Mn54_to_p_Fe57_reaclib + { + // Mn54_He4_to_p_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn54); - } + log_scor = rate_eval.log_screen(k_He4_Mn54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn54); + } #endif - rate_He4_Mn54_to_p_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn54_to_p_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn54_to_p_Fe57_reaclib) = drate_dT; + rate_Mn54_He4_to_p_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn54_He4_to_p_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_He4_to_p_Fe57_reaclib) = drate_dT; + } } - } - { - // n_Mn55_to_He4_V52_reaclib + { + // Mn55_n_to_He4_V52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Mn55_to_He4_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Mn55_to_He4_V52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Mn55_to_He4_V52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Mn55_n_to_He4_V52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_n_to_He4_V52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_n_to_He4_V52_reaclib) = drate_dT; + } } - } - { - // p_Mn55_to_n_Fe55_reaclib + { + // Mn55_p_to_n_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); - } + log_scor = rate_eval.log_screen(k_p_Mn55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); + } #endif - rate_p_Mn55_to_n_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn55_to_n_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn55_to_n_Fe55_reaclib) = drate_dT; + rate_Mn55_p_to_n_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_p_to_n_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_p_to_n_Fe55_reaclib) = drate_dT; + } } - } - { - // p_Mn55_to_He4_Cr52_reaclib + { + // Mn55_p_to_He4_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Mn55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); - } + log_scor = rate_eval.log_screen(k_p_Mn55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Mn55); + } #endif - rate_p_Mn55_to_He4_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Mn55_to_He4_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Mn55_to_He4_Cr52_reaclib) = drate_dT; + rate_Mn55_p_to_He4_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_p_to_He4_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_p_to_He4_Cr52_reaclib) = drate_dT; + } } - } - { - // He4_Mn55_to_n_Co58_reaclib + { + // Mn55_He4_to_n_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn55); - } + log_scor = rate_eval.log_screen(k_He4_Mn55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn55); + } #endif - rate_He4_Mn55_to_n_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn55_to_n_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn55_to_n_Co58_reaclib) = drate_dT; + rate_Mn55_He4_to_n_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_He4_to_n_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_He4_to_n_Co58_reaclib) = drate_dT; + } } - } - { - // He4_Mn55_to_p_Fe58_reaclib + { + // Mn55_He4_to_p_Fe58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Mn55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn55); - } + log_scor = rate_eval.log_screen(k_He4_Mn55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Mn55); + } #endif - rate_He4_Mn55_to_p_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Mn55_to_p_Fe58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Mn55_to_p_Fe58_reaclib) = drate_dT; + rate_Mn55_He4_to_p_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Mn55_He4_to_p_Fe58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_He4_to_p_Fe58_reaclib) = drate_dT; + } } - } - { - // n_Fe52_to_p_Mn52_reaclib + { + // Fe52_n_to_p_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe52_to_p_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe52_to_p_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe52_to_p_Mn52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_n_to_p_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_to_p_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_to_p_Mn52_reaclib) = drate_dT; + } } - } - { - // n_Fe52_to_He4_Cr49_reaclib + { + // Fe52_n_to_He4_Cr49_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe52_to_He4_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe52_to_He4_Cr49_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe52_to_He4_Cr49_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe52_n_to_He4_Cr49_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_n_to_He4_Cr49_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_n_to_He4_Cr49_reaclib) = drate_dT; + } } - } - { - // He4_Fe52_to_p_Co55_reaclib + { + // Fe52_He4_to_p_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe52); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); - } + log_scor = rate_eval.log_screen(k_He4_Fe52); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe52); + } #endif - rate_He4_Fe52_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe52_to_p_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe52_to_p_Co55_reaclib) = drate_dT; + rate_Fe52_He4_to_p_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe52_He4_to_p_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_He4_to_p_Co55_reaclib) = drate_dT; + } } - } - { - // n_Fe53_to_p_Mn53_reaclib + { + // Fe53_n_to_p_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe53_to_p_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe53_to_p_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe53_to_p_Mn53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_n_to_p_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_n_to_p_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_n_to_p_Mn53_reaclib) = drate_dT; + } } - } - { - // n_Fe53_to_He4_Cr50_reaclib + { + // Fe53_n_to_He4_Cr50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe53_to_He4_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe53_to_He4_Cr50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe53_to_He4_Cr50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe53_n_to_He4_Cr50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_n_to_He4_Cr50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_n_to_He4_Cr50_reaclib) = drate_dT; + } } - } - { - // p_Fe53_to_n_Co53_reaclib + { + // Fe53_p_to_n_Co53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe53); - } + log_scor = rate_eval.log_screen(k_p_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe53); + } #endif - rate_p_Fe53_to_n_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe53_to_n_Co53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe53_to_n_Co53_reaclib) = drate_dT; + rate_Fe53_p_to_n_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_p_to_n_Co53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_p_to_n_Co53_reaclib) = drate_dT; + } } - } - { - // p_Fe53_to_He4_Mn50_reaclib + { + // Fe53_p_to_He4_Mn50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe53); - } + log_scor = rate_eval.log_screen(k_p_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe53); + } #endif - rate_p_Fe53_to_He4_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe53_to_He4_Mn50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe53_to_He4_Mn50_reaclib) = drate_dT; + rate_Fe53_p_to_He4_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_p_to_He4_Mn50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_p_to_He4_Mn50_reaclib) = drate_dT; + } } - } - { - // He4_Fe53_to_n_Ni56_reaclib + { + // Fe53_He4_to_n_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); - } + log_scor = rate_eval.log_screen(k_He4_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); + } #endif - rate_He4_Fe53_to_n_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe53_to_n_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe53_to_n_Ni56_reaclib) = drate_dT; + rate_Fe53_He4_to_n_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_He4_to_n_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_He4_to_n_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_Fe53_to_p_Co56_reaclib + { + // Fe53_He4_to_p_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); - } + log_scor = rate_eval.log_screen(k_He4_Fe53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe53); + } #endif - rate_He4_Fe53_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe53_to_p_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe53_to_p_Co56_reaclib) = drate_dT; + rate_Fe53_He4_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe53_He4_to_p_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_He4_to_p_Co56_reaclib) = drate_dT; + } } - } - { - // n_Fe54_to_p_Mn54_reaclib + { + // Fe54_n_to_p_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe54_to_p_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe54_to_p_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe54_to_p_Mn54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_n_to_p_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_to_p_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_to_p_Mn54_reaclib) = drate_dT; + } } - } - { - // n_Fe54_to_He4_Cr51_reaclib + { + // Fe54_n_to_He4_Cr51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe54_to_He4_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe54_to_He4_Cr51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe54_to_He4_Cr51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe54_n_to_He4_Cr51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_n_to_He4_Cr51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_n_to_He4_Cr51_reaclib) = drate_dT; + } } - } - { - // p_Fe54_to_n_Co54_reaclib + { + // Fe54_p_to_n_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); - } + log_scor = rate_eval.log_screen(k_p_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); + } #endif - rate_p_Fe54_to_n_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe54_to_n_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_n_Co54_reaclib) = drate_dT; + rate_Fe54_p_to_n_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_p_to_n_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_to_n_Co54_reaclib) = drate_dT; + } } - } - { - // p_Fe54_to_He4_Mn51_reaclib + { + // Fe54_p_to_He4_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); - } + log_scor = rate_eval.log_screen(k_p_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe54); + } #endif - rate_p_Fe54_to_He4_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe54_to_He4_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe54_to_He4_Mn51_reaclib) = drate_dT; + rate_Fe54_p_to_He4_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_p_to_He4_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_p_to_He4_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Fe54_to_n_Ni57_reaclib + { + // Fe54_He4_to_n_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_n_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe54_to_n_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_n_Ni57_reaclib) = drate_dT; + rate_Fe54_He4_to_n_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_He4_to_n_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_n_Ni57_reaclib) = drate_dT; + } } - } - { - // He4_Fe54_to_p_Co57_reaclib + { + // Fe54_He4_to_p_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); - } + log_scor = rate_eval.log_screen(k_He4_Fe54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe54); + } #endif - rate_He4_Fe54_to_p_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe54_to_p_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe54_to_p_Co57_reaclib) = drate_dT; + rate_Fe54_He4_to_p_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe54_He4_to_p_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_He4_to_p_Co57_reaclib) = drate_dT; + } } - } - { - // n_Fe55_to_p_Mn55_reaclib + { + // Fe55_n_to_p_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe55_to_p_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe55_to_p_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe55_to_p_Mn55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_n_to_p_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_n_to_p_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_n_to_p_Mn55_reaclib) = drate_dT; + } } - } - { - // n_Fe55_to_He4_Cr52_reaclib + { + // Fe55_n_to_He4_Cr52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe55_to_He4_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe55_to_He4_Cr52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe55_to_He4_Cr52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe55_n_to_He4_Cr52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_n_to_He4_Cr52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_n_to_He4_Cr52_reaclib) = drate_dT; + } } - } - { - // p_Fe55_to_n_Co55_reaclib + { + // Fe55_p_to_n_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); - } + log_scor = rate_eval.log_screen(k_p_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); + } #endif - rate_p_Fe55_to_n_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe55_to_n_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe55_to_n_Co55_reaclib) = drate_dT; + rate_Fe55_p_to_n_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_p_to_n_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_p_to_n_Co55_reaclib) = drate_dT; + } } - } - { - // p_Fe55_to_He4_Mn52_reaclib + { + // Fe55_p_to_He4_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); - } + log_scor = rate_eval.log_screen(k_p_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe55); + } #endif - rate_p_Fe55_to_He4_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe55_to_He4_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe55_to_He4_Mn52_reaclib) = drate_dT; + rate_Fe55_p_to_He4_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_p_to_He4_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_p_to_He4_Mn52_reaclib) = drate_dT; + } } - } - { - // He4_Fe55_to_n_Ni58_reaclib + { + // Fe55_He4_to_n_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe55); - } + log_scor = rate_eval.log_screen(k_He4_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe55); + } #endif - rate_He4_Fe55_to_n_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe55_to_n_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe55_to_n_Ni58_reaclib) = drate_dT; + rate_Fe55_He4_to_n_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_He4_to_n_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_He4_to_n_Ni58_reaclib) = drate_dT; + } } - } - { - // He4_Fe55_to_p_Co58_reaclib + { + // Fe55_He4_to_p_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe55); - } + log_scor = rate_eval.log_screen(k_He4_Fe55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe55); + } #endif - rate_He4_Fe55_to_p_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe55_to_p_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe55_to_p_Co58_reaclib) = drate_dT; + rate_Fe55_He4_to_p_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe55_He4_to_p_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_He4_to_p_Co58_reaclib) = drate_dT; + } } - } - { - // n_Fe56_to_He4_Cr53_reaclib + { + // Fe56_n_to_He4_Cr53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe56_to_He4_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe56_to_He4_Cr53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe56_to_He4_Cr53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe56_n_to_He4_Cr53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_n_to_He4_Cr53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_n_to_He4_Cr53_reaclib) = drate_dT; + } } - } - { - // p_Fe56_to_n_Co56_reaclib + { + // Fe56_p_to_n_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); - } + log_scor = rate_eval.log_screen(k_p_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); + } #endif - rate_p_Fe56_to_n_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe56_to_n_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_n_Co56_reaclib) = drate_dT; + rate_Fe56_p_to_n_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_p_to_n_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_to_n_Co56_reaclib) = drate_dT; + } } - } - { - // p_Fe56_to_He4_Mn53_reaclib + { + // Fe56_p_to_He4_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); - } + log_scor = rate_eval.log_screen(k_p_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe56); + } #endif - rate_p_Fe56_to_He4_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe56_to_He4_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe56_to_He4_Mn53_reaclib) = drate_dT; + rate_Fe56_p_to_He4_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_p_to_He4_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_p_to_He4_Mn53_reaclib) = drate_dT; + } } - } - { - // He4_Fe56_to_n_Ni59_reaclib + { + // Fe56_He4_to_n_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe56); - } + log_scor = rate_eval.log_screen(k_He4_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe56); + } #endif - rate_He4_Fe56_to_n_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe56_to_n_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe56_to_n_Ni59_reaclib) = drate_dT; + rate_Fe56_He4_to_n_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_He4_to_n_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_He4_to_n_Ni59_reaclib) = drate_dT; + } } - } - { - // He4_Fe56_to_p_Co59_reaclib + { + // Fe56_He4_to_p_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe56); - } + log_scor = rate_eval.log_screen(k_He4_Fe56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe56); + } #endif - rate_He4_Fe56_to_p_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe56_to_p_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe56_to_p_Co59_reaclib) = drate_dT; + rate_Fe56_He4_to_p_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe56_He4_to_p_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_He4_to_p_Co59_reaclib) = drate_dT; + } } - } - { - // n_Fe57_to_He4_Cr54_reaclib + { + // Fe57_n_to_He4_Cr54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Fe57_to_He4_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Fe57_to_He4_Cr54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Fe57_to_He4_Cr54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Fe57_n_to_He4_Cr54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_n_to_He4_Cr54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_n_to_He4_Cr54_reaclib) = drate_dT; + } } - } - { - // p_Fe57_to_n_Co57_reaclib + { + // Fe57_p_to_n_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe57); - } + log_scor = rate_eval.log_screen(k_p_Fe57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe57); + } #endif - rate_p_Fe57_to_n_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe57_to_n_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe57_to_n_Co57_reaclib) = drate_dT; + rate_Fe57_p_to_n_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_p_to_n_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_p_to_n_Co57_reaclib) = drate_dT; + } } - } - { - // p_Fe57_to_He4_Mn54_reaclib + { + // Fe57_p_to_He4_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe57); - } + log_scor = rate_eval.log_screen(k_p_Fe57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe57); + } #endif - rate_p_Fe57_to_He4_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe57_to_He4_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe57_to_He4_Mn54_reaclib) = drate_dT; + rate_Fe57_p_to_He4_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_p_to_He4_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_p_to_He4_Mn54_reaclib) = drate_dT; + } } - } - { - // He4_Fe57_to_n_Ni60_reaclib + { + // Fe57_He4_to_n_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe57); - } + log_scor = rate_eval.log_screen(k_He4_Fe57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe57); + } #endif - rate_He4_Fe57_to_n_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe57_to_n_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe57_to_n_Ni60_reaclib) = drate_dT; + rate_Fe57_He4_to_n_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe57_He4_to_n_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_He4_to_n_Ni60_reaclib) = drate_dT; + } } - } - { - // p_Fe58_to_n_Co58_reaclib + { + // Fe58_p_to_n_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe58); - } + log_scor = rate_eval.log_screen(k_p_Fe58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe58); + } #endif - rate_p_Fe58_to_n_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe58_to_n_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe58_to_n_Co58_reaclib) = drate_dT; + rate_Fe58_p_to_n_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe58_p_to_n_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe58_p_to_n_Co58_reaclib) = drate_dT; + } } - } - { - // p_Fe58_to_He4_Mn55_reaclib + { + // Fe58_p_to_He4_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Fe58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe58); - } + log_scor = rate_eval.log_screen(k_p_Fe58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Fe58); + } #endif - rate_p_Fe58_to_He4_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Fe58_to_He4_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Fe58_to_He4_Mn55_reaclib) = drate_dT; + rate_Fe58_p_to_He4_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe58_p_to_He4_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe58_p_to_He4_Mn55_reaclib) = drate_dT; + } } - } - { - // He4_Fe58_to_n_Ni61_reaclib + { + // Fe58_He4_to_n_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Fe58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe58); - } + log_scor = rate_eval.log_screen(k_He4_Fe58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Fe58); + } #endif - rate_He4_Fe58_to_n_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Fe58_to_n_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Fe58_to_n_Ni61_reaclib) = drate_dT; + rate_Fe58_He4_to_n_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Fe58_He4_to_n_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe58_He4_to_n_Ni61_reaclib) = drate_dT; + } } - } - { - // n_Co53_to_p_Fe53_reaclib + { + // Co53_n_to_p_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co53_to_p_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co53_to_p_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co53_to_p_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co53_n_to_p_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co53_n_to_p_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co53_n_to_p_Fe53_reaclib) = drate_dT; + } } - } - { - // n_Co53_to_He4_Mn50_reaclib + { + // Co53_n_to_He4_Mn50_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co53_to_He4_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co53_to_He4_Mn50_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co53_to_He4_Mn50_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co53_n_to_He4_Mn50_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co53_n_to_He4_Mn50_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co53_n_to_He4_Mn50_reaclib) = drate_dT; + } } - } - { - // He4_Co53_to_p_Ni56_reaclib + { + // Co53_He4_to_p_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co53); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co53); - } + log_scor = rate_eval.log_screen(k_He4_Co53); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co53); + } #endif - rate_He4_Co53_to_p_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co53_to_p_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co53_to_p_Ni56_reaclib) = drate_dT; + rate_Co53_He4_to_p_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co53_He4_to_p_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co53_He4_to_p_Ni56_reaclib) = drate_dT; + } } - } - { - // n_Co54_to_p_Fe54_reaclib + { + // Co54_n_to_p_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co54_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co54_to_p_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co54_to_p_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co54_n_to_p_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_n_to_p_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_n_to_p_Fe54_reaclib) = drate_dT; + } } - } - { - // n_Co54_to_He4_Mn51_reaclib + { + // Co54_n_to_He4_Mn51_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co54_to_He4_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co54_to_He4_Mn51_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co54_to_He4_Mn51_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co54_n_to_He4_Mn51_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_n_to_He4_Mn51_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_n_to_He4_Mn51_reaclib) = drate_dT; + } } - } - { - // He4_Co54_to_n_Cu57_reaclib + { + // Co54_He4_to_n_Cu57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co54); - } + log_scor = rate_eval.log_screen(k_He4_Co54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co54); + } #endif - rate_He4_Co54_to_n_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co54_to_n_Cu57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co54_to_n_Cu57_reaclib) = drate_dT; + rate_Co54_He4_to_n_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_He4_to_n_Cu57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_He4_to_n_Cu57_reaclib) = drate_dT; + } } - } - { - // He4_Co54_to_p_Ni57_reaclib + { + // Co54_He4_to_p_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co54); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co54); - } + log_scor = rate_eval.log_screen(k_He4_Co54); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co54); + } #endif - rate_He4_Co54_to_p_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co54_to_p_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co54_to_p_Ni57_reaclib) = drate_dT; + rate_Co54_He4_to_p_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co54_He4_to_p_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_He4_to_p_Ni57_reaclib) = drate_dT; + } } - } - { - // n_Co55_to_p_Fe55_reaclib + { + // Co55_n_to_p_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co55_to_p_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co55_to_p_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co55_to_p_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_n_to_p_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_n_to_p_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_n_to_p_Fe55_reaclib) = drate_dT; + } } - } - { - // n_Co55_to_He4_Mn52_reaclib + { + // Co55_n_to_He4_Mn52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co55_to_He4_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co55_to_He4_Mn52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co55_to_He4_Mn52_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co55_n_to_He4_Mn52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_n_to_He4_Mn52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_n_to_He4_Mn52_reaclib) = drate_dT; + } } - } - { - // p_Co55_to_He4_Fe52_reaclib + { + // Co55_p_to_He4_Fe52_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); - } + log_scor = rate_eval.log_screen(k_p_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co55); + } #endif - rate_p_Co55_to_He4_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co55_to_He4_Fe52_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co55_to_He4_Fe52_reaclib) = drate_dT; + rate_Co55_p_to_He4_Fe52_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_p_to_He4_Fe52_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_p_to_He4_Fe52_reaclib) = drate_dT; + } } - } - { - // He4_Co55_to_n_Cu58_reaclib + { + // Co55_He4_to_n_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); - } + log_scor = rate_eval.log_screen(k_He4_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); + } #endif - rate_He4_Co55_to_n_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_n_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_n_Cu58_reaclib) = drate_dT; + rate_Co55_He4_to_n_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_n_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_He4_to_n_Cu58_reaclib) = drate_dT; + } } - } - { - // He4_Co55_to_p_Ni58_reaclib + { + // Co55_He4_to_p_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co55); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); - } + log_scor = rate_eval.log_screen(k_He4_Co55); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co55); + } #endif - rate_He4_Co55_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co55_to_p_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co55_to_p_Ni58_reaclib) = drate_dT; + rate_Co55_He4_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co55_He4_to_p_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_He4_to_p_Ni58_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_p_Fe56_reaclib + { + // Co56_n_to_p_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_p_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_p_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_p_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_p_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_p_Fe56_reaclib) = drate_dT; + } } - } - { - // n_Co56_to_He4_Mn53_reaclib + { + // Co56_n_to_He4_Mn53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co56_to_He4_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co56_to_He4_Mn53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co56_to_He4_Mn53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co56_n_to_He4_Mn53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_n_to_He4_Mn53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_n_to_He4_Mn53_reaclib) = drate_dT; + } } - } - { - // p_Co56_to_n_Ni56_reaclib + { + // Co56_p_to_n_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); - } + log_scor = rate_eval.log_screen(k_p_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); + } #endif - rate_p_Co56_to_n_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co56_to_n_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co56_to_n_Ni56_reaclib) = drate_dT; + rate_Co56_p_to_n_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_p_to_n_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_to_n_Ni56_reaclib) = drate_dT; + } } - } - { - // p_Co56_to_He4_Fe53_reaclib + { + // Co56_p_to_He4_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); - } + log_scor = rate_eval.log_screen(k_p_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co56); + } #endif - rate_p_Co56_to_He4_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co56_to_He4_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co56_to_He4_Fe53_reaclib) = drate_dT; + rate_Co56_p_to_He4_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_p_to_He4_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_p_to_He4_Fe53_reaclib) = drate_dT; + } } - } - { - // He4_Co56_to_n_Cu59_reaclib + { + // Co56_He4_to_n_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); - } + log_scor = rate_eval.log_screen(k_He4_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); + } #endif - rate_He4_Co56_to_n_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co56_to_n_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co56_to_n_Cu59_reaclib) = drate_dT; + rate_Co56_He4_to_n_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_He4_to_n_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_He4_to_n_Cu59_reaclib) = drate_dT; + } } - } - { - // He4_Co56_to_p_Ni59_reaclib + { + // Co56_He4_to_p_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); - } + log_scor = rate_eval.log_screen(k_He4_Co56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co56); + } #endif - rate_He4_Co56_to_p_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co56_to_p_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co56_to_p_Ni59_reaclib) = drate_dT; + rate_Co56_He4_to_p_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co56_He4_to_p_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_He4_to_p_Ni59_reaclib) = drate_dT; + } } - } - { - // n_Co57_to_p_Fe57_reaclib + { + // Co57_n_to_p_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co57_to_p_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co57_to_p_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co57_to_p_Fe57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_n_to_p_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_n_to_p_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_n_to_p_Fe57_reaclib) = drate_dT; + } } - } - { - // n_Co57_to_He4_Mn54_reaclib + { + // Co57_n_to_He4_Mn54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co57_to_He4_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co57_to_He4_Mn54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co57_to_He4_Mn54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co57_n_to_He4_Mn54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_n_to_He4_Mn54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_n_to_He4_Mn54_reaclib) = drate_dT; + } } - } - { - // p_Co57_to_n_Ni57_reaclib + { + // Co57_p_to_n_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); - } + log_scor = rate_eval.log_screen(k_p_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); + } #endif - rate_p_Co57_to_n_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_n_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_n_Ni57_reaclib) = drate_dT; + rate_Co57_p_to_n_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_n_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_to_n_Ni57_reaclib) = drate_dT; + } } - } - { - // p_Co57_to_He4_Fe54_reaclib + { + // Co57_p_to_He4_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); - } + log_scor = rate_eval.log_screen(k_p_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co57); + } #endif - rate_p_Co57_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co57_to_He4_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co57_to_He4_Fe54_reaclib) = drate_dT; + rate_Co57_p_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_p_to_He4_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_p_to_He4_Fe54_reaclib) = drate_dT; + } } - } - { - // He4_Co57_to_n_Cu60_reaclib + { + // Co57_He4_to_n_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co57); - } + log_scor = rate_eval.log_screen(k_He4_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co57); + } #endif - rate_He4_Co57_to_n_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co57_to_n_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co57_to_n_Cu60_reaclib) = drate_dT; + rate_Co57_He4_to_n_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_He4_to_n_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_He4_to_n_Cu60_reaclib) = drate_dT; + } } - } - { - // He4_Co57_to_p_Ni60_reaclib + { + // Co57_He4_to_p_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co57); - } + log_scor = rate_eval.log_screen(k_He4_Co57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co57); + } #endif - rate_He4_Co57_to_p_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co57_to_p_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co57_to_p_Ni60_reaclib) = drate_dT; + rate_Co57_He4_to_p_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co57_He4_to_p_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_He4_to_p_Ni60_reaclib) = drate_dT; + } } - } - { - // n_Co58_to_p_Fe58_reaclib + { + // Co58_n_to_p_Fe58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co58_to_p_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co58_to_p_Fe58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co58_to_p_Fe58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co58_n_to_p_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_n_to_p_Fe58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_n_to_p_Fe58_reaclib) = drate_dT; + } } - } - { - // n_Co58_to_He4_Mn55_reaclib + { + // Co58_n_to_He4_Mn55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Co58_to_He4_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Co58_to_He4_Mn55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Co58_to_He4_Mn55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Co58_n_to_He4_Mn55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_n_to_He4_Mn55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_n_to_He4_Mn55_reaclib) = drate_dT; + } } - } - { - // p_Co58_to_n_Ni58_reaclib + { + // Co58_p_to_n_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co58); - } + log_scor = rate_eval.log_screen(k_p_Co58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co58); + } #endif - rate_p_Co58_to_n_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co58_to_n_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co58_to_n_Ni58_reaclib) = drate_dT; + rate_Co58_p_to_n_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_p_to_n_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_p_to_n_Ni58_reaclib) = drate_dT; + } } - } - { - // p_Co58_to_He4_Fe55_reaclib + { + // Co58_p_to_He4_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co58); - } + log_scor = rate_eval.log_screen(k_p_Co58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co58); + } #endif - rate_p_Co58_to_He4_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co58_to_He4_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co58_to_He4_Fe55_reaclib) = drate_dT; + rate_Co58_p_to_He4_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_p_to_He4_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_p_to_He4_Fe55_reaclib) = drate_dT; + } } - } - { - // He4_Co58_to_n_Cu61_reaclib + { + // Co58_He4_to_n_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co58); - } + log_scor = rate_eval.log_screen(k_He4_Co58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co58); + } #endif - rate_He4_Co58_to_n_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co58_to_n_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co58_to_n_Cu61_reaclib) = drate_dT; + rate_Co58_He4_to_n_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_He4_to_n_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_He4_to_n_Cu61_reaclib) = drate_dT; + } } - } - { - // He4_Co58_to_p_Ni61_reaclib + { + // Co58_He4_to_p_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co58); - } + log_scor = rate_eval.log_screen(k_He4_Co58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co58); + } #endif - rate_He4_Co58_to_p_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co58_to_p_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co58_to_p_Ni61_reaclib) = drate_dT; + rate_Co58_He4_to_p_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co58_He4_to_p_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_He4_to_p_Ni61_reaclib) = drate_dT; + } } - } - { - // p_Co59_to_n_Ni59_reaclib + { + // Co59_p_to_n_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co59); - } + log_scor = rate_eval.log_screen(k_p_Co59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co59); + } #endif - rate_p_Co59_to_n_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co59_to_n_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co59_to_n_Ni59_reaclib) = drate_dT; + rate_Co59_p_to_n_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_p_to_n_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_p_to_n_Ni59_reaclib) = drate_dT; + } } - } - { - // p_Co59_to_He4_Fe56_reaclib + { + // Co59_p_to_He4_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Co59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co59); - } + log_scor = rate_eval.log_screen(k_p_Co59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Co59); + } #endif - rate_p_Co59_to_He4_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Co59_to_He4_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Co59_to_He4_Fe56_reaclib) = drate_dT; + rate_Co59_p_to_He4_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_p_to_He4_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_p_to_He4_Fe56_reaclib) = drate_dT; + } } - } - { - // He4_Co59_to_n_Cu62_reaclib + { + // Co59_He4_to_n_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co59); - } + log_scor = rate_eval.log_screen(k_He4_Co59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co59); + } #endif - rate_He4_Co59_to_n_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co59_to_n_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co59_to_n_Cu62_reaclib) = drate_dT; + rate_Co59_He4_to_n_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_He4_to_n_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_He4_to_n_Cu62_reaclib) = drate_dT; + } } - } - { - // He4_Co59_to_p_Ni62_reaclib + { + // Co59_He4_to_p_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Co59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co59); - } + log_scor = rate_eval.log_screen(k_He4_Co59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Co59); + } #endif - rate_He4_Co59_to_p_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Co59_to_p_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Co59_to_p_Ni62_reaclib) = drate_dT; + rate_Co59_He4_to_p_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Co59_He4_to_p_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_He4_to_p_Ni62_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_p_Co56_reaclib + { + // Ni56_n_to_p_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_p_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_p_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_p_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_p_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_p_Co56_reaclib) = drate_dT; + } } - } - { - // n_Ni56_to_He4_Fe53_reaclib + { + // Ni56_n_to_He4_Fe53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni56_to_He4_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni56_to_He4_Fe53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni56_to_He4_Fe53_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni56_n_to_He4_Fe53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_n_to_He4_Fe53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_n_to_He4_Fe53_reaclib) = drate_dT; + } } - } - { - // p_Ni56_to_He4_Co53_reaclib + { + // Ni56_p_to_He4_Co53_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni56); - } + log_scor = rate_eval.log_screen(k_p_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni56); + } #endif - rate_p_Ni56_to_He4_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni56_to_He4_Co53_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni56_to_He4_Co53_reaclib) = drate_dT; + rate_Ni56_p_to_He4_Co53_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_p_to_He4_Co53_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_p_to_He4_Co53_reaclib) = drate_dT; + } } - } - { - // He4_Ni56_to_n_Zn59_reaclib + { + // Ni56_He4_to_n_Zn59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); - } + log_scor = rate_eval.log_screen(k_He4_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); + } #endif - rate_He4_Ni56_to_n_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni56_to_n_Zn59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_n_Zn59_reaclib) = drate_dT; + rate_Ni56_He4_to_n_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_He4_to_n_Zn59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_n_Zn59_reaclib) = drate_dT; + } } - } - { - // He4_Ni56_to_p_Cu59_reaclib + { + // Ni56_He4_to_p_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni56); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); - } + log_scor = rate_eval.log_screen(k_He4_Ni56); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni56); + } #endif - rate_He4_Ni56_to_p_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni56_to_p_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni56_to_p_Cu59_reaclib) = drate_dT; + rate_Ni56_He4_to_p_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni56_He4_to_p_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_He4_to_p_Cu59_reaclib) = drate_dT; + } } - } - { - // n_Ni57_to_p_Co57_reaclib + { + // Ni57_n_to_p_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_p_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_p_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_p_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_n_to_p_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_p_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_n_to_p_Co57_reaclib) = drate_dT; + } } - } - { - // n_Ni57_to_He4_Fe54_reaclib + { + // Ni57_n_to_He4_Fe54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni57_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni57_to_He4_Fe54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni57_to_He4_Fe54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni57_n_to_He4_Fe54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_n_to_He4_Fe54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_n_to_He4_Fe54_reaclib) = drate_dT; + } } - } - { - // p_Ni57_to_n_Cu57_reaclib + { + // Ni57_p_to_n_Cu57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni57); - } + log_scor = rate_eval.log_screen(k_p_Ni57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni57); + } #endif - rate_p_Ni57_to_n_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni57_to_n_Cu57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni57_to_n_Cu57_reaclib) = drate_dT; + rate_Ni57_p_to_n_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_p_to_n_Cu57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_p_to_n_Cu57_reaclib) = drate_dT; + } } - } - { - // p_Ni57_to_He4_Co54_reaclib + { + // Ni57_p_to_He4_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni57); - } + log_scor = rate_eval.log_screen(k_p_Ni57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni57); + } #endif - rate_p_Ni57_to_He4_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni57_to_He4_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni57_to_He4_Co54_reaclib) = drate_dT; + rate_Ni57_p_to_He4_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_p_to_He4_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_p_to_He4_Co54_reaclib) = drate_dT; + } } - } - { - // He4_Ni57_to_n_Zn60_reaclib + { + // Ni57_He4_to_n_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni57); - } + log_scor = rate_eval.log_screen(k_He4_Ni57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni57); + } #endif - rate_He4_Ni57_to_n_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni57_to_n_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni57_to_n_Zn60_reaclib) = drate_dT; + rate_Ni57_He4_to_n_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_He4_to_n_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_He4_to_n_Zn60_reaclib) = drate_dT; + } } - } - { - // He4_Ni57_to_p_Cu60_reaclib + { + // Ni57_He4_to_p_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni57); - } + log_scor = rate_eval.log_screen(k_He4_Ni57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni57); + } #endif - rate_He4_Ni57_to_p_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni57_to_p_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni57_to_p_Cu60_reaclib) = drate_dT; + rate_Ni57_He4_to_p_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni57_He4_to_p_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_He4_to_p_Cu60_reaclib) = drate_dT; + } } - } - { - // n_Ni58_to_p_Co58_reaclib + { + // Ni58_n_to_p_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni58_to_p_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni58_to_p_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni58_to_p_Co58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_n_to_p_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_n_to_p_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_n_to_p_Co58_reaclib) = drate_dT; + } } - } - { - // n_Ni58_to_He4_Fe55_reaclib + { + // Ni58_n_to_He4_Fe55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni58_to_He4_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni58_to_He4_Fe55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni58_to_He4_Fe55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni58_n_to_He4_Fe55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_n_to_He4_Fe55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_n_to_He4_Fe55_reaclib) = drate_dT; + } } - } - { - // p_Ni58_to_n_Cu58_reaclib + { + // Ni58_p_to_n_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); - } + log_scor = rate_eval.log_screen(k_p_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); + } #endif - rate_p_Ni58_to_n_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni58_to_n_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_n_Cu58_reaclib) = drate_dT; + rate_Ni58_p_to_n_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_p_to_n_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_to_n_Cu58_reaclib) = drate_dT; + } } - } - { - // p_Ni58_to_He4_Co55_reaclib + { + // Ni58_p_to_He4_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); - } + log_scor = rate_eval.log_screen(k_p_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni58); + } #endif - rate_p_Ni58_to_He4_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni58_to_He4_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni58_to_He4_Co55_reaclib) = drate_dT; + rate_Ni58_p_to_He4_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_p_to_He4_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_p_to_He4_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Ni58_to_n_Zn61_reaclib + { + // Ni58_He4_to_n_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni58); - } + log_scor = rate_eval.log_screen(k_He4_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni58); + } #endif - rate_He4_Ni58_to_n_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni58_to_n_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni58_to_n_Zn61_reaclib) = drate_dT; + rate_Ni58_He4_to_n_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_He4_to_n_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_He4_to_n_Zn61_reaclib) = drate_dT; + } } - } - { - // He4_Ni58_to_p_Cu61_reaclib + { + // Ni58_He4_to_p_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni58); - } + log_scor = rate_eval.log_screen(k_He4_Ni58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni58); + } #endif - rate_He4_Ni58_to_p_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni58_to_p_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni58_to_p_Cu61_reaclib) = drate_dT; + rate_Ni58_He4_to_p_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni58_He4_to_p_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_He4_to_p_Cu61_reaclib) = drate_dT; + } } - } - { - // n_Ni59_to_p_Co59_reaclib + { + // Ni59_n_to_p_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni59_to_p_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni59_to_p_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni59_to_p_Co59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni59_n_to_p_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_n_to_p_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_n_to_p_Co59_reaclib) = drate_dT; + } } - } - { - // n_Ni59_to_He4_Fe56_reaclib + { + // Ni59_n_to_He4_Fe56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni59_to_He4_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni59_to_He4_Fe56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni59_to_He4_Fe56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni59_n_to_He4_Fe56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_n_to_He4_Fe56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_n_to_He4_Fe56_reaclib) = drate_dT; + } } - } - { - // p_Ni59_to_n_Cu59_reaclib + { + // Ni59_p_to_n_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni59); - } + log_scor = rate_eval.log_screen(k_p_Ni59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni59); + } #endif - rate_p_Ni59_to_n_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni59_to_n_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni59_to_n_Cu59_reaclib) = drate_dT; + rate_Ni59_p_to_n_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_p_to_n_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_p_to_n_Cu59_reaclib) = drate_dT; + } } - } - { - // p_Ni59_to_He4_Co56_reaclib + { + // Ni59_p_to_He4_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni59); - } + log_scor = rate_eval.log_screen(k_p_Ni59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni59); + } #endif - rate_p_Ni59_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni59_to_He4_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni59_to_He4_Co56_reaclib) = drate_dT; + rate_Ni59_p_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_p_to_He4_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_p_to_He4_Co56_reaclib) = drate_dT; + } } - } - { - // He4_Ni59_to_n_Zn62_reaclib + { + // Ni59_He4_to_n_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni59); - } + log_scor = rate_eval.log_screen(k_He4_Ni59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni59); + } #endif - rate_He4_Ni59_to_n_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni59_to_n_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni59_to_n_Zn62_reaclib) = drate_dT; + rate_Ni59_He4_to_n_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_He4_to_n_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_He4_to_n_Zn62_reaclib) = drate_dT; + } } - } - { - // He4_Ni59_to_p_Cu62_reaclib + { + // Ni59_He4_to_p_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni59); - } + log_scor = rate_eval.log_screen(k_He4_Ni59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni59); + } #endif - rate_He4_Ni59_to_p_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni59_to_p_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni59_to_p_Cu62_reaclib) = drate_dT; + rate_Ni59_He4_to_p_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni59_He4_to_p_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_He4_to_p_Cu62_reaclib) = drate_dT; + } } - } - { - // n_Ni60_to_He4_Fe57_reaclib + { + // Ni60_n_to_He4_Fe57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni60_to_He4_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni60_to_He4_Fe57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni60_to_He4_Fe57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni60_n_to_He4_Fe57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_n_to_He4_Fe57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_n_to_He4_Fe57_reaclib) = drate_dT; + } } - } - { - // p_Ni60_to_n_Cu60_reaclib + { + // Ni60_p_to_n_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni60); - } + log_scor = rate_eval.log_screen(k_p_Ni60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni60); + } #endif - rate_p_Ni60_to_n_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni60_to_n_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni60_to_n_Cu60_reaclib) = drate_dT; + rate_Ni60_p_to_n_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_p_to_n_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_p_to_n_Cu60_reaclib) = drate_dT; + } } - } - { - // p_Ni60_to_He4_Co57_reaclib + { + // Ni60_p_to_He4_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni60); - } + log_scor = rate_eval.log_screen(k_p_Ni60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni60); + } #endif - rate_p_Ni60_to_He4_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni60_to_He4_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni60_to_He4_Co57_reaclib) = drate_dT; + rate_Ni60_p_to_He4_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_p_to_He4_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_p_to_He4_Co57_reaclib) = drate_dT; + } } - } - { - // He4_Ni60_to_n_Zn63_reaclib + { + // Ni60_He4_to_n_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni60); - } + log_scor = rate_eval.log_screen(k_He4_Ni60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni60); + } #endif - rate_He4_Ni60_to_n_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni60_to_n_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni60_to_n_Zn63_reaclib) = drate_dT; + rate_Ni60_He4_to_n_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_He4_to_n_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_He4_to_n_Zn63_reaclib) = drate_dT; + } } - } - { - // He4_Ni60_to_p_Cu63_reaclib + { + // Ni60_He4_to_p_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni60); - } + log_scor = rate_eval.log_screen(k_He4_Ni60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni60); + } #endif - rate_He4_Ni60_to_p_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni60_to_p_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni60_to_p_Cu63_reaclib) = drate_dT; + rate_Ni60_He4_to_p_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni60_He4_to_p_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_He4_to_p_Cu63_reaclib) = drate_dT; + } } - } - { - // n_Ni61_to_He4_Fe58_reaclib + { + // Ni61_n_to_He4_Fe58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ni61_to_He4_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ni61_to_He4_Fe58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ni61_to_He4_Fe58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ni61_n_to_He4_Fe58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_n_to_He4_Fe58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_n_to_He4_Fe58_reaclib) = drate_dT; + } } - } - { - // p_Ni61_to_n_Cu61_reaclib + { + // Ni61_p_to_n_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni61); - } + log_scor = rate_eval.log_screen(k_p_Ni61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni61); + } #endif - rate_p_Ni61_to_n_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni61_to_n_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni61_to_n_Cu61_reaclib) = drate_dT; + rate_Ni61_p_to_n_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_p_to_n_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_p_to_n_Cu61_reaclib) = drate_dT; + } } - } - { - // p_Ni61_to_He4_Co58_reaclib + { + // Ni61_p_to_He4_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni61); - } + log_scor = rate_eval.log_screen(k_p_Ni61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni61); + } #endif - rate_p_Ni61_to_He4_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni61_to_He4_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni61_to_He4_Co58_reaclib) = drate_dT; + rate_Ni61_p_to_He4_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_p_to_He4_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_p_to_He4_Co58_reaclib) = drate_dT; + } } - } - { - // He4_Ni61_to_n_Zn64_reaclib + { + // Ni61_He4_to_n_Zn64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni61); - } + log_scor = rate_eval.log_screen(k_He4_Ni61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni61); + } #endif - rate_He4_Ni61_to_n_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni61_to_n_Zn64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni61_to_n_Zn64_reaclib) = drate_dT; + rate_Ni61_He4_to_n_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_He4_to_n_Zn64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_He4_to_n_Zn64_reaclib) = drate_dT; + } } - } - { - // He4_Ni61_to_p_Cu64_reaclib + { + // Ni61_He4_to_p_Cu64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni61); - } + log_scor = rate_eval.log_screen(k_He4_Ni61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni61); + } #endif - rate_He4_Ni61_to_p_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni61_to_p_Cu64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni61_to_p_Cu64_reaclib) = drate_dT; + rate_Ni61_He4_to_p_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni61_He4_to_p_Cu64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_He4_to_p_Cu64_reaclib) = drate_dT; + } } - } - { - // p_Ni62_to_n_Cu62_reaclib + { + // Ni62_p_to_n_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni62); - } + log_scor = rate_eval.log_screen(k_p_Ni62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni62); + } #endif - rate_p_Ni62_to_n_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni62_to_n_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni62_to_n_Cu62_reaclib) = drate_dT; + rate_Ni62_p_to_n_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_p_to_n_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_p_to_n_Cu62_reaclib) = drate_dT; + } } - } - { - // p_Ni62_to_He4_Co59_reaclib + { + // Ni62_p_to_He4_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni62); - } + log_scor = rate_eval.log_screen(k_p_Ni62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni62); + } #endif - rate_p_Ni62_to_He4_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni62_to_He4_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni62_to_He4_Co59_reaclib) = drate_dT; + rate_Ni62_p_to_He4_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_p_to_He4_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_p_to_He4_Co59_reaclib) = drate_dT; + } } - } - { - // He4_Ni62_to_n_Zn65_reaclib + { + // Ni62_He4_to_n_Zn65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni62); - } + log_scor = rate_eval.log_screen(k_He4_Ni62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni62); + } #endif - rate_He4_Ni62_to_n_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni62_to_n_Zn65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni62_to_n_Zn65_reaclib) = drate_dT; + rate_Ni62_He4_to_n_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_He4_to_n_Zn65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_He4_to_n_Zn65_reaclib) = drate_dT; + } } - } - { - // He4_Ni62_to_p_Cu65_reaclib + { + // Ni62_He4_to_p_Cu65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni62); - } + log_scor = rate_eval.log_screen(k_He4_Ni62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni62); + } #endif - rate_He4_Ni62_to_p_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni62_to_p_Cu65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni62_to_p_Cu65_reaclib) = drate_dT; + rate_Ni62_He4_to_p_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni62_He4_to_p_Cu65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_He4_to_p_Cu65_reaclib) = drate_dT; + } } - } - { - // p_Ni63_to_n_Cu63_reaclib + { + // Ni63_p_to_n_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni63); - } + log_scor = rate_eval.log_screen(k_p_Ni63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni63); + } #endif - rate_p_Ni63_to_n_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni63_to_n_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni63_to_n_Cu63_reaclib) = drate_dT; + rate_Ni63_p_to_n_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni63_p_to_n_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni63_p_to_n_Cu63_reaclib) = drate_dT; + } } - } - { - // He4_Ni63_to_n_Zn66_reaclib + { + // Ni63_He4_to_n_Zn66_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Ni63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni63); - } + log_scor = rate_eval.log_screen(k_He4_Ni63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Ni63); + } #endif - rate_He4_Ni63_to_n_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Ni63_to_n_Zn66_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Ni63_to_n_Zn66_reaclib) = drate_dT; + rate_Ni63_He4_to_n_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni63_He4_to_n_Zn66_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni63_He4_to_n_Zn66_reaclib) = drate_dT; + } } - } - { - // p_Ni64_to_n_Cu64_reaclib + { + // Ni64_p_to_n_Cu64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ni64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni64); - } + log_scor = rate_eval.log_screen(k_p_Ni64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ni64); + } #endif - rate_p_Ni64_to_n_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ni64_to_n_Cu64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ni64_to_n_Cu64_reaclib) = drate_dT; + rate_Ni64_p_to_n_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ni64_p_to_n_Cu64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni64_p_to_n_Cu64_reaclib) = drate_dT; + } } - } - { - // n_Cu57_to_p_Ni57_reaclib + { + // Cu57_n_to_p_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu57_to_p_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu57_to_p_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu57_to_p_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu57_n_to_p_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu57_n_to_p_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu57_n_to_p_Ni57_reaclib) = drate_dT; + } } - } - { - // n_Cu57_to_He4_Co54_reaclib + { + // Cu57_n_to_He4_Co54_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu57_to_He4_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu57_to_He4_Co54_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu57_to_He4_Co54_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu57_n_to_He4_Co54_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu57_n_to_He4_Co54_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu57_n_to_He4_Co54_reaclib) = drate_dT; + } } - } - { - // He4_Cu57_to_p_Zn60_reaclib + { + // Cu57_He4_to_p_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu57); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu57); - } + log_scor = rate_eval.log_screen(k_He4_Cu57); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu57); + } #endif - rate_He4_Cu57_to_p_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu57_to_p_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu57_to_p_Zn60_reaclib) = drate_dT; + rate_Cu57_He4_to_p_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu57_He4_to_p_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu57_He4_to_p_Zn60_reaclib) = drate_dT; + } } - } - { - // n_Cu58_to_p_Ni58_reaclib + { + // Cu58_n_to_p_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu58_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu58_to_p_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu58_to_p_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu58_n_to_p_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_n_to_p_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_n_to_p_Ni58_reaclib) = drate_dT; + } } - } - { - // n_Cu58_to_He4_Co55_reaclib + { + // Cu58_n_to_He4_Co55_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu58_to_He4_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu58_to_He4_Co55_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu58_to_He4_Co55_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu58_n_to_He4_Co55_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_n_to_He4_Co55_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_n_to_He4_Co55_reaclib) = drate_dT; + } } - } - { - // He4_Cu58_to_p_Zn61_reaclib + { + // Cu58_He4_to_p_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu58); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu58); - } + log_scor = rate_eval.log_screen(k_He4_Cu58); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu58); + } #endif - rate_He4_Cu58_to_p_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu58_to_p_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu58_to_p_Zn61_reaclib) = drate_dT; + rate_Cu58_He4_to_p_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu58_He4_to_p_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_He4_to_p_Zn61_reaclib) = drate_dT; + } } - } - { - // n_Cu59_to_p_Ni59_reaclib + { + // Cu59_n_to_p_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu59_to_p_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu59_to_p_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu59_to_p_Ni59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_n_to_p_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_n_to_p_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_n_to_p_Ni59_reaclib) = drate_dT; + } } - } - { - // n_Cu59_to_He4_Co56_reaclib + { + // Cu59_n_to_He4_Co56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu59_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu59_to_He4_Co56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu59_to_He4_Co56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu59_n_to_He4_Co56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_n_to_He4_Co56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_n_to_He4_Co56_reaclib) = drate_dT; + } } - } - { - // p_Cu59_to_n_Zn59_reaclib + { + // Cu59_p_to_n_Zn59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); - } + log_scor = rate_eval.log_screen(k_p_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); + } #endif - rate_p_Cu59_to_n_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_n_Zn59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_n_Zn59_reaclib) = drate_dT; + rate_Cu59_p_to_n_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_n_Zn59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_p_to_n_Zn59_reaclib) = drate_dT; + } } - } - { - // p_Cu59_to_He4_Ni56_reaclib + { + // Cu59_p_to_He4_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); - } + log_scor = rate_eval.log_screen(k_p_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu59); + } #endif - rate_p_Cu59_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu59_to_He4_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu59_to_He4_Ni56_reaclib) = drate_dT; + rate_Cu59_p_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_p_to_He4_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_p_to_He4_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_Cu59_to_n_Ga62_reaclib + { + // Cu59_He4_to_n_Ga62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu59); - } + log_scor = rate_eval.log_screen(k_He4_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu59); + } #endif - rate_He4_Cu59_to_n_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu59_to_n_Ga62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu59_to_n_Ga62_reaclib) = drate_dT; + rate_Cu59_He4_to_n_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_He4_to_n_Ga62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_He4_to_n_Ga62_reaclib) = drate_dT; + } } - } - { - // He4_Cu59_to_p_Zn62_reaclib + { + // Cu59_He4_to_p_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu59); - } + log_scor = rate_eval.log_screen(k_He4_Cu59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu59); + } #endif - rate_He4_Cu59_to_p_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu59_to_p_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu59_to_p_Zn62_reaclib) = drate_dT; + rate_Cu59_He4_to_p_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu59_He4_to_p_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_He4_to_p_Zn62_reaclib) = drate_dT; + } } - } - { - // n_Cu60_to_p_Ni60_reaclib + { + // Cu60_n_to_p_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu60_to_p_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu60_to_p_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu60_to_p_Ni60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu60_n_to_p_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_n_to_p_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_n_to_p_Ni60_reaclib) = drate_dT; + } } - } - { - // n_Cu60_to_He4_Co57_reaclib + { + // Cu60_n_to_He4_Co57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu60_to_He4_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu60_to_He4_Co57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu60_to_He4_Co57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu60_n_to_He4_Co57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_n_to_He4_Co57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_n_to_He4_Co57_reaclib) = drate_dT; + } } - } - { - // p_Cu60_to_n_Zn60_reaclib + { + // Cu60_p_to_n_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu60); - } + log_scor = rate_eval.log_screen(k_p_Cu60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu60); + } #endif - rate_p_Cu60_to_n_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu60_to_n_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu60_to_n_Zn60_reaclib) = drate_dT; + rate_Cu60_p_to_n_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_p_to_n_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_p_to_n_Zn60_reaclib) = drate_dT; + } } - } - { - // p_Cu60_to_He4_Ni57_reaclib + { + // Cu60_p_to_He4_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu60); - } + log_scor = rate_eval.log_screen(k_p_Cu60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu60); + } #endif - rate_p_Cu60_to_He4_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu60_to_He4_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu60_to_He4_Ni57_reaclib) = drate_dT; + rate_Cu60_p_to_He4_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_p_to_He4_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_p_to_He4_Ni57_reaclib) = drate_dT; + } } - } - { - // He4_Cu60_to_n_Ga63_reaclib + { + // Cu60_He4_to_n_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu60); - } + log_scor = rate_eval.log_screen(k_He4_Cu60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu60); + } #endif - rate_He4_Cu60_to_n_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu60_to_n_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu60_to_n_Ga63_reaclib) = drate_dT; + rate_Cu60_He4_to_n_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_He4_to_n_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_He4_to_n_Ga63_reaclib) = drate_dT; + } } - } - { - // He4_Cu60_to_p_Zn63_reaclib + { + // Cu60_He4_to_p_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu60); - } + log_scor = rate_eval.log_screen(k_He4_Cu60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu60); + } #endif - rate_He4_Cu60_to_p_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu60_to_p_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu60_to_p_Zn63_reaclib) = drate_dT; + rate_Cu60_He4_to_p_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu60_He4_to_p_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_He4_to_p_Zn63_reaclib) = drate_dT; + } } - } - { - // n_Cu61_to_p_Ni61_reaclib + { + // Cu61_n_to_p_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu61_to_p_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu61_to_p_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu61_to_p_Ni61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu61_n_to_p_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_n_to_p_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_n_to_p_Ni61_reaclib) = drate_dT; + } } - } - { - // n_Cu61_to_He4_Co58_reaclib + { + // Cu61_n_to_He4_Co58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu61_to_He4_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu61_to_He4_Co58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu61_to_He4_Co58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu61_n_to_He4_Co58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_n_to_He4_Co58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_n_to_He4_Co58_reaclib) = drate_dT; + } } - } - { - // p_Cu61_to_n_Zn61_reaclib + { + // Cu61_p_to_n_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu61); - } + log_scor = rate_eval.log_screen(k_p_Cu61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu61); + } #endif - rate_p_Cu61_to_n_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu61_to_n_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu61_to_n_Zn61_reaclib) = drate_dT; + rate_Cu61_p_to_n_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_p_to_n_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_p_to_n_Zn61_reaclib) = drate_dT; + } } - } - { - // p_Cu61_to_He4_Ni58_reaclib + { + // Cu61_p_to_He4_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu61); - } + log_scor = rate_eval.log_screen(k_p_Cu61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu61); + } #endif - rate_p_Cu61_to_He4_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu61_to_He4_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu61_to_He4_Ni58_reaclib) = drate_dT; + rate_Cu61_p_to_He4_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_p_to_He4_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_p_to_He4_Ni58_reaclib) = drate_dT; + } } - } - { - // He4_Cu61_to_n_Ga64_reaclib + { + // Cu61_He4_to_n_Ga64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu61); - } + log_scor = rate_eval.log_screen(k_He4_Cu61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu61); + } #endif - rate_He4_Cu61_to_n_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu61_to_n_Ga64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu61_to_n_Ga64_reaclib) = drate_dT; + rate_Cu61_He4_to_n_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_He4_to_n_Ga64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_He4_to_n_Ga64_reaclib) = drate_dT; + } } - } - { - // He4_Cu61_to_p_Zn64_reaclib + { + // Cu61_He4_to_p_Zn64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu61); - } + log_scor = rate_eval.log_screen(k_He4_Cu61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu61); + } #endif - rate_He4_Cu61_to_p_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu61_to_p_Zn64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu61_to_p_Zn64_reaclib) = drate_dT; + rate_Cu61_He4_to_p_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu61_He4_to_p_Zn64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_He4_to_p_Zn64_reaclib) = drate_dT; + } } - } - { - // n_Cu62_to_p_Ni62_reaclib + { + // Cu62_n_to_p_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu62_to_p_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu62_to_p_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu62_to_p_Ni62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu62_n_to_p_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_n_to_p_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_n_to_p_Ni62_reaclib) = drate_dT; + } } - } - { - // n_Cu62_to_He4_Co59_reaclib + { + // Cu62_n_to_He4_Co59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu62_to_He4_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu62_to_He4_Co59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu62_to_He4_Co59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu62_n_to_He4_Co59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_n_to_He4_Co59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_n_to_He4_Co59_reaclib) = drate_dT; + } } - } - { - // p_Cu62_to_n_Zn62_reaclib + { + // Cu62_p_to_n_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu62); - } + log_scor = rate_eval.log_screen(k_p_Cu62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu62); + } #endif - rate_p_Cu62_to_n_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu62_to_n_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu62_to_n_Zn62_reaclib) = drate_dT; + rate_Cu62_p_to_n_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_p_to_n_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_p_to_n_Zn62_reaclib) = drate_dT; + } } - } - { - // p_Cu62_to_He4_Ni59_reaclib + { + // Cu62_p_to_He4_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu62); - } + log_scor = rate_eval.log_screen(k_p_Cu62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu62); + } #endif - rate_p_Cu62_to_He4_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu62_to_He4_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu62_to_He4_Ni59_reaclib) = drate_dT; + rate_Cu62_p_to_He4_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_p_to_He4_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_p_to_He4_Ni59_reaclib) = drate_dT; + } } - } - { - // He4_Cu62_to_p_Zn65_reaclib + { + // Cu62_He4_to_p_Zn65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu62); - } + log_scor = rate_eval.log_screen(k_He4_Cu62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu62); + } #endif - rate_He4_Cu62_to_p_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu62_to_p_Zn65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu62_to_p_Zn65_reaclib) = drate_dT; + rate_Cu62_He4_to_p_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu62_He4_to_p_Zn65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_He4_to_p_Zn65_reaclib) = drate_dT; + } } - } - { - // n_Cu63_to_p_Ni63_reaclib + { + // Cu63_n_to_p_Ni63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu63_to_p_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu63_to_p_Ni63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu63_to_p_Ni63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu63_n_to_p_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_n_to_p_Ni63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_n_to_p_Ni63_reaclib) = drate_dT; + } } - } - { - // p_Cu63_to_n_Zn63_reaclib + { + // Cu63_p_to_n_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu63); - } + log_scor = rate_eval.log_screen(k_p_Cu63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu63); + } #endif - rate_p_Cu63_to_n_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu63_to_n_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu63_to_n_Zn63_reaclib) = drate_dT; + rate_Cu63_p_to_n_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_p_to_n_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_p_to_n_Zn63_reaclib) = drate_dT; + } } - } - { - // p_Cu63_to_He4_Ni60_reaclib + { + // Cu63_p_to_He4_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu63); - } + log_scor = rate_eval.log_screen(k_p_Cu63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu63); + } #endif - rate_p_Cu63_to_He4_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu63_to_He4_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu63_to_He4_Ni60_reaclib) = drate_dT; + rate_Cu63_p_to_He4_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_p_to_He4_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_p_to_He4_Ni60_reaclib) = drate_dT; + } } - } - { - // He4_Cu63_to_p_Zn66_reaclib + { + // Cu63_He4_to_p_Zn66_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Cu63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu63); - } + log_scor = rate_eval.log_screen(k_He4_Cu63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Cu63); + } #endif - rate_He4_Cu63_to_p_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Cu63_to_p_Zn66_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Cu63_to_p_Zn66_reaclib) = drate_dT; + rate_Cu63_He4_to_p_Zn66_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu63_He4_to_p_Zn66_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_He4_to_p_Zn66_reaclib) = drate_dT; + } } - } - { - // n_Cu64_to_p_Ni64_reaclib + { + // Cu64_n_to_p_Ni64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Cu64_to_p_Ni64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Cu64_to_p_Ni64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Cu64_to_p_Ni64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Cu64_n_to_p_Ni64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu64_n_to_p_Ni64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_n_to_p_Ni64_reaclib) = drate_dT; + } } - } - { - // p_Cu64_to_n_Zn64_reaclib + { + // Cu64_p_to_n_Zn64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu64); - } + log_scor = rate_eval.log_screen(k_p_Cu64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu64); + } #endif - rate_p_Cu64_to_n_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu64_to_n_Zn64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu64_to_n_Zn64_reaclib) = drate_dT; + rate_Cu64_p_to_n_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu64_p_to_n_Zn64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_p_to_n_Zn64_reaclib) = drate_dT; + } } - } - { - // p_Cu64_to_He4_Ni61_reaclib + { + // Cu64_p_to_He4_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu64); - } + log_scor = rate_eval.log_screen(k_p_Cu64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu64); + } #endif - rate_p_Cu64_to_He4_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu64_to_He4_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu64_to_He4_Ni61_reaclib) = drate_dT; + rate_Cu64_p_to_He4_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu64_p_to_He4_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_p_to_He4_Ni61_reaclib) = drate_dT; + } } - } - { - // p_Cu65_to_n_Zn65_reaclib + { + // Cu65_p_to_n_Zn65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu65); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu65); - } + log_scor = rate_eval.log_screen(k_p_Cu65); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu65); + } #endif - rate_p_Cu65_to_n_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu65_to_n_Zn65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu65_to_n_Zn65_reaclib) = drate_dT; + rate_Cu65_p_to_n_Zn65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu65_p_to_n_Zn65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu65_p_to_n_Zn65_reaclib) = drate_dT; + } } - } - { - // p_Cu65_to_He4_Ni62_reaclib + { + // Cu65_p_to_He4_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Cu65); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu65); - } + log_scor = rate_eval.log_screen(k_p_Cu65); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Cu65); + } #endif - rate_p_Cu65_to_He4_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Cu65_to_He4_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Cu65_to_He4_Ni62_reaclib) = drate_dT; + rate_Cu65_p_to_He4_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Cu65_p_to_He4_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu65_p_to_He4_Ni62_reaclib) = drate_dT; + } } - } - { - // n_Zn59_to_p_Cu59_reaclib + { + // Zn59_n_to_p_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn59_to_p_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn59_to_p_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn59_to_p_Cu59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn59_n_to_p_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_n_to_p_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn59_n_to_p_Cu59_reaclib) = drate_dT; + } } - } - { - // n_Zn59_to_He4_Ni56_reaclib + { + // Zn59_n_to_He4_Ni56_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn59_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn59_to_He4_Ni56_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn59_to_He4_Ni56_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn59_n_to_He4_Ni56_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_n_to_He4_Ni56_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn59_n_to_He4_Ni56_reaclib) = drate_dT; + } } - } - { - // He4_Zn59_to_p_Ga62_reaclib + { + // Zn59_He4_to_p_Ga62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Zn59); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn59); - } + log_scor = rate_eval.log_screen(k_He4_Zn59); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn59); + } #endif - rate_He4_Zn59_to_p_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Zn59_to_p_Ga62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Zn59_to_p_Ga62_reaclib) = drate_dT; + rate_Zn59_He4_to_p_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn59_He4_to_p_Ga62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn59_He4_to_p_Ga62_reaclib) = drate_dT; + } } - } - { - // n_Zn60_to_p_Cu60_reaclib + { + // Zn60_n_to_p_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn60_to_p_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn60_to_p_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn60_to_p_Cu60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_n_to_p_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_n_to_p_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_n_to_p_Cu60_reaclib) = drate_dT; + } } - } - { - // n_Zn60_to_He4_Ni57_reaclib + { + // Zn60_n_to_He4_Ni57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn60_to_He4_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn60_to_He4_Ni57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn60_to_He4_Ni57_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn60_n_to_He4_Ni57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_n_to_He4_Ni57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_n_to_He4_Ni57_reaclib) = drate_dT; + } } - } - { - // p_Zn60_to_He4_Cu57_reaclib + { + // Zn60_p_to_He4_Cu57_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn60); - } + log_scor = rate_eval.log_screen(k_p_Zn60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn60); + } #endif - rate_p_Zn60_to_He4_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn60_to_He4_Cu57_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn60_to_He4_Cu57_reaclib) = drate_dT; + rate_Zn60_p_to_He4_Cu57_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_p_to_He4_Cu57_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_p_to_He4_Cu57_reaclib) = drate_dT; + } } - } - { - // He4_Zn60_to_n_Ge63_reaclib + { + // Zn60_He4_to_n_Ge63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Zn60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn60); - } + log_scor = rate_eval.log_screen(k_He4_Zn60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn60); + } #endif - rate_He4_Zn60_to_n_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Zn60_to_n_Ge63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Zn60_to_n_Ge63_reaclib) = drate_dT; + rate_Zn60_He4_to_n_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_He4_to_n_Ge63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_He4_to_n_Ge63_reaclib) = drate_dT; + } } - } - { - // He4_Zn60_to_p_Ga63_reaclib + { + // Zn60_He4_to_p_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Zn60); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn60); - } + log_scor = rate_eval.log_screen(k_He4_Zn60); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn60); + } #endif - rate_He4_Zn60_to_p_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Zn60_to_p_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Zn60_to_p_Ga63_reaclib) = drate_dT; + rate_Zn60_He4_to_p_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn60_He4_to_p_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_He4_to_p_Ga63_reaclib) = drate_dT; + } } - } - { - // n_Zn61_to_p_Cu61_reaclib + { + // Zn61_n_to_p_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn61_to_p_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn61_to_p_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn61_to_p_Cu61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn61_n_to_p_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_n_to_p_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_n_to_p_Cu61_reaclib) = drate_dT; + } } - } - { - // n_Zn61_to_He4_Ni58_reaclib + { + // Zn61_n_to_He4_Ni58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn61_to_He4_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn61_to_He4_Ni58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn61_to_He4_Ni58_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn61_n_to_He4_Ni58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_n_to_He4_Ni58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_n_to_He4_Ni58_reaclib) = drate_dT; + } } - } - { - // p_Zn61_to_He4_Cu58_reaclib + { + // Zn61_p_to_He4_Cu58_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn61); - } + log_scor = rate_eval.log_screen(k_p_Zn61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn61); + } #endif - rate_p_Zn61_to_He4_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn61_to_He4_Cu58_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn61_to_He4_Cu58_reaclib) = drate_dT; + rate_Zn61_p_to_He4_Cu58_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_p_to_He4_Cu58_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_p_to_He4_Cu58_reaclib) = drate_dT; + } } - } - { - // He4_Zn61_to_n_Ge64_reaclib + { + // Zn61_He4_to_n_Ge64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Zn61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn61); - } + log_scor = rate_eval.log_screen(k_He4_Zn61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn61); + } #endif - rate_He4_Zn61_to_n_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Zn61_to_n_Ge64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Zn61_to_n_Ge64_reaclib) = drate_dT; + rate_Zn61_He4_to_n_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_He4_to_n_Ge64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_He4_to_n_Ge64_reaclib) = drate_dT; + } } - } - { - // He4_Zn61_to_p_Ga64_reaclib + { + // Zn61_He4_to_p_Ga64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_Zn61); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn61); - } + log_scor = rate_eval.log_screen(k_He4_Zn61); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_Zn61); + } #endif - rate_He4_Zn61_to_p_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_Zn61_to_p_Ga64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_Zn61_to_p_Ga64_reaclib) = drate_dT; + rate_Zn61_He4_to_p_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn61_He4_to_p_Ga64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_He4_to_p_Ga64_reaclib) = drate_dT; + } } - } - { - // n_Zn62_to_p_Cu62_reaclib + { + // Zn62_n_to_p_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn62_to_p_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn62_to_p_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn62_to_p_Cu62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn62_n_to_p_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_n_to_p_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_n_to_p_Cu62_reaclib) = drate_dT; + } } - } - { - // n_Zn62_to_He4_Ni59_reaclib + { + // Zn62_n_to_He4_Ni59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn62_to_He4_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn62_to_He4_Ni59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn62_to_He4_Ni59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn62_n_to_He4_Ni59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_n_to_He4_Ni59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_n_to_He4_Ni59_reaclib) = drate_dT; + } } - } - { - // p_Zn62_to_n_Ga62_reaclib + { + // Zn62_p_to_n_Ga62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn62); - } + log_scor = rate_eval.log_screen(k_p_Zn62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn62); + } #endif - rate_p_Zn62_to_n_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn62_to_n_Ga62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn62_to_n_Ga62_reaclib) = drate_dT; + rate_Zn62_p_to_n_Ga62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_p_to_n_Ga62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_p_to_n_Ga62_reaclib) = drate_dT; + } } - } - { - // p_Zn62_to_He4_Cu59_reaclib + { + // Zn62_p_to_He4_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn62); - } + log_scor = rate_eval.log_screen(k_p_Zn62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn62); + } #endif - rate_p_Zn62_to_He4_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn62_to_He4_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn62_to_He4_Cu59_reaclib) = drate_dT; + rate_Zn62_p_to_He4_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn62_p_to_He4_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_p_to_He4_Cu59_reaclib) = drate_dT; + } } - } - { - // n_Zn63_to_p_Cu63_reaclib + { + // Zn63_n_to_p_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn63_to_p_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn63_to_p_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn63_to_p_Cu63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn63_n_to_p_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_n_to_p_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_n_to_p_Cu63_reaclib) = drate_dT; + } } - } - { - // n_Zn63_to_He4_Ni60_reaclib + { + // Zn63_n_to_He4_Ni60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn63_to_He4_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn63_to_He4_Ni60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn63_to_He4_Ni60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn63_n_to_He4_Ni60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_n_to_He4_Ni60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_n_to_He4_Ni60_reaclib) = drate_dT; + } } - } - { - // p_Zn63_to_n_Ga63_reaclib + { + // Zn63_p_to_n_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn63); - } + log_scor = rate_eval.log_screen(k_p_Zn63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn63); + } #endif - rate_p_Zn63_to_n_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn63_to_n_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn63_to_n_Ga63_reaclib) = drate_dT; + rate_Zn63_p_to_n_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_p_to_n_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_p_to_n_Ga63_reaclib) = drate_dT; + } } - } - { - // p_Zn63_to_He4_Cu60_reaclib + { + // Zn63_p_to_He4_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn63); - } + log_scor = rate_eval.log_screen(k_p_Zn63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn63); + } #endif - rate_p_Zn63_to_He4_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn63_to_He4_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn63_to_He4_Cu60_reaclib) = drate_dT; + rate_Zn63_p_to_He4_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn63_p_to_He4_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_p_to_He4_Cu60_reaclib) = drate_dT; + } } - } - { - // n_Zn64_to_p_Cu64_reaclib + { + // Zn64_n_to_p_Cu64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn64_to_p_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn64_to_p_Cu64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn64_to_p_Cu64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn64_n_to_p_Cu64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn64_n_to_p_Cu64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_n_to_p_Cu64_reaclib) = drate_dT; + } } - } - { - // n_Zn64_to_He4_Ni61_reaclib + { + // Zn64_n_to_He4_Ni61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn64_to_He4_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn64_to_He4_Ni61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn64_to_He4_Ni61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn64_n_to_He4_Ni61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn64_n_to_He4_Ni61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_n_to_He4_Ni61_reaclib) = drate_dT; + } } - } - { - // p_Zn64_to_n_Ga64_reaclib + { + // Zn64_p_to_n_Ga64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn64); - } + log_scor = rate_eval.log_screen(k_p_Zn64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn64); + } #endif - rate_p_Zn64_to_n_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn64_to_n_Ga64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn64_to_n_Ga64_reaclib) = drate_dT; + rate_Zn64_p_to_n_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn64_p_to_n_Ga64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_p_to_n_Ga64_reaclib) = drate_dT; + } } - } - { - // p_Zn64_to_He4_Cu61_reaclib + { + // Zn64_p_to_He4_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn64); - } + log_scor = rate_eval.log_screen(k_p_Zn64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn64); + } #endif - rate_p_Zn64_to_He4_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn64_to_He4_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn64_to_He4_Cu61_reaclib) = drate_dT; + rate_Zn64_p_to_He4_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn64_p_to_He4_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_p_to_He4_Cu61_reaclib) = drate_dT; + } } - } - { - // n_Zn65_to_p_Cu65_reaclib + { + // Zn65_n_to_p_Cu65_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn65_to_p_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn65_to_p_Cu65_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn65_to_p_Cu65_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn65_n_to_p_Cu65_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn65_n_to_p_Cu65_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn65_n_to_p_Cu65_reaclib) = drate_dT; + } } - } - { - // n_Zn65_to_He4_Ni62_reaclib + { + // Zn65_n_to_He4_Ni62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn65_to_He4_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn65_to_He4_Ni62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn65_to_He4_Ni62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn65_n_to_He4_Ni62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn65_n_to_He4_Ni62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn65_n_to_He4_Ni62_reaclib) = drate_dT; + } } - } - { - // p_Zn65_to_He4_Cu62_reaclib + { + // Zn65_p_to_He4_Cu62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn65); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn65); - } + log_scor = rate_eval.log_screen(k_p_Zn65); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn65); + } #endif - rate_p_Zn65_to_He4_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn65_to_He4_Cu62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn65_to_He4_Cu62_reaclib) = drate_dT; + rate_Zn65_p_to_He4_Cu62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn65_p_to_He4_Cu62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn65_p_to_He4_Cu62_reaclib) = drate_dT; + } } - } - { - // n_Zn66_to_He4_Ni63_reaclib + { + // Zn66_n_to_He4_Ni63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Zn66_to_He4_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Zn66_to_He4_Ni63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Zn66_to_He4_Ni63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Zn66_n_to_He4_Ni63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn66_n_to_He4_Ni63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn66_n_to_He4_Ni63_reaclib) = drate_dT; + } } - } - { - // p_Zn66_to_He4_Cu63_reaclib + { + // Zn66_p_to_He4_Cu63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Zn66); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn66); - } + log_scor = rate_eval.log_screen(k_p_Zn66); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Zn66); + } #endif - rate_p_Zn66_to_He4_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Zn66_to_He4_Cu63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Zn66_to_He4_Cu63_reaclib) = drate_dT; + rate_Zn66_p_to_He4_Cu63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Zn66_p_to_He4_Cu63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn66_p_to_He4_Cu63_reaclib) = drate_dT; + } } - } - { - // n_Ga62_to_p_Zn62_reaclib + { + // Ga62_n_to_p_Zn62_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ga62_to_p_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ga62_to_p_Zn62_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ga62_to_p_Zn62_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga62_n_to_p_Zn62_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga62_n_to_p_Zn62_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga62_n_to_p_Zn62_reaclib) = drate_dT; + } } - } - { - // n_Ga62_to_He4_Cu59_reaclib + { + // Ga62_n_to_He4_Cu59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ga62_to_He4_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ga62_to_He4_Cu59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ga62_to_He4_Cu59_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga62_n_to_He4_Cu59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga62_n_to_He4_Cu59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga62_n_to_He4_Cu59_reaclib) = drate_dT; + } } - } - { - // p_Ga62_to_He4_Zn59_reaclib + { + // Ga62_p_to_He4_Zn59_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ga62); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga62); - } + log_scor = rate_eval.log_screen(k_p_Ga62); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga62); + } #endif - rate_p_Ga62_to_He4_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ga62_to_He4_Zn59_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ga62_to_He4_Zn59_reaclib) = drate_dT; + rate_Ga62_p_to_He4_Zn59_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga62_p_to_He4_Zn59_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga62_p_to_He4_Zn59_reaclib) = drate_dT; + } } - } - { - // n_Ga63_to_p_Zn63_reaclib + { + // Ga63_n_to_p_Zn63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ga63_to_p_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ga63_to_p_Zn63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ga63_to_p_Zn63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga63_n_to_p_Zn63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_n_to_p_Zn63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_n_to_p_Zn63_reaclib) = drate_dT; + } } - } - { - // n_Ga63_to_He4_Cu60_reaclib + { + // Ga63_n_to_He4_Cu60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ga63_to_He4_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ga63_to_He4_Cu60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ga63_to_He4_Cu60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga63_n_to_He4_Cu60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_n_to_He4_Cu60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_n_to_He4_Cu60_reaclib) = drate_dT; + } } - } - { - // p_Ga63_to_n_Ge63_reaclib + { + // Ga63_p_to_n_Ge63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ga63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga63); - } + log_scor = rate_eval.log_screen(k_p_Ga63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga63); + } #endif - rate_p_Ga63_to_n_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ga63_to_n_Ge63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ga63_to_n_Ge63_reaclib) = drate_dT; + rate_Ga63_p_to_n_Ge63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_p_to_n_Ge63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_p_to_n_Ge63_reaclib) = drate_dT; + } } - } - { - // p_Ga63_to_He4_Zn60_reaclib + { + // Ga63_p_to_He4_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ga63); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga63); - } + log_scor = rate_eval.log_screen(k_p_Ga63); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga63); + } #endif - rate_p_Ga63_to_He4_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ga63_to_He4_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ga63_to_He4_Zn60_reaclib) = drate_dT; + rate_Ga63_p_to_He4_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga63_p_to_He4_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_p_to_He4_Zn60_reaclib) = drate_dT; + } } - } - { - // n_Ga64_to_p_Zn64_reaclib + { + // Ga64_n_to_p_Zn64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ga64_to_p_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ga64_to_p_Zn64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ga64_to_p_Zn64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga64_n_to_p_Zn64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga64_n_to_p_Zn64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_n_to_p_Zn64_reaclib) = drate_dT; + } } - } - { - // n_Ga64_to_He4_Cu61_reaclib + { + // Ga64_n_to_He4_Cu61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ga64_to_He4_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ga64_to_He4_Cu61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ga64_to_He4_Cu61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ga64_n_to_He4_Cu61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga64_n_to_He4_Cu61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_n_to_He4_Cu61_reaclib) = drate_dT; + } } - } - { - // p_Ga64_to_n_Ge64_reaclib + { + // Ga64_p_to_n_Ge64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ga64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga64); - } + log_scor = rate_eval.log_screen(k_p_Ga64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga64); + } #endif - rate_p_Ga64_to_n_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ga64_to_n_Ge64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ga64_to_n_Ge64_reaclib) = drate_dT; + rate_Ga64_p_to_n_Ge64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga64_p_to_n_Ge64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_p_to_n_Ge64_reaclib) = drate_dT; + } } - } - { - // p_Ga64_to_He4_Zn61_reaclib + { + // Ga64_p_to_He4_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Ga64); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga64); - } + log_scor = rate_eval.log_screen(k_p_Ga64); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Ga64); + } #endif - rate_p_Ga64_to_He4_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Ga64_to_He4_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Ga64_to_He4_Zn61_reaclib) = drate_dT; + rate_Ga64_p_to_He4_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ga64_p_to_He4_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_p_to_He4_Zn61_reaclib) = drate_dT; + } } - } - { - // n_Ge63_to_p_Ga63_reaclib + { + // Ge63_n_to_p_Ga63_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ge63_to_p_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ge63_to_p_Ga63_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ge63_to_p_Ga63_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge63_n_to_p_Ga63_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge63_n_to_p_Ga63_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge63_n_to_p_Ga63_reaclib) = drate_dT; + } } - } - { - // n_Ge63_to_He4_Zn60_reaclib + { + // Ge63_n_to_He4_Zn60_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ge63_to_He4_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ge63_to_He4_Zn60_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ge63_to_He4_Zn60_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge63_n_to_He4_Zn60_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge63_n_to_He4_Zn60_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge63_n_to_He4_Zn60_reaclib) = drate_dT; + } } - } - { - // n_Ge64_to_p_Ga64_reaclib + { + // Ge64_n_to_p_Ga64_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ge64_to_p_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ge64_to_p_Ga64_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ge64_to_p_Ga64_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge64_n_to_p_Ga64_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge64_n_to_p_Ga64_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge64_n_to_p_Ga64_reaclib) = drate_dT; + } } - } - { - // n_Ge64_to_He4_Zn61_reaclib + { + // Ge64_n_to_He4_Zn61_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_Ge64_to_He4_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_Ge64_to_He4_Zn61_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_Ge64_to_He4_Zn61_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_Ge64_n_to_He4_Zn61_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Ge64_n_to_He4_Zn61_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge64_n_to_He4_Zn61_reaclib) = drate_dT; + } } - } - { - // p_d_to_n_p_p_reaclib + { + // d_p_to_n_p_p_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_d); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_d); - } + log_scor = rate_eval.log_screen(k_p_d); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_d); + } #endif - rate_p_d_to_n_p_p_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_d_to_n_p_p_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_d_to_n_p_p_reaclib) = drate_dT; + rate_d_p_to_n_p_p_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_p_to_n_p_p_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_p_to_n_p_p_reaclib) = drate_dT; + } } - } - { - // He3_He3_to_p_p_He4_reaclib + { + // He3_He3_to_p_p_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_He3); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He3); - } + log_scor = rate_eval.log_screen(k_He3_He3); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_He3); + } #endif - rate_He3_He3_to_p_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He3_He3_to_p_p_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4_reaclib) = drate_dT; + rate_He3_He3_to_p_p_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He3_He3_to_p_p_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He3_He3_to_p_p_He4_reaclib) = drate_dT; + } } - } - { - // d_Li7_to_n_He4_He4_reaclib + { + // Li7_d_to_n_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Li7); - } + log_scor = rate_eval.log_screen(k_d_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Li7); + } #endif - rate_d_Li7_to_n_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_Li7_to_n_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_Li7_to_n_He4_He4_reaclib) = drate_dT; + rate_Li7_d_to_n_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_d_to_n_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_d_to_n_He4_He4_reaclib) = drate_dT; + } } - } - { - // d_Be7_to_p_He4_He4_reaclib + { + // Be7_d_to_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_d_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Be7); - } + log_scor = rate_eval.log_screen(k_d_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_d_Be7); + } #endif - rate_d_Be7_to_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_Be7_to_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_Be7_to_p_He4_He4_reaclib) = drate_dT; + rate_Be7_d_to_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_d_to_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_d_to_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // p_Be9_to_d_He4_He4_reaclib + { + // Be9_p_to_d_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Be9); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be9); - } + log_scor = rate_eval.log_screen(k_p_Be9); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be9); + } #endif - rate_p_Be9_to_d_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Be9_to_d_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Be9_to_d_He4_He4_reaclib) = drate_dT; + rate_Be9_p_to_d_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be9_p_to_d_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be9_p_to_d_He4_He4_reaclib) = drate_dT; + } } - } - { - // n_B8_to_p_He4_He4_reaclib + { + // B8_n_to_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; - rate_n_B8_to_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_B8_to_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_B8_to_p_He4_He4_reaclib) = drate_dT; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; + rate_B8_n_to_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B8_n_to_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B8_n_to_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // p_B11_to_He4_He4_He4_reaclib + { + // B11_p_to_3He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_B11); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B11); - } + log_scor = rate_eval.log_screen(k_p_B11); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_B11); + } #endif - rate_p_B11_to_He4_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_B11_to_He4_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_B11_to_He4_He4_He4_reaclib) = drate_dT; + rate_B11_p_to_3He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_B11_p_to_3He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_B11_p_to_3He4_reaclib) = drate_dT; + } } - } - { - // He3_Li7_to_n_p_He4_He4_reaclib + { + // Li7_He3_to_n_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_Li7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_Li7); - } + log_scor = rate_eval.log_screen(k_He3_Li7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_Li7); + } #endif - rate_He3_Li7_to_n_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He3_Li7_to_n_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_Li7_to_n_p_He4_He4_reaclib) = drate_dT; + rate_Li7_He3_to_n_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Li7_He3_to_n_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Li7_He3_to_n_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // He3_Be7_to_p_p_He4_He4_reaclib + { + // Be7_He3_to_p_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He3_Be7); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_Be7); - } + log_scor = rate_eval.log_screen(k_He3_Be7); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He3_Be7); + } #endif - rate_He3_Be7_to_p_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He3_Be7_to_p_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He3_Be7_to_p_p_He4_He4_reaclib) = drate_dT; + rate_Be7_He3_to_p_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be7_He3_to_p_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be7_He3_to_p_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // p_Be9_to_n_p_He4_He4_reaclib + { + // Be9_p_to_n_p_He4_He4_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_Be9); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be9); - } + log_scor = rate_eval.log_screen(k_p_Be9); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_Be9); + } #endif - rate_p_Be9_to_n_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_Be9_to_n_p_He4_He4_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_Be9_to_n_p_He4_He4_reaclib) = drate_dT; + rate_Be9_p_to_n_p_He4_He4_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_Be9_p_to_n_p_He4_He4_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Be9_p_to_n_p_He4_He4_reaclib) = drate_dT; + } } - } - { - // n_p_He4_to_Li6_reaclib + { + // He4_p_n_to_Li6_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He4); - } + log_scor = rate_eval.log_screen(k_p_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_He4); + } #endif - rate_n_p_He4_to_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_p_He4_to_Li6_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_p_He4_to_Li6_reaclib) = drate_dT; + rate_He4_p_n_to_Li6_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_p_n_to_Li6_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_p_n_to_Li6_reaclib) = drate_dT; + } } - } - { - // n_He4_He4_to_Be9_reaclib + { + // He4_He4_n_to_Be9_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4); - } + log_scor = rate_eval.log_screen(k_He4_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4); + } #endif - rate_n_He4_He4_to_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_He4_He4_to_Be9_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_He4_He4_to_Be9_reaclib) = drate_dT; + rate_He4_He4_n_to_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_n_to_Be9_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_n_to_Be9_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_C12_reaclib + { + // He4_He4_He4_to_C12_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + rate_He4_He4_He4_to_C12_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_C12_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_C12_reaclib) = drate_dT; + } } - } - { - // n_p_p_to_p_d_reaclib + { + // p_p_n_to_p_d_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_p); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); - } + log_scor = rate_eval.log_screen(k_p_p); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p); + } #endif - rate_n_p_p_to_p_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_p_p_to_p_d_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_p_p_to_p_d_reaclib) = drate_dT; + rate_p_p_n_to_p_d_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_p_p_n_to_p_d_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_p_n_to_p_d_reaclib) = drate_dT; + } } - } - { - // p_p_He4_to_He3_He3_reaclib + { + // He4_p_p_to_He3_He3_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_p_p) + rate_eval.log_screen(k_He2_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p) + rate_eval.dlog_screen_dT(k_He2_He4); - } + log_scor = rate_eval.log_screen(k_p_p) + rate_eval.log_screen(k_He2_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_p_p) + rate_eval.dlog_screen_dT(k_He2_He4); + } #endif - rate_p_p_He4_to_He3_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_He4_to_He3_He3_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_He4_to_He3_He3_reaclib) = drate_dT; + rate_He4_p_p_to_He3_He3_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_p_p_to_He3_He3_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_p_p_to_He3_He3_reaclib) = drate_dT; + } } - } - { - // n_He4_He4_to_d_Li7_reaclib + { + // He4_He4_n_to_d_Li7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4); - } + log_scor = rate_eval.log_screen(k_He4_He4); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4); + } #endif - rate_n_He4_He4_to_d_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_He4_He4_to_d_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_He4_He4_to_d_Li7_reaclib) = drate_dT; + rate_He4_He4_n_to_d_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_n_to_d_Li7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_n_to_d_Li7_reaclib) = drate_dT; + } } - } - { - // p_He4_He4_to_n_B8_reaclib + { + // He4_He4_p_to_n_B8_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_Be8); + } #endif - rate_p_He4_He4_to_n_B8_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He4_He4_to_n_B8_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_He4_He4_to_n_B8_reaclib) = drate_dT; + rate_He4_He4_p_to_n_B8_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_p_to_n_B8_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_p_to_n_B8_reaclib) = drate_dT; + } } - } - { - // p_He4_He4_to_d_Be7_reaclib + { + // He4_He4_p_to_d_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_Be8); + } #endif - rate_p_He4_He4_to_d_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_He4_He4_to_d_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_He4_He4_to_d_Be7_reaclib) = drate_dT; + rate_He4_He4_p_to_d_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_p_to_d_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_p_to_d_Be7_reaclib) = drate_dT; + } } - } - { - // d_He4_He4_to_p_Be9_reaclib + { + // d_He4_He4_to_p_Be9_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_d_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_d_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_d_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_d_Be8); + } #endif - rate_d_He4_He4_to_p_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_d_He4_He4_to_p_Be9_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_d_He4_He4_to_p_Be9_reaclib) = drate_dT; + rate_d_He4_He4_to_p_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_d_He4_He4_to_p_Be9_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_d_He4_He4_to_p_Be9_reaclib) = drate_dT; + } } - } - { - // He4_He4_He4_to_p_B11_reaclib + { + // He4_He4_He4_to_p_B11_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_He4_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_He4_Be8); + } #endif - rate_He4_He4_He4_to_p_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_He4_He4_He4_to_p_B11_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_p_B11_reaclib) = drate_dT; + rate_He4_He4_He4_to_p_B11_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_He4_to_p_B11_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_He4_to_p_B11_reaclib) = drate_dT; + } } - } - { - // n_p_He4_He4_to_He3_Li7_reaclib + { + // He4_He4_p_n_to_He3_Li7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_Be8); + } #endif - rate_n_p_He4_He4_to_He3_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_p_He4_He4_to_He3_Li7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_p_He4_He4_to_He3_Li7_reaclib) = drate_dT; + rate_He4_He4_p_n_to_He3_Li7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_p_n_to_He3_Li7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_p_n_to_He3_Li7_reaclib) = drate_dT; + } } - } - { - // n_p_He4_He4_to_p_Be9_reaclib + { + // He4_He4_p_n_to_p_Be9_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_Be8); + } #endif - rate_n_p_He4_He4_to_p_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_n_p_He4_He4_to_p_Be9_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_n_p_He4_He4_to_p_Be9_reaclib) = drate_dT; + rate_He4_He4_p_n_to_p_Be9_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_p_n_to_p_Be9_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_p_n_to_p_Be9_reaclib) = drate_dT; + } } - } - { - // p_p_He4_He4_to_He3_Be7_reaclib + { + // He4_He4_p_p_to_He3_Be7_reaclib - amrex::Real log_scor {0.0_rt}; - amrex::Real dlog_scor_dT {0.0_rt}; + amrex::Real log_scor {0.0_rt}; + amrex::Real dlog_scor_dT {0.0_rt}; #ifdef SCREENING - log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_p) + rate_eval.log_screen(k_He2_Be8); - if constexpr (std::is_same_v) { - dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_p) + rate_eval.dlog_screen_dT(k_He2_Be8); - } + log_scor = rate_eval.log_screen(k_He4_He4) + rate_eval.log_screen(k_p_p) + rate_eval.log_screen(k_He2_Be8); + if constexpr (std::is_same_v) { + dlog_scor_dT = rate_eval.dlog_screen_dT(k_He4_He4) + rate_eval.dlog_screen_dT(k_p_p) + rate_eval.dlog_screen_dT(k_He2_Be8); + } #endif - rate_p_p_He4_He4_to_He3_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); - rate_eval.screened_rates(k_p_p_He4_He4_to_He3_Be7_reaclib) = rate; - if constexpr (std::is_same_v) { - rate_eval.dscreened_rates_dT(k_p_p_He4_He4_to_He3_Be7_reaclib) = drate_dT; + rate_He4_He4_p_p_to_He3_Be7_reaclib(tfactors, log_scor, dlog_scor_dT, rate, drate_dT); + rate_eval.screened_rates(k_He4_He4_p_p_to_He3_Be7_reaclib) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_He4_He4_p_p_to_He3_Be7_reaclib) = drate_dT; + } } - } + } } - #endif diff --git a/networks/sn160/tabular_weak_rates.H b/networks/sn160/tabular_weak_rates.H new file mode 100644 index 000000000..6b77d5b23 --- /dev/null +++ b/networks/sn160/tabular_weak_rates.H @@ -0,0 +1,1380 @@ +#ifndef TABULAR_WEAK_RATES_H +#define TABULAR_WEAK_RATES_H + +#include + +#include + +namespace tabular_weak_rates { + + using namespace Rates; + using namespace Species; + + using namespace rate_tables; + + template + AMREX_GPU_DEVICE AMREX_INLINE + void + fill_rates([[maybe_unused]] const amrex::Real temp, + [[maybe_unused]] const amrex::Real rhoy, + [[maybe_unused]] const amrex::Array1D& Y, + [[maybe_unused]] T& rate_eval) + { + + // Calculate tabular weak rates + + [[maybe_unused]] amrex::Real rate, drate_dt, edot_nu, edot_gamma; + + rate_eval.enuc_weak = 0.0_rt; + + const amrex::Real log_temp = std::log10(temp); + const amrex::Real log_rhoy = std::log10(rhoy); + + tabular_evaluate(j_Na21_Ne21_meta, j_Na21_Ne21_rhoy, j_Na21_Ne21_temp, j_Na21_Ne21_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Na21_to_Ne21_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na21_to_Ne21_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Na21) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne21_Na21_meta, j_Ne21_Na21_rhoy, j_Ne21_Na21_temp, j_Ne21_Na21_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne21_to_Na21_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne21_to_Na21_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne21) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Na22_Ne22_meta, j_Na22_Ne22_rhoy, j_Na22_Ne22_temp, j_Na22_Ne22_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Na22_to_Ne22_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na22_to_Ne22_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Na22) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ne22_Na22_meta, j_Ne22_Na22_rhoy, j_Ne22_Na22_temp, j_Ne22_Na22_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ne22_to_Na22_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ne22_to_Na22_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ne22) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mg23_Na23_meta, j_Mg23_Na23_rhoy, j_Mg23_Na23_temp, j_Mg23_Na23_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mg23_to_Na23_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg23_to_Na23_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mg23) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Na23_Mg23_meta, j_Na23_Mg23_rhoy, j_Na23_Mg23_temp, j_Na23_Mg23_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Na23_to_Mg23_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Na23_to_Mg23_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Na23) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Al25_Mg25_meta, j_Al25_Mg25_rhoy, j_Al25_Mg25_temp, j_Al25_Mg25_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Al25_to_Mg25_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al25_to_Mg25_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Al25) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mg25_Al25_meta, j_Mg25_Al25_rhoy, j_Mg25_Al25_temp, j_Mg25_Al25_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mg25_to_Al25_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg25_to_Al25_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mg25) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Al26_Mg26_meta, j_Al26_Mg26_rhoy, j_Al26_Mg26_temp, j_Al26_Mg26_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Al26_to_Mg26_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Al26_to_Mg26_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Al26) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mg26_Al26_meta, j_Mg26_Al26_rhoy, j_Mg26_Al26_temp, j_Mg26_Al26_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mg26_to_Al26_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mg26_to_Al26_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mg26) * (edot_nu + edot_gamma); + + tabular_evaluate(j_P29_Si29_meta, j_P29_Si29_rhoy, j_P29_Si29_temp, j_P29_Si29_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_P29_to_Si29_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P29_to_Si29_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(P29) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Si29_P29_meta, j_Si29_P29_rhoy, j_Si29_P29_temp, j_Si29_P29_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Si29_to_P29_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si29_to_P29_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Si29) * (edot_nu + edot_gamma); + + tabular_evaluate(j_P30_Si30_meta, j_P30_Si30_rhoy, j_P30_Si30_temp, j_P30_Si30_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_P30_to_Si30_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P30_to_Si30_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(P30) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Si30_P30_meta, j_Si30_P30_rhoy, j_Si30_P30_temp, j_Si30_P30_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Si30_to_P30_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si30_to_P30_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Si30) * (edot_nu + edot_gamma); + + tabular_evaluate(j_P31_Si31_meta, j_P31_Si31_rhoy, j_P31_Si31_temp, j_P31_Si31_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_P31_to_Si31_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P31_to_Si31_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(P31) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Si31_P31_meta, j_Si31_P31_rhoy, j_Si31_P31_temp, j_Si31_P31_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Si31_to_P31_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si31_to_P31_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Si31) * (edot_nu + edot_gamma); + + tabular_evaluate(j_P32_S32_meta, j_P32_S32_rhoy, j_P32_S32_temp, j_P32_S32_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_P32_to_S32_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_to_S32_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(P32) * (edot_nu + edot_gamma); + + tabular_evaluate(j_P32_Si32_meta, j_P32_Si32_rhoy, j_P32_Si32_temp, j_P32_Si32_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_P32_to_Si32_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P32_to_Si32_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(P32) * (edot_nu + edot_gamma); + + tabular_evaluate(j_S32_P32_meta, j_S32_P32_rhoy, j_S32_P32_temp, j_S32_P32_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_S32_to_P32_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S32_to_P32_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(S32) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Si32_P32_meta, j_Si32_P32_rhoy, j_Si32_P32_temp, j_Si32_P32_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Si32_to_P32_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Si32_to_P32_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Si32) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cl33_S33_meta, j_Cl33_S33_rhoy, j_Cl33_S33_temp, j_Cl33_S33_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cl33_to_S33_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl33_to_S33_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cl33) * (edot_nu + edot_gamma); + + tabular_evaluate(j_P33_S33_meta, j_P33_S33_rhoy, j_P33_S33_temp, j_P33_S33_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_P33_to_S33_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_P33_to_S33_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(P33) * (edot_nu + edot_gamma); + + tabular_evaluate(j_S33_Cl33_meta, j_S33_Cl33_rhoy, j_S33_Cl33_temp, j_S33_Cl33_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_S33_to_Cl33_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_to_Cl33_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(S33) * (edot_nu + edot_gamma); + + tabular_evaluate(j_S33_P33_meta, j_S33_P33_rhoy, j_S33_P33_temp, j_S33_P33_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_S33_to_P33_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S33_to_P33_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(S33) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cl34_S34_meta, j_Cl34_S34_rhoy, j_Cl34_S34_temp, j_Cl34_S34_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cl34_to_S34_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl34_to_S34_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cl34) * (edot_nu + edot_gamma); + + tabular_evaluate(j_S34_Cl34_meta, j_S34_Cl34_rhoy, j_S34_Cl34_temp, j_S34_Cl34_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_S34_to_Cl34_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S34_to_Cl34_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(S34) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cl35_S35_meta, j_Cl35_S35_rhoy, j_Cl35_S35_temp, j_Cl35_S35_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cl35_to_S35_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl35_to_S35_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cl35) * (edot_nu + edot_gamma); + + tabular_evaluate(j_S35_Cl35_meta, j_S35_Cl35_rhoy, j_S35_Cl35_temp, j_S35_Cl35_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_S35_to_Cl35_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S35_to_Cl35_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(S35) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ar36_Cl36_meta, j_Ar36_Cl36_rhoy, j_Ar36_Cl36_temp, j_Ar36_Cl36_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ar36_to_Cl36_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar36_to_Cl36_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ar36) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cl36_Ar36_meta, j_Cl36_Ar36_rhoy, j_Cl36_Ar36_temp, j_Cl36_Ar36_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cl36_to_Ar36_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_to_Ar36_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cl36) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cl36_S36_meta, j_Cl36_S36_rhoy, j_Cl36_S36_temp, j_Cl36_S36_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cl36_to_S36_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl36_to_S36_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cl36) * (edot_nu + edot_gamma); + + tabular_evaluate(j_S36_Cl36_meta, j_S36_Cl36_rhoy, j_S36_Cl36_temp, j_S36_Cl36_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_S36_to_Cl36_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_S36_to_Cl36_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(S36) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ar37_Cl37_meta, j_Ar37_Cl37_rhoy, j_Ar37_Cl37_temp, j_Ar37_Cl37_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ar37_to_Cl37_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_to_Cl37_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ar37) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ar37_K37_meta, j_Ar37_K37_rhoy, j_Ar37_K37_temp, j_Ar37_K37_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ar37_to_K37_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar37_to_K37_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ar37) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cl37_Ar37_meta, j_Cl37_Ar37_rhoy, j_Cl37_Ar37_temp, j_Cl37_Ar37_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cl37_to_Ar37_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cl37_to_Ar37_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cl37) * (edot_nu + edot_gamma); + + tabular_evaluate(j_K37_Ar37_meta, j_K37_Ar37_rhoy, j_K37_Ar37_temp, j_K37_Ar37_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_K37_to_Ar37_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K37_to_Ar37_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(K37) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ar38_K38_meta, j_Ar38_K38_rhoy, j_Ar38_K38_temp, j_Ar38_K38_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ar38_to_K38_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar38_to_K38_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ar38) * (edot_nu + edot_gamma); + + tabular_evaluate(j_K38_Ar38_meta, j_K38_Ar38_rhoy, j_K38_Ar38_temp, j_K38_Ar38_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_K38_to_Ar38_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K38_to_Ar38_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(K38) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ar39_K39_meta, j_Ar39_K39_rhoy, j_Ar39_K39_temp, j_Ar39_K39_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ar39_to_K39_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar39_to_K39_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ar39) * (edot_nu + edot_gamma); + + tabular_evaluate(j_K39_Ar39_meta, j_K39_Ar39_rhoy, j_K39_Ar39_temp, j_K39_Ar39_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_K39_to_Ar39_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K39_to_Ar39_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(K39) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ar40_K40_meta, j_Ar40_K40_rhoy, j_Ar40_K40_temp, j_Ar40_K40_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ar40_to_K40_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ar40_to_K40_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ar40) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ca40_K40_meta, j_Ca40_K40_rhoy, j_Ca40_K40_temp, j_Ca40_K40_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ca40_to_K40_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca40_to_K40_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ca40) * (edot_nu + edot_gamma); + + tabular_evaluate(j_K40_Ar40_meta, j_K40_Ar40_rhoy, j_K40_Ar40_temp, j_K40_Ar40_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_K40_to_Ar40_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_to_Ar40_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(K40) * (edot_nu + edot_gamma); + + tabular_evaluate(j_K40_Ca40_meta, j_K40_Ca40_rhoy, j_K40_Ca40_temp, j_K40_Ca40_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_K40_to_Ca40_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K40_to_Ca40_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(K40) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ca41_K41_meta, j_Ca41_K41_rhoy, j_Ca41_K41_temp, j_Ca41_K41_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ca41_to_K41_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca41_to_K41_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ca41) * (edot_nu + edot_gamma); + + tabular_evaluate(j_K41_Ca41_meta, j_K41_Ca41_rhoy, j_K41_Ca41_temp, j_K41_Ca41_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_K41_to_Ca41_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_K41_to_Ca41_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(K41) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ca43_Sc43_meta, j_Ca43_Sc43_rhoy, j_Ca43_Sc43_temp, j_Ca43_Sc43_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ca43_to_Sc43_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca43_to_Sc43_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ca43) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc43_Ca43_meta, j_Sc43_Ca43_rhoy, j_Sc43_Ca43_temp, j_Sc43_Ca43_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc43_to_Ca43_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc43_to_Ca43_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc43) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ca44_Sc44_meta, j_Ca44_Sc44_rhoy, j_Ca44_Sc44_temp, j_Ca44_Sc44_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ca44_to_Sc44_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca44_to_Sc44_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ca44) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc44_Ca44_meta, j_Sc44_Ca44_rhoy, j_Sc44_Ca44_temp, j_Sc44_Ca44_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc44_to_Ca44_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_to_Ca44_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc44) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc44_Ti44_meta, j_Sc44_Ti44_rhoy, j_Sc44_Ti44_temp, j_Sc44_Ti44_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc44_to_Ti44_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc44_to_Ti44_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc44) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti44_Sc44_meta, j_Ti44_Sc44_rhoy, j_Ti44_Sc44_temp, j_Ti44_Sc44_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti44_to_Sc44_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti44_to_Sc44_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti44) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co53_Fe53_meta, j_Co53_Fe53_rhoy, j_Co53_Fe53_temp, j_Co53_Fe53_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co53_to_Fe53_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co53_to_Fe53_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co53) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe53_Co53_meta, j_Fe53_Co53_rhoy, j_Fe53_Co53_temp, j_Fe53_Co53_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe53_to_Co53_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_Co53_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe53) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu57_Ni57_meta, j_Cu57_Ni57_rhoy, j_Cu57_Ni57_temp, j_Cu57_Ni57_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu57_to_Ni57_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu57_to_Ni57_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu57) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni57_Cu57_meta, j_Ni57_Cu57_rhoy, j_Ni57_Cu57_temp, j_Ni57_Cu57_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni57_to_Cu57_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_Cu57_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ca45_Sc45_meta, j_Ca45_Sc45_rhoy, j_Ca45_Sc45_temp, j_Ca45_Sc45_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ca45_to_Sc45_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca45_to_Sc45_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ca45) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc45_Ca45_meta, j_Sc45_Ca45_rhoy, j_Sc45_Ca45_temp, j_Sc45_Ca45_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc45_to_Ca45_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_to_Ca45_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc45) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc45_Ti45_meta, j_Sc45_Ti45_rhoy, j_Sc45_Ti45_temp, j_Sc45_Ti45_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc45_to_Ti45_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc45_to_Ti45_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc45) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti45_Sc45_meta, j_Ti45_Sc45_rhoy, j_Ti45_Sc45_temp, j_Ti45_Sc45_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti45_to_Sc45_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti45_to_Sc45_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti45) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ca46_Sc46_meta, j_Ca46_Sc46_rhoy, j_Ca46_Sc46_temp, j_Ca46_Sc46_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ca46_to_Sc46_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca46_to_Sc46_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ca46) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc46_Ca46_meta, j_Sc46_Ca46_rhoy, j_Sc46_Ca46_temp, j_Sc46_Ca46_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc46_to_Ca46_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_to_Ca46_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc46) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc46_Ti46_meta, j_Sc46_Ti46_rhoy, j_Sc46_Ti46_temp, j_Sc46_Ti46_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc46_to_Ti46_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc46_to_Ti46_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc46) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti46_Sc46_meta, j_Ti46_Sc46_rhoy, j_Ti46_Sc46_temp, j_Ti46_Sc46_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti46_to_Sc46_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_to_Sc46_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti46) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti46_V46_meta, j_Ti46_V46_rhoy, j_Ti46_V46_temp, j_Ti46_V46_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti46_to_V46_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti46_to_V46_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti46) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V46_Ti46_meta, j_V46_Ti46_rhoy, j_V46_Ti46_temp, j_V46_Ti46_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V46_to_Ti46_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V46_to_Ti46_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V46) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ca47_Sc47_meta, j_Ca47_Sc47_rhoy, j_Ca47_Sc47_temp, j_Ca47_Sc47_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ca47_to_Sc47_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca47_to_Sc47_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ca47) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc47_Ca47_meta, j_Sc47_Ca47_rhoy, j_Sc47_Ca47_temp, j_Sc47_Ca47_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc47_to_Ca47_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_to_Ca47_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc47) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc47_Ti47_meta, j_Sc47_Ti47_rhoy, j_Sc47_Ti47_temp, j_Sc47_Ti47_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc47_to_Ti47_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc47_to_Ti47_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc47) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti47_Sc47_meta, j_Ti47_Sc47_rhoy, j_Ti47_Sc47_temp, j_Ti47_Sc47_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti47_to_Sc47_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_to_Sc47_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti47) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti47_V47_meta, j_Ti47_V47_rhoy, j_Ti47_V47_temp, j_Ti47_V47_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti47_to_V47_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti47_to_V47_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti47) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V47_Ti47_meta, j_V47_Ti47_rhoy, j_V47_Ti47_temp, j_V47_Ti47_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V47_to_Ti47_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V47_to_Ti47_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V47) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ca48_Sc48_meta, j_Ca48_Sc48_rhoy, j_Ca48_Sc48_temp, j_Ca48_Sc48_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ca48_to_Sc48_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ca48_to_Sc48_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ca48) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr48_V48_meta, j_Cr48_V48_rhoy, j_Cr48_V48_temp, j_Cr48_V48_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr48_to_V48_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr48_to_V48_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr48) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc48_Ca48_meta, j_Sc48_Ca48_rhoy, j_Sc48_Ca48_temp, j_Sc48_Ca48_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc48_to_Ca48_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_to_Ca48_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc48) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc48_Ti48_meta, j_Sc48_Ti48_rhoy, j_Sc48_Ti48_temp, j_Sc48_Ti48_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc48_to_Ti48_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc48_to_Ti48_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc48) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti48_Sc48_meta, j_Ti48_Sc48_rhoy, j_Ti48_Sc48_temp, j_Ti48_Sc48_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti48_to_Sc48_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_to_Sc48_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti48) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti48_V48_meta, j_Ti48_V48_rhoy, j_Ti48_V48_temp, j_Ti48_V48_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti48_to_V48_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti48_to_V48_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti48) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V48_Cr48_meta, j_V48_Cr48_rhoy, j_V48_Cr48_temp, j_V48_Cr48_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V48_to_Cr48_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_to_Cr48_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V48) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V48_Ti48_meta, j_V48_Ti48_rhoy, j_V48_Ti48_temp, j_V48_Ti48_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V48_to_Ti48_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V48_to_Ti48_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V48) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr49_V49_meta, j_Cr49_V49_rhoy, j_Cr49_V49_temp, j_Cr49_V49_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr49_to_V49_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr49_to_V49_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr49) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Sc49_Ti49_meta, j_Sc49_Ti49_rhoy, j_Sc49_Ti49_temp, j_Sc49_Ti49_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Sc49_to_Ti49_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Sc49_to_Ti49_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Sc49) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti49_Sc49_meta, j_Ti49_Sc49_rhoy, j_Ti49_Sc49_temp, j_Ti49_Sc49_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti49_to_Sc49_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_to_Sc49_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti49) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti49_V49_meta, j_Ti49_V49_rhoy, j_Ti49_V49_temp, j_Ti49_V49_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti49_to_V49_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti49_to_V49_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti49) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V49_Cr49_meta, j_V49_Cr49_rhoy, j_V49_Cr49_temp, j_V49_Cr49_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V49_to_Cr49_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_to_Cr49_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V49) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V49_Ti49_meta, j_V49_Ti49_rhoy, j_V49_Ti49_temp, j_V49_Ti49_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V49_to_Ti49_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V49_to_Ti49_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V49) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr50_Mn50_meta, j_Cr50_Mn50_rhoy, j_Cr50_Mn50_temp, j_Cr50_Mn50_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr50_to_Mn50_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_to_Mn50_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr50) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr50_V50_meta, j_Cr50_V50_rhoy, j_Cr50_V50_temp, j_Cr50_V50_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr50_to_V50_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr50_to_V50_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr50) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn50_Cr50_meta, j_Mn50_Cr50_rhoy, j_Mn50_Cr50_temp, j_Mn50_Cr50_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn50_to_Cr50_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn50_to_Cr50_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn50) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti50_V50_meta, j_Ti50_V50_rhoy, j_Ti50_V50_temp, j_Ti50_V50_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti50_to_V50_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti50_to_V50_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti50) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V50_Cr50_meta, j_V50_Cr50_rhoy, j_V50_Cr50_temp, j_V50_Cr50_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V50_to_Cr50_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_to_Cr50_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V50) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V50_Ti50_meta, j_V50_Ti50_rhoy, j_V50_Ti50_temp, j_V50_Ti50_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V50_to_Ti50_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V50_to_Ti50_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V50) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr51_Mn51_meta, j_Cr51_Mn51_rhoy, j_Cr51_Mn51_temp, j_Cr51_Mn51_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr51_to_Mn51_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_to_Mn51_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr51) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr51_V51_meta, j_Cr51_V51_rhoy, j_Cr51_V51_temp, j_Cr51_V51_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr51_to_V51_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr51_to_V51_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr51) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn51_Cr51_meta, j_Mn51_Cr51_rhoy, j_Mn51_Cr51_temp, j_Mn51_Cr51_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn51_to_Cr51_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn51_to_Cr51_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn51) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ti51_V51_meta, j_Ti51_V51_rhoy, j_Ti51_V51_temp, j_Ti51_V51_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ti51_to_V51_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ti51_to_V51_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ti51) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V51_Cr51_meta, j_V51_Cr51_rhoy, j_V51_Cr51_temp, j_V51_Cr51_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V51_to_Cr51_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_to_Cr51_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V51) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V51_Ti51_meta, j_V51_Ti51_rhoy, j_V51_Ti51_temp, j_V51_Ti51_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V51_to_Ti51_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V51_to_Ti51_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V51) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr52_Mn52_meta, j_Cr52_Mn52_rhoy, j_Cr52_Mn52_temp, j_Cr52_Mn52_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr52_to_Mn52_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_to_Mn52_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr52) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr52_V52_meta, j_Cr52_V52_rhoy, j_Cr52_V52_temp, j_Cr52_V52_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr52_to_V52_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr52_to_V52_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr52) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe52_Mn52_meta, j_Fe52_Mn52_rhoy, j_Fe52_Mn52_temp, j_Fe52_Mn52_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe52_to_Mn52_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe52_to_Mn52_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe52) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn52_Cr52_meta, j_Mn52_Cr52_rhoy, j_Mn52_Cr52_temp, j_Mn52_Cr52_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn52_to_Cr52_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_to_Cr52_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn52) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn52_Fe52_meta, j_Mn52_Fe52_rhoy, j_Mn52_Fe52_temp, j_Mn52_Fe52_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn52_to_Fe52_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn52_to_Fe52_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn52) * (edot_nu + edot_gamma); + + tabular_evaluate(j_V52_Cr52_meta, j_V52_Cr52_rhoy, j_V52_Cr52_temp, j_V52_Cr52_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_V52_to_Cr52_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_V52_to_Cr52_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(V52) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr53_Mn53_meta, j_Cr53_Mn53_rhoy, j_Cr53_Mn53_temp, j_Cr53_Mn53_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr53_to_Mn53_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr53_to_Mn53_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr53) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe53_Mn53_meta, j_Fe53_Mn53_rhoy, j_Fe53_Mn53_temp, j_Fe53_Mn53_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe53_to_Mn53_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe53_to_Mn53_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe53) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn53_Cr53_meta, j_Mn53_Cr53_rhoy, j_Mn53_Cr53_temp, j_Mn53_Cr53_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn53_to_Cr53_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_to_Cr53_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn53) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn53_Fe53_meta, j_Mn53_Fe53_rhoy, j_Mn53_Fe53_temp, j_Mn53_Fe53_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn53_to_Fe53_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn53_to_Fe53_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn53) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co54_Fe54_meta, j_Co54_Fe54_rhoy, j_Co54_Fe54_temp, j_Co54_Fe54_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co54_to_Fe54_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co54_to_Fe54_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co54) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cr54_Mn54_meta, j_Cr54_Mn54_rhoy, j_Cr54_Mn54_temp, j_Cr54_Mn54_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cr54_to_Mn54_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cr54_to_Mn54_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cr54) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe54_Co54_meta, j_Fe54_Co54_rhoy, j_Fe54_Co54_temp, j_Fe54_Co54_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe54_to_Co54_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_Co54_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe54) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe54_Mn54_meta, j_Fe54_Mn54_rhoy, j_Fe54_Mn54_temp, j_Fe54_Mn54_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe54_to_Mn54_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe54_to_Mn54_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe54) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn54_Cr54_meta, j_Mn54_Cr54_rhoy, j_Mn54_Cr54_temp, j_Mn54_Cr54_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn54_to_Cr54_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_to_Cr54_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn54) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn54_Fe54_meta, j_Mn54_Fe54_rhoy, j_Mn54_Fe54_temp, j_Mn54_Fe54_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn54_to_Fe54_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn54_to_Fe54_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn54) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co55_Fe55_meta, j_Co55_Fe55_rhoy, j_Co55_Fe55_temp, j_Co55_Fe55_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co55_to_Fe55_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co55_to_Fe55_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co55) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe55_Co55_meta, j_Fe55_Co55_rhoy, j_Fe55_Co55_temp, j_Fe55_Co55_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe55_to_Co55_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_Co55_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe55_Mn55_meta, j_Fe55_Mn55_rhoy, j_Fe55_Mn55_temp, j_Fe55_Mn55_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe55_to_Mn55_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe55_to_Mn55_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe55) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Mn55_Fe55_meta, j_Mn55_Fe55_rhoy, j_Mn55_Fe55_temp, j_Mn55_Fe55_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Mn55_to_Fe55_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Mn55_to_Fe55_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Mn55) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Fe56_meta, j_Co56_Fe56_rhoy, j_Co56_Fe56_temp, j_Co56_Fe56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Fe56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Fe56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co56_Ni56_meta, j_Co56_Ni56_rhoy, j_Co56_Ni56_temp, j_Co56_Ni56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co56_to_Ni56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co56_to_Ni56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe56_Co56_meta, j_Fe56_Co56_rhoy, j_Fe56_Co56_temp, j_Fe56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe56_to_Co56_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe56_to_Co56_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni56_Co56_meta, j_Ni56_Co56_rhoy, j_Ni56_Co56_temp, j_Ni56_Co56_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni56_to_Co56_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni56_to_Co56_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni56) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co57_Fe57_meta, j_Co57_Fe57_rhoy, j_Co57_Fe57_temp, j_Co57_Fe57_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co57_to_Fe57_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_Fe57_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co57_Ni57_meta, j_Co57_Ni57_rhoy, j_Co57_Ni57_temp, j_Co57_Ni57_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co57_to_Ni57_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co57_to_Ni57_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co57) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe57_Co57_meta, j_Fe57_Co57_rhoy, j_Fe57_Co57_temp, j_Fe57_Co57_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe57_to_Co57_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe57_to_Co57_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe57) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni57_Co57_meta, j_Ni57_Co57_rhoy, j_Ni57_Co57_temp, j_Ni57_Co57_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni57_to_Co57_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni57_to_Co57_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni57) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co58_Fe58_meta, j_Co58_Fe58_rhoy, j_Co58_Fe58_temp, j_Co58_Fe58_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co58_to_Fe58_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_to_Fe58_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co58) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co58_Ni58_meta, j_Co58_Ni58_rhoy, j_Co58_Ni58_temp, j_Co58_Ni58_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co58_to_Ni58_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co58_to_Ni58_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co58) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu58_Ni58_meta, j_Cu58_Ni58_rhoy, j_Cu58_Ni58_temp, j_Cu58_Ni58_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu58_to_Ni58_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu58_to_Ni58_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu58) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Fe58_Co58_meta, j_Fe58_Co58_rhoy, j_Fe58_Co58_temp, j_Fe58_Co58_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Fe58_to_Co58_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Fe58_to_Co58_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Fe58) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni58_Co58_meta, j_Ni58_Co58_rhoy, j_Ni58_Co58_temp, j_Ni58_Co58_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni58_to_Co58_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_Co58_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni58) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni58_Cu58_meta, j_Ni58_Cu58_rhoy, j_Ni58_Cu58_temp, j_Ni58_Cu58_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni58_to_Cu58_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni58_to_Cu58_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni58) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Co59_Ni59_meta, j_Co59_Ni59_rhoy, j_Co59_Ni59_temp, j_Co59_Ni59_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Co59_to_Ni59_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Co59_to_Ni59_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Co59) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu59_Ni59_meta, j_Cu59_Ni59_rhoy, j_Cu59_Ni59_temp, j_Cu59_Ni59_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu59_to_Ni59_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu59_to_Ni59_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu59) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni59_Co59_meta, j_Ni59_Co59_rhoy, j_Ni59_Co59_temp, j_Ni59_Co59_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni59_to_Co59_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_to_Co59_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni59) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni59_Cu59_meta, j_Ni59_Cu59_rhoy, j_Ni59_Cu59_temp, j_Ni59_Cu59_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni59_to_Cu59_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni59_to_Cu59_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni59) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu60_Ni60_meta, j_Cu60_Ni60_rhoy, j_Cu60_Ni60_temp, j_Cu60_Ni60_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu60_to_Ni60_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_to_Ni60_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu60) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu60_Zn60_meta, j_Cu60_Zn60_rhoy, j_Cu60_Zn60_temp, j_Cu60_Zn60_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu60_to_Zn60_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu60_to_Zn60_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu60) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni60_Cu60_meta, j_Ni60_Cu60_rhoy, j_Ni60_Cu60_temp, j_Ni60_Cu60_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni60_to_Cu60_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni60_to_Cu60_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni60) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn60_Cu60_meta, j_Zn60_Cu60_rhoy, j_Zn60_Cu60_temp, j_Zn60_Cu60_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn60_to_Cu60_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn60_to_Cu60_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn60) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu61_Ni61_meta, j_Cu61_Ni61_rhoy, j_Cu61_Ni61_temp, j_Cu61_Ni61_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu61_to_Ni61_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_to_Ni61_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu61) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu61_Zn61_meta, j_Cu61_Zn61_rhoy, j_Cu61_Zn61_temp, j_Cu61_Zn61_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu61_to_Zn61_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu61_to_Zn61_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu61) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni61_Cu61_meta, j_Ni61_Cu61_rhoy, j_Ni61_Cu61_temp, j_Ni61_Cu61_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni61_to_Cu61_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni61_to_Cu61_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni61) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn61_Cu61_meta, j_Zn61_Cu61_rhoy, j_Zn61_Cu61_temp, j_Zn61_Cu61_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn61_to_Cu61_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn61_to_Cu61_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn61) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu62_Ni62_meta, j_Cu62_Ni62_rhoy, j_Cu62_Ni62_temp, j_Cu62_Ni62_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu62_to_Ni62_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_to_Ni62_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu62) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu62_Zn62_meta, j_Cu62_Zn62_rhoy, j_Cu62_Zn62_temp, j_Cu62_Zn62_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu62_to_Zn62_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu62_to_Zn62_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu62) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ga62_Zn62_meta, j_Ga62_Zn62_rhoy, j_Ga62_Zn62_temp, j_Ga62_Zn62_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ga62_to_Zn62_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga62_to_Zn62_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ga62) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni62_Cu62_meta, j_Ni62_Cu62_rhoy, j_Ni62_Cu62_temp, j_Ni62_Cu62_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni62_to_Cu62_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni62_to_Cu62_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni62) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn62_Cu62_meta, j_Zn62_Cu62_rhoy, j_Zn62_Cu62_temp, j_Zn62_Cu62_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn62_to_Cu62_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_to_Cu62_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn62) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn62_Ga62_meta, j_Zn62_Ga62_rhoy, j_Zn62_Ga62_temp, j_Zn62_Ga62_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn62_to_Ga62_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn62_to_Ga62_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn62) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu63_Ni63_meta, j_Cu63_Ni63_rhoy, j_Cu63_Ni63_temp, j_Cu63_Ni63_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu63_to_Ni63_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_to_Ni63_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu63) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu63_Zn63_meta, j_Cu63_Zn63_rhoy, j_Cu63_Zn63_temp, j_Cu63_Zn63_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu63_to_Zn63_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu63_to_Zn63_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu63) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ga63_Zn63_meta, j_Ga63_Zn63_rhoy, j_Ga63_Zn63_temp, j_Ga63_Zn63_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ga63_to_Zn63_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga63_to_Zn63_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ga63) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni63_Cu63_meta, j_Ni63_Cu63_rhoy, j_Ni63_Cu63_temp, j_Ni63_Cu63_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni63_to_Cu63_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni63_to_Cu63_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni63) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn63_Cu63_meta, j_Zn63_Cu63_rhoy, j_Zn63_Cu63_temp, j_Zn63_Cu63_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn63_to_Cu63_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_to_Cu63_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn63) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn63_Ga63_meta, j_Zn63_Ga63_rhoy, j_Zn63_Ga63_temp, j_Zn63_Ga63_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn63_to_Ga63_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn63_to_Ga63_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn63) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu64_Ni64_meta, j_Cu64_Ni64_rhoy, j_Cu64_Ni64_temp, j_Cu64_Ni64_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu64_to_Ni64_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_to_Ni64_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu64) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu64_Zn64_meta, j_Cu64_Zn64_rhoy, j_Cu64_Zn64_temp, j_Cu64_Zn64_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu64_to_Zn64_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu64_to_Zn64_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu64) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ga64_Ge64_meta, j_Ga64_Ge64_rhoy, j_Ga64_Ge64_temp, j_Ga64_Ge64_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ga64_to_Ge64_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_to_Ge64_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ga64) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ga64_Zn64_meta, j_Ga64_Zn64_rhoy, j_Ga64_Zn64_temp, j_Ga64_Zn64_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ga64_to_Zn64_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ga64_to_Zn64_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ga64) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ge64_Ga64_meta, j_Ge64_Ga64_rhoy, j_Ge64_Ga64_temp, j_Ge64_Ga64_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ge64_to_Ga64_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ge64_to_Ga64_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ge64) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Ni64_Cu64_meta, j_Ni64_Cu64_rhoy, j_Ni64_Cu64_temp, j_Ni64_Cu64_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Ni64_to_Cu64_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Ni64_to_Cu64_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Ni64) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn64_Cu64_meta, j_Zn64_Cu64_rhoy, j_Zn64_Cu64_temp, j_Zn64_Cu64_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn64_to_Cu64_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_to_Cu64_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn64) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn64_Ga64_meta, j_Zn64_Ga64_rhoy, j_Zn64_Ga64_temp, j_Zn64_Ga64_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn64_to_Ga64_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn64_to_Ga64_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn64) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Cu65_Zn65_meta, j_Cu65_Zn65_rhoy, j_Cu65_Zn65_temp, j_Cu65_Zn65_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Cu65_to_Zn65_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Cu65_to_Zn65_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Cu65) * (edot_nu + edot_gamma); + + tabular_evaluate(j_Zn65_Cu65_meta, j_Zn65_Cu65_rhoy, j_Zn65_Cu65_temp, j_Zn65_Cu65_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_Zn65_to_Cu65_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_Zn65_to_Cu65_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(Zn65) * (edot_nu + edot_gamma); + + tabular_evaluate(j_n_p_meta, j_n_p_rhoy, j_n_p_temp, j_n_p_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_n_to_p_beta_neg_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_n_to_p_beta_neg_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(N) * (edot_nu + edot_gamma); + + tabular_evaluate(j_p_n_meta, j_p_n_rhoy, j_p_n_temp, j_p_n_data, + log_rhoy, log_temp, temp, rate, drate_dt, edot_nu, edot_gamma); + rate_eval.screened_rates(k_p_to_n_electron_capture_weaktab) = rate; + if constexpr (std::is_same_v) { + rate_eval.dscreened_rates_dT(k_p_to_n_electron_capture_weaktab) = drate_dt; + } + rate_eval.enuc_weak += C::n_A * Y(H1) * (edot_nu + edot_gamma); + + } + +} +#endif diff --git a/networks/sn160/temperature_table_rates.H b/networks/sn160/temperature_table_rates.H index 849033267..6f88b70ce 100644 --- a/networks/sn160/temperature_table_rates.H +++ b/networks/sn160/temperature_table_rates.H @@ -9,21 +9,19 @@ using namespace amrex::literals; -using namespace Rates; - namespace temp_tabular { + using namespace Rates; + template - AMREX_GPU_HOST_DEVICE AMREX_INLINE + AMREX_GPU_DEVICE AMREX_INLINE void - fill_rates(const tf_t& tfactors, T& rate_eval) + fill_rates([[maybe_unused]] const tf_t& tfactors, + [[maybe_unused]] T& rate_eval) { - amrex::ignore_unused(tfactors); - amrex::ignore_unused(rate_eval); - [[maybe_unused]] amrex::Real rate; [[maybe_unused]] amrex::Real drate_dT; @@ -31,6 +29,5 @@ namespace temp_tabular { } - } #endif diff --git a/nse_solver/nse_compatibility/ci-benchmarks/nse_net_integration_unit_test.out b/nse_solver/nse_compatibility/ci-benchmarks/nse_net_integration_unit_test.out index 99b99ef24..4609ea810 100644 --- a/nse_solver/nse_compatibility/ci-benchmarks/nse_net_integration_unit_test.out +++ b/nse_solver/nse_compatibility/ci-benchmarks/nse_net_integration_unit_test.out @@ -1,5 +1,5 @@ -Initializing AMReX (26.04-96-g21b2deea3233)... -AMReX (26.04-96-g21b2deea3233) initialized +Initializing AMReX (26.08-16-g6e875b7cc1a4)... +AMReX (26.08-16-g6e875b7cc1a4) initialized starting the single zone burn... ------------------------------------ - added e = 2.42421873e+22 @@ -9,24 +9,24 @@ starting the single zone burn... Solved Chemical Potentials are: -6.83314245e+00 and -1.08589066e+01 ------------------------------------ Element Burn Xs NSE Xs abs err rel err - H1 5.38909747e-02 5.38909747e-02 0.00000000e+00 0.00000000e+00 - He4 5.17680679e-01 5.17680679e-01 2.99982261e-13 5.79473551e-13 - C12 1.31566442e-05 1.31566442e-05 2.78809365e-17 2.11915258e-12 - N13 2.54374035e-09 2.54374035e-09 3.65324318e-21 1.43616984e-12 - O16 3.19225352e-05 3.19225352e-05 3.80080624e-17 1.19063421e-12 - F17 1.49115081e-09 1.49115081e-09 5.12231594e-22 3.43514279e-13 - Ne20 7.33589878e-07 7.33589878e-07 2.52902862e-18 3.44746935e-12 - Na23 3.67457204e-08 3.67457204e-08 1.61518595e-19 4.39557569e-12 - Mg24 1.00775502e-04 1.00775502e-04 7.81127008e-16 7.75115966e-12 - Al27 2.01751573e-05 2.01751573e-05 3.67951112e-17 1.82378311e-12 - Si28 3.62276881e-02 3.62276881e-02 2.64760436e-13 7.30823438e-12 - P31 1.53540144e-03 1.53540144e-03 1.16328388e-14 7.57641520e-12 - S32 3.79938039e-02 3.79938039e-02 3.76955411e-13 9.92149699e-12 - Ar36 2.41944405e-02 2.41944405e-02 1.58886793e-13 6.56707861e-12 - Ca40 2.82965820e-02 2.82965820e-02 5.98306127e-14 2.11441130e-12 - Ti44 1.62787599e-03 1.62787599e-03 2.68892981e-14 1.65180261e-11 - Cr48 9.74012544e-03 9.74012544e-03 1.24650290e-13 1.27976062e-11 - Fe52 5.86021446e-02 5.86021446e-02 4.66245098e-13 7.95610981e-12 - Ni56 2.30043480e-01 2.30043480e-01 1.34456335e-12 5.84482268e-12 + H1 5.38909747e-02 5.38909747e-02 3.49026363e-15 6.47652720e-14 + He4 5.17680679e-01 5.17680679e-01 2.99760217e-13 5.79044629e-13 + C12 1.31566442e-05 1.31566442e-05 2.78944890e-17 2.12018267e-12 + N13 2.54374035e-09 2.54374035e-09 3.48532551e-21 1.37015773e-12 + O16 3.19225352e-05 3.19225352e-05 3.80216149e-17 1.19105875e-12 + F17 1.49115081e-09 1.49115081e-09 6.09011726e-22 4.08417260e-13 + Ne20 7.33589878e-07 7.33589878e-07 2.52945214e-18 3.44804667e-12 + Na23 3.67457204e-08 3.67457204e-08 1.63986902e-19 4.46274832e-12 + Mg24 1.00775502e-04 1.00775502e-04 7.80977930e-16 7.74968036e-12 + Al27 2.01751573e-05 2.01751573e-05 3.81469758e-17 1.89078951e-12 + Si28 3.62276881e-02 3.62276881e-02 2.64517575e-13 7.30153063e-12 + P31 1.53540144e-03 1.53540144e-03 1.17390906e-14 7.64561652e-12 + S32 3.79938039e-02 3.79938039e-02 3.76809695e-13 9.91766171e-12 + Ar36 2.41944405e-02 2.41944405e-02 1.58786179e-13 6.56292005e-12 + Ca40 2.82965820e-02 2.82965820e-02 6.00838823e-14 2.12336184e-12 + Ti44 1.62787599e-03 1.62787599e-03 2.68997064e-14 1.65244199e-11 + Cr48 9.74012544e-03 9.74012544e-03 1.24759578e-13 1.28088266e-11 + Fe52 5.86021446e-02 5.86021446e-02 4.65696925e-13 7.94675567e-12 + Ni56 2.30043480e-01 2.30043480e-01 1.34656175e-12 5.85350974e-12 ------------------------------------ -AMReX (26.04-96-g21b2deea3233) finalized +AMReX (26.08-16-g6e875b7cc1a4) finalized